更新时间:2024-10-21 GMT+08:00
分享

创建工作流

功能介绍

本接口用于直接创建Data+工作流。

请求消息样式

POST /v2/workflows/{graph_name}?x-workflow-create HTTP/1.1
Host: obs.cn-north-4.myhuaweicloud.com 
Authorization: authorization
Content-Type: application/json
Content-Length: length
Date: date

policy json body

请求消息参数

表1 请求消息参数

名称

是否必选

参数类型

说明

约束

graph_name

String

工作流名称

名称必须以字母或数字开头,只能由字母、数字、下划线和中划线组成,长度小于等于64个字符,且不能重名。

请求消息头

该请求使用公共消息头,具体参见表3

请求消息元素

表2 参数说明

名称

是否必选

参数类型

说明

约束

description

String

工作流的描述

长度最小为0,最长为256,可以是数字、大小写字母以及英文的逗号,句号,冒号,中划线,下划线,空格。

states

Array of State

工作流的编排定义

  • 必须有TYPE,TYPE值必须是3种State(DELAY,OPERATION,END)中一种。
  • 每个state的名字是1-80长度的只含数字,字母,-和_的String。

inputs

Array of Input

工作流中用户可修改参数列表

-

表3 State公共域说明

名称

是否必选

参数类型

说明

约束

start

Boolean

标识开始的state,图中必须且只有一个start为true的state。

有且只有一个start为true的state。

type

string

DELAY、OPERATION、END

枚举类型。

payload_filter_in

string

过滤输入参数,默认值是"$",表示不过滤。

必须是合法的JSONPath格式。

说明:

END State没有payload_filter_in属性。

payload_filter_out

string

过滤state的输出结果,默认值是"$",表示不过滤。

必须是合法的JSONPath格式。

说明:

END State没有payload_filter_out属性。

state_name

string

state的名字定义。

由小写字母、数字和中划线“-”组成,长度为[1, 20]。

表4 OperationState结构体参数说明

名称

是否必选

参数类型

说明

约束

action_mode

String

任务action调用的模式,并行或者串行。默认值是“SEQUENTIAL”。

只支持“SEQUENTIAL”。

actions

Array of Action

定义action的json数组。

当前只能支持1个Action。

next_state

String

表示下一个state的名字,String类型,必须是图定义中存在的名字。

必须是工作流中的state名字。

表5 DelayState结构体参数说明

名称

是否必选

参数类型

说明

约束

time_delay

String

等待的时间,单位秒,int类型。

必须大于0,最大值为86400

next_state

String

表示下一个state的名字,String类型,必须是图定义中存在的名字

必须是工作流模板中的state名字

表6 Action结构体参数说明

名称

是否必选

参数类型

说明

约束

action_name

String

action的名字。

要求state中唯一,action的名字是1-20长度的只含数字、字母、-和_的String。

action_template_name

String

action模板名,见内置Action模板名描述

-

action_template_category

String

action模板类别,见内置Action模板名描述

-

action_template_provider_name

String

action模板类别,见内置Action模板名描述

-

function

String

用户自定义函数URN。

function与function_template只能设置其中一个。

function_template

String

系统内置的函数模板URN。

function与function_template只能设置其中一个。

invocation_mode

String

调用模式。

值必须是“SYNC”。

results

Array of ActionResult

Action失败后的捕获重试机制。

值是一个包含result定义的json数组,results如果存在时,size>=0。

timeout

Int

Action的超时时间,最长等待时间。默认值是30s。

大于等于0且小于等于300的整型,等于0时等同于不设置。

payload_filter

String

对结果进行过滤的路径,默认是"$"。

必须是合法的JSONPath格式。

dynamic_source

Map

在创建工作流时会根据OBS自定义的函数模板创建属于用户的function,并指定该参数设置的参数值。

必须是指定的参数名称,否则不生效。

表7 ActionResult结构体参数说明

名称

是否必选

参数类型

说明

约束

match

String

表示匹配的错误。

MatchAny、States.ActionFailed、States.PermissionError、States.ParameterError、States.NotFound、States.TooManyRequests、States.FunctionStageUnavailable、States.FunctionStageOtherErrors

retry_interval

Int

表示重试的间隔时间,单位秒。

取值区间:[0, 86400]

是>=0的整型。

max_retry

Int

表示最大重试次数,没有设置时默认为3,等于0时表示不重试。

取值区间:[0, 10]

>=0的整型。

next_state

String

表示下一个state的名字,String类型,必须是图定义中存在的名字。

必须是工作流模板中的state名字。

is_terminal

Boolean

表示是否异常中断该Action,默认为False。

注:如果设置为True,那么不必设置nex-state; 如果设置为False,则必须设置next-state。

表8 内置Action模板名描述

内置Action模板名

描述

Category(分类)

provider_name(提供商名称)

分类描述

MediaTranscode

视频转码

MediaProcess

op_svc_obs

视频处理

MediaRemux

视频转封装

MediaProcess

op_svc_obs

视频处理

MediaMetadata

视频元信息

