一个基于Web的可扩展工作流工具*

2013-06-01 09:44赵彦王纯张磊
电信工程技术与标准化 2013年9期
关键词:插件逻辑节点

赵彦,王纯,张磊

(1 北京邮电大学网络与交换技术国家重点实验室,北京 100876;2 东信北邮信息技术有限公司,北京 100191)

一个基于Web的可扩展工作流工具*

赵彦1,2,王纯1,2,张磊1,2

(1 北京邮电大学网络与交换技术国家重点实验室,北京 100876;2 东信北邮信息技术有限公司,北京 100191)

在企业内部有许多异构工作流程,它们具有一定的通用性,但没有统一的方式来设计或管理。我们迫切希望能有一个通用的工作流工具,它可以共享资源并适应异构工作流程。考虑到项目特点以及企业需求,我们提出了一个基于Web的可扩展的工作流模型。此外,我们结合了系统结构和功能的例子分析和阐述了这个新模型。

工作流;可扩展;Web

1 引言

随着网络运行维护的不断发展,企业的各级维护部门和职能部门对网络维护的要求越来越高。为了适应多种异构工作流的管理和控制,并结合项目本身的特点和企业的需求,我们抽象出工作流的业务特性。按照国内外工作流的趋势,我们基于Web和可扩展的业务对工作流进行建模,并且让用户快速实现设计和管理工作流。基于企业实际需求,元模型的定义和相关标准都与工作流管理联盟(WfMC)[1]有所不同。在接下来的章节中,我们将分析基于Web的可扩展工作流模型,阐述这个工具的结构和功能,展示这个工具的应用例子。

本文着重分析了建模层面,以及Web端的设计与数据传递思路,不涉及工作流的具体执行以及节点的算法等问题。

2 相关工作

目前有很多开源的工作流制作工具,例如ObjectWeb Bonita,它是一个100% 基于浏览器的协同工作流系统,封装了已有的工作流业务方法并将它们以基于J2EE的Web Service形式发布。Orchestra Designer为OW2上的开源BPEL引擎Orchestra提供一个基于Flex技术的在线工作流建模工具,并与Orchestra的Web 2.0管理控制台集成。StarFlow是一个轻量级的工作流引擎,它融入了电信行业业务流程的特殊要求。

王坚[2]分析了基于Web的并按照XPDL(XML Process Definition Language)标准工作流可视化问题。Wanpeng Zhang[3]提出了一个工作流模型来表示计划和调度中的流程分支。并且这个方法动态地建模了一系列的可能路径而不是静态的结构。王月龙[4]描述了关于分层概念模型的工作流程和元数据。工作流是一种重要的协同机制,还有其他类似文献不一一赘述。

可以看出,基于Web的B/S架构的工作流工具是当今的一个潮流,对于业务的可扩展性也是必不可少的。为了复用企业独立开发的通用消息(即实时应用进程的管理和通信组件COPART-MACO,Component Package of Real-Time Application Process Management and Communication)来进行数据传输,我们采用了不同于XPDL标准的工作流建模方法。并且以上的开源工作流工具均不能满足需求。

3 总体结构

基于以上分析,希望能设计出一个独立于业务流程的工作流制作工具,并且具有一定的通用性,并希望能有效地解决功能组件多样性的问题。

3.1 相关概念定义

工作流建模是将一个实际的业务流程抽象的过程。一个业务流程由若干具有依赖关系的活动组成,例如输入输出、先后顺序或者并发关系。在这里有几个概念需要定义一下。

(1) 业务能力:能够针对某一类或者某个具体的被管对象进行特定的操作能力,如采集数据、执行命令等。可以通过多种能力的组合实现某个业务功能。

(2) 业务能力插件:是实现特定业务能力的应用程序,可以使用脚本语言或者高级编程语言编写实现,“业务能力”与“业务能力插件”是一对一的使用关系。将业务能力采用插件的方式来开发,目的是快速适应用户需求的改变。

