基于OSWorkflow的设备管理系统

2011-06-19 04:15王舒扬柳虹亮
长春工业大学学报 2011年5期
关键词:计算机设备管理系统对象

王舒扬,柳虹亮

(长春工业大学 软件职业技术学院,吉林 长春 130022)

0 引 言

工作流管理技术是一种快速发展的技术,正在被越来越多的企业所应用。企业的日常活动中,约有70%是属于流程类活动,如订单出货流程、生产流程、企业内各类申请表单、公文签审、信息传递与签收、公司各类支出与收付等[1]。设备管理(包括设备采购的审批、设备维修等)也属于流程类活动[2]。但与普通流程类活动相比,设备管理具有用户层面广泛、一次性购买量大、审批周期长、生命周期内维护频繁等特点[3]。对大型企业来说,类似电脑等设备的审批周期(包括招标、采购到最终投入使用)可长达2~3个月左右,生命周期更是长达4~6a,期间持续增加的数据量会对工作流系统造成很大的压力[4]。

OSWorkflow是完全用Java语言编写的开放源代码的工作流引擎,具有显著的灵活性及完全面向有技术背景用户的特点[5]。用户可以根据自身的需求,利用这款开源软件设计简单或是复杂的工作流。通过使用,用户就可以把工作中心放在业务和规则的定义上,而不需通过硬编码的方式实现一个Petri网或是一个有穷自动机[6]。用户可以最小代价把OSWorkflow整合到自己的程序中来。

文中设计实现了一个基于OSWorkflow的设备管理系统,并解决了采用Oracle数据库时大量数据查询等关键问题。

1 OSWorkflow工作流引擎

OSWorkflow是三大主流开源工作流引擎之一,它基于FSM(有限状态自动机,FiniteState Machine)理论[7]。每一个state都是由step 和status联合体现出来的,一个state到另一个state的状态跃迁transition依赖于action的执行,在action执行前需要判断动作的执行条件是否满足,在动作执行改变状态前后都可以调用function来执行一些其它操作,动作执行完成后通过判定条件来确定执行结果result[8]。每一个流程都至少有一个或者多个活动的state,流程中至少有一个起始状态,一个或者多个终止状态。OSWorkflow的基本元素及其相互关系如图1所示。

图1 OSWorkflow基本元素关系图

2 设备管理系统总体设计

基于OSWorkflow的设备管理系统采用J2EE技术、Spring框架和Oracle数据库设计并实现,主要分为如下几个模块。

2.1 用户管理模块

对系统内的用户基本信息进行增、删、改、查操作,或对用户的操作权限及所属部门进行变更。

2.2 角色管理模块

对用户的角色信息进行增、删、改、查操作。

2.3 组织管理模块

对用户所属的组织信息进行增、删、改、查操作。

2.4 设备采购模块

对设备申请流程生成的设备采购明细进行采购。

2.5 设备分配模块

针对已经建账的计算机设备,由财务人员进行固定资产卡片的财务信息填报。

2.6 设备申请模块

设备管理系统的核心。一个完整的设备申请流程如下:

1)由“部门提报用户”填报需要的计算机设备申请单,申请单上的内容为提报部门、提报人、提报计算机设备的类型、提报理由。个人申请结束承接2)。

2)由“部门管理用户”进行审批,结果为同意/不同意,同时输入详细的审批意见。如果不同意则申请流程结束;如果同意则进入3)。

3)由“设备管理用户”进行初审,结果为同意/不同意,同时输入详细的审批意见。如果不同意则有两种情况:申请流程结束,或准备进行设备在库分配,进入设备分配流程;如果同意则进入4)。

4)由“设备管理领导用户”进行复审,结果为同意/不同意,同时输入详细的审批意见。如果不同意则申请流程结束;如果同意则进入5)。

5)由计算机设备申请人所在部门的“分管领导用户”进行审批,结果为同意/不同意,同时输入详细的审批意见。如果不同意则申请流程结束;如果同意则进入6)。

6)由“项目管理用户”进行计算机设备详细配置清单的填报,然后由“项目管理领导用户”对配置清单进行审核,如果不同意则返回“项目管理用户”进行重新配置;如果同意则申请流程结束。

7)“设备管理用户”可以根据申请设备清单进行选择是否招标采购,如果“设备管理领导用户”同意招标采购,则生成招标申请书。

8)保存完整的计算机设备申请的记录。

此模块采用了OSWorkflow技术,具体流程如图2所示。

图2 申请模块流程

3 设备管理系统关键问题解决及实现

设备管理系统主要有以下关键问题需要解决:一是过长的申请审批流程造成的大量数据查询失败;二是OSWorkflow仅负责流程的运转,对流程流转中产生的数据,例如审批意见的保存需要做额外的操作。

3.1 大量数据的查询

为了确保工作流程的正确性,OSWorkflow并没有采用直接连接数据库使用sql语句进行流程数据处理的方式,而是使用 WorkflowExpressionQuery对象对数据库进行操作。一个工作流查询语句的处理流程如下:

1)使用FieldExpression对象对可操作项进行映射。FieldExpression继承了Expression类,将工作流表中的字段以及基本操作映射为int型常量,例如public final static int ACTION=4。

