0

据我了解,在 Appian 中不可能动态构造(处理)变量名称,就像您使用使用反引号(如MY_OBJECT=pv!MY_CONS_`extract(valueOfPulldown)`. 那是对的吗?有解决方法吗?

我有一组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

目标是能够通过下拉菜单更改数据存储实体。

4

1 回答 1

1

这可以帮助您找到常量背后的内容。
fn!typeName(fn!typeOf(cons!YOUR_CONSTANT)).

考虑到其他细节,我将执行以下操作:

  1. 创建单独的表达式,将详细信息合并到 Dictionary 列表中,如下所示:

表达结果(呃):

   {
      {dd_label: "label1", dd_value: 1, cons: "cons!YOUR_CONSTANT1" }
      ,{dd_label: "label2", dd_value: 2, cons: "cons!YOUR_CONSTANT2" }
    }
  1. 在下拉控件的 UI 上使用 er.dd_label 作为choiceLabels 和 er.dd_value 作为choiceValues

  2. 当用户在 Dropdown 上选择值时,将下拉值保存到某个局部变量,然后通过执行以下操作使用它来查找您的 const:

property( index(er, wherecontains(local!dropdownselectedvalue, tointeger(er.dd_value))), "cons")

  1. 第 3 步的返回值是你的常数

这可能并不完美,因为您仍然需要维护您的字典,但您可以避免使用长 if...else 语句。

作为替代方案,请查看 Appian 中的决策表https://docs.appian.com/suite/help/21.1/Appian_Decisions.html

于 2021-09-22T21:13:59.373 回答