本文为您介绍如何定义工作流。

一个工作流编排实例的逻辑定义至少包含一个触发器(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 请求的方法:GETPUTPOSTPATCHDELETE
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"]
   }
},