工作流接口

最近更新时间:2023-07-12 20:11:02

我的收藏

简介

本文档提供关于工作流接口的 API 概览以及 SDK 示例代码。
说明:
阅读本文档前请先打开示例代码



创建工作流

接口文档及示例函数名

API 文档
示例函数名
CreateWorkflow

示例代码

func CreateWorkflow() {
c := getClient()
rand.Seed(time.Now().UnixNano())
createWorkflowOpt := &cos.CreateMediaWorkflowOptions{
MediaWorkflow: &cos.MediaWorkflow{
Name: "workflow-" + strconv.Itoa(rand.Intn(100)),
State: "Active",
Topology: &cos.Topology{
Dependencies: map[string]string{"Start": "Transcode_1581665960537", "Transcode_1581665960537": "Snapshot_1581665960536",
"Snapshot_1581665960536": "End"},
Nodes: map[string]cos.Node{"Start": cos.Node{Type: "Start", Input: &cos.NodeInput{
ObjectPrefix: "wk-test", ExtFilter: &cos.ExtFilter{State: "On", Custom: "true", CustomExts: "mp4"}}},
"Transcode_1581665960537": cos.Node{Type: "Transcode", Operation: &cos.NodeOperation{TemplateId: "t01e57db1c2d154d2fb57aa5de9313a897",
Output: &cos.NodeOutput{Region: "ap-chongqing", Bucket: "test-123456789", Object: "trans1.mp4"}}},
"Snapshot_1581665960536": cos.Node{Type: "Snapshot", Operation: &cos.NodeOperation{TemplateId: "t07740e32081b44ad7a0aea03adcffd54a",
Output: &cos.NodeOutput{Region: "ap-chongqing", Bucket: "test-123456789", Object: "snapshot-${number}.jpg"}}},
},
},
},
}
createWorkflowRes, _, err := c.CI.CreateMediaWorkflow(context.Background(), createWorkflowOpt)
log_status(err)
fmt.Printf("%+v\\n", createWorkflowRes.MediaWorkflow)
}



更新工作流

接口文档及示例函数名

API 文档
示例函数名
UpdateWorkflow
ActiveWorkflow
PausedWorkflow

示例代码

func UpdateWorkflow() {
c := getClient()
rand.Seed(time.Now().UnixNano())
updateWorkflowOpt := &cos.CreateMediaWorkflowOptions{
MediaWorkflow: &cos.MediaWorkflow{
Name: "workflow-" + strconv.Itoa(rand.Intn(100)),
State: "Paused",
Topology: &cos.Topology{
Dependencies: map[string]string{"Start": "Transcode_1581665960537", "Transcode_1581665960537": "Snapshot_1581665960536",
"Snapshot_1581665960536": "End"},
Nodes: map[string]cos.Node{"Start": cos.Node{Type: "Start", Input: &cos.NodeInput{
ObjectPrefix: "wk-test", ExtFilter: &cos.ExtFilter{State: "On", Custom: "true", CustomExts: "mp4"}}},
"Transcode_1581665960537": cos.Node{Type: "Transcode", Operation: &cos.NodeOperation{TemplateId: "t01e57db1c2d154d2fb57aa5de9313a897",
Output: &cos.NodeOutput{Region: "ap-chongqing", Bucket: "test-123456789", Object: "trans1.mp4"}}},
"Snapshot_1581665960536": cos.Node{Type: "Snapshot", Operation: &cos.NodeOperation{TemplateId: "t07740e32081b44ad7a0aea03adcffd54a",
Output: &cos.NodeOutput{Region: "ap-chongqing", Bucket: "test-123456789", Object: "snapshot-${number}.jpg"}}},
},
},
},
}
WorkflowId := "web6ac56c1ef54dbfa44d7f4103203be9"
updateWorkflowRes, _, err := c.CI.UpdateMediaWorkflow(context.Background(), updateWorkflowOpt, WorkflowId)
log_status(err)
fmt.Printf("%+v\\n", updateWorkflowRes.MediaWorkflow)

opt := &cos.DescribeMediaWorkflowOptions{
Ids: WorkflowId,
}
DescribeWorkflowRes, _, err := c.CI.DescribeMediaWorkflow(context.Background(), opt)
log_status(err)
fmt.Printf("%+v\\n", DescribeWorkflowRes)
}

func ActiveWorkflow() {
c := getClient()
WorkflowId := "w8d1f24d05b434b17b491555496acf11d"
_, err := c.CI.ActiveMediaWorkflow(context.Background(), WorkflowId)
log_status(err)
}

