APP下载

基于工作流的计算机辅助电话访问系统

2016-04-08曹月恬詹舒波

软件 2016年2期
关键词:工作流流程管理

曹月恬++詹舒波

摘要:本文介绍了计算机辅助电话访问调查系统的定义和当前发展状况,为了实现使用和开发过程中具体业务处理与传统web后台系统的解耦分离,同时又达到业务流程的高可控自动化管理和业务的快速易扩展性,本文提出了一种基于工作流系统的,松耦合高可扩展的全新架构和实现。本文介绍了该系统的总体设计与实现,举例详述了整个系统中的消息流转和协议的具体定义与实现。

关键词:计算机辅助电话调查系统;工作流;流程管理;web应用

中图分类号:TP311

文献标识码:A

DOI: 10.3969/j.issn.1003-6970.2016.02.011

引言

由于互联网的高速发展,web应用已经成了了当今社会的重要组成部分。由于web应用具有瘦客户,跨平台,简单易用,维护成本低等显著优势,越来越多的管理系统如:社交,电商,呼叫中心等都急需自己可定制的web接入平台。本文目标就是实现一个高内聚低耦合,高可订制的呼叫中心电话调查系统(CATI)的web平台。

目前市场上的众多后台web系统中,一个共同的缺点就是业务与流程强关联,这样由于业务地不断修改,后台系统需要不断重写,从而浪费了人力物力。

本应用中使用了工作流技术,充分利用了工作流作为企业办公中的通用模块,减少了系统中重复模块的开发,让系统各个模块之间的耦合度大大降低。

1 服务器系统介绍

1.1 计算机辅助电话调查系统简介

计算机辅助电话调查系统(Computer AssistedTelephone Interviewing System),简称CATI系统,是在传统访问调查的基础上加入了电脑操作进行辅助作业的系统。相比传统问卷来讲,CATI系统由计算机辅助控制访问流程,大大降低了错误率。同时对于呼叫中心坐席人员来说,工作强度大大减小,工作要求也大大降低。与传统的上门拜访或者街头调查相比,CATI问卷调查有着低成本,速度快,效率高,质量优等特点,因此,在互联网高速技术飞速发展的今天,CATI形式的调查问卷系统是必然也是必要的存在。

1.2 工作流系统简介

WfMC(工作流管理联盟Workflow ManagementCoalition)给予工作流的定义如下:工作流是一类能够完全或者部分自动化执行的经营过程,它根据一系列过程规则,文档,信息或任务能够在不同的执行者之间进行传递与执行。工作流的思想源自于T业自动化的流水线,随着信息技术的发展和普及,该思想被企业信息系统所采用。在企业的经营过程中,根据企业内部的规章制度和具体的业务流程,一项事务往往会由多个业务部门按照一定顺序串行或并行合作执行来完成企业的经营目标。

2 服务器系统设计

2.1 现有系统不足之处

传统的许多web架构不足之处采用的往往是浏览器向服务器发送请求,后台系统作为一个整体模块将请求处理完之后向前台提供页面下载。后台模块杂糅了所有的功能,包括数据库处理,业务处理,消息交互,第三方调用,webservice调用等等。当系统需要定制新的业务时,这样的后台系统往往扩展非常牵一发而动全身,导致程序的扩展非常困难,程序员对这样的程序维护困难也很大。

2.2 设计目标

在满足计算机辅助电话调查系统的业务需求如预约,统计等功能的基础上,本系统的主要设计目标便是设计一个简单灵活易用,易扩展,稳定,松耦合的系统,而这一切的关键在于需要一个好的系统架构。工作流作为一个高度自动化的模块,在被系统中用来作为业务逻辑的自动处理单元。同时,在调研了大量现有成型商用web程序之后,系统采用了SSH+Json+工作流的架构模式,整个系统各个模块涉及的功能非常清晰明了,易于维护。同时各模块之间定义了详细易用的消息协议,以达到相互交互的目的。

2.3 架构设计

系统大致可分为四个层次,分别为以js为主体的前端,后台管理系统,工作流系统,数据存储系统四部分组成。

