馮云姣 吳斌 曾輝 盧嘉川 鄭丹晨 韓飛 張婷
【摘 要】隨著企業(yè)信息化建設(shè)的不斷發(fā)展,應(yīng)用系統(tǒng)的數(shù)量和電子業(yè)務(wù)流程的任務(wù)數(shù)量呈現(xiàn)大幅增長,為了有效提高工作效率,設(shè)計了一個基于ActiveMQ的任務(wù)集成管理系統(tǒng),實現(xiàn)了應(yīng)用系統(tǒng)的任務(wù)集成和高效互操作。
【關(guān)鍵詞】ActiveMQ;JSON;任務(wù)集成
中圖分類號: TP311.52 文獻標識碼: A 文章編號: 2095-2457(2018)05-0039-003
【Abstract】With the development of enterprise informationization,the number of application system and electronic business process task showed a substantial increase,in order to improve work efficiency effectively,it designs a task integration management system based on ActiveMQ,which implements the integration of application system and efficient interoperable.
【Key words】ActiveMQ;JSON;Task integration
0 引言
隨著企業(yè)信息化建設(shè)的不斷發(fā)展,信息技術(shù)與企業(yè)業(yè)務(wù)應(yīng)用不斷融合,越來越多的企業(yè)業(yè)務(wù)實現(xiàn)了網(wǎng)上處理,但是由于各業(yè)務(wù)應(yīng)用系統(tǒng)之間是相對獨立和封閉運行的,用戶需要頻繁的登錄不同的應(yīng)用系統(tǒng),才能查看和處理相應(yīng)的業(yè)務(wù)流程。應(yīng)用系統(tǒng)數(shù)量越多,用戶的操作越繁瑣,業(yè)務(wù)工作的處理效率越低。為了解決這個問題,本文利用ActiveMQ設(shè)計了一個任務(wù)集成管理系統(tǒng),實現(xiàn)了松耦合的多系統(tǒng)任務(wù)集成和任務(wù)管理。
1 JSON技術(shù)
JSON(Java Script Object Notation)是一種輕量級的數(shù)據(jù)傳輸格式,可以在多種語言之間進行數(shù)據(jù)傳輸。JSON易于閱讀和編碼,也便于解析和生成。因此本文在任務(wù)集成管理系統(tǒng)中采用JSON作為數(shù)據(jù)傳輸格式。JSON有對象式結(jié)構(gòu)和數(shù)組式結(jié)構(gòu)兩種,對象式結(jié)構(gòu)和數(shù)組式結(jié)構(gòu)可以組合成復雜的數(shù)據(jù)結(jié)構(gòu)[1]。
2 ActiveMQ技術(shù)
ActiveMQ是由Apache組織開發(fā)的開源的企業(yè)級消息中間件,完整地實現(xiàn)了JMS1.1和J2EE1.4規(guī)范。ActiveMQ主要包含以下特點:(1)完全支持JMS1.1和J2EE1.4規(guī)范,支持持久化、XA消息、事務(wù)等;(2)支持多種語言和協(xié)議編寫客戶端;(3)支持 多種傳送協(xié)議等[2]。
ActiveMQ采用集中式的體系結(jié)構(gòu)。消息傳遞系統(tǒng)依賴于消息服務(wù)器,客戶端之間傳遞消息由消息服務(wù)器進行處理。
2.1 消息傳遞模型
ActiveMQ支持JMS的兩種消息傳遞模型:點對點(Point-to-Point,P2P)模型和發(fā)布/訂閱 (Publish-Subscribe,Pub/Sub)模型[3]。
1)點對點模型
點對點模型是基于隊列的,消息的發(fā)送方發(fā)送消息到一個指定的隊列,消息的接收方從這個隊列中接收消息。點對點模型支持消息傳輸?shù)漠惒綀?zhí)行。
在點對點模型中,消息隊列的發(fā)送方和接收方可以有多個,但一條消息只能被一個接收方接收,隊列會將消息保存在隊列中直至接收方成功接收消息并應(yīng)答成功。
2)發(fā)布/訂閱模型
在發(fā)布/訂閱模型中,消息的發(fā)布者和訂閱者通過主題進行消息傳遞,發(fā)布者將消息發(fā)布到主題后,所有訂閱了該主題的訂閱者都可以收到該消息。發(fā)布/訂閱模型通過主題這個中介,實現(xiàn)了消息傳遞雙方的解耦合與異步傳輸。
本文的任務(wù)集成管理系統(tǒng)只有任務(wù)集成管理系統(tǒng)一個消息接收方,并需要每一條任務(wù)消息被成功接收和處理,因此點對點模型更適合本系統(tǒng)。
3 基于ActiveMQ的任務(wù)集成管理系統(tǒng)設(shè)計
任務(wù)集成管理系統(tǒng)采用B/S架構(gòu),系統(tǒng)間的任務(wù)集成方式采用主動推送的模式,用戶端登錄任務(wù)集成管理系統(tǒng)后,以“拉”的模式獲取到系統(tǒng)中的待處理任務(wù)。
3.1 系統(tǒng)體系結(jié)構(gòu)
任務(wù)集成管理系統(tǒng)的體系結(jié)構(gòu)如圖3所示,分為用戶表示層、系統(tǒng)功能層、系統(tǒng)集成和消息傳輸層、數(shù)據(jù)存儲層。
1)用戶表示層:用戶與系統(tǒng)間的交互界面,實現(xiàn)了所有應(yīng)用系統(tǒng)任務(wù)消息的匯總和統(tǒng)一顯示。
2)系統(tǒng)功能層:系統(tǒng)業(yè)務(wù)功能的實現(xiàn),包括任務(wù)集成、任務(wù)查詢和任務(wù)處理等功能模塊。任務(wù)集成模塊實現(xiàn)對下層傳輸?shù)娜蝿?wù)消息的異步接收和數(shù)據(jù)庫存儲;任務(wù)查詢模塊實現(xiàn)對數(shù)據(jù)庫存儲的各種類型和狀態(tài)的任務(wù)信息的多維度查詢。任務(wù)處理模塊實現(xiàn)向下層傳遞用戶信息完成身份認證,認證成功后跳轉(zhuǎn)至相應(yīng)的應(yīng)用系統(tǒng)任務(wù)處理界面,完成任務(wù)處理。
3)系統(tǒng)集成與消息傳輸層:系統(tǒng)集成和消息傳輸功能的實現(xiàn),實現(xiàn)各系統(tǒng)與身份認證系統(tǒng)的集成,為系統(tǒng)功能層提供應(yīng)用系統(tǒng)身份認證功能,實現(xiàn)用戶通過任務(wù)集成管理系統(tǒng)登錄到相關(guān)應(yīng)用系統(tǒng)處理任務(wù)。消息傳輸模塊通過ActiveMQ實現(xiàn)將各應(yīng)用系統(tǒng)任務(wù)消息傳送至上層任務(wù)集成模塊的功能,為上層提供可靠的消息傳輸。
4)數(shù)據(jù)存儲層:為系統(tǒng)功能層提供數(shù)據(jù)存儲與訪問功能。
3.2 業(yè)務(wù)處理流程
任務(wù)集成管理系統(tǒng)主要的交互對象有4類,分別為用戶、應(yīng)用系統(tǒng)、任務(wù)系統(tǒng)及認證系統(tǒng)。用戶作為任務(wù)集成管理系統(tǒng)的主體,承擔任務(wù)的發(fā)起和處理操作。用戶登錄到任務(wù)系統(tǒng),查詢用戶自己的任務(wù)庫,獲取任務(wù)列表,選中要處理的任務(wù),經(jīng)過認證系統(tǒng)認證用戶是否具有處理權(quán)限,然后登錄到對應(yīng)的應(yīng)用系統(tǒng);在應(yīng)用系統(tǒng)中處理完任務(wù)后,應(yīng)用系統(tǒng)將經(jīng)過序列化的任務(wù)處理信息通過ActiveMQ傳輸給任務(wù)系統(tǒng);任務(wù)系統(tǒng)監(jiān)聽到新任務(wù)信息到來,首先反序列化處理,解析出任務(wù)信息保護的內(nèi)容,如果是新任務(wù)則加入到任務(wù)數(shù)據(jù)庫,如果是任務(wù)處理完成信息,則更新任務(wù)數(shù)據(jù),標記任務(wù)完成。任務(wù)集成與處理流程如圖4所示。
4 基于ActiveMQ的任務(wù)集成管理系統(tǒng)的實現(xiàn)
本節(jié)主要介紹任務(wù)集成管理系統(tǒng)的關(guān)鍵業(yè)務(wù)模塊,即任務(wù)集成模塊和任務(wù)處理模塊的技術(shù)實現(xiàn)。
4.1 任務(wù)集成模塊實
1)任務(wù)數(shù)據(jù)格式
根據(jù)系統(tǒng)需求,任務(wù)數(shù)據(jù)需包含:任務(wù)標題、任務(wù)內(nèi)容、發(fā)送人、發(fā)送時間、接收人、任務(wù)類型、任務(wù)狀態(tài)、來自系統(tǒng)、應(yīng)用系統(tǒng)任務(wù)處理訪問地址等信息,其JSON結(jié)構(gòu)如下所示。
[{"taskID": " ID ",
"taskTitle": "任務(wù)A",
"taskContent ": "請?zhí)幚砣蝿?wù)A相關(guān)內(nèi)容",
"taskType ": "處理類",
"taskState ": "待處理",
"sender": "人員A ",
"sendTme": " yyyy-mm-dd:hh-mm-ss",
"receiver ": "人員B",
"urgency ": "緊急",
"applicationID ": "應(yīng)用系統(tǒng)ID",
"applicationIndexUrl": "應(yīng)用系統(tǒng)首頁地址",
"applicationTaskUrl": "應(yīng)用系統(tǒng)任務(wù)處理訪問
址"},…]
“[ ]”包含的是一個JSON數(shù)組,“{ }”包含的是一個JSON對象,每個JSON對象裝載一條任務(wù)信息。所有應(yīng)用系統(tǒng)與任務(wù)集成系統(tǒng)之間就采用這樣一種統(tǒng)一的JSON格式完成任務(wù)數(shù)據(jù)傳輸工作。
2)任務(wù)數(shù)據(jù)生成與解析
確定了統(tǒng)一的任務(wù)數(shù)據(jù)JSON格式后,業(yè)務(wù)應(yīng)用系統(tǒng)與任務(wù)集成系統(tǒng)可以調(diào)用相應(yīng)的接口對任務(wù)數(shù)據(jù)進行JSON封裝和解析。由于JSON對多種語言都有良好的支持,因此JSON的生成和解析功可以便捷實現(xiàn)。
3)任務(wù)數(shù)據(jù)發(fā)送與接收
任務(wù)數(shù)據(jù)的發(fā)送與接收通過ActiveMQ實現(xiàn),其核心代碼片段如下。
發(fā)送:
public static void QueueProducerMain (){
ConnectionFactory conFactory = new //建立連接
ActiveMQConnectionFactory(user, pwd, url);
Connection con = conFactory.createConnection();
con.start();
Session se = con.createSession(true,auto_ACK);
//創(chuàng)建消息隊列
Destination queue = se.createQueue("TaskQueue");
//創(chuàng)建消息生產(chǎn)者
MessageProducer msgP = se.createProducer(dest);
TextMessage msg = se.createTextMessage(task);
msgP.send(msg); //發(fā)送消息
se.commit(); //提交消息
se.close();
}
接收:
public static void QueueAcceptMain(){
ConnectionFactory conFactory = new //建立連接
ActiveMQConnectionFactory(user, pwd, url);
Connection con = conFactory.createConnection();
con.start();
Session se = con.createSession(true,auto_ACK);
//創(chuàng)建消息隊列
Destination queue = se.createQueue("TaskQueue");
//創(chuàng)建消息消費者
MessageConsumer msgC= createConsumer(queue);
msgC.setMessageListener(new QueueAccept());
}
public void onMessage(Message message) {
TextMessage text = (TextMessage) message;
String taskJsonStr = text.getText();
}
4)任務(wù)數(shù)據(jù)庫存儲
當任務(wù)集成系統(tǒng)完成任務(wù)信息接收和數(shù)據(jù)解析后,系統(tǒng)將調(diào)用數(shù)據(jù)庫編程接口,實現(xiàn)任務(wù)集成系統(tǒng)數(shù)據(jù)庫的新增、修改、刪除等功能開發(fā)。
4.2 任務(wù)處理模塊實現(xiàn)
1)企業(yè)應(yīng)用系統(tǒng)身份認證集成
企業(yè)的身份認證系統(tǒng)建立了統(tǒng)一的身份認證機制,各個應(yīng)用系統(tǒng)(包括任務(wù)集成管理系統(tǒng))根據(jù)相應(yīng)認證與授權(quán)機制,改造各自的登錄模塊,實現(xiàn)用戶一次登錄、全網(wǎng)訪問的功能。
2)任務(wù)處理與任務(wù)狀態(tài)更新推送
身份認證成功后,任務(wù)處理從任務(wù)集成管理系統(tǒng)跳轉(zhuǎn)至相應(yīng)的應(yīng)用系統(tǒng)處理地址,任務(wù)系統(tǒng)只需實現(xiàn)基本的跳轉(zhuǎn)功能,處理功能由應(yīng)用系統(tǒng)提供。完成任務(wù)處理后,應(yīng)用系統(tǒng)按4.1節(jié)的任務(wù)數(shù)據(jù)格式封裝新的任務(wù)狀態(tài)更新數(shù)據(jù),并調(diào)用ActiveMQ的消息發(fā)送接口,實現(xiàn)更新任務(wù)消息向任務(wù)集成管理系統(tǒng)的發(fā)送。
5 結(jié)束語
本文基于ActiveMQ和JSON技術(shù),運用了ActiveMQ的點對點異步傳輸模型,實現(xiàn)了應(yīng)用系統(tǒng)任務(wù)與任務(wù)集成管理系統(tǒng)之間的任務(wù)信息傳輸與集成。JSON作為一種輕量級、跨平臺的數(shù)據(jù)傳輸格式,便于不同的應(yīng)用系統(tǒng)封裝、解析和傳遞。基于ActiveMQ任務(wù)集成管理系統(tǒng)的設(shè)計與實現(xiàn)充分縮短了業(yè)務(wù)流程任務(wù)的處理時間,有效的提高了工作效率。
【參考文獻】
[1]李瀟.基于情境感知技術(shù)的智能手機助手設(shè)計與實現(xiàn)[D].青島:青島理工大學,2014.
[2]劉勝國,高景春,陳智勇.基于ActiveMQ平臺的地震消息服務(wù)探討[J].華北地震科學,2012,30(2):39-42.
[3]顏廷良,錢江.基于JMS的混合安全消息模型在煤礦應(yīng)急系統(tǒng)中的應(yīng)用[J].煤炭技術(shù),2011,30(1):155-158.