(3) 活动任务:一个可以执行的业务能力。配置好业务能力所需的输入参数和运行参数,使其具有可执行能力。

(4) 依赖关系:活动任务之间的关系,表明一个工作流中活动任务的执行顺序。

(5) 任务节点:一个工作流的一种节点,表示一个活动任务。

(6) 逻辑节点:一个工作流的一种节点,表示一个逻辑并发关系,包括“与”和“或”。

(7) 工作流:将一个至多个活动任务组织起来进行调度执行的功能逻辑,包括任务节点、逻辑节点和依赖关系。

(8) 画布:制作工作流的主要区域。

因此我们能这样来抽象一个工作流,见图1。

3.2 可扩展性分析

图2说明了业务能力、业务能力插件和活动任务之间的关系。插件库中存放着业务能力对应的可执行插件,也同时维护一个业务能力信息表,包含可执行插件的名称、执行该插件所需的输入参数,以及其他相关信息。

假设插件库中目前有可执行插件A和B。我们需要在一个数据表中添加对应的业务能力A和B分别表示可执行插件A和B。当把业务能力A和B添加到工作流中时,赋予了该工作流下唯一的taskID,在同个工作流中可以多次添加一类业务能力,并被分别实例化成为具体任务A1、A2、A3、B1、B2和B3。同类任务将执行同样的可执行插件,但是由于taskID不同,他们也是不同的任务。

可见,我们也可以新开发一个业务能力插件C,将其可执行插件通过业务能力管理新增一个业务能力C,填写正确的信息,并上传可执行文件到系统中。于是,在制作工作流中就可以使用这个插件,组织出具有其他能力的工作流。

按照以上的思路,为了使业务能力插件正常使用我们应该有以下约束:

(1) 插件中应包括使用到的环境变量定义。(2) 插件应尽可能减小对系统的影响。

图1 工作流抽象过程

图2 业务能力、业务能力插件和活动任务的关系

(3) 插件命名规范包括插件代码包最上层目录和编译插件生成的可执行文件。

(4) 插件的输入参数是插件运行的必需的参数,每个插件的具体参数可能不一致。参数有两种形式,用户输入的参数和用户选择的参数。在进行任务配置时,Web端可以根据具体的输入参数生成对应的输入形式,便于用户使用。并且为了增强插件的健壮性容错性,需要对插件的入口参数进行检查。

3.3 体系结构分析

根据前文所述的工作流抽象过程,总体的逻辑体系结构图3所示,采用B/S模式,并分为Web Server子系统和Control Center子系统(后文中我们将省略“子系统”),Web Server与Control Center采用通用消息进行通信。先分别说明Web Server和Control Center的功能。

图3 总体逻辑体系结构

Web Server为用户提供了一个图形化的友好操作界面,使用户更直观便捷地使用系统的各种功能。该子系统采用Java、JSP、 JavaScript语言和ExtJs开源框架[5]开发。也利用Spring[6]和Struts2[7]框架进行逻辑流转。运行在Tomcat容器中,适用各种Linux、UNIX操作系统平台,用户可以通过浏览器以WEB形式的接入使用。

Control Center用于实现设计工作流的功能逻辑的具体实现,基于通用消息框架开发,适用各种Linux、Unix操作系统,使用Informix数据库存储配置数据和业务数据。该子系统根据用户从Web Server发来的Job设计和管理操作指令,完成Job的管理功能,并且将Job按照Job配置库规则做持久化存储,主要以XML文件格式存储。

限于篇幅和主题,本文主要会分析Web端的实现部分。

4 Web Server分析

4.1 结构设计及关键技术

Web Server总体结构遵循Web应用Model 2的概念,即基于MVC(Model-View-Controller)模式的框架。这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。Web Server选用比较成熟的Struts 2作为Web子系统的主体框架,ExtJs框架作为辅助。

4.1.1 控制部分

