雲釘一體:EventBridge 聯合釘釘聯結器打通雲釘生態

語言: CN / TW / HK

簡介:今天,EventBridge 聯合釘釘聯結器,打通了釘釘生態和阿里雲生態,釘釘的生態夥伴可以通過通道的能力驅動阿里雲上海量的計算力。

作者:塵央

背景

“以事件整合阿里雲,從 EventBridge 開始”是 EventBridge 這款雲產品的願景和使命。作為一款無伺服器事件匯流排服務,EventBridge 從釋出以來,以標準化的 CloudEvents 1.0 協議連線了大量雲產品和雲事件,使用者可以通過 EventBridge 輕鬆訪問雲上事件,驅動雲上生態。

截止目前為止,EventBridge 已整合 85+ 阿里雲產品,提供了 941+ 事件型別,整合 50+ SaaS產品,通過事件規則可輕鬆驅動 10+ 阿里系一方雲產品的計算力。

​另一方面,釘釘生態空前繁榮,擁有 4000+ 家的生態夥伴,包括 ISV 生態夥伴、硬體生態夥伴、服務商、諮詢生態和交付生態夥伴等。通過事件將釘釘生態與阿里雲生態聯通,是踐行「雲釘一體」戰略的重要途徑,EventBridge 作為阿里雲標準化的事件樞紐,其重要性不言而喻。

今天,EventBridge 聯合釘釘聯結器,打通了釘釘生態和阿里雲生態,釘釘的生態夥伴可以通過通道的能力驅動阿里雲上海量的計算力。

關鍵技術

EventBridge 整合阿里雲和釘釘生態的方案,核心能力由釘釘聯結器和 EventBridge 的 HTTP 事件源能力提供。

釘釘聯結器

釘釘連線平臺通過視覺化拖拽配置、一鍵訂閱等零程式碼方式,簡單高效的實現釘釘、企業內部系統、知名廠商系統(金蝶、用友、SAP 等)、釘釘第三方企業應用之間資料互通和整合。

​近期,釘釘聯結器在「連線流」中釋出了「HTTP Webhook」的執行動作能力,支援將釘釘生態開放給外部生態,EventBridge 正是通過該能力將釘釘生態接入到阿里雲生態。

​EventBridge HTTP 事件源

事件源是事件驅動的基石,如何獲取更多事件源也是 EventBridge 一直在探索和嘗試的方向。針對市場上其他雲廠商和垂直領域的 Saas 服務,EventBridge 釋出了 HTTP 事件源能力,提供簡單且易於整合的三方事件推送 ,幫助客戶更加高效、便捷地實現業務上雲。

​具體而言,HTTP 事件源是 EventBridge 支援的事件源的一種,它以 Webhook 形式暴露了釋出事件的 HTTP 請求地址,使用者可以在有 URL 回撥的場景配置 HTTP 事件源,或者直接使用最簡單的 HTTP 客戶端來完成事件的釋出。HTTP 事件源提供了支援 HTTP 與 HTTPS,公網與阿里雲 VPC 等不同請求方式、不同網路環境的 Webhook URL,便於使用者將其整合到各類應用中。接入時無需使用客戶端,僅需保證應用可以訪問到對應 Webhook URL 即可,這使得接入過程變得簡單而高效。

在將 HTTP 請求轉換為 CloudEvent 的時候,EventBridge 會將請求的頭部和訊息體部分置於 CloudEvent 欄位中,其餘欄位會依據使用者 EventBridge 資源屬性以及系統預設規則進行填充。使用者可以在事件規則中,對所需的內容進行過濾、提取,最終按照模板拼裝成所需的訊息內容投遞給事件目標。

