1. 程式人生 > >conductor 事件處理程序

conductor 事件處理程序

out example fig nbsp 有效 value 輸入 ive meta

Introduction

conductor中的事件提供工作流之間的松散耦合,並支持從外部系統生成和消耗事件。

包括:

1. 能夠在外部系統像SQS或Conductor內部生成一個事件(消息)。

2. 當發生與提供的條件匹配的特定事件時啟動工作流。

conductor提供了SUB_WORKFLOW任務,可用於將工作流嵌入到父工作流程中。 事件支持提供類似的功能,而無需顯式添加依賴關系,並提供了一個無休止的風格集成。

Event Task

事件任務提供將事件(消息)發布到指揮或外部事件系統(如SQS)的能力。 事件任務對於為工作流和任務創建基於事件的依賴非常有用。

Event Handler

事件處理程序是已註冊的監聽器,當發生匹配事件時執行一個操作。 支持的操作是:

  1. Start a Workflow
  2. Fail a Task
  3. 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 事件處理程序