基于ActiveMQ的任务集成管理系统设计与实现
2018-05-07冯云姣吴斌曾辉卢嘉川郑丹晨韩飞张婷
冯云姣 吴斌 曾辉 卢嘉川 郑丹晨 韩飞 张婷
【摘 要】随着企业信息化建设的不断发展,应用系统的数量和电子业务流程的任务数量呈现大幅增长,为了有效提高工作效率,设计了一个基于ActiveMQ的任务集成管理系统,实现了应用系统的任务集成和高效互操作。
【关键词】ActiveMQ;JSON;任务集成
中图分类号: 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 引言
隨着企业信息化建设的不断发展,信息技术与企业业务应用不断融合,越来越多的企业业务实现了网上处理,但是由于各业务应用系统之间是相对独立和封闭运行的,用户需要频繁的登录不同的应用系统,才能查看和处理相应的业务流程。应用系统数量越多,用户的操作越繁琐,业务工作的处理效率越低。为了解决这个问题,本文利用ActiveMQ设计了一个任务集成管理系统,实现了松耦合的多系统任务集成和任务管理。
1 JSON技术
JSON(Java Script Object Notation)是一种轻量级的数据传输格式,可以在多种语言之间进行数据传输。JSON易于阅读和编码,也便于解析和生成。因此本文在任务集成管理系统中采用JSON作为数据传输格式。JSON有对象式结构和数组式结构两种,对象式结构和数组式结构可以组合成复杂的数据结构[1]。
2 ActiveMQ技术
ActiveMQ是由Apache组织开发的开源的企业级消息中间件,完整地实现了JMS1.1和J2EE1.4规范。ActiveMQ主要包含以下特点:(1)完全支持JMS1.1和J2EE1.4规范,支持持久化、XA消息、事务等;(2)支持多种语言和协议编写客户端;(3)支持 多种传送协议等[2]。
ActiveMQ采用集中式的体系结构。消息传递系统依赖于消息服务器,客户端之间传递消息由消息服务器进行处理。
2.1 消息传递模型
ActiveMQ支持JMS的两种消息传递模型:点对点(Point-to-Point,P2P)模型和发布/订阅 (Publish-Subscribe,Pub/Sub)模型[3]。
1)点对点模型
点对点模型是基于队列的,消息的发送方发送消息到一个指定的队列,消息的接收方从这个队列中接收消息。点对点模型支持消息传输的异步执行。
在点对点模型中,消息队列的发送方和接收方可以有多个,但一条消息只能被一个接收方接收,队列会将消息保存在队列中直至接收方成功接收消息并应答成功。
2)发布/订阅模型
在发布/订阅模型中,消息的发布者和订阅者通过主题进行消息传递,发布者将消息发布到主题后,所有订阅了该主题的订阅者都可以收到该消息。发布/订阅模型通过主题这个中介,实现了消息传递双方的解耦合与异步传输。
本文的任务集成管理系统只有任务集成管理系统一个消息接收方,并需要每一条任务消息被成功接收和处理,因此点对点模型更适合本系统。
3 基于ActiveMQ的任务集成管理系统设计
任务集成管理系统采用B/S架构,系统间的任务集成方式采用主动推送的模式,用户端登录任务集成管理系统后,以“拉”的模式获取到系统中的待处理任务。
3.1 系统体系结构
任务集成管理系统的体系结构如图3所示,分为用户表示层、系统功能层、系统集成和消息传输层、数据存储层。
1)用户表示层:用户与系统间的交互界面,实现了所有应用系统任务消息的汇总和统一显示。
2)系统功能层:系统业务功能的实现,包括任务集成、任务查询和任务处理等功能模块。任务集成模块实现对下层传输的任务消息的异步接收和数据库存储;任务查询模块实现对数据库存储的各种类型和状态的任务信息的多维度查询。任务处理模块实现向下层传递用户信息完成身份认证,认证成功后跳转至相应的应用系统任务处理界面,完成任务处理。
3)系统集成与消息传输层:系统集成和消息传输功能的实现,实现各系统与身份认证系统的集成,为系统功能层提供应用系统身份认证功能,实现用户通过任务集成管理系统登录到相关应用系统处理任务。消息传输模块通过ActiveMQ实现将各应用系统任务消息传送至上层任务集成模块的功能,为上层提供可靠的消息传输。
4)数据存储层:为系统功能层提供数据存储与访问功能。
3.2 业务处理流程
任务集成管理系统主要的交互对象有4类,分别为用户、应用系统、任务系统及认证系统。用户作为任务集成管理系统的主体,承担任务的发起和处理操作。用户登录到任务系统,查询用户自己的任务库,获取任务列表,选中要处理的任务,经过认证系统认证用户是否具有处理权限,然后登录到对应的应用系统;在应用系统中处理完任务后,应用系统将经过序列化的任务处理信息通过ActiveMQ传输给任务系统;任务系统监听到新任务信息到来,首先反序列化处理,解析出任务信息保护的内容,如果是新任务则加入到任务数据库,如果是任务处理完成信息,则更新任务数据,标记任务完成。任务集成与处理流程如图4所示。
4 基于ActiveMQ的任务集成管理系统的实现
本节主要介绍任务集成管理系统的关键业务模块,即任务集成模块和任务处理模块的技术实现。
4.1 任务集成模块实
1)任务数据格式
根据系统需求,任务数据需包含:任务标题、任务内容、发送人、发送时间、接收人、任务类型、任务状态、来自系统、应用系统任务处理访问地址等信息,其JSON结构如下所示。
[{"taskID": " ID ",
"taskTitle": "任务A",
"taskContent ": "请处理任务A相关内容",
"taskType ": "处理类",
"taskState ": "待处理",
"sender": "人员A ",
"sendTme": " yyyy-mm-dd:hh-mm-ss",
"receiver ": "人员B",
"urgency ": "紧急",
"applicationID ": "应用系统ID",
"applicationIndexUrl": "应用系统首页地址",
"applicationTaskUrl": "应用系统任务处理访问
址"},…]
“[ ]”包含的是一个JSON数组,“{ }”包含的是一个JSON对象,每个JSON对象装载一条任务信息。所有应用系统与任务集成系统之间就采用这样一种统一的JSON格式完成任务数据传输工作。
2)任务数据生成与解析
确定了统一的任务数据JSON格式后,业务应用系统与任务集成系统可以调用相应的接口对任务数据进行JSON封装和解析。由于JSON对多种语言都有良好的支持,因此JSON的生成和解析功可以便捷实现。
3)任务数据发送与接收
任务数据的发送与接收通过ActiveMQ实现,其核心代码片段如下。
发送:
public static void QueueProducerMain (){
ConnectionFactory conFactory = new //建立连接
ActiveMQConnectionFactory(user, pwd, url);
Connection con = conFactory.createConnection();
con.start();
Session se = con.createSession(true,auto_ACK);
//创建消息队列
Destination queue = se.createQueue("TaskQueue");
//创建消息生产者
MessageProducer msgP = se.createProducer(dest);
TextMessage msg = se.createTextMessage(task);
msgP.send(msg); //发送消息
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);
//创建消息队列
Destination queue = se.createQueue("TaskQueue");
//创建消息消费者
MessageConsumer msgC= createConsumer(queue);
msgC.setMessageListener(new QueueAccept());
}
public void onMessage(Message message) {
TextMessage text = (TextMessage) message;
String taskJsonStr = text.getText();
}
4)任务数据库存储
当任务集成系统完成任务信息接收和数据解析后,系统将调用数据库编程接口,实现任务集成系统数据库的新增、修改、删除等功能开发。
4.2 任务处理模块实现
1)企业应用系统身份认证集成
企业的身份认证系统建立了统一的身份认证机制,各个应用系统(包括任务集成管理系统)根据相应认证与授权机制,改造各自的登录模块,实现用户一次登录、全网访问的功能。
2)任务处理与任务状态更新推送
身份认证成功后,任务处理从任务集成管理系统跳转至相应的应用系统处理地址,任务系统只需实现基本的跳转功能,处理功能由应用系统提供。完成任务处理后,应用系统按4.1节的任务数据格式封装新的任务状态更新数据,并调用ActiveMQ的消息发送接口,实现更新任务消息向任务集成管理系统的发送。
5 结束语
本文基于ActiveMQ和JSON技术,运用了ActiveMQ的点对点异步传输模型,实现了应用系统任务与任务集成管理系统之间的任务信息传输与集成。JSON作为一种轻量级、跨平台的数据传输格式,便于不同的应用系统封装、解析和传递。基于ActiveMQ任务集成管理系统的设计与实现充分缩短了业务流程任务的处理时间,有效的提高了工作效率。
【参考文献】
[1]李潇.基于情境感知技术的智能手机助手设计与实现[D].青岛:青岛理工大学,2014.
[2]刘胜国,高景春,陈智勇.基于ActiveMQ平台的地震消息服务探讨[J].华北地震科学,2012,30(2):39-42.
[3]颜廷良,钱江.基于JMS的混合安全消息模型在煤矿应急系统中的应用[J].煤炭技术,2011,30(1):155-158.