2)使用NestedExpression对象创建复合表达式。NestedExpression同样继承了Expression类,其构造函数需要两个参数。一是Expression数组对象,对象中的每个元素可以是另外一个NestedExpression对象,以此形成复合关系,也可是由FieldExpression具体实现的单独的表达式。二是表示各个Expression表达式之间“和”与“或”关系的操作符expressionOperator。

3)使用 WorkflowExpressionQuery创建工作流查询对象。WorkflowExpressionQuery以NestedExpression对象作为参数构建,还定义了表示排序的常量,例如public static final int SORT_DESC=-1。

4)调用AbstractWorkflow类中的getPersistence方法获取 WorkflowStore实例。将 WorkflowExpressionQuery对象作为参数传递,在WorkflowStore接口的具体实现类JDBCWorkflowStore的query方法中对其进行解析并完成sql语句的创建。

5)将创建好的sql语句作为参数传入doExpressionQuery方法中执行,从结果中取出id列放入List对象中,将List对象返回,以返回的id为条件即可与业务表中的设备数据进行关联查询。

因为从设备申报到审批完成进入购买环节的时间很长,且购买数量为公司规模,数据库内可能存在大量未完成的工作流流程数据。在最终返回的List结果中可能包含超过1 000条流程id数据,而Oracle不支持IN子句中List的个数超过1000,从而导致查询失败。为解决这个问题,在OSWorkflow中新增一个数据库表OS_QUERYENTRY,建立JDBCWorkflowStore类的子类并重写其中的doExpressionQuery方法,将原来放入List中的id写入到新增的表OS_QUERYENTRY中。具体步骤如下:

1)组合语句,将结果插入到OS_QUERYENTRY表中。

2)查询序号。

3)删除冗余查询数据。

新增表后的OSWorkflow数据库结构如图3所示。

图3 OSWorkflow数据库结构

实际应用中一个典型查询过程如下:1)准备查询条件集合对象。

2)根据页面选择条件匹配查询条件。

3)装配查询条件。

最终查询效果如图4所示。

3.2 审批过程中审批意见的保存

在OSWorkflow中,函数function是用来定义(引用)并执行外部的商业逻辑和服务,实现OSWorkflow与外部具体的应用之间交互[9]。系统需要保存设备审批过程中的审批意见,只要扩展function接口就可以。function有两种类型:pre function(预处理函数)和post function(后处理函数)。pre function在工作流的一个转变操作执行之前调用,post function在工作流的一个转变操作执行完之后调用[10]。审批意见的保存应在流程流转后,因此,采用post function方式处理。同时,因为流程运转周期长度不定,审批意见应该依附于当前环节的审批动作(action),而不应该依附于整个当前审批环节(step),function在action级别的应用如图5所示。

图4 系统查询效果

图5 function在action级别的应用

具体实现代码如下:

4 结 语

针对设备管理流程用户层面广泛、一次性购买量大、审批周期长、生命周期内维护频繁等特点,采用OSWorkflow作为工作流引擎,在此基础上设计了某电力公司设备管理系统,并解决了Oracle数据库平台下大量数据查询等问题。实际应用结果表明,文中设计的设备管理系统满足企业要求,简化了设备申报流程,大大提高了企业的工作效率。

[1]范玉顺.工作流管理技术基础[M].北京:清华大学出版社,2001.

[2]史美林,杨光信,向勇,等.WFMS:工作流管理系统[J].计算机学报,1999(3):326-328.

[3]李红岩.基于工作流技术的OA系统研究[J].长春工业大学学报:自然科学版,2008,29(3):352-355.

[4]黄世秀,高飞,胡小华.基于工作流的电子政务系统[J].合肥工业大学学报,2004,27(2):140-143.

[5]夏冬,白树仁,邓惠建.基于J2EE的工作流管理系统模型[J].计算机工程与科学,2006,28(3):123-125.

[6]侯秀萍,邵春明,郑虹.基于工作流网的过程模型的合理性分析[J].长春工业大学学报:自然科学版,2006,27(2):162-164.

[7]陈传波,刘黎志.一个基于 Web的工作流引擎及其实现[J].计算机工程与科学,2004,26(11):18-22.

[8]李宏初,冯艳蕾.基于P2P的工作流管理系统研究与应用[J].长春工业大学学报:自然科学版,2007,28(4):435-437.

[9]黄丽梅,李佳林,李瑞然.子流程技术在工作流设计中的应用[J].长春工业大学学报:自然科学版,2010,31(1):62-65.

[10]唐文忠.基于工作流技术的构件模型研究[J].计算机应用研究,2008,25(7):2057-2059.

猜你喜欢
计算机设备管理系统对象
基于James的院内邮件管理系统的实现
涉税刑事诉讼中的举证责任——以纳税人举证责任为考察对象
浅谈天津港第一港埠有限公司的计算机设备管理
基于LED联动显示的违停管理系统
攻略对象的心思好难猜
计算机设备维护管理规范化探究
大中型企业计算机设备运维管理研究
海盾压载水管理系统
基于熵的快速扫描法的FNEA初始对象的生成方法
区间对象族的可镇定性分析