简介
本文档提供关于工作流接口的 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)}
更新工作流
接口文档及示例函数名
示例代码
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.WorkflowExecutionNotifyBodyerr := xml.Unmarshal([]byte(workflowExecutionBody), &body)if err != nil {fmt.Println(fmt.Sprintf("err:%v", err))} else {fmt.Println(fmt.Sprintf("body:%v", body))}}