作者/譚江山,柳州市第一職業(yè)技術(shù)學(xué)校
基于中間件技術(shù)的釘釘與現(xiàn)有OA系統(tǒng)集成探討
作者/譚江山,柳州市第一職業(yè)技術(shù)學(xué)校
目的:實(shí)現(xiàn)企業(yè)內(nèi)部辦公系統(tǒng)通過(guò)釘釘接口發(fā)送通知、電子工資條等功能,實(shí)現(xiàn)與現(xiàn)有OA系統(tǒng)進(jìn)集成。方法:現(xiàn)有辦公系統(tǒng)程序通過(guò)中間件技術(shù)間接地與釘釘開放平臺(tái)進(jìn)行通信。結(jié)果:能夠在現(xiàn)有辦公系統(tǒng)中方便地調(diào)用釘釘開放平臺(tái)的接口,如:發(fā)送釘釘消息、同步釘釘通訊錄等一系列的功能。結(jié)論:該方法實(shí)施部署簡(jiǎn)單,具有良好的擴(kuò)展性。并且在不影響原有系統(tǒng)的前提下,方便企業(yè)了解員工查看通知情況。
釘釘;辦公系統(tǒng);集成 c# 中間件
釘釘是阿里巴巴專為中小企業(yè)和團(tuán)隊(duì)打造的溝通、協(xié)同的移動(dòng)辦公OA。釘釘解決了企業(yè)管理中的一些問(wèn)題,比如找人不再麻煩、信息得不到回復(fù)、審批流程簡(jiǎn)單化,無(wú)紙化、溝通軟件等,自從2015年5月26日正式發(fā)布釘釘2.0版以來(lái),用戶數(shù)得到快速的增長(zhǎng)。由于很多企業(yè)原來(lái)已經(jīng)有了自己的OA辦公系統(tǒng) ,并且些辦公系統(tǒng)已經(jīng)比較成熟,企業(yè)員工也已經(jīng)習(xí)慣了原有OA系統(tǒng)。但隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,原有辦公系統(tǒng)的一些短板也很明顯,比如要找一個(gè)同事還要查辦公系統(tǒng)的聯(lián)系電話,發(fā)出的信息得不到回復(fù),不知有沒(méi)有看到。審批文件還需要到處找領(lǐng)導(dǎo),或還要登錄電腦才能審批。而這些傳統(tǒng)辦公系統(tǒng)的缺點(diǎn)正是釘釘所擅長(zhǎng)的。但釘釘畢竟是一個(gè)通用的信息溝通平臺(tái),不能適應(yīng)一些企業(yè)的個(gè)性化要求。如何將釘釘與現(xiàn)有OA辦公系統(tǒng)進(jìn)行整合是本文的探討目標(biāo)。
中間件是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源。中間件位于客戶機(jī)
服務(wù)器的操作系統(tǒng)之上,管理計(jì)算機(jī)資源和網(wǎng)絡(luò)通訊。是連接兩個(gè)獨(dú)立應(yīng)用程序或獨(dú)立系統(tǒng)的軟件。相連接的系統(tǒng),即使它們具有不同的接口,但通過(guò)中間件相互之間仍能交換信息。執(zhí)行中間件的一個(gè)關(guān)鍵途徑是信息傳遞。通過(guò)中間件,應(yīng)用程序可以工作于多平臺(tái)環(huán)境。
OA是辦公自動(dòng)化(OFFICE AUTOMATION)的簡(jiǎn)稱,是采用Internet/Intranet技術(shù),基于工作流概念,使企業(yè)內(nèi)部人員方便快捷地共享信息,高效協(xié)同工作;改變過(guò)去復(fù)雜、低效的手工辦公方式,實(shí)現(xiàn)迅速、全方位的信息采集、處理,為企業(yè)管理和決策提供科學(xué)依據(jù)。企業(yè)實(shí)現(xiàn)辦公自動(dòng)化程度也是衡量其實(shí)現(xiàn)現(xiàn)代化管理的標(biāo)準(zhǔn)。辦公自動(dòng)化不僅兼顧個(gè)人辦公效率提高,更重要的是可實(shí)現(xiàn)群體協(xié)同工作。憑借網(wǎng)絡(luò),這種交流與協(xié)調(diào)幾乎可以在瞬間完成。這里所說(shuō)的群體工作,可以包括在地理上分布很廣,甚至在全球上各個(gè)地方,以至于工作時(shí)間都不一樣的一群工作人員。
傳統(tǒng)的OA系統(tǒng)主要是運(yùn)行于PC端,很多企事業(yè)單位的OA系統(tǒng)都是針對(duì)自己的個(gè)性特點(diǎn)來(lái)開發(fā)的,使用已經(jīng)很穩(wěn)定和成熟。近幾年隨著智能移動(dòng)設(shè)備的快速發(fā)展,OA系統(tǒng)開始向移動(dòng)端發(fā)展,工作效率得到了很大的提高,但仍然有大量的OA系統(tǒng)運(yùn)行于PC端。即使有的OA系統(tǒng)有自己的APP,但這些APP的缺點(diǎn)主要體現(xiàn)在無(wú)法了解信息送達(dá)的情況,即信息的發(fā)送者無(wú)法了解接收者是否已經(jīng)查看了信息,也無(wú)了解哪些接收者沒(méi)有查看信息。能了解接收者查看信息情況,是釘釘?shù)奶厣?。根?jù)釘釘官方2016年12月釘釘對(duì)外公布用戶數(shù)量已經(jīng)超過(guò)240萬(wàn)家,而且用戶數(shù)量正在快速增長(zhǎng)。
為了方便各類應(yīng)用接入釘釘,釘釘開發(fā)平臺(tái)開放了接入接口API,利用API可以方便的讓我們的OA系統(tǒng)與釘釘集成。但釘釘只提供了類似微信的JSAPI接口,且只提供了Java、PHP及Nodejs這三種技術(shù)接入釘釘開放平臺(tái)API的示例代碼,未提供C#的示例代碼,也未提供接入方案。本文將探討用C#和中間件技術(shù),實(shí)現(xiàn)OA系統(tǒng)與釘釘?shù)募?。本方案不是讓釘釘平臺(tái)與現(xiàn)有OA系統(tǒng)直接進(jìn)行通信,而是利用中間件技術(shù)。釘釘平臺(tái)通過(guò)開的發(fā)JSAPI接口與中間件進(jìn)行通信,中間件再通過(guò)WebService或WebApi技術(shù)與OA系統(tǒng)進(jìn)行通信,如圖1所示。
圖1
考慮到OA系統(tǒng)后續(xù)可能還會(huì)有更多的應(yīng)用要接入,所以這里采用的接入方式是消息中間件架構(gòu),作用是將釘釘開放的各種各樣的接口,比如說(shuō)組織同步的接口、應(yīng)用管理接口、消息接口進(jìn)行統(tǒng)一封裝,這樣以后無(wú)論要接入哪個(gè)系統(tǒng),這些系統(tǒng)只要和中間件打交道就可以了。釘釘接口一旦發(fā)生變化,只要改中間件的接口,后端系統(tǒng)的接口是不需要做任何變動(dòng)的。也許過(guò)幾年后,新出來(lái)其他的應(yīng)用更適合做移動(dòng)辦公,不再使用釘釘了,所有內(nèi)容都要顛覆掉,通過(guò)中間件的方式就會(huì)比較好的解決這樣的一個(gè)接入的問(wèn)題,如中間件可以后續(xù)改變和微信接入等。
下面以發(fā)布通知為例,實(shí)現(xiàn)釘釘與OA系統(tǒng)的集成。將中間件以類庫(kù)的方式引用到OA系統(tǒng)中,以下是實(shí)現(xiàn)中間件功能的各個(gè)類的關(guān)鍵代碼:
// OA將數(shù)據(jù)提交到釘釘?shù)膸椭?/p>
public class HttpHelper
{
public static string HttpPost(string
url, Object data)
{
WebClient wc = new WebClient();
wc.Headers.Add("Content-Type",
"application/json");
byte[] postData = Encoding.UTF8.
GetBytes(data.Tostring());
byte[] responseData =
wc.UploadData(url, "POST", postData); // 得到返回
字符流
return Encoding.UTF8.
Getstring(responseData);// 解碼
}
}
//消息類
public class TextMessage
{
public string touser;//消息接收人id
public string toparty;// 消息接收部門id
public string agentid;//應(yīng)用id
public string msgtype="text";//消息類型
public Text text=new Text();//消息內(nèi)容
//發(fā)消息給企業(yè)中的所有人
// accessToken為企業(yè)授權(quán)碼,content為要發(fā)布的消息內(nèi)容
public string SendToAll(string
url,string agentid, string accessToken, string
content)
{
this.touser = "@all";//所有人
this.toparty = "";
this.agentid = agentid;
this.text.content = content;
string hostUrl= url + "/message/
send?" + "access_token=" + accessToken;
return HttpHelper.HttpPost(hostUrl,
JsonHelper.SerializeObject(this));//發(fā)布消息
}
}
public class Text
{
public string content;
}
筆者基于上述技術(shù),將所在學(xué)校的自有OA與釘釘平臺(tái)進(jìn)行集成,實(shí)現(xiàn)了學(xué)校內(nèi)網(wǎng)、外網(wǎng)通知公告與釘釘同步發(fā)送、電子工資條的發(fā)送和查詢等,同時(shí)實(shí)現(xiàn)了部門信息及員工信息與釘釘?shù)耐?。系統(tǒng)已經(jīng)平穩(wěn)運(yùn)行6個(gè)多月,服務(wù)于學(xué)校的400多名教職員工,提高了通知公告的知曉率,豐富了學(xué)校的移動(dòng)辦公。
* [1]《醫(yī)院HIS系統(tǒng)調(diào)用釘釘開放平臺(tái)的簡(jiǎn)單實(shí)例》作者 朱夏迪中國(guó)新通信
* [2]《中間件技術(shù)研究》作者 常煜芬、張育平計(jì)算機(jī)應(yīng)用研究
* [3]阿里釘釘開放平臺(tái)(https://open.dingtalk.com)