本文为您介绍如何定义工作流。
一个工作流编排实例的逻辑定义至少包含一个触发器(Trigger)和需要执行的任务(Action)。目前定义只支持 JSON 语法。最外层的结构定义如下:
{
"schemaVersion": "${flow-schema-version}",
"triggers": { "${flow-trigger-definitions}" },
"actions": { "${flow-action-definitions}" }
}
| 字段 | 必选 | 说明 |
|---|---|---|
| schemaVersion | 否 | 描述当前定义所使用的 Schema 的版本 |
| triggers | 否 | 用于实例化工作流的一个或多个触发器的定义 |
| actions | 否 | 要在工作流运行时执行的一个或多个任务的定义 |
版本 schemaVersion
描述当前定义所使用的 Schema 的版本,目前只支持 2018-12-12 版。
触发器 Triggers
所有逻辑应用均以触发器开始。它定义了可以实例化并启动逻辑应用工作流的调用。
"${trigger-name}": {
"type": "${trigger-type}",
"inputs": { "${trigger-inputs}" },
},
| 字段 | Type | 描述 |
|---|---|---|
| ${trigger-name} | String | 触发器的名称 |
| type | String | 触发器类型,例如 request 表示一个 HTTP 请求类的触发器
|
| inputs | JSON 对象 | 定义触发器行为的输入 |
HTTP 请求触发器示例:
"request": {
"type": "Request",
"kind": "Http",
"inputs": {
"method": "${method-type}",
"schema": {
"type": "object",
"properties": {
"${property-name}": {
"type": "${property-type}"
}
},
"required": [ "${required-properties}" ]
}
}
}
inputs 里定义了该触发器接受的传入参数。
| 字段 | Type | 描述 |
|---|---|---|
| ${method-type} | String | 请求的方法:GET、PUT、POST、PATCH、DELETE
|
| schema | Object | 定义入参的 Schema,须为标准的 JSON Schema 格式,用于入参校验 |
任务 Actions
任务的概念是使用一些参数执行一个特定的连接器。
每个任务类型标准的结构如下。某些连接器提供了更多的配置项,详情请参见对应连接器的配置项。
"${action-name}": {
"type": "HTTP",
"inputs": {
"uri": "https://example.com/api",
"method": "GET",
"headers": {
"User-Agent": "Logic Composer"
}
},
"runAfter": {}
}
| 字段 | 必选 | Type | 描述 |
|---|---|---|---|
| type | 是 | String | 该任务对应的连接器的名称 |
| inputs | 是 | Int、Float、Boolean、JSON Object | 定义该连接器接受的入参,需要参考对应连接器的配置项 |
| runAfter | 是 | Object | 在当前任务可以运行之前,必须运行过的触发器或任务的名称和结果状态 |
例如,在某个任务成功之后发送响应 Response:
"返回请求结果": {
"type": "Response",
"inputs": {
"body": "@body('请求接口')"
},
"runAfter": {
"请求接口": ["Succeeded"]
}
},