云工作流支持將事件總線(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的值。