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"}') |