集成事件总线EventBridge

云工作流支持将事件总线(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

代码解析如下。

参数说明

参数名称

是否必选

参数说明

示例值

id

事件ID。标识事件的唯一值。发送端必须确保source+id是唯一的,如果由于网络等原因事件被重新发送,可能会产生两个相同ID的事件。接收端会认为具有相同sourceid的事件是重复的。事件通过规则路由到目标、事件被处理时,需要根据id跟踪事件。

45ef4dewdwe1-7c35-447a-bd93-fab****

source

事件源。提供事件的服务。标识事件发生的内容。一般会包含事件源的类型,发布事件的机制或生产事件的过程。发送端必须确保每个事件的source+id是唯一的。

acs:aliyuncvc

type

事件类型。描述事件源相关的事件类型。该参数用于路由、事件查询和策略执行等。格式由生产者定义且包含版本等信息。

aliyuncvc:MeetingEvent:MemberOperate

eventBusName

接收事件的事件总线名称。

该参数是事件从事件源发布到事件总线后新增的,不是CloudEvents规范中的参数。

default

subject

事件主题。

默认为当前工作流的ARN定义。JSON数据包含标识事件中涉及的资源的ARN。在发布订阅模式中,订阅者通常订阅事件源发出的事件。当事件源中包含子结构时,只使用事件源无法对具体事件进行清晰的定义。subject参数在订阅过滤场景中对data无法解释的内容提供说明。

acs.fnf:cn-hangzhou:{AccountId}:215672

data

事件内容。

对象类型,内容由发起事件的服务决定。CloudEvents可能包含事件发生时由事件生产者给定的上下文,data中封装了这些信息。

data:
  meetingName: swqd
  groupId: 456
	action: camera_off
	time: 1590592527490
	userId: 199525****
  meetingUUID: hz-20864c8f-b10d-45cd-9935-884bca1b****

返回值说明

业务请求的返回结果,会被包装在一个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的值。