MediaProcess

op_svc_obs

视频处理

MediaThumbnail

视频截图

MediaProcess

op_svc_obs

视频处理

表9 Input结构体参数说明

名称

是否必选

参数类型

约束

说明

parameter_name

String

由小写字母、数字和中划线“-”组成,长度为[1, 20]。

输入参数名称。最多可定义60个,且命名必须唯一。

type

  • String:字符串
  • Integer:数字
  • Float:浮点数
  • Boolean:布尔值
  • List:列表
  • Map:集合

-

参数类型。

value_type

  • String:字符串
  • Integer:数字
  • Float:浮点数

-

列表类型参数值类型。

只支持原子类型

template_parameter_name

String

由小写字母、数字和中划线“-”组成,长度为[1, 20]。

当多个同action template在一个工作流时,增加字段做国际化。

paramter_value

根据类型传入的参数值

constraints定义的约束。

参数值。

description

String

长度为[0, 256]。

参数描述信息。

default

String

默认值信息可在创建工作流实例时由外部输入替换;如果未填写默认值,外部输入将必须填写这个参数的值。

默认值的类型和定义的参数类型必须统一。如果出现不一致,解析器可能会进行自动转换而导致出现与预期不符合的情况。

label

String

长度为[0, 64]。

参数的标签,此处定义的标签可在创建堆栈时进行分类展示。

constraints

Map

约束条件有以下几种,一个输入参数对每一种条件都只能定义一个规则。约束的多个条件中只要有一条不满足,即将认定参数非法。

  • equal:约定参数的value值必须等于特定值。
  • valid_values:参数的有效值,定义一个数组。
  • regex:参数需要满足某个正则条件,必须是字符串类型才可以进行匹配。
  • invalid_values:参数的无效值范围,如果参数值定义在其中,将会认为无效而报错。

参数约束,用于约束可以定义输入参数的合法值范围。

例如:当输入参数不等于obs时,则会认定参数非法。

"constraints": {
     "equal": "obs"
}

例如:输出参数值可以从TCP、UDP中选取一个。

"constraints": {
     "valid_values": ["TCP", "UDP" ]
}

例如:当输入参数不满足正则条件时,则会认定参数非法。

"constraints": {
     "valid_values": ["TCP", "UDP" ]
}

例如:当输入参数为1或12时,则会认定参数非法。

"constraints": {
     "invalid_values": ["1", "12" ]
}

invisible

Boolean

输入参数的invisible设置为true时,返回值为******。

查询是否回显。

响应消息样式

HTTP/1.1 status_code 
Date: date 
Content-Length: length 
X-Request-ID: obs request id

json body

响应消息头

该请求的响应消息使用公共消息头,具体请参考表1

响应消息元素

名称

参数类型

说明

graph_name

String

工作流名称。

graph_urn

String

工作流的URN。

created_at

String

工作流创建的时间。

错误响应消息

无特殊错误,所有错误已经包含在表2中。

请求示例

POST /v2/workflows/{graph_name}?x-workflow-create HTTP/1.1
Host: obs.cn-north-4.myhuaweicloud.com 
Date: Thu, 27 Aug 2020 12:38:10 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:sc2PM13Wlfcoc/YZLK0MwsI2Zpo=
Content-Type: application/json
Content-Length: 100

{
    "description": "a demo of graph",
    "inputs": [{
        "parameter_name": "param1",
        "default": "TCP",
        "parameter_value": "TCP",
        "template_parameter_name": "param",
        "type": "string",
        "label": "action1",
        "constraints": {
            "valid_values": ["TCP", "UDP"]
        },
        "invisible": true,
        "description": "description param1"
    }],
    "states": [{
        "start": true,
        "state_name": "operation",
        "payload_filter_in": "$",
        "payload_filter_out": "$",
        "type": "OPERATION",
        "action_mode": "SEQUENTIAL",
        "actions": [{
            "action_name": "action1",
            "action_template_name": "<Action Template name>",
            "action_template_category": "<Action Template category>",
            "action_template_provider_name": "<Action Template provider name>",
            "function_template": "urn:fss:cn-north-5:3f1e6caf808246c68457e660e4bfeb2f:function:default:test",
            "invocation_mode": "SYNC",
            "timeout": 0,
            "payload_filter": "$",
            "dynamic_source": {
                "param1": {
                    "get_input": "$.inputs.param1"
                },
                "param2": {
                    "get_input": "$.inputs.param2"
                }
            }
        }],
        "next_state": "end"
    }, {
        "state_name": "end",
        "type": "END"
    }]
}

响应示例

HTTP/1.1 201 Created
Server: OBS
Date: Thu, 27 Aug 2020 12:38:10 GMT
Content-Length: 100
X-Request-ID: 000001742FE8FB3CCA20173B00807C43

{
    "graph_name": "test-graph",
    "graph_urn": "urn:obs:cn-north-5:3f1e6caf808246c68457e660e4bfeb2f:graph:test-graph",
    "created_at": "2020-04-23T12:32:11.131Z"
}

相关文档