本文为您介绍如何定义工作流。
一个工作流编排实例的逻辑定义至少包含一个触发器(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"]
}
},