設定 Webhook 通知

您可以使用 Webhook ,將 Decision Center 的通知共用給您選擇的應用程式。

Webhook 是 HTTP 自訂回呼,可用來將通知傳送至外部應用程式。 Webhook 由下列三個內容定義:
  • 必要: 指定傳送事件之端點的 URL。
  • 選用: 資料來源。 如果您未指定,則會使用預設資料來源。
  • 選用項目: 用於向遠端安全伺服器進行鑑別的鑑別記號。
您可以即時收到下列類型事件的通知:
  • 當在 Decision Center中發生與決策控管架構相關的動作時,例如當使用者建立發行或核准活動時。
  • 當部署結束時,會通知您其狀態: 已完成、失敗或已中斷。
  • 當使用者建立或更新規則或決策表時。

您可以向 Decision Center REST API 登錄 Webhook。 事件會以 JSON 格式傳送至已登錄的端點。 您必須設定伺服器,以便能夠處理事件,並將它們轉換成與目標應用程式相容的格式。 例如,如果您想要將通知傳送至 Slack ,則伺服器必須將從 Decision Center 傳送的事件轉換為與 Slack 相容的格式。

通知是非同步的,這表示它們在背景中完成。 在長時間作業 (例如匯入或刪除專案,或同步化或合併分支) 期間,也會停用它們。 已停用它們,以避免傳送大量個別通知。

圖 1. Decision Center 中的 Webhook 機制
顯示 Decision Center 中 Webhook 機制的圖表

配置 Webhook

Decision Center REST API 提供四個端點來處理 Webhook:
  • PUT /webhook/notify : 定義一或多個傳送通知的 URL ,並選擇性地提供鑑別記號。
  • GET /webhooks/notify ,以查看從這個 Decision Center實例取得通知的 URL 清單。
  • DELETE /webhooks/{webhookId}/notify 以刪除 Webhook。
  • POST /webhooks/{webhookId}/notify ,以更新現有的 Webhook。

如需相關資訊,請參閱 Decision Center REST API

接收 Webhook 通知

伺服器收到的 JSON 有效負載包含事件的各種相關資訊。 傳送下列資料:
表 1. 事件所傳送的資訊
資料 說明
id 提供給事件的唯一 ID。 您可以使用此 ID 在日誌檔中尋找事件。
version 事件的版本號碼。 這可讓您識別事件的版本。 版本一律從 1開始。
author 觸發通知的使用者。
date 發出事件的日期,代表 Java™ 日期 (長值)。
sourcename 傳送事件的應用程式名稱。 此值一律為 Decision Center
sourcelink 傳送事件之 Decision Center 實例的 URL。
type 觸發 Webhook 的事件類型,可讓您過濾事件。
可能的類型如下:
規則構件
  • RuleCreated,當建立規則時。
  • RuleUpdated,當更新規則時。
  • RuleDeleted(刪除規則時)。
決策控管架構
  • ReleaseCreated(建立發行時)。
  • ReleaseUpdated(更新版本時)。
  • ReleaseDeleted(當刪除發行時)。
  • ActivityCreated(當建立活動時)。
  • ActivityUpdated(當活動更新時)。
  • ActivityDeleted,當刪除活動時。
部署
RuleAppDeployment(當部署 RuleApp 時)。
變數集
  • VariablesetCreated,當建立變數集時
  • VariablesetUpdated,當更新變數集時
  • VariablesetDeleted,當刪除變數集時
TestSuite
  • TestsuiteCreated,當建立測試套組時
  • TestsuiteUpdated,當更新測試套組時
  • TestsuiteDeleted,當刪除測試套組時
作業
  • OperationCreated,當建立作業時
  • OperationUpdated,當更新作業時
  • OperationDeleted,當刪除作業時
規則流程
  • RuleflowCreated,當建立規則流程時
  • RuleflowUpdated,當更新規則流程時
  • RuleflowDeleted,當刪除規則流程時
分支
  • BranchCreated,當建立非受管理分支時
  • BranchUpdated,當更新非受管理分支時
  • BranchDeleted,當刪除非受管理分支時
Snapshot
  • SnapshotCreated,當建立 Snapshot 時
  • SnapshotUpdated,當更新 Snapshot 時
  • SnapshotDeleted,當刪除 Snapshot 時
content 包含與事件相關聯之構件相關資訊的陣列。 例如,如果您已建立發行,則具有發行詳細資料,例如核准者名稱、到期日等。
選用項目: details 包含事件相關資訊的陣列。
project 包含與事件相關聯之專案相關資訊的陣列。
decisionService 包含與事件相關聯之決策服務相關資訊的陣列。

範例

