据我所知,在Appian中不可能动态构建(处理(变量名,就像您在bash中使用MY_OBJECT=pv!MY_CONS_`extract(valueOfPulldown)`
之类的backtick所做的那样。这是正确的吗?有变通办法吗?
我有一组Appian常量,让我们称它们为MY_CONS_FOO
、MY_CONS_BAR
、MY_CONS_LALA
,所有这些都是指Appian数据存储实体。我想写一个Appian表达式规则,它填充相同类型的另一个变量MY_OBJECT
(这里:数据存储实体(,例如取决于下拉菜单的选项,下拉菜单的可能选项存储在数组MY_CONS_OPTIONS
中,如下
FOO
BAR
LALA
当然,我可以构建一个冗长的案例结构,除了MY_CONS_OPTIONS
之外,我还必须维护它,所以我正在寻找一种更动态的方法,使用extract()
函数,这取决于valueOfPulldown
作为下拉菜单的选定值。
编辑:这里是我想要避免的表达式规则(伪代码(:
if (valueOfPulldown = 'FOO') then MY_OBJECT=pv!MY_CONS_FOO
if (valueOfPulldown = 'BAR') then MY_OBJECT=pv!MY_CONS_BAR
if (valueOfPulldown = 'LALA') then MY_OBJECT=pv!MY_CONS_LALA
目标是能够通过下拉菜单更改数据存储实体。
这可以帮助您找到常量背后的内容fn!typeName(fn!typeOf(cons!YOUR_CONSTANT))
。
考虑到其他细节,我会做如下:
- 创建单独的表达式,将详细信息组合到字典列表中,如下所示:
表达式结果(er(:
{
{dd_label: "label1", dd_value: 1, cons: "cons!YOUR_CONSTANT1" }
,{dd_label: "label2", dd_value: 2, cons: "cons!YOUR_CONSTANT2" }
}
在下拉控件的UI上使用er.dd_label作为choiceLabels,使用er.dd_value作为choiceValues
当用户在Dropdown上选择值时,将下拉值保存到某个局部变量,然后使用它通过以下操作查找常量:
property( index(er, wherecontains(local!dropdownselectedvalue, tointeger(er.dd_value))), "cons")
- 步骤3的返回值是您的常量
这可能并不完美,因为你仍然需要维护你的字典,但你可以避免长if…else语句。
另一种选择是查看Appian中的Decisions Tableshttps://docs.appian.com/suite/help/21.1/Appian_Decisions.html