​在安全方面,HTTP 事件源不需要使用者進行復雜的簽名鑑權,支援 3 種類型開箱即用的安全設定,分別是請求方法、源 IP 以及請求來源域名。

  • 請求方法:使用者可以配置當前請求此事件源時合法的 HTTP 請求方法,如果方法型別不滿足配置規則,請求將被過濾,不會投遞到事件匯流排。
  • 源 IP:使用者可以設定允許訪問此事件源時合法的源 IP(支援 IP 段和 IP),當請求源 IP 不在設定的範圍內時,請求將被過濾,不會投遞到事件匯流排。
  • 請求來源域名:即 HTTP 請求的 referer 欄位,當請求的 referer 與使用者配置不相符時,請求被過濾,不會投遞到事件匯流排。

應用場景

釘釘聯結器市場有數百款聯結器,包含官方聯結器和第三方生態聯結器。

  • 官方聯結器,來源主要是釘釘官方的應用,比如影片會議、日程、通訊錄、審批流、釘盤、宜搭等,企業和 SaaS 廠商可以充分利用這些官方應用的事件構建企業級的應用系統,也可以將釘釘的官方資料流與其他系統做深度整合。
  • 第三方聯結器,來源主要是釘釘的生態合作伙伴,比如金蝶、行翼雲、集簡雲、用友、易快報、銷幫幫等。SaaS 廠商可以通過開放聯結器來開放資料,與其它應用互聯互通。

​如上圖所示,藉助釘釘聯結器,可以將釘釘官方事件源和釘釘 SaaS 事件源連線到阿里雲 EventBridge,從而能驅動雲上的彈性資源。SaaS 廠商能夠藉助 EventBridge 連線的能力快速構建雲原生的 SaaS 應用,藉助雲的彈效能力,採用雲原生最新的技術棧,快速高效地開發 SaaS 應用,同時利用 EventBridge 獲取釘釘和其它 SaaS 應用的資料來源,輕鬆進行業務創新。

當釘釘生態和 EventBridge 聯通後,能產生哪些應用場景呢?

  • 分析場景:企業藉助 EventBridge 事件分析能力,對釘釘官方事件進行分析,快速洞察企業運轉資料。比如審批效率,員工變更趨勢、會議效率等。
  • 通知場景:釘釘聯結器 + EventBridge 可覆蓋絕大多數訊息通知場景,幫助企業使用者快速感知 審批,員工變動,會議室資訊等一些列企業基礎支援系統。
  • 整合場景:基於阿里雲基礎建設,可快速提升釘釘生態和企業內部資料的互通。例如當公司需要對釘釘和企業內部 IT 系統進行資料打通時,EventBridge 解決方案可以毫不費力地將建立在阿里雲體系的 IT 系統連通起來,比如函式計算,雲資料庫,訊息佇列等連線擴充套件阿里雲生態。
  • EDA 場景:使用 EventBridge 快速構建 EDA 驅動的自動化業務流程。例如在新員工入職時,獲取員工變動資訊。並集中推送到郵箱系統,業務支援系統(DB),CRM 系統等。對企業新員工許可權賬戶進行一站式授權,較少重複機械的業務審批流程。

最佳實踐:新增員工 0 程式碼入庫

本章節介紹使用釘釘聯結器和 EventBridge 的最佳實踐,通過一個例子展示如何 0 程式碼將釘釘的一個新員工入職記錄錄入到自定義的資料庫當中,企業可以根據該資料庫搭建各類員工管理系統。

方案簡介

整個方案涉及到釘釘、釘釘聯結器、EventBridge、阿里雲資料庫等產品,整個鏈路如下圖所示:

​前置條件:

  • 擁有一個釘釘賬號,並建立一個團隊成為管理員,並能登陸釘釘開放平臺。
  • 擁有一個阿里雲賬號,並開通 EventBridge 和阿里雲資料庫。

實踐步驟

整個實踐過程分為以下幾個步驟。

1)建立事件匯流排和 HTTP 事件源

首先登陸 EventBridge 控制檯,建立一個事件匯流排和 HTTP 事件源,如下圖所示,可以先跳過規則和目標的建立。