下列範例顯示建立發行時所傳送的事件:
{
    "version": "1.0",
    "id": "f3577511-c33b-4275-a5ef-de177598305b",
    "author": "rtsAdmin",
    "date": 1532519296400,
    "type": "ReleaseCreated",
    "content": [{
        "id": "faa9b2af-e2fe-42a4-9834-bb9cdd607334",
        "internalId": "brm.Release:866:866",
        "name": "New Release",
        "parentId": "7b360d2b-46ca-44c1-a945-fb91b9a0103e",
        "documentation": "",
        "buildMode": null,
        "status": "InProgress",
        "owner": "rtsAdmin",
        "targetDate": "2018-08-07T22:00:00.000Z",
        "approvers": [],
        "initial": false,
        "kind": "Release"
    }],
    "sourceName": "Decision Center",
    "sourceLink": "http://9.145.66.219:8081/decisioncenter?datasource=jdbc%2FilogDataSource",
    "project": {
        "id": "4d9b5dc7-8a7e-404d-a05d-59023707c7d9",
        "internalId": "brm.RuleProject:229:229",
        "name": "AutoQuote",
        "buildMode": "ClassicEngine"
    },
    "decisionService": {
        "id": "4d9b5dc7-8a7e-404d-a05d-59023707c7d9",
        "internalId": "brm.RuleProject:229:229",
        "name": "AutoQuote",
        "buildMode": "ClassicEngine"
    }
}
下列範例顯示更新變更活動時所傳送的事件。 在這裡,到期日已變更。 變更的詳細資料儲存在 detail 欄位中。
{
    "version": "1.0",
    "id": "4eef8f4d-7c87-4022-b0aa-28bf88ffdb7f",
    "author": "rtsAdmin",
    "date": 1532519323387,
    "type": "ActivityUpdated",
    "content": [{
        "id": "0eade79c-14e5-4155-8a08-23c7d52a168b",
        "internalId": "brm.ChangeAct:881:881",
        "name": "Spring Activity",
        "parentId": "faa9b2af-e2fe-42a4-9834-bb9cdd607334",
        "documentation": "",
        "buildMode": "ClassicEngine",
        "status": "InProgress",
        "owner": "rtsAdmin",
        "targetDate": "2018-08-06T22:00:00.000Z",
        "approvers": [],
        "authors": [],
        "kind": "ChangeActivity"
    }],
    "details": [{
        "targetURL": "http://9.145.66.219:8081/decisioncenter/t/library#overviewactivity?datasource=jdbc%2FilogDataSource&baselineId=brm.ChangeAct%3A881%3A881",
        "updateType": "UPDATE_DUE_DATE",
        "oldValue": 1533679200000,
        "newValue": 1533592800000
    }],
    "sourceName": "Decision Center",
    "sourceLink": "http://9.145.66.219:8081/decisioncenter?datasource=jdbc%2FilogDataSource",
    "project": {
        "id": "4d9b5dc7-8a7e-404d-a05d-59023707c7d9",
        "internalId": "brm.RuleProject:229:229",
        "name": "AutoQuote",
        "buildMode": "ClassicEngine"
    },
    "decisionService": {
        "id": "4d9b5dc7-8a7e-404d-a05d-59023707c7d9",
        "internalId": "brm.RuleProject:229:229",
        "name": "AutoQuote",
        "buildMode": "ClassicEngine"
    }
}
下列範例顯示部署 RuleApp 時所傳送的事件:
{
    "version": "1.0",
    "id": "e424a030-4aea-4452-bb5f-7450893a9803",
    "author": "rtsAdmin",
    "date": 1532519935332,
    "type": "RuleAppDeployment",
    "content": [{
        "id": null,
        "internalId": null,
        "name": "Report  2018-07-25_01-58-41-821",
        "status": "COMPLETED",
        "ruleAppName": "autoQuoteRuleApp",
        "messages": {
            "elements": [],
            "totalCount": 0,
            "number": -1,
            "size": 0
        },
        "snapshot": {
            "id": "4758d793-e953-4f11-824f-9e9445cfa02a",
            "internalId": "dsm.DsDeploymentBsln:888:888",
            "name": "Deployment_to_QA_env_2018-07-25T11_58_39Z",
            "parentId": "0eade79c-14e5-4155-8a08-23c7d52a168b",
            "documentation": null,
            "buildMode": "ClassicEngine",
            "kind": "DeploymentSnapshot"
        },
        "servers": [],
        "archive": null
    }],
    "details": [{
        "targetURL": "http://9.145.66.219:8081/decisioncenter/t/library#deploymentreport?id=dsm.DSDeploymentReport%3A1%3A1&datasource=jdbc%2FilogDataSource&baselineId=brm.ChangeAct%3A881%3A881"
    }],
    "sourceName": "Decision Center",
    "sourceLink": "http://9.145.66.219:8081/decisioncenter?datasource=jdbc%2FilogDataSource",
    "project": {
        "id": "4d9b5dc7-8a7e-404d-a05d-59023707c7d9",
        "internalId": "brm.RuleProject:229:229",
        "name": "AutoQuote",
        "buildMode": "ClassicEngine"
    },
    "decisionService": {
        "id": "4d9b5dc7-8a7e-404d-a05d-59023707c7d9",
        "internalId": "brm.RuleProject:229:229",
        "name": "AutoQuote",
        "buildMode": "ClassicEngine"
    }
}