conductor 事件處理程序
阿新 • • 發佈:2017-06-14
out example fig nbsp 有效 value 輸入 ive meta
Introduction
conductor中的事件提供工作流之間的松散耦合,並支持從外部系統生成和消耗事件。
包括:
1. 能夠在外部系統像SQS或Conductor內部生成一個事件(消息)。
2. 當發生與提供的條件匹配的特定事件時啟動工作流。
conductor提供了SUB_WORKFLOW任務,可用於將工作流嵌入到父工作流程中。 事件支持提供類似的功能,而無需顯式添加依賴關系,並提供了一個無休止的風格集成。
Event Task
事件任務提供將事件(消息)發布到指揮或外部事件系統(如SQS)的能力。 事件任務對於為工作流和任務創建基於事件的依賴非常有用。
Event Handler
事件處理程序是已註冊的監聽器,當發生匹配事件時執行一個操作。 支持的操作是:
- Start a Workflow
- Fail a Task
- Complete a Task
事件處理程序可以配置為監聽Conductor Events或外部事件(如SQS)。
Configuration
事件處理程序通過/ event / API配置。
結構:
{
"name" : "descriptive unique name",
"event": "event_type:event_location",
"condition": "boolean condition",
"actions": ["see examples below"]
}
條件:
條件是必須評估為一個布爾值的表達式。 支持類似JavaScript的語法,可用於基於有效載荷評估條件。 只有當條件求值為true時才執行操作。
給定消息中的以下有效內容:
{
"fileType": "AUDIO",
"version": 3,
"metadata": {
length: 300,
codec: "aac"
}
}
表達式:
$.version > 1
true
$.version > 10
false
$.metadata.length == 300
true
操作
Start A Workflow
{
"action": "start_workflow",
"start_workflow": {
"name": "WORKFLOW_NAME",
"version": <optional>
"input": {
"param1": "${param1}"
}
}
}
Complete Task*
{
"action": "complete_task",
"complete_task": {
"workflowId": "${source.externalId.workflowId}",
"taskRefName": "task_1",
"output": {
"response": "${source.result}"
}
},
"expandInlineJSON": true
}
Fail Task*
{
"action": "fail_task",
"fail_task": {
"workflowId": "${source.externalId.workflowId}",
"taskRefName": "task_1",
"output": {
"response": "${source.result}"
}
},
"expandInlineJSON": true
}
啟動工作流的輸入和完成/失敗任務的輸出 遵循用於引導工作流輸入的相同表達式。
conductor 事件處理程序