func PausedWorkflow() {
c := getClient()
WorkflowId := "w8d1f24d05b434b17b491555496acf11d"
_, err := c.CI.PausedMediaWorkflow(context.Background(), WorkflowId)
log_status(err)
}



查询工作流

接口文档及示例函数名

API 文档
示例函数名
DescribeWorkflow

示例代码

func DescribeWorkflow() {
c := getClient()
opt := &cos.DescribeMediaWorkflowOptions{
Ids: "w93aa43ba105347169fa093ed857b2a90,abc,123",
PageNumber: 1,
PageSize: 5,
}
DescribeWorkflowRes, _, err := c.CI.DescribeMediaWorkflow(context.Background(), opt)
log_status(err)
fmt.Printf("%+v\\n", DescribeWorkflowRes)
}



测试工作流

接口文档及示例函数名

API 文档
示例函数名
TriggerWorkflow

示例代码

func TriggerWorkflow() {
c := getClient()
triggerWorkflowOpt := &cos.TriggerWorkflowOptions{
WorkflowId: "w18fd791485904afba3ab07ed57d9cf1e",
Object: "100986-2999.mp4",
}
triggerWorkflowRes, _, err := c.CI.TriggerWorkflow(context.Background(), triggerWorkflowOpt)
log_status(err)
fmt.Printf("%+v\\n", triggerWorkflowRes)
}



删除工作流

接口文档及示例函数名

API 文档
示例函数名
DeleteWorkflow

示例代码

func DeleteWorkflow() {
c := getClient()
DescribeWorkflowRes, _, err := c.CI.DeleteMediaWorkflow(context.Background(), "w843779f0b22f49bbb7a189778d865059")
log_status(err)
fmt.Printf("%+v\\n", DescribeWorkflowRes)
}



获取工作流实例详情列表

接口文档及示例函数名

API 文档
示例函数名
DescribeWorkflowExecutions

示例代码

func DescribeWorkflowExecutions() {
c := getClient()
describeWorkflowExecutionsOpt := &cos.DescribeWorkflowExecutionsOptions{
WorkflowId: "w18fd791485904afba3ab07ed57d9cf1e",
}
describeWorkflowExecutionsRes, _, err := c.CI.DescribeWorkflowExecutions(context.Background(), describeWorkflowExecutionsOpt)
log_status(err)
fmt.Printf("%+v\\n", describeWorkflowExecutionsRes)
}


获取工作流实例详情

接口文档及示例函数名

API 文档
示例函数名
DescribeMultiWorkflowExecution

示例代码

func DescribeMultiWorkflowExecution() {
c := getClient()
describeWorkflowExecutionsRes, _, err := c.CI.DescribeWorkflowExecution(context.Background(), "i00689df860ad11ec9c5952540019ee59")
log_status(err)
a, _ := json.Marshal(describeWorkflowExecutionsRes)
fmt.Println(string(a))
fmt.Printf("%+v\\n", describeWorkflowExecutionsRes)
}


工作流回调

接口文档及示例函数名

API 文档
示例函数名
WorkflowExecutionNotifyCallback

示例代码

func WorkflowExecutionNotifyCallback() {
workflowExecutionBody := "<Response><EventName>WorkflowFinish</EventName><WorkflowExecution><RunId>i70ae991a152911ecb184525400a8700f</RunId><BucketId></BucketId><Object>62ddbc1245.mp4</Object><CosHeaders><Key>x-cos-meta-id</Key><Value>62ddbc1245</Value></CosHeaders><CosHeaders><Key>Content-Type</Key><Value>video/mp4</Value></CosHeaders><WorkflowId>w29ba54d02b7340dd9fb44eb5beb786b9</WorkflowId><WorkflowName></WorkflowName><CreateTime>2021-09-14 15:00:26+0800</CreateTime><State>Success</State><Tasks><Type>Transcode</Type><CreateTime>2021-09-14 15:00:27+0800</CreateTime><EndTime>2021-09-14 15:00:42+0800</EndTime><State>Success</State><JobId>j70bab192152911ecab79bba409874f7f</JobId><Name>Transcode_1607323983818</Name><TemplateId>t088613dea8d564a9ba7e6b02cbd5de877</TemplateId><TemplateName>HLS-FHD</TemplateName></Tasks></WorkflowExecution></Response>"
var body cos.WorkflowExecutionNotifyBody
err := xml.Unmarshal([]byte(workflowExecutionBody), &body)
if err != nil {
fmt.Println(fmt.Sprintf("err:%v", err))
} else {
fmt.Println(fmt.Sprintf("body:%v", body))
}
}