云工作流支持将事件总线(EventBridge)作为流程的节点集成到一个工作流中。本文介绍云工作流集成事件总线的示例代码、参数说明、返回值说明和支持的集成模式。
示例代码
以下为一个典型的云工作流集成事件总线的示例代码。
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: PutEvents
States:
- Type: Task
Name: PutEvents
Action: EventBridge:PutEvents
TaskMode: RequestComplete
Description: EventBridge示例
Parameters:
id: xxxxx-xxxx-xxxx-xxxx
type: aliyuncvc:MeetingEvent:MemberOperate
eventBusName: fnf-eb-bus
subject: test-subject
source: test-source
data:
eventContent:
key1: val1
key2: val2
End: true
代码解析如下。
Action:固定为
EventBridge:PutEvents
。TaskMode:支持请求响应(RequestComplete)和等待用户自定义回调(WaitForCustomCallback)两种执行模式。
Name、Description:根据需要配置能表达业务含义的名称和描述。
参数说明
参数名称 | 是否必选 | 参数说明 | 示例值 |
id | 是 | 事件ID。标识事件的唯一值。发送端必须确保 | 45ef4dewdwe1-7c35-447a-bd93-fab**** |
source | 是 | 事件源。提供事件的服务。标识事件发生的内容。一般会包含事件源的类型,发布事件的机制或生产事件的过程。发送端必须确保每个事件的 | acs:aliyuncvc |
type | 是 | 事件类型。描述事件源相关的事件类型。该参数用于路由、事件查询和策略执行等。格式由生产者定义且包含版本等信息。 | aliyuncvc:MeetingEvent:MemberOperate |
eventBusName | 是 | 接收事件的事件总线名称。 该参数是事件从事件源发布到事件总线后新增的,不是CloudEvents规范中的参数。 | default |
subject | 否 | 事件主题。 默认为当前工作流的ARN定义。JSON数据包含标识事件中涉及的资源的ARN。在发布订阅模式中,订阅者通常订阅事件源发出的事件。当事件源中包含子结构时,只使用事件源无法对具体事件进行清晰的定义。 | acs.fnf:cn-hangzhou:{AccountId}:215672 |
data | 否 | 事件内容。 对象类型,内容由发起事件的服务决定。CloudEvents可能包含事件发生时由事件生产者给定的上下文, |
|
返回值说明
业务请求的返回结果,会被包装在一个JSON对象中,示例如下。
{
"EntryList":[
{
"ErrorCode":null,
"ErrorMessage":null,
"EventID":"61fcd09a-eb42-48fb-9bf5-*********",
"TraceID":"4C9FEA1480767FDA352**********"
}
],
"FailedEntryCount":0,
"RequestID":"6538799543**************",
"ResourceOwnerAccountID":null
}
执行模式
云工作流集成事件总线时,仅支持请求响应(RequestComplete)和等待用户自定义回调(WaitForCustomCallback)两种执行模式。
RequestComplete
向事件总线投递事件后,当前启动新流程的请求完成即视为对应的Task完成。并以startEexecution的返回作为当前Task的输出。
WaitForCustomCallback
向事件总线投递事件后,当前工作流进入挂起状态。需要用户调用ReportTaskSucceeded - 汇报指定的任务执行成功或ReportTaskFailed - 汇报指定的任务执行失败接口返回执行结果,然后继续流程执行。
用户可以在data
参数下,增加一个自定义的key
,并引用$Context.Current.TaskToken
表达式获得消息,此消息为收到回调时需要使用的Token的值。