云工作流支持通过集成HTTP调用任意HTTP服务,每次HTTP集成的触发,均会向目标URL地址发起一个HTTP请求。本文介绍云工作流集成HTTP的示例代码、参数说明、返回值说明和支持的集成模式。

示例代码

以下为一个典型的云工作流集成HTTP的示例代码片段。

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: Request
States:
  - Type: Task
    Name: Request
    Action: HTTP:Request
    TaskMode: RequestComplete
    Description: 调用http示例
    Parameters:
      url: https://www.example.com
      method: Get
    End: true

代码解析如下。

参数说明

参数名称

是否必选

参数说明

示例值

url

请求的URL地址。

需要填写完整的URL地址,包括协议部分。同时,URL的提供者需要确保该地址公网可访问,否则工作流将无法正确的执行该集成。

https://www.example.com

method

请求发起的HTTP方法。取值说明如下:

  • GET

  • POST

  • PATCH

  • PUT

  • DELETE

  • HEAD

GET

body

发起请求的内容。

  • 如果该值为一段字符串,工作流会将其作为请求体原样发出。

  • 如果该值为一个对象或数组,工作流会先将其转换为JSON格式再作为请求体发出。

body:
 name: zhang***
 age: 18
---
body: this is a string

headers

HTTP请求中使用的请求头。

headers:
  key1: value1
  key2: value2

返回值说明

业务请求的返回结果,会被包装在一个JSON对象中,示例如下。

{
    "Header":{
      "Content-Type": "application/json;charset=UTF-8",
      "Access-Control-Allow-Methods": "GET,POST,OPTIONS"
    },
    "Code": 200,
    "Body": "hello world"
}

执行模式

云工作流集成HTTP时,仅支持请求响应(RequestComplete )等待系统回调(WaitForSystemCallback)两种集成模式。

RequestComplete

发起HTTP调用后,当前HTTP请求完成即视为对应的Task任务完成,并以HTTP Server端的返回数据作为当前Task的输出。

WaitForCustomCallback

发起HTTP调用以后,流程执行自动暂停,直到后端系统发起回调后,再恢复执行。回调流程的过程,依赖一个用于区别不同流程、不同执行和不同步骤的Token。该Token会在HTTP调用时,通过Header传递给被调用系统。该Token的key为X-FnF-Http-Callback-Task-Token。

同时,用户也可以在参数中,引用$Context.Current.TaskToken表达式,自定义Token的key