视图层可以是多方面的前端实现,位于离用户最近的一层。基本以由浏览器为用户展示页面的方式,显示数据和接收用户输入的数据,完成Web系统与用户的交互功能。前端部分主要由JavaScript结合少量HTML来完成页面渲染的功能,具体职责包括:1.生成Web页面的框架;2.生成具体的页面中的所有元素,并包含元素的数据绑定、元素间的逻辑关联和JavaScript事件,完成与后台的交互任务。页面渲染器使用JavaScript的ExUS框架编写,通过AJAX技术与后台管理模块交互,数据格式使用JSON(JavaScript Object Notation),一种轻量级数据交换格式,具有数据格式比较简单、易于读写、格式清晰、占用带宽小等优点。

后台管理模块是本系统实现的重点,作为系统的主要控制部分,专门负责处理用户从页面提交的请求,将请求进行分发,或是访问数据层服务,或是调用逻辑服务,或是向工作流网关发起工作流任务。本系统才用JavaEE中最普遍使用的后台框架Spring+Struts+Hibemate+Axis,其中Struts主要提供对视图层的接口,Hibemate作为ORM框架,Axis提供一种对webService的轻量而又稳定的支持。Spring作为总的协调者和控制者,将各部分松耦合在一起,构建了各部分需要的实例容器,同时提供了诸如对面向切面编程框架,业务中涉及的事务控制等的强大支持。

工作流系统分为工作流网关,工作流引擎,工作流业务模块(如即时消息)。工作流网关作为工作流系统与外界的门户,主要起消息的转换作用,即将消息从HTTP格式转为工作流总线上的Message形式。工作流引擎根据既定的业务文件定义的流程建立相应的自动机进行跳转和分发,将消息处理之后传递给工作流总线上别的业务模块,各个业务模块再根据预先定制的业务需求进行相应处理。

数据存储系统主要包含呼叫中心底层平台和多个Mysql数据库。各个数据库可能负责各个不同模块的数据,也可能和系统中的数个模块进行交互。呼叫中心底层平台作为已经成熟运行多年的模块,以webservice服务的形式提供呼叫系统管理服务。凡是呼叫相关的数据和消息必须在此注册。同时,呼叫中心底层也维护一个同数据库作为本系统主数据库的一个副本。

系统的基本架构图如下所示:

如图,该系统在传统web架构基础之上,加入了工作流网关和工作流引擎,构建了一个高可用性的web服务器。上图中红色的模块是本系统需要实现的主要模块,流程大致如下:

1、根据系统需求对需要的配置项进行配置,通过解析配置文件获取初始化参数,并通过spring的ContextLoaderListener调用spring的相关类,进行服务器的初始化并启动。

2、前端可能由多部分组成,但基本都以表单形式提交页面。后台处理模块由struts拦截请求,转发给该请求相对应的Action。每个Action继承统一的BaseAction,有统一的行为,接收到相应的表单参数后进行校验和数据预处理。

3、由spring统一进行后台处理逻辑。由hibemate模块进行数据库的基本操作,并通过HTTP协议与工作流网关交互,根据预先定义的http内容作为协议。

4、工作流网关作为一个消息队列挂载在消息总线上,通过消息第三方总线RabbitMQ与工作流引擎进行通信。工作流引擎根据收到的消息类型进行相应的业务处理,如处理数据库,通知即时消息模块等。

5、即时消息模块或是其他业务模块接收工作流引擎指示后进行相应处理,并统一将任务成功与否的消息回复给工作流网关

6、工作流网关向web后台逻辑返回http消息,web后台将消息处理之后转换成Json形式返回给前台js模块,通过前台模块渲染成友好界面之后展示给用户。

3 服务器系统实现

该服务器系统的后台逻辑模块选用struts+hibernate+spring+axis的经典java web框架实现,工作流网关是建立在netty服务器基础上的一个轻量级HTTP服务器。下面分布介绍其具体实现。

3.1 工作流网关具体实现

工作流网关的启动流程逻辑和主要类定义如下:

1.订制配置文件,根据实际需求修改配置参数,如端口号等。

2.从配置文件中得到初始化参数,根据netty官方api所示,利用一个BootStrap类调用SeverFactory进行服务器的初始化并启动。

3.初始化整个channel,在pipeline中绑定继承自ChannelInboundHandler的ReadHandler类,在其中的channeIRead方法中实现了工作流网关的基本逻辑,即将http请求的各部分内容取出并进行解析,转化成RabbitMQ总线上以Json形式呈现的消息类型,并发往工作流引擎所在的消息队列。

