组件中的任何数据都保存为 <context>
变量。变量可以在组件的工作流或步骤范围内声明和初始化,具体取决于您需要它们的位置:
<context> <参数名称=“标题”类型=“字符串”>请选择一个</param> </context>
可用的数据类型: string
、 bool
、 long
double
和 。 object
注意:最佳做法始终是指定数据类型。
使用操作 setvar
数据。此操作还可用于声明和设置未声明的变量。
<setvar id=“next_step”> <context_of>workflow</context_of> <!--可能的值:step、workflow、root、user_session、global --> <context_update> <param name=“current_step_index” type=“long”>#{current_step} + 1</param> <param name=“string_concat” type=“string”>步骤 #{step_name} 并带有说明: #{step_description}</param> </context_update> </setvar>
提示和技巧:在组件之间传递数据时,通常应该在操作中使用 finish_workflow
输出参数。在这种情况下,输出将在后续组件的开始步骤的步骤范围内可用。仅当根作用域对您来说还不够,并且管理输出参数变得过于复杂时,才使用根作用域。
上面的示例还显示了如何访问数据变量:
在标记中 context_update
,使用相同的 setvar 操作设置了两个变量。
current_step_index
是通过访问上下文变量 #{current_step}
并将其递增 1 来设置的。string_concat
显示了字符串与现有上下文变量的连接示例。访问数据变量的工作原理是将其名称括起来,以 “#{” 开头,以 “}”结尾。
user_session
将全局保存该值,直到用户注销。即使在用户离开工作流并进入相同或另一个工作流后,也可以访问它。可以使用 #{user_session::my_value}
访问它。作业 1:让我们测试根上下文的工作原理:
setvar
操作将用户的选择保存在根变量 choice
中。#{choice}
在组件配置输入字段“Labels -> Component Title”中输入。如果运行工作流,则所选值应显示在代码比较组件的“标头”中。任务 2:如前所述,应谨慎使用根上下文,并包含风险,尤其是在同一工作流中重用组件时。还原之前所做的更改(可以在工作流面板的“发布工作流”选项旁边选择较旧的版本)或更改现有代码。
finish_workflow
输出参数传递。如您所见,您甚至可以在配置面板中使用上下文变量。这可以帮助您根据以前的用户操作配置组件。
问:我尝试插入一个与“代码比较”不同的组件,但标题现在显示 #{initialChoice}
(或其他变量名称)而不是变量的实际内容。为什么?
答: 并非所有标准组件的编写方式都支持立即将变量计算到布局中。您可以更改任何组件以使其正常工作,但这涉及用户界面和组件配置知识,我们将在后面的课程中讨论。“代码比较”组件与其他一些组件的区别在于,代码比较组件将配置值直接插入到映射中,而其他组件则使用配置初始化上下文变量。使此功能适用于其他组件的一种简单方法是将配置值直接放入映射或布局中,例如:
<mapping> <ui_element name=“Topic”> <参数名称=“content”>§{configuration.labels.value.title.value}§</param> </ui_element> </mapping>
现在你已经完成了第三课。下一课将深入探讨规则表达式。