​建立完成後,進入事件匯流排的詳情列表,獲取 HTTP 事件源的公網「Webhook 地址」,如下圖所示:

​2)建立釘釘連線流

登陸釘釘開放平臺,進入連線平臺,在「我的連線」下建立連線流,在建立介面,選擇觸發器為「官方-通訊錄-通訊錄使用者增加」。

​連線流建立完成後,進入編輯頁面,新增一個「HTTP Webhook」的節點,在「請求地址」一欄填入上個步驟獲取到的「HTTP 事件源」地址。

​3)釘釘觸發新增員工事件

開啟釘釘,進入團隊,邀請另一個賬號加入團隊,然後進入事件匯流排的「事件追蹤」頁面,可以發現該員工新增事件已經投遞到了事件匯流排之上。

​該事件被轉換成了一個「CloudEvents」格式,其「$.data.body」為事件的詳情,包含 dingId, userId, department 等欄位。

{
  "datacontenttype": "application/json",
  "aliyunaccountid": "11*****48",
  "data": {
    "headers": {
    },
    "path": "/webhook/putEvents",
    "body": {
      "syncAction": "user_add_org",
      "orderInDepts": "{1:17626***32512}",
      "dingId": "$:***:$5RU***QhP/pK**+4A==",
      "active": true,
      "avatar": "",
      "isAdmin": false,
      "userId": "1411****46379",
      "isHide": false,
      "isLeaderInDepts": "{1:false}",
      "isBoss": false,
      "isSenior": false,
      "name": "小明",
      "department": [
        1
      ]
    },
    "httpMethod": "POST",
    "queryString": {}
  },
  "subject": "acs:eventbridge:cn-hangzhou:**:eventbus/**/eventsource/my.dingtalk",
  "aliyunoriginalaccountid": "118**48",
  "source": "my.dingtalk",
  "type": "eventbridge:Events:HTTPEvent",
  "aliyunpublishtime": "2022-05-13T07:28:29.505Z",
  "specversion": "1.0",
  "aliyuneventbusname": "chenyangbus",
  "id": "7059131c-**-**-b232-c4c3592120ae",
  "time": "2022-05-13T15:28:29.504+08:00",
  "aliyunregionid": "cn-hangzhou",
  "aliyunpublishaddr": "*.*.61.88"
}

4)資料庫建立員工表

通過 RDS 控制檯購買一個例項,並建立好資料庫,然後根據上述新增員工事件的格式,提取部分欄位對資料庫進行建表。

CREATE TABLE `user_info` (
  `dingId` varchar(256) NULL,
  `active` varchar(256) NULL,
  `isAdmin` varchar(256) NULL,
  `userId` varchar(256) NULL,
  `name` varchar(256) NULL
) ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8;

5)建立事件規則

資料庫準備好後,返回 EventBridge 控制檯,為第一步建立的事件匯流排建立事件規則,對「新增員工事件」進行轉換並投遞至資料庫當中。

首先建立規則,過濾第一步建立的 HTTP 事件源。

​然後選擇 RDS 目標,做好引數對映。

​6)觸發事件入庫

第三步觸發事件時,因未配置規則和目標,事件沒有被消費,故需要通過釘釘重新觸發一次事件,然後從 EventBridge 控制檯觀察推送軌跡。

從軌跡中可以看出推送成功,然後通過 RDS 控制檯可以查詢到該條記錄。

​至此,一個釘釘團隊新員工入職的記錄通過 0 程式碼的方式入庫到企業資料庫當中,可以非常低的成本開發企業級管理應用。

參考連結:

[1] 阿里雲 EventBridge 事件驅動架構實踐

[2] 資料庫應用整合

[3] EDA 事件驅動架構與 EventBridge 二三事

[4] 雲事件驅動引擎EventBridge

[5] “訊息驅動、事件驅動、流 ”基礎概念解析

原文連結

本文為阿里雲原創內容,未經允許不得轉載。