jsTransform
jsTransform
component: script transformer. You can use JavaScript script to transform or enhance msg, metadata, msgType. Then pass the transformed message to the next node.
JavaScript script supports ECMAScript 5.1(+) syntax specification and some ES6 specifications, such as: async/await/Promise/let. It allows calling Go custom functions in the script, please refer to udf .
# Configuration
Field | Type | Description | Default value |
---|---|---|---|
jsScript | string | js script | None |
jsScript
: You can transform or enhance msg, metadata, msgType. This field is the following function body contentfunction Transform(msg, metadata, msgType) { ${jsScript} }
1
2
3- msg: Message content, if dataType=JSON, type is:
jsonObject
, you can usemsg.temperature
to operate. If dataType is other types, the field type is:string
- metadata: Message metadata, type:
jsonObject
- msgType: Message type
- Function return value type:
{'msg':msg,'metadata':metadata,'msgType':msgType};
- msg: Message content, if dataType=JSON, type is:
Note
Script execution timeout configuration reference: config.ScriptMaxExecutionTime
# Relation Type
- Success: Execution successful, send the message to the
Success
chain - Failure: Execution failed, send the message to the
Failure
chain
# Execution result
Change the content of msg
, metadata
and msgType
through the script.
# Configuration example
{
"id": "s1",
"type": "jsTransform",
"name": "Transform",
"configuration": {
"jsScript": "metadata['name']='test01';\n metadata['index']=11;\n msg['addField']='addValue1'; return {'msg':msg,'metadata':metadata,'msgType':msgType};"
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# Application example
Transform the message and then execute the subsequent logic.
{
"ruleChain": {
"id":"rule01",
"name": "Test rule chain",
"root": true
},
"metadata": {
"nodes": [
{
"id": "s1",
"type": "jsTransform",
"name": "Transform",
"configuration": {
"jsScript": "metadata['name']='test02';\n metadata['index']=22;\n msg['addField']='addValue2'; return {'msg':msg,'metadata':metadata,'msgType':msgType};"
}
},
{
"id": "s2",
"type": "restApiCall",
"name": "Push data",
"configuration": {
"restEndpointUrlPattern": "http://192.168.136.26:9099/api/msg",
"requestMethod": "POST",
"maxParallelRequestsCount": 200
}
}
],
"connections": [
{
"fromId": "s1",
"toId": "s2",
"type": "Success"
}
]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Edit this page on GitHub (opens new window)
Last Updated: 2024/10/23, 10:13:01