流中的表达式支持

该表达式可用于在流实例运行时访问其中的属性。

概述

当通过“执行” URL 触发流程后,该流程实例中会自动填充一组默认或内置属性。 此外,某些属性会根据流程中使用的任务自动填充。

该文档展示了表达式中使用的一组不同函数或条件运算符。

用户需要在特定流程的任务和决策点中,按照特定的语法来声明表达式。 @该表达式必须以 @context 开头,以 结尾。 例如,@context.__tenantid@

注: 本文中关于属性描述的示例可在此处查阅。

访问流实例属性

每个流实例属性都有其自身的类型。 因此,访问属性值会受到属性类型的影响。 支持的属性类型包括“字符串”、“数字”、“布尔值”、“JSON”和“数组”。 请参考下文提供的详细信息,了解如何使用这些不同的属性类型。

  • 字符串、布尔值或数字可以通过 @context.propertyName@. 访问。 例如,
    • 状态 - @context.status@
    • __tenantid - @context.__tenantid@
    • __locale - @context.__locale@
  • .可以通过使用“”分隔符或方括号来 [] 访问嵌套的 JSON 属性。 例如,
    • userName 来自用户属性 - @context.user.id@
    • messageId 来自错误属性 - @context.error.messageId@
    • 来自用户属性的 ID - @context.user['id']@
    注意:
    • [] 方括号仅用于访问子属性。
    • .包含“”分隔符的嵌套属性必须用 [] 方括号括起来。
  • 可以通过在 [] 方括号内使用所需的索引来访问数组的属性。 例如,
    • 来自用户属性的电子邮件 - @context.user.emails[0].value@@context.user['emails'][0].value@
    • 来自用户属性的自定义属性名称 - @context.user['urn:ietf:params:scim:schemas:extension:ibm:2.0:User'].customAttributes[0].name@

输入参数中的表达式用法

该表达式可用于访问任务输入参数中的实例属性。 输入参数还支持表达式和运算符。 二元运算符和三元运算符可与输入参数中的表达式结合使用。 请参考以下示例

  • 访问属性 - @context.themeId@
  • 使用二元运算符 - @context.user.userName@ == "Jessica Hill"
  • 使用三元运算符 - @context.user['urn:ietf:params:scim:schemas:extension:ibm:2.0:User'].userCategory@ == "regular" ? @context.basicLdapUrl@ : @context.federatedUrl@
注意: 信号输入参数不支持表达式。 任何提供的内容均被视为字符串。

条件构建器

条件点决策路径基于条件构建器构建。 条件构建器可在条件点的出序列流上使用。 条件构建器以一个“if”条件集开头,可以包含零个或多个“or”条件集。 每个条件集可以包含多个条件。 每个条件分为三个部分: 属性运算符和值

“属性 ”部分,用户可以从预定义属性的下拉菜单中选择一个属性,也可以输入自定义流程实例属性。
@注意: 自定义流程实例属性必须以 @context 开头,并以 结尾。 例如,要访问名为 responseCode的自定义属性,用户可以输入 - @context.responseCode@

“值 ”部分支持字符串、数字、布尔值和流程表达式作为输入。

注意: 默认流程实例属性及其数据类型的列表可在此处查阅。
条件构建器提供了一组预定义的运算符,用于构建条件。 下表列出了条件构建器支持的运算符。
运算符 受支持的数据类型 描述 示例
equal to 字符串、数字和布尔值 比较中的属性和值具有相同的值。 @context.status@ 等于失败。
not equal to 字符串、数字和布尔值 比较中的属性和值不具有相等性。 @context.themeId@ 不等于默认值。
less than 数字 比较中的属性值小于该值。 @context.numericProperty@ (假设上下文中存在一个名为 numericProperty 的变量) 小于 20。
less than or equal to 数字 比较中的属性值小于或等于该值。 @context.numericProperty@ 小于或等于 20。
greater than 数字 比较中的该属性值大于该值。 @context.numericProperty@ 大于 20。
greater than or equal to 数字 比较中的属性值大于或等于该值。 @context.numericProperty@ 大于或等于 20。
is true Boolean 该属性被评估为 true。 @context.booleanProperty@ (假设上下文中存在一个名为 booleanProperty 的变量) 为真
is false Boolean 该属性被评估为 false。 @context.booleanProperty@ 是假的
has property _ 该属性包含一个在 value 中提到的属性。 @context.user.name@ 具有属性givenName
is not null 字符串、数字和布尔值 该属性不为空。 @context.user.name.givenName@ 不为空
is not empty 字符串 该属性不为空。 @context.user.name.givenName@ 不为空
注意:
  • is true, is false, is not null, 和 is not empty 运算符不需要 “值 ”部分。
  • 要计算复杂的条件,用户必须使用 “函数” 任务。 例如,根据某些属性从用户列表中筛选出某位用户。 随后可通过该表达式访问该筛选后的用户。
  • 将数据类型置于“”之中即可将其转换为字符串。 例如,数字 10 可以转换为字符串“10”,或者布尔值 true 可以转换为字符串“true”。