采用现在十分流行的Struts2和Spring架构来搭建整个管理子系统的Web架构。图3中,核心控制器在Web Server的总体结构中,处于中心控制的核心地位。它将来自客户端的HTTP请求按照URL分发到对应的Action进行处理, 并根据处理结果进行下一步分发工作,最后将结果转交给对应的JSP呈现给用户。业务控制器对应的处理方法,负责执行相应的业务逻辑。

4.1.2 模型部分

Web Server的业务逻辑主要负责将用户的业务操作请求交给Control Center进行分析处理,并对返回的业务数据进行加工和呈现;如果执行出错,就显示明确的错误信息。

4.1.3 视图部分

视图部分负责生成展现给用户的操作界面,采用的是ExtJs开源框架进行开发。ExtJs最大的优势在于它将Web应用程序的操作方式向传统桌面应用程序的操作方式进行转化甚至消除了这种差异,从根本上提高了用户的使用体验。

4.1.4 通信部分

通用消息,即实时应用进程的管理和通信组件,是一个总线型通信中间件。它通过抽象的连接模型,以统一的方式支持各种IPC (Inter-Process Communication,进程间通信)机制,做到了跨机器和跨平台通用。它不但提供了底层数据通信,而且提供了系统守护机制和系统操作维护机制,提供了一种系统实现框架和编程体系结构。因此采用通用消息实现框架的数据持久层。负责实现Web Server与Control Center的通信,包括链路的维持和消息的收发。

4.2 数据结构和流程

基于以上对可扩展性的分析以及工作流相关概念的定义,本文所描述的工作流工具需要以下功能:

(1) 业务能力的管理:业务能力的管理主要是维护一个业务能力插件库,需要维护的信息包括:业务能力插件的基本信息。

(2) 工作流的绘制:它支持向画布中添加任务节点、依赖关系,任务节点的拖动删除,维护任务和依赖关系直接的关系。

(3) 任务节点配置:它支持配置对应的业务能力插件参数和任务运行的相关参数,并能导入其他节点的配置,查询配置,修改配置等。

4.2.1 关键数据结构

Web Server的视图部分主要包含JobInfoPanel、ResizableObj和HopHandler3个类,其中JobInfoPanel继承了Ext.Panel,ResizableObj和HopHandler继承了Ext.Resizable。它们之间的关系见图4。

图4 类图

JobInfoPanel的功能主要有页面的基本布局,包括初始化页面布局,生成工具栏、控件区、信息区和中央画布区域;以及其他准备工作,包括查询插件列表、节点和依赖关系数据的存储初始化;用户绘制工作流中的一些数据变更维护等。ResizableObj对应于任务节点和逻辑节点。添加业务能力插件或逻辑节点到画布时,实例化一个ResizableObj,关联对应的功能菜单,并可对节点图标进行一些操作。HopHandler对应于依赖关系,用户通过对HopHandler的操作可以显示依赖关系的信息、修改依赖关系,以及删除依赖关系。

分析了类图后,为了明确一个工作流,我们需要知道任务节点、依赖关系和逻辑节点的信息,所以设计这三类数据的数据结构,并通过Ext.data.JsonStore分别进行存储,如下代码:

当完成了工作流设计后,将这些数据整理提交给Control Center。

依赖关系的数据结构,主要存储的信息有依赖关系ID,依赖的条件(运行成功、运行失败和无)、起止坐标、起点的节点类型和ID,终点的节点类型和ID,以及该依赖的handler的相关坐标信息。

任务节点的数据结构,主要存储的信息有任务ID,任务类型(及插件类型),插件的中文名称,关联的依赖关系,组件的相关坐标信息,参数配置的标记位。

逻辑节点的数据结构,主要存储的信息有逻辑ID,逻辑类型(与和或),关联的依赖关系(进和出),组件的相关坐标信息。

4.2.2 重要流程

当用户进入到工作流制作页面时,首先会进行页面初始化,初始化流程如图5。

在页面准备好后,实例化一个全局的panle,如下:

图5 初始化流程

并将其渲染到页面文档,如下:

