基于即时协同工作的办公信息平台
2008-04-22
作者:刘克勤1, 文俊浩2
摘 要: 针对传统的信息交流模式只能实现静态工作流" title="工作流">工作流方式的弊端,提出一种动态即时协同工作" title="协同工作">协同工作的信息交流平台。并以办公系统为背景,将Java技术、XML技术、工作流技术及消息传递中间件技术有机结合,实现了用户间在协同办公平台" title="办公平台">办公平台内的在线信息交流。
关键词: 动态协同 工作流驱动 中间件技术
信息社会对信息交流方式的要求越来越高,传统的静态工作模式已不适应即时获取信息满足协同工作的需要。本文以办公系统为背景,将Java技术、XML技术、工作流技术及消息传递中间件技术有机结合,构建了一个动态即时协同工作的信息平台。该平台基于XML协同动态工作流驱动和可视化的工作流建模工具(X-Wrokflow),满足了用户可视化流程自定义要求;基于XML的协同消息服务驱动,实现了用户间在协同办公平台内的在线信息交流,实时性好,满足了人们对信息即时协同的工作需要。以下就有关功能实现问题进行讨论。
1 协同动态工作流驱动及X-Workflow的实现
1.1 引擎的结构
工作流引擎主要包含下列功能:解释流程定义;生成过程实例;控制流程实例的创建、激活、挂起和终止等,实现流程活动导航;引导流程活动的进行,包括顺序和并行操作期限调度工作流相关数据解释等;确定需要用户处理的工作项,提供用户交互接口;维护工作流控制数据和工作流相关数据,与用户或应用程序" title="应用程序">应用程序传递工作流相关数据;调用外部应用程序和连接工作流相关数据的接口;跟踪具体流程实例的历史等。一个工作流引擎[1]的过程流转系统可以表示为一个三元组
1.2 基于XML的公文流转系统工作流过程模型DT-XPDL
工作流模型描述表现形式有两种:描述性语言和图形设计工具。前者用语句描述工作流动规则,后者采用结点表示人、设备、应用程序等实体对象,用链表示文档传递、请求、指令等。为了方便交互和在不同的模型之间实现转换,人们提出了称之为“工作流过程规范语言”的规范描述语言。现有的工作流过程建模语言主要有以下几类:(1)基于IPO(Input-Process-Output)的语言,如在IBM MQSeries Workflow使用的活动网络,过程中的每一个基本活动都由输入(I)、处理(P)、输出(O)三个部分组成。这类语言按照活动执行顺序描述工作流过程。(2)基于对话行为(Speech-Act-based)的方法,有时也叫做语言行为方法。(3)基于约束的建模方法,如由GLANCE 提出的广义过程结构语法(Generalized Process Structure Grammar)。(4)基于角色建模的过程描述方法,如角色活动图RAD(Role Activity Diagrams)。(5)基于形式化表示的建模方法,如基于Petri网的建模方法。
(1)工作流过程定义语言WPDL
1994年WfMC推出的工作流过程定义语言WPDL(Workflow Process Definition Language)是为创建工作流过程模型的输入、输出而建立的一种元语言。WPDL的关键词是基于WfMC词汇表中所定义的术语,术语清晰地描述了元模型中的过程实体。WPDL的实体类型不能再被扩展,但用户定义的属性可添加到单个实体类型中,工作流过程定义包括一个或多个工作流过程活动。
(2)XML过程定义语言XPDL
WfMC支持异构工作流管理系统与产品之间的互操作性。由于Internet与Web的普及和标准化以及XML的良好特点,可利用Internet、Web及XML来解决互操作问题。2001年WfMC发布了一个基于XML描述的工作流过程定义接口规范——XML过程定义语言XPDL(XML Process Definition Language)[2]。XPDL与WPDL都是基于同一个工作流过程的元模型,只是在XML描述格式基础上对WPDL进行映射并做了适当的添加和修改。由于XML具有不可比拟的优点,基于XML描述的过程定义语言大大扩展了WfMC在基于B/S结构的应用范围,因此,XPDL已成为工作流过程模型的主要描述形式。
(3)面向公文流转系统的基于XML的过程定义语言DT-XPDL
参考WfMC推出的WPDL/XPDL,结合我国办公系统中公文流转业务流程特点,建议采用面向公文流转系统的基于XML的过程定义语言DT-XPDL (Document Transfer XML-based Process Definition Language),以实现工作流过程引擎。
1.3 动态工作流引擎的实现
(1) 过程实例的状态
过程模型实例[3]有四个转换状态:初始、运转、暂时、结束。四个状态在工作流控制系统控制下可相互转移,如图2所示由图可见,对完成的过程实例,将移出工作流运转系统,以保证完成的实例不再占用系统资源,从而避免了对活动实例处理效率的影响。
(2) 实例管理
引擎通过轮询控制状态的转换。对于过程实例,引擎用XML的元素对其进行描述。在DOM数的构造中,这些实例处于树的最底层,相当于叶子结点,引擎通过元素名对它们逐次访问。当用户登录进入系统时,引擎会将待处理元素的信息返回给用户,如果没有该用户要处理的信息,引擎不采取任何行动。当用户进入系统时,如有用户要处理的实例,则该实例将进入新的待处理队列,由用户发送处理请求,直到实例处理或用户推出系统,实例将挂在待处理队列中等待处理。
(3) 主动式
为实现主动交互和协调,实例运转时,可通知客户处理事件,由客户行为驱动下一步运转方向和状态,在运转中改变工作流程,以实现“动态工作流”。因此必须有某种机制引擎,在需要时主动通知客户进行下一步处理。由于协作是基于Web的,并使用了XML技术,为了在浏览器中解析XML,可利用Applet、Servlet和JSP相结合的方法。服务器的Servlet和浏览器端的Applet通过XML在Web上交换信息。当服务器有消息要通知客户时,Servlet向Applet发送XML格式的信息,Applet通过浏览器执行Javascript解析XML,获得所需信息,以窗口消息方式通知客户。主动式交互的机制如图3所示。客户与服务器的通信信息都是XML格式的信息,这种格式是自定义的,利用XML作为通信格式,不仅易于扩充,在当前基于Web的实现中,还具有易于跨越网络代理和防火墙的优点。
(4) 动态工作流引擎的实现
动态工作流引擎负责读取由可视化流程设计器生成的XML流程定义文件,并对其进行解析和运行。当用户需要创建流程实例时,流程引擎先创建该流程对应的XML描述文件的副本,作为整个流程运行中的参考,流程引擎的XML解析器负责把设计期的流程和对象转化为运行期的流程实例和对象,即把基于XML存储的信息,转化为基于数据库存储的信息。在这个过程中,借助数据持久化技术实现数据库层的隔离。流程实例创建后将在流程引擎的控制框架下被动运行。流程引擎负责流程的调度、接收用户端的输入,根据用户的输入和流程规则进行流程分支的选择,按照条件进行流程的跳转、暂停、恢复和中断。
流程引擎分为四个包:①engine包。负责读取流程配置信息,创建和销毁流程实例,定义流程对象基类、流程监听接口等。②designtime包。复制解析设计期的XML文件,并分解相应的对象,以方便传输到数据库。③runtime包。负责对运行期对象进行管理,如动态解析流程参与者、动态路由选择、流程事件监听、用户脚本支持等。④organization包。定义了流程运行所需参与者类型,如:员工、角色、部门、小组等,该包以接口的形式存在,以适应工作流系统跨应用系统运行。以下是对其中关键的对象原型设计[4]的讨论。
1.4 可视化流程设计器的实现
为了更好地使用协同办公平台,对工作流系统实现完全图形化和可视化操作界面是非常有必要的。由于协同办公平台是基于Web实现的,为与平台保持兼容和易于使用,可视化流程设计器的设计应注意以下几点:(1)必须采用纯Web技术实现。(2)支持所见即所得的设计,采用拖拉方式对流程进行设计和修改,隐藏技术细节,让用户能更专注于自己关心的流程。(3)能生成标准化的XML流程定义文件。在系统的可视化流程设计中,采用纯Web技术进行开发,而不采用任何类似于ActiveX插件、Java Applet等本地化技术,使设计器能更好地兼容各种浏览器和操作系统平台。(4)在支持所见即所得方面,设计器可采用Html+JavaScript+XML的技术进行开发,以完全实现流程元素的动态创建、拖曳、粘接、自动验证等功能。可视化流程设计的结果是一个标准的XML文档,它是对所设计流程的一个XPDL描述。该XML文档将作为流程引擎创建并运行于流程的入口,参与流程运行的全过程;可视化流程设计的另一个结果是一个XML文件,该文件由动态工作流引擎进行解释并执行。按上述分析和设计,即可实现基于XML的动态工作流的可视化设计器[5](X-WorkFlow,XWF),用户只需按要求生成流程,无需编程。
1.5 流程跟踪监控的实现
流程跟踪监控是流程引擎的外围模块,用于给用户提供操作接口。流程参与者通过这个接口,可以实时、可视化地对流程的流转情况进行跟踪,对处理情况进行查询。而流程管理者还可以在流程图上对流程进行管理,包括对参与者的管理、对流程流向的控制以及改变流程状态等。其功能主要有:经办流程跟踪查询;经办流程统计;流程超期提醒;所有流程统计;流程监控等。
1.6 可视化流程页面编辑器的实现
可视化流程页面编辑器[5-7]是可视化流程设计器的一个辅助设计工具,其作用是让用户的可视化设计在流程中能提供需要使用的相关表单界面。其结果将作为流程设计器的相关属性,在运行时由控制框架调用,并展现给用户。可视化流程页面编辑器实质上是一个基于浏览器的可视化HTML编辑器,其输出结果就是一段HTML代码,其功能有:文件上传功能;上传文件类型限定功能;图文混排功能;所见即所得功能;表格功能;表单及常用控件支持;Word文件转换功能等。
2 协同消息服务中间件SCMS的实现
2.1 消息传递机制
SCMS系统负责将信息按照通信协议所定义的消息格式进行打包,然后将打包后的消息放入消息发送队列,并释放一个信号。该信号触发发送线程,使其从消息发送队列中读出消息,通过消息通道代理利用传输协议和物理连接将消息发送到远程系统。任一成员系统信息发送,只需直接调用JMS规范提供的应用接口函数[8]。SCMS是根据消息的目的地址绑定接收对象的,又通过通道代理调用接收对象的接口函数,将消息放入接收对象的消息接收队列。因此,在发送方完成消息发送的同时,接收方也完成了消息接收。接收方只需直接从自身消息接收队列中读出消息、解包,并根据消息的类型进行相应的处理。SCMS的工作模式参照了JMS中所描述的点对点模式和发布/订阅模式,消息传送有三种形式:一对一、一对多、多对多。在JMS规范中,一对一采用点对点模式,一对多和多对多采用发布/订阅模式。
点对点传输消息建立在消息队列基础上,每个客户端" title="客户端">客户端对应一个消息队列,客户端发送消息到对方的消息队列中,从自己的消息队列读取消息。队列将发送给它们的消息一直保留,直到消息被消费或消息到期。发布订阅模式(Pub/Sub)是客户将消息提交给某个主题,发布者和订阅者通常是匿名的,并能动态发布或订阅消息,Pub/Sub系统必须保证某个主题的所有发布者(Publisher)发布的信息准确无误地发送到这个主题的所有消息订阅者(Subscriber)。主题把消息分发给当前的调用者之后就不再保留这些消息。
2.2 点对点模式的具体实现
SCMS利用共享内存提供模拟发送队列和接收队列,提供核心和应用之间的一个消息传输通道,起到对发送消息和接收消息的控制和缓冲作用,如图4所示。客户端A对应队列QA,客户端B对应队列QB。客户端A要发消息给客户端B,则客户端A把消息发到客户端B的队列QB中,客户端B再从队列QB中读取消息。同样,客户端B要发消息给客户端A,则客户端B把消息发到客户端A再的队列QA中,客户端A从队列QA中读取消息。
3 SCMS基于Web的客户端实现
由于整个协同办公平台是基于浏览器应用的,但浏览器又不直接支持JMS的相关服务,因此在浏览器端采用Java Applet技术实现符合JMS规范的无界面消息收发的应用程序,并使用JavaScript脚本对其进行封装。这样Web程序就可以用操作普通对象的方式来操作消息对象,使用基于互联网的消息服务。如图5所示,浏览器端主要由三个对象组成:Message、MessageServer和MessageClient。Message对象是对XML消息对象的一个封装,以方便JavaScript对消息进行操作,同时它也是MessageClient和MessageServer之间传递的标准对象;MessageServer对象主要实现消息转发的功能,即接收服务器端的消息,并转发给已注册的本地窗口,同时接收本地待发送的消息,并发送到服务器端;MessageClient对象负责接收本地服务器转发的消息,并给应用程序提供相关的接口以进行消息的收发,该对象是浏览器端程序直接使用的对象。
本文介绍了基于动态即时协同工作的办公系统总体框架,着重分析了在SCOA系统中如何实现动态工作流定义、流转控制及在线交流,用Java开发基于XML的动态工作流引擎和可视化流程设计器,实现了基于Java的消息服务中间件(SCMS)的在线交流平台。
参考文献
[1] 窦万春,李东波,张世琪.基于对象和实例互操作行为模型的工作流研究[J].计算机学报,2001,(2):197-201.
[2] 周航滨,夏安邦,张长昊.基于Web服务的跨企业信息集成框架计算机集成制造系统——CIMS[J]. 计算机学报,2003,(1):1-5.
[3] 柴晓路,良宇奇.Web Services技术、架构和应用[M].北京:电子工业出版社,2003.
[4] LEYMANN F, ALTENHUBER W. Managing business processes as an information resource. IBM Systems Journal,1994,(33):326-348.
[5] 沈军营,黄进,严隽琪.虚拟企业中的工作流技术研究[J]. 计算机科学,2000,(2):7-10.
[6] 邹冰,张旭,伊晓强,等.一类基于IPO的工作流过程建模语言规范分析[J].计算机工程与应用, 2002,(21):54-58.
[7] GLANCE N S,PAGANI D S, PARESCHI R. Generalized process structure grammars(GPSG) for flexible representations of work. CSCW’96: Proceedings of the Conference on Computer Supported Cooperative Work. Boston, MA, 1996:180-189.
[8] 张旭,邹冰,伊晓强,等.总线型多工作流引擎接口系统的研究与应用[J].计算机工程与应用,2002,(23):75-77.