内置函数 内置函数使用示例 接下来将结合base64decode, jsonStringToMap以及jq进行内置函数使用示例。 输入数据为一下JSON格式的字符串进行base64编码后的数据 原始的JSON格式数据如下: plaintext {"books":[{"author":"Nigel Rees","category":"reference","price":8.95,"title":"Sayings of the Century"},{"author":"Evelyn Waugh","category":"reference","price":12.99,"title":"Sword of Honour"},{"author":"Herman Melville","category":"fiction","isbn":"0553213113","price":8.99,"title":"Moby Dick"},{"author":"J. R. R. Tolkien","category":"fiction","isbn":"0395193958","price":22.99,"title":"The Lord of the Rings"}]} base64编码后: plaintext eyJib29rcyI6W3siYXV0aG9yIjoiTmlnZWwgUmVlcyIsImNhdGVnb3J5IjoicmVmZXJlbmNlIiwicHJpY2UiOjguOTUsInRpdGxlIjoiU2F5aW5ncyBvZiB0aGUgQ2VudHVyeSJ9LHsiYXV0aG9yIjoiRXZlbHluIFdhdWdoIiwiY2F0ZWdvcnkiOiJyZWZlcmVuY2UiLCJwcmljZSI6MTIuOTksInRpdGxlIjoiU3dvcmQgb2YgSG9ub3VyIn0seyJhdXRob3IiOiJIZXJtYW4gTWVsdmlsbGUiLCJjYXRlZ29yeSI6ImZpY3Rpb24iLCJpc2JuIjoiMC01NTMtMjEzMTEtMyIsInByaWNlIjo4Ljk5LCJ0aXRsZSI6Ik1vYnkgRGljayJ9LHsiYXV0aG9yIjoiSi4gUi4gUi4gVG9sa2llbiIsImNhdGVnb3J5IjoiZmljdGlvbiIsImlzYm4iOiIwLTM5NS0xOTM5NS04IiwicHJpY2UiOjIyLjk5LCJ0aXRsZSI6IlRoZSBMb3JkIG9mIHRoZSBSaW5ncyJ9XX0 工作流流程可视化 工作流流程定义 first状态负责对输出数据进行base64decode操作, 将解码得到的JSON格式字符串进行转map操作 second状态负责对输入数据使用jq内置函数对数据进行过滤, 选择books价格高于12且分类不是reference的book Final状态直接将结果进行输出 本示例包含: base64decode, jsonStringToMap以及jq的内置函数使用 包含内置函数嵌套使用案例 plaintext specVersion: "0.8" name: "demo" start: "first" states: name: "first" type: "Operation" stateDataFilter: output: "{ jsonStringToMap(base64decode($.input)) }" actions: functionRef: type: "Noop" transition: nextState: "second" name: "second" type: "Operation" stateDataFilter: input: "{ jq($, '.books[] select((.price > 12) and (.category ! "reference"))') }" actions: functionRef: type: "Noop" transition: nextState: "Final" name: "Final" type: "Operation" actions: functionRef: type: "Noop" end: true 对该工作流进行执行,对应工作流执行输入: plaintext { "input": "eyJib29rcyI6W3siYXV0aG9yIjoiTmlnZWwgUmVlcyIsImNhdGVnb3J5IjoicmVmZXJlbmNlIiwicHJpY2UiOjguOTUsInRpdGxlIjoiU2F5aW5ncyBvZiB0aGUgQ2VudHVyeSJ9LHsiYXV0aG9yIjoiRXZlbHluIFdhdWdoIiwiY2F0ZWdvcnkiOiJyZWZlcmVuY2UiLCJwcmljZSI6MTIuOTksInRpdGxlIjoiU3dvcmQgb2YgSG9ub3VyIn0seyJhdXRob3IiOiJIZXJtYW4gTWVsdmlsbGUiLCJjYXRlZ29yeSI6ImZpY3Rpb24iLCJpc2JuIjoiMC01NTMtMjEzMTEtMyIsInByaWNlIjo4Ljk5LCJ0aXRsZSI6Ik1vYnkgRGljayJ9LHsiYXV0aG9yIjoiSi4gUi4gUi4gVG9sa2llbiIsImNhdGVnb3J5IjoiZmljdGlvbiIsImlzYm4iOiIwLTM5NS0xOTM5NS04IiwicHJpY2UiOjIyLjk5LCJ0aXRsZSI6IlRoZSBMb3JkIG9mIHRoZSBSaW5ncyJ9XX0" } 执行结果(只贴first和second执行的输入和输出): 状态名称(状态类型) 状态状态执行输入 状态执行输出 first(Noop) Second(Noop)