在实例化JobInfoPanel期间,会进行一些必需准备工作,诸如查询准备插件信息、初始化节点信息的存储等,以及其他后续工作,如图5流程所示。初始化完成后呈现给用户的是具有丰富的工具栏、插件库、信息栏以及供用户制作工作流的画布。用户可能有的关键操作有以下几个:

(1) 添加节点(包括插件节点和逻辑节点)到画布。

(2) 添加依赖关系到画布。首先使鼠标取得添加依赖关系的能力。依次点击需要关联的两个节点将成功添加一条依赖关系,并将该依赖关系的信息添加到hopStore中。

(3) 拖动(包括改变大小)节点。用户拖动节点时,只需更新一下节点的坐标和宽度高度信息,以及相关箭头的起始点坐标信息。

(4) 删除节点或依赖关系。删除任何一个节点或依赖关系时,需要更新相关的hopStore、taskStore和logicStore。

(5) 保存绘制的工作流。只需保存hopStore、taskStore和logicStore中存储的节点信息和依赖关系信息,通过AJAX(Asynchronous JavaScript and XML,异步的JavaScript和XML)请求发送给Web Server,Web Server并将这些信息按照通用消息协议发送给Control Center就完成了一次工作流绘制。

(6) 查询工作流。将Control Center返回的工作流信息在Web Server中重组返回给HTTP请求,分别添加到hopStore、taskStore和logicStore,并重现。

5 实例解析

将该工具作为一个ETL工作流工具,应用于数据提取、转换、加载。设计出一个“手机包月”的工作流,并配置好各个任务的任务执行参数和插件的输入参数、添加依赖关系、以及任务之间执行的逻辑关系。“手机包月”工作流见图6。

这个工作流中有11个活动任务和12个依赖关系。

以下是两个简略的xml文件,第一个是etl_ filebakup.task7.config文件。

<config>

<param n _switch">0</param>

<param name="file_backup_switch">1</param>

<!-- other parameters -->

<param name="file_backup_time">2</param>

</config>.

第二个是job.config文件:

<job name="zntj_packagelike">

<property name="database" value="ods_iread/ ods123qaz@order" />

<tasks>

<defaultSetting>

<runTimeout value="0" type="avg" lastCount="7" multiple="1.5" isKillWhenTimeout="false"/>

<retryWhenFail enabled="true" retryTimes="3" retryInterval="10" retryUnit="second"/>

</defaultSetting>

<task id="1" name="pick_user_baseread_data">

<runHost value="idox@192.168.5.36"/>

<executable value="etl_tableparpicker"/>

<args value="-log_category=default"/>

<position lpx="34" lpy="35" rbx="78" rby="23"/>

</task>

<!--other tasks-->

</tasks>

<hops>

<hop id="1" fromTask="1" toTask="2" condition= "success" lpx="34.6" lpy="35.7" rbx="78.9" rby="23"/>

<!—other dependencies -->

</hops>

图6 “手机包月”工作流

<hopRelation><![CDATA[5&6]]></hopRelation>

</job>

对比以上xml文件和图6中的工作流,显然用工作流工具制作工作流比用文档编辑器高效,表1也对比了他们的优缺点。

表1 使用工作流工具与文本编辑器的对比

6 结语

本文从对已有的一些开源工作流工具的对比分析,并结合项目实际需求,决定设计一个基于Web的可扩展工作流工具。并从对相关概念的定义、可扩展性的分析和整个系统的体系结构入手,着重分析了Web端的结构设计、所用的关键技术,以及Web的主要流程和数据结构。充分利用已有技术,包括ExtJs、Spring、struts2和通用消息,进行开发实现,并且使系统更易维护。

最后,本工具不仅能满足现有的功能需求,也能适应将来可能的业务需求,并且符合现在Web2.0应用的趋势。但是也存在不足之处,如何在更广范围内适应工作流的可扩展性,以及提供更为健全地工作流制作功能,可能需要对ExtJs进行更深度地利用以及对业务能力更广泛地研究。

