elsa JavaScript 表达式

在使用 Elsa 时,您经常需要编写动态表达式。本页面提供了一份您可以使用的 JavaScript 表达式词汇表。

Elsa 使用 Jint 库 实现 JavaScript。在那里可以找到更多函数,以及如何提供自定义函数的详细信息。

常见函数

这些是内置的 JS 函数,对于大多数 JavaScript 实现都很常见。

函数 描述 示例
JSON.parse(Object) 解析一个 JavaScript 对象。也适用于 ExpandoObject 对象。 JSON.parse('{"name": "Alice"}')
JSON.stringify(string) 将 JavaScript 对象转换为字符串。仅适用于 JSON 对象(在 Jint 中为 ExpandoObject)。如果需要序列化除 ExpandoObject 之外的 .NET 对象,请改用 toJson() JSON.stringify({ name: "Alice" })
parseInt(string): number 将指定的字符串解析为 number parseInt('42')

活动输出

以下函数专门用于处理活动输出。

函数 描述 示例
getOutputFrom(string, string?): any 通过活动名称获取活动的输出。 getOutputFrom('HttpEndpoint1')
get{OutputName}From{ActivityId}(): any 通过活动名称获取活动的输出。 getParsedContentFromHttpEndpoint1()
getLastResult(): any 获取最后一个结果。 getLastResult()

工作流变量和输入

以下函数专门用于处理工作流变量和输入。

函数 描述 示例
getVariable(string): any 从工作流中获取变量。 getVariable('MyVariable')
setVariable(string, any) 在工作流中设置变量。 setVariable('MyVariable', 'myValue')
get{VariableName}(): any 从工作流中获取变量。 getMyVariable()
set{VariableName}(any) 在工作流中设置变量。 setMyVariable('MyValue')
getInput(string): any 获取工作流的输入。 getInput('name')

工作流变量

有两种方式可以从工作流中获取变量:

  • getVariable('MyVariable')
  • getMyVariable()

第一种方法在构建时不知道变量名时很有用。第二种方法在构建时已知变量名时很有用,而且还有提供智能感知的好处。

类似地,有两种方式可以在工作流中设置变量:

  • setVariable('MyVariable', 'myValue')
  • setMyVariable('myValue')

工作流输入

要获取工作流的输入,使用 getInput() 函数。

例如,如果您运行一个工作流并提供以下输入:

{
  "input": {
    "name": "Alice"
  }
}

您可以使用以下表达式获取 name 属性:

getInput("name");

工作流相关

这些函数专门用于处理工作流。

函数 描述 示例
getWorkflowInstanceId(): string 获取工作流实例的 ID。 getWorkflowInstanceId()
getCorrelationId(): string 获取工作流实例的相关 ID。 getCorrelationId()
setCorrelationId(string) 设置工作流实例的相关 ID。 setCorrelationId('myCorrelationId')
isNullOrWhiteSpace(string): boolean 如果字符串为 null、空或仅由空白字符组成,则返回 true isNullOrWhiteSpace('')
isNullOrEmpty(string): boolean 如果字符串为 null 或空,则返回 true isNullOrEmpty('')
parseGuid(string): Guid 将字符串解析为 GUID。 parseGuid('00000000-0000-0000-0000-000000000000')
newGuid(): Guid 生成新的 GUID。 newGuid()
newGuidString(): string 生成新的 GUID 并以字符串形式返回。 newGuidString()
newShortGuid(): string 生成新的 GUID 并以短字符串形式返回。 newShortGuid()
toJson(any) 将对象转换为 JSON。当需要将 .NET 对象序列化为 JSON 时使用此方法,而不仅仅是 JSON.stringify(),后者仅适用于 ExpandoObject 对象。 toJson('{"name": "Alice"}')

实用工具

这些函数对于处理字符串、数字、GUID、集合等非常有用。

函数 描述 示例
isNullOrWhiteSpace(string): boolean 如果字符串为 null、空或仅由空白字符组成,则返回 true isNullOrWhiteSpace('')
isNullOrEmpty(string): boolean 如果字符串为 null 或空,则返回 true isNullOrEmpty('')
parseGuid(string): Guid 将字符串解析为 GUID。 parseGuid('00000000-0000-0000-0000-000000000000')
newGuid(): Guid 生成新的 GUID。 newGuid()
newGuidString(): string 生成新的 GUID 并以字符串形式返回。 newGuidString()
newShortGuid(): string 生成新的 GUID 并以短字符串形式返回。 newShortGuid()
toJson(any) 将对象转换为 JSON。当需要将 .NET 对象序列化为 JSON 时使用此方法,而不是 JSON.stringify(),因为后者仅适用于 ExpandoObject 对象。 toJson('{"name": "Alice"}')
在本文档中