3.2 消息定义

工作流系统内部各模块之间通过RabbitMQ消息总线连接,互传json形式的消息。而后台逻辑系统跟丁作流系统之间主要是借助与丁作流网关,使用http的形式进行交互。工作流网关作为工作流系统对外的统一接口,是由netty服务器实现的轻量级服务器,实现消息流从网络协议到总线json消息的转换。下面以计算机辅助访问电话系统中经典功能预约为例,展示消息的定义模式及时序图。

l、申请建立连接并预约

时序图如下:

消息:hi(申请预约)

1.传输协议:Http的POST消息

2.传输方向:逻辑层→工作流

3.回应消息:Http的200 0K消息,无消息体(不附带任何业务数据)

消息:here(回应)

1.传输协议:Http的POST消息

2.传输方向:工作流→逻辑层

3.回应消息:Http的200 0K消息,无消息体(不附带任何业务数据)

2、修改预约

时序图如下:

1.传输协议:Http的POST消息

2.传输方向:逻辑层→工作流

3.回应消息:Http的200 0K消息,无消息体(不附带任何业务数据)

3、撤销预约

时序图如下:

消息:done(申请撤销)

1.传输协议:Http的POST消息

2.传输方向:逻辑层→工作流

3.回应消息:Http的200 0K消息,无消息体(不附带任何业务数据)

3.3 后台逻辑中与工作流网关的通信实现

主要使用HttpUtil作为工具类,主要实现了http的客户端功能,能非常轻量级地发送http消息。主要包含

buildHttpContent和doHttpPost两个方法。

其中buildHttpContent主要将参数封装成发往工作流网关所定义的消息体格式,doHttpPost方法负责发送消息。

程序逻辑如下:

1、通过buildHttpContent方法构造消息体

2、建立HttpURLConnecttion,设置连接参数,如设置请求方法为post,设置超时时间等等。

3、连接成功后,获取消息流管道。

4、获取响应码,看是不是200,如果是,获取响应消息的消息体。若不是则抛出异常。

3.4 后台逻辑中与工作流相关的接口实现

后台处理程序按照标准SSH规范编写,接口定义统一在XXService中,实现逻辑一般都在是XXServicehnp1中。当需要具体增加业务功能时,程序要需要先定义接口,并在相应方法中实现自己的业务逻辑。现以预约功能AppointService为例,该接口提供三个方法:

save(Appointlnfo appointlnfo);

update(Appointlnfo appointlnfo);

delete(String streamNumber, Integer sessionNumber)

程序中已经预先实现了工具类HttpUtil,它可以作为客户端往工作流网关发送消息。其中以delete方法为例,代码逻辑为先按照消息定义把参数装配好,利用工具类HttpUtil的buildHttpContent方法封装成Http消息,然后调用HttpUtil的doHttpPost方法向指定工作流网关URL发送消息。具体代码如下:

public Appointlnfo delete( String streamNumber.Integer sessionNumber){

dest=workflowDestPrefix+”.”+appointlnfo.getAppointNumber();

params=new HashMap();

params.put(“act”,httpActOfDelete);

params.put(“appoint_no”,appointlnfo.getAppointNumber()):

content=HttpUtil.buildHttpContent(”done”,””,dest,params);

try{

HttpUtil.doHttpPost(workflowUrl,content);

}catch( Exception e){

e.printStackTrace();

throw new RoIIBackException( RtvErrorDef.WorkflowError):

}

retun appointlnfo;

}

4 结论

本文简单地介绍了计算机辅助电话调查系统的定义和发展背景,并给出了该系统的一种全新的设计与实现,即基于工作流系统的,松耦合的,高可用的系统实现。该设计充分利用了工作流灵活的自动化和快速重组特性,利用丁作流达到了具体事务处理与流程管理的分离。在传统SSH构造的web后台应用的基础上,使得业务逻辑可以高效的扩展和高可控的流程化,既简化了系统的开发工作量,又免去了坐席很多重复丁作,使得业务的新增和使用显得简洁易操作,大大提高了整个系统的效率。

猜你喜欢

工作流流程管理
基于工作流2.0的智慧教室设计与研究
工作流在电力生产管理信息系统中的设计和应用
浅析举报线索流程管理之不足及完善建议
流程管理在完全学分制下学籍管理运行机制中的应用探讨