参考文献

[1] WfMC. Workflow Management Coalition Specification: Terminology & Glossary[S]. Document Number WfMC-TC-1011, Brussels,1996.

[2] 王坚, 李魏丽. 基于Web的可视化工作流建模与解析[J]. 同济大学学报, 2007, 35(10):1406-1410.

[3] Zhang W, Liu H, Chen J. Extend Workflow Model to Manage the Process Branches in Planning and Scheduling[C]. //Computer Modeling and Simulation, 2010. ICCMS '10. Second International Conference on, IEEE CONFERENCE PUBLICATIONS, 2010:309-313.

[4] 王月龙, 王文俊, 罗英伟, 等. 一个基于元数据导航的服务工作流装配模型[J]. 计算机学报, 2006, 29(7):1105-1115.

[5] 彭仁夔. Ext Js源码分析与开发实例宝典[M]. 北京:电子工业出版社, 2012.

[6] 廖雪峰. Spring 2.0核心技术与最佳实践[M]. 北京:电子工业出版社, 2007.

[7] 孙鑫. Struts2深入详解[M]. 北京:电子工业出版社, 2008.

News

2013 LTE网络创新研讨”会在京召开

8月22日,由工业和信息化部科技司指导,TD产业联盟与《移动通信》杂志社主办,中国移动通信集团设计院有限公司、中国移动通信集团公司研究院协办的“2013 LTE网络创新研讨会”在北京南粤苑宾馆盛大召开。来自工业和信息化部科技司、电子信息司、中国移动通信集团公司、中国移动通信集团设计院有限公司、中国移动通信集团公司研究院、TD产业联盟各成员单位、LTE设备厂商、各大运营商、通信媒体以及各地通信规划设计院所等单位和机构的领导、专家、技术骨干等共两百余人齐聚一堂,就中国LTE产业的发展策略、商用进程、解决方案和前沿技术等问题展开深入探讨,共同推动LTE的商用进程,加速实现中国4G梦想。

工业和信息化部科技司司长闻库莅临大会并发表致辞,TD产业联盟秘书长杨骅与北京邮电大学知名教授刘元安主持会议。来自工信部电信研究院、中国移动、中国移动设计院、中国移动研究院、华为公司、大唐移动、京信通信、国家无线电管理频谱管理研究所等单位的各位专家重点围绕LTE组网规划、建设经验、商用挑战、测试仪表、室内覆盖等热点内容分别进行了探讨与分享。充实的会议内容吸引了两百多名专业人士到会聆听,并参与互动交流。

A Web-based extendable workflow tool

ZHAO Yan1,2, WANG Chun1,2, ZHANG Lei1,2(1 State Key Laboratory of Networking and Switching Technology, Beijing University of Posts and Telecommunications, Beijing 100876,China; 2 EBUPT Information Technology Co., Ltd., Beijing 100191, China)

There are many internal heterogeneous work processes in the enterprise. Most of them have some versatility, but there is no uniform way to design or manage them. We are eager to have a versatile workflow tool which can share resources and adapt to heterogeneous workflow. Considering the characteristics of the project as well as the needs of enterprises, we propose a Web-based extendable workflow model. And we also analyze and explain the new model with examples of the system structure and function.

workf l ow; extendable; Web

TN929.5

A

1008-5599(2013)09-0086-07

2013-08-28

国家 973 计划项目(No. 2013CB329102);国家自然科学基金资助项目(No. 61372120, 61271019, 61101119, 61121001, 61072057,60902051);长江学者和创新团队发展计划资助(No. IRT1049)。

猜你喜欢
插件逻辑节点
刑事印证证明准确达成的逻辑反思
CM节点控制在船舶上的应用
逻辑
创新的逻辑
基于AutoCAD的门窗节点图快速构建
概念格的一种并行构造算法
自编插件完善App Inventor与乐高机器人通信
女人买买买的神逻辑
基于jQUerY的自定义插件开发
抓住人才培养的关键节点