摘要:釘釘開放平臺提供了豐富的第三方對接程序接口,為了更好的支持手機辦公和電腦釘釘的使用,本文通過實例的形式完成單位內部OA系統與釘釘開放平臺的消息推送的模塊工作。
關鍵詞:釘釘開放平臺;釘釘與內部OA對接
釘釘是阿里巴巴旗下的通訊類工具,專門打造各單位通用化OA系統,是一款免費版通訊類軟件,幫助企業能夠快速的完成與釘釘的對接工作。本文將以釘釘開放平臺中的企業內部應用為例,完成單位內部OA系統與釘釘開放平臺系統的接口對接,以實例的形式完成單位內部OA系統與釘釘開放平臺的消息推送的模塊工作。其中主要包括釘釘的ACCESS_TOKEN的獲取、消息通知、接口調用說明、系統間對照關系等對接涉及的工作。
一、總覽
企業內部OA系統通常建立在文件驅動的方式,以文件流為導向,推送或收發到各聯系人或OA賬號內,企業內部OA系統通常都有自己的組織架構,需要將釘釘的組織架構與OA系統的組織架構進行對照,并完成消息推送。企業內部OA系統作為獨立的運作系統,我們與其對接時不能破壞內部的邏輯架構,也不能強行讓OA系統進行內部改造,本文采用輪詢企業OA系統數據庫方式來監聽發文信息,并采用釘釘提供的API方式進行接口對接,推送OA文件鏈接。。
二、數據表的創建
本文采用數據庫輪詢監聽的方式工作,本文需要創建6個數據表,DingTalkDeptInfo為從釘釘組織架構中獲取的科室信息,DingTalkPersonInfo為從釘釘組織架構中獲取的人員信息,DingTalkUndoInfo為釘釘推送消息中撤銷任務列表信息,DingTalkSendInfo為釘釘完成推送消息信息列表,OAvsDingTalk為OA系統與釘釘系統的內部人員對照表,OAUserInfo為OA系統用戶ID信息表。釘釘的組織架構分為一級科室和二級科室等架構,支持多節點結構,我們要獲取當前科室下的所有員工信息時,釘釘開發平臺接口要求必須傳入父節點ID,所以我們在設計表時,將科室單獨存放在一個表中,人員單獨創建另一個表。其中DingTalkSendInfo為主要表格,里面包含釘釘已發送過的OA文件ID(DingSendOAId),釘釘推送服務返回狀態信息(DingMsg),釘釘人員ID(DingUserId),釘釘系統返回發送任務ID(DingTaskId),發送時間(CreateTime)。其他表格內容項不贅述。
三、程序設計流程及關鍵點
TalkServer以Timer定時器每隔10s將會調用一次OA發文推送函數,OA發文推送函數采用Thread線程方式,首先先獲取DingTalkSendInfo表中已發送的最大的DingSendOAId,然后再查詢OA系統當前最大的OAId,采用for循環的形式將DingSendOAId作為i起始變量,i小于OAId,i變量自增的形式,循環發送需要發送ID。代碼如:for (long i = DingSendOAId; i < OAId; i++)。OA文件系統存在樹形結構的形式,我們需要通過主目錄獲取子目錄明細項目,推送釘釘消息時,只推送一個發文標題,而子目錄將以程序列表的形式發送給釘釘用戶,OA系統需要按照網絡安全要求,將公網IP地址映射給OA發文系統服務器,這樣推送給釘釘用戶的消息可以通過互聯網訪問內部OA系統查看文件。在推送消息前,應從OA系統獲取文件相關的ID,發送人,接收人等信息,然后將主目錄列表的公網IP地址及標題等相關信息作為主目錄數據,構建完成主目錄數據后,通過for循環構造子目錄數據明細項目及對應文件的鏈接地址。推送主目錄時,我們還需要OA與釘釘用戶對照表OAUserInfo中獲取釘釘用戶的ID,這時我們還需要考慮,會存在OA一個賬戶,但釘釘存在兩個部門都會使用同一個OA賬戶的情況,OAUserInfo里的對應關系可能存在一個OA賬戶對應多個釘釘用戶或科室ID,利用for循環,將同一個主目錄,依次發送給多個用戶。同時我們還會對撤銷或刪除的OA文件進行撤銷函數處理,因為每一次的釘釘消息推送,都會返回taskId,我們將存放在數據庫DingTalkSendInfo表中,通過對OA系統的監聽,獲取到最近10次的撤銷文件ID,與撤銷任務表DingTalkUndoInfo中ID進行for循環對比,如果存在最新的ID,則調用釘釘的撤銷函數API,以上內容為程序的基本流程設計。
四、釘釘開放平臺函數介紹和使用
手機端網頁的顯示采用H5微應用的方式進行開發,我們需要將OA系統當前發文的子目錄以列表的形式在釘釘APP上顯示,所以我們需要開發H5頁面用來顯示發文的附件明細,我們可以使用
參考文獻
[1]朱夏迪.醫院HIS系統調用釘釘開放平臺的簡單實例[J].中國新通信,2016,18(19):146-147.
作者簡介:薛凱,男,山東省青島市,1990年5月,本科,高級系統架構師,軟件設計師,青島市黃島區人民醫院信息中心工作,主要從事軟件維護、軟件開發
青島市黃島區人民醫院,信息中心 266400