图形化与用户自定义工作流的协同办公研究
2013-08-17时国栋汪海涛聂晓改
时国栋,汪海涛,聂晓改
(昆明理工大学信息工程与自动化学院,昆明650500)
用户构建协同办公系统的目标是为用户实现一个集内部通讯、信息发布、协同工作、知识管理、辅助办公为一体的协同平台[1].简单地说,该平台就是要创造一个集成的办公环境,使所有的办公人员都在同一个桌面环境下一起工作,摆脱时间和地域的限制,实现协同工作与知识管理.
工作流引擎正是为了达到上述效果而产生的专门处理业务流程的一种技术成果.然而,各大工作流引擎技术功能强大,但也有它的缺点:可扩展性差、产品可靠性和可用性不高与应用系统的集成性差,安全性能差等显著缺陷;需要系统设计人员在系统开发之前明确工作流的详细流程,为特定的工作流程专门设计处理页面;在系统运行期间,用户不便于添加新的工作流程.如何设计出一种有利于用户管理、简洁、高效的工作流管理方式,成为了协同办公系统所要达到重要开发前提.本文提出了一种基于图形化与用户自定义工作流的方式实现协同办公的解决方法,这种方法可以解决上述问题,适应协同办公需求.
1 协同办公与工作流引擎
协同办公系统是指那些以团队协作为目标的协作软件,主要包括群组协作管理,如:协同工作流管理、计划管理、任务管理、项目管理及其他办公系统相关的管理模块等等.在协同办公的设计与开发中,协同办公的核心部分是工作流执行系统和工作流引擎,可以说,用户对工作流程的操作简易性与实用性决定了整个协同办公软件的协同程度.
工作流的概念起源于生产组织和办公自动化领域.它所关注的问题是处理过程的自动化,它根据一系列定义的规则,把文档、信息或任务在参与者之间传递.以达到某种目的.工作流管理联盟(Workflow Management Coalition,WfMC)为其提供了一个标准定义:工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则、文档、信息、或任务能够在不同的执行者之间进行传递与执行[2].
工作流执行系统为创建、初始化和执行过程实例提供了一个运行环境.在一个工作流执行系统中可以包括一个或多个工作流引擎.它通常由工作流引擎、可视工作流设计、流程操作、工作流客户端程序、流程监控、工作流表单设计工具、与工作流表单的集成以及与应用程序的集成八个部分组成.另外,工作流引擎的主要功能有:解释过程定义,控制过程实例(创建、激活、挂起、终止等),按照过程定义已确定的业务逻辑调用各项活动,为用户工作表添加工作项,维护工作流控制数据和工作流相关的数据,调用应用程序,提供监督,管理和审计功能[3].
2 工作流系统体系统结构
工作流系统与外部资源交互完成业务活动,分为用户应用程序直接调用工作流系统和通过工作流系统所提供的接口两种方式.工作流系统待办项为应用程序生成待办项、流程推进、监督提醒等功能,将这些功能进行封装起来有利于功能的重用,为协同办公平台提供一个灵活、开放、高效、稳定、可靠的工作流管理核心[4].工作流接口封装机制具有较多的优势,本文提出了运用面向服务的体系结构(Service Oriented Architecture,SOA)技术来实现工作流管理核心的复用,要达到的目标就是构建一个SOA架构的,基于Web Services技术的开放性、松耦合和可重用的工作流体系结构,该体系结构能实现系统的开放性和资源共享,使得不同平台、不同编程环境的客户端用户通过工作流管理平台提供的Web服务,充分利用其对工作流的应用与管理[5-6],见图1.
图1 工作流体系结构图
3 图形化与用户自定义工作流框架
图形化与用户自定义工作流是协同办公的设计与开发中所要达到的一个目标,图形化即是指用户能够以图形的界面来查看工作流程的走向与基本信息,通过查看图形的形式就可以了解整个工作流程的内容.用户自定义方式即是,用户可以通过后台的管理界面对流程进行定义与更新,新定义或者更新后的流程将直接应用的系统的工作流程之中,无需管理员进行额外的配置,真正做到用户管理流程,用户管理整个协同过程的作用.
3.1 基于图形化与用户定义工作流的数据结构定义
每个工作流程都包含了一个工作流模板,工作流模板实现了流程的流转方向以及各个节点的处理人员的定义,处理人员可以是用户、岗位、角色等能划定人员范围的定义.工作流模板的数据结构为一个有向无环图的结构,一般情况下,图可以提供一种自然直观的描述实体之间的复杂交互过程,从实际情况上考虑,工作流程的定义过程正是符合这样图的依赖关系,无论是工作流程的向前推进与驳回的过程,图都可以适应工作流程相关功能的需求.模板定义之后,用户就可以根据此模板创建流程的实例,每个实例单独保存每个节点的状态与整个流程的状态,这样保证了实例之间状态的独性与实例内各节点之间状态的隔离.
工作流程模板的数据关系全部存在于数据库中,模板数据也存在于数据库中,从而,设计合理与适应功能需求的数据结构,就可以完整地规范工作流程的流转过程.另外还需要做的一个工作就是,将流程的形成过程以图形化的形式展现在用户管理界面上.流程的绘制过程其实质就是一个图的绘制过程,在这个过程中如何找到一个更好的绘制算法、计算各个节点与连线之间相对位置与自动适应画布调整图形大小等都是需要考虑的.如图2所示,流程的数据结构模型简化图,包含了实现工作流程数据结构的最主要的功能模型的定义.
图2 简化后的审批功能模块数据模型图
Process(审批流程)定义了流程模板的基本信息,ProcessNode(流程节点)定义了相应审批流程的所有节点,节点内容包含了流程名称、描述信息、是否为开始与结节点、会签个数、审批响应时间规则等定义.NodeMap(结点连接)为连接两个节点的数据结构,从而使各个节点相互连接起来形成一个有向无环图的工作流程.
ApproveInfo(审批基本信息)定义了发起一个工作流实例的基本信息,Choose(流程选择)将工作流实例基本信息与特定的流程模板相关联起来,也就表示此实例在流转过程中依据已定义的此模板的节点的拓扑关系推进流程信息.在流程实的推进过程中NodeValue(流程审批结果)将保存特定模板与实例的推进结果信息.
为了实现用户对流程推进所提交的表单进行用户自定义,就要在数据结构的级别上进行支持.如图3用户自定义表单数据结构图.
图3 用户自定义表单数据结构图
Item(项模板)定义了用户自定义表单的一个表单项,它的内容包含了表单项的类型、排序数、描述信息、是否为必填项等.ItemType(内容项类型)定义了表单项的类数据类型,此内容项可以通过系统进行管理.DefaultValue(项默认值)为表单项的默认值结构,此项为可选项,在定义表单项时,可以为它设置默认值也可以不设置默认值.ItemValue(项内容)包含了项的实际值与此项内容所属于哪个流程实例和属于哪个表单项,从而,项内容表单项为一一对应的关系,每个工作流模板都指定了特定的表单项,从而流程模板与流程实例的实际表单值之间层次清晰,在数据结构的级别上支持用户自定表单的功能.
3.2 流程的图形化算法描述
在工作流的数据结构设计的基础之上,如何将流程信息图形化是实现协同办公的关键.工作流程的结构是基于有向无形图的,就要分析图的形成过程.每个工作流图都应该加上一个“开始”节点,此节点代表用户发起流程实例节点,并不会在数据库的结构中保存“开始”节点数据,工作流实例的基本信息保存了一个工作流程发起的基本信息.在定义工作流程时,首先,根据当前图的深度与广度调整节点与节点间隔的大小,在确定了节点矩形框的长度与宽度,以及节点间隔的基础之上绘制开始节点并绘制开始节点到其子节点之间的连线.然后,遍历所有节点得出当前节点的纵向与横向排序号,纵向与横向排序号就决定了当前节点在整个绘图区域的位置,如果横向排序号相同,则节点的横向坐标相同.横向坐标相同的结点可能有多个,例如有5个,则接下来就要计算出从0到4的相对中间平衡位置上的位序,则纵向位序为2的节点的相对位序应该为0,它处于纵向上中间位置,其他节点的纵向相对位序为:-2、-1、1、2.这样就保证了同一横向距离上所有节点都是围绕中心节点展开的.在绘制两节点的连线过程中可能会出现三种情况:1)父节点横向距离小于子节点,连线的起点应该取父节点的右边框中心位置;2)父节点的横向距离大于子节点,连线的起点应设置为父节点上边框的中心位置;3)父节点的横向距离与子节点相同,则此时应该考虑这两个节点的纵向位序,若父节点的纵向位序大于子节点的纵向位序,连线起点为父节点的下边框中心位置,终点为子节点的上边框位置,反之,连线起点为父节点的上边框中心位置,终点为子节点的下边框位置.
如图4,工作流程图形化概要算法流程,如图5,给出了除开始节点外其他节点与连线的绘制算法流程.
图4 工作流程图形化概要算法流程
图5 节点与连线的绘制算法流程
3.3 工作流系统提供服务示例
工作流系统提供的服务为流程与业务系统之间数据交互的接口,分为如下两种类型接口.1)流程获取的接口.流程设计或运行时,需要业务系统提供的数据.如流程节点上设置参与者需要业务系统的用户列表;2)流程提供的接口.流程运行时,提供给业务系统的数据接口.如材料送审调用启动工作流接口.
* GetInstanceApprovalConclusion
* GetInstanceBasicInformation
获取流程基本信息
* GetPendingTaskList
得到指定审批人的待处理任务列表
* GetPendingTaskList1
得到指定审批人的待处理任务列表方法2
* GetPendingTaskListByTemplateName
得到指定审批人的指定模板的待处理任务列表
* GetProcessedTaskList
得到指定审批人的已处理任务列表
* GetProcessedTaskListByTemplateName
得到指定审批人的指定模板的已处理任务列表
* GetRelatedTaskList
得到指定人的任务列表
* GetRelatedTaskList1
得到指定人的任务列表方法2
* GetRoleList
获取所有审批者列表
* GetTaskList
获取所有任务表
* GetTasks
得到任务列表,参数特别注释:strStatus:0,1,2,3,4,5,6 分别表示发起任务,待处理,已处理,打回历史执行人,重新提交历史执行人,打回岗位,重新提交岗位
* GetTasksByInstanceId
得到实例的所有任务信息
* GetTemplateList
获取Server上已有的流程模板列表
* GetTemplateTreeNodes
获得模板树列表
*GetTemplatesNo
启动流程时获取业务流程编码和模版编码
* StartWorkflowForSqlServer
* StopInstance
停止实例
* UpdateReviewerInTaskTable
事后委托
4 图形化与用户自定义工作流在协同办公中的应用
4.1 工作流模板的定义
工作流模板的定义过程是基于用户后台的管理过程,从工作流模板的基本信息到对节点的定义、表单设定、特殊处理节点设定、可用范围控制等全部集本于一个控制界面.
工作流通过系统提供的功能实现某个特定的任务,即实现某个业务流程.一个完整的审批流程包括:流程的开始及开始条件、一组活动及这组活动之间的关系、流程的结束及结束条件、以及一系列与此相关的数据等[7].工作流的体系结构为一个有向无环图.除开始结点以外,每个结点定义了该结点的审阅人员、处理响应时间规则、结点描述等信息.如果结点的输入有多条分支,将可以进行会签结点通过数控制.对于工作流状态流转发生例外,如审阅人员外出而导致工作流程无法正常运转的情况,处于最终结点的用户将有权力将审阅权限授权于他人.另外,还可以设置整个审批流程的充许访问列表与禁用列表,这两个列表之间的组合有四种情况:1)两个列表都没有设置,表示全部用户都可以访问;2)只设置了允许访问列表,表示在列表中的用户可以访问此流程;3)只设置了禁用列表,则表示除禁用列表内以外用户可以访问此流程;4)两个列表都进行了设置,表示允许访问列表的用户可以访问此流程而处于禁用列表中的用户则不充许访问.
工作流模板的定义包括5个方面:
1)工作流模板的基本信息;2)结点操作信息,包括添加或编辑结点,在每个结点中定义了结点名称、审核人员、处理响应时间规则等;3)表单设定,为每个工作流模板设定一个表单数据项,在用户发起申请时,将填写此表单,可以为每个表单项设定表单项的类型、默认值、是否为必填项等;4)特殊处理结点设定,定义了处于流程中的哪个结点在流程没有流转到特定结点时具有特殊终止或者其他处理的权限,这样就解决了因为某些结点的负责人因为出差或者其他原因而不能及时处理工作流实例时产生的流程死锁现象的问题.另外还定义了具有会签功能的结点,所限制的会签人数限制;5)可用范围限制,定义了一组对于此工作流模板发起申请的允许与禁用规则.如图6为工作流模板定义界面图.
4.2 工作流实例的建立
一个工作流实例的生成是由用户发起工作流审批申请时产生的,工作流模板中每个结点都会记录下当前结点的状态,整个工作流实例也会有一个状态来记录当前实例在整个工作流中所处的状态.如果前一个结点审批情况为“通过”则通知它的下一个结点,并发送待办任务.一个工作流模板对应多个工作流实例,它们之间互不影响,并可以并行处理.
在主界面的顶部显示了此申请流程的概览图标明了当前申请的当前流转状态,以及申请的基本信息、提交的表单数据信息,下部还可以对流程申请做出“评价”.
图6 工作流模板定义管理界面
在底部的功能区有“审批处理列表”、“进行中”、“通过”、“驳回”、“不通过”等功能项.
“审批处理列表”:将返回到审批处理管理列表界面.
“通过”:将会将当前结点的状态置为“通过”状态,并发送待办消息给下一个相连接的结点.
“驳回”:将会将当前结点的状态置为“驳回”状态,并发送“驳回”消息至上一个结点,使其重新审核待办申请.“不通过”:将会将当前结点的状态置为“不通过”状态,也会将当前申请的状态置为“不通过”,将会给申请者发送“不通过”消息,将终止此申请的流转.
下面“通过”功能项为例,来推进这个流程,返回至“审批处理”界面,可以看到前面处理的这个申请为不可见.
5 结语
本文提出了一种以SOA的方式来构建工作流系统的体系统结构,并将工作流以服务的方式供协同办公系统进行集成,从而可以将工作流的管理系统中分离出去,实现分步式应用;另外,重点介绍了基于图形化与用户自定义流程工作流引擎的构建过程及相关算法.从工作流引擎的数据模型以及引擎的实现,到工作流系统的构成,再到与协同办公的系统的集成应用,为协同办公的实现提供了一个轻量级解决方案.这种解决方案存在的不足,在于
对于多工作流引擎以及错误恢复机制和事务处理能力机制的支持力度还有待改进与完善.然而,协同办公的设计与开发,再到企业的实施过程中是一个极其复杂的问题,因为一个协同办公产品运用于一个企业中不单是技术层面上的问题,更与企业文化和对于信息化的接受程度有关系.从而,如何使这个协同办公框架更易于企业应用,并能够更完善地支持用户的需求,需要在实际的应用中不断地对此方式进行改进与调整.
[1] 孙家兰.基于工作流的协同办公平台的构建[J].科技信息,2012,28(6):266 -268.
[2] 刘晓明,刘绍华,乔晓强,等.基于协作文档的异构工作流管理系统协同模型[J].计算机应用研究,2006,23(5):223-226.
[3] 张井茹,和晓军.工作流技术在协同办公系统中应用的研究[J].科技创新导报,2010,34(19):123 -156
[4] 李 楠.基于SOA架构的协同办公平台[J].计算机系统应用,2011,5(3):101 -102.
[5] 巫少龙,方晓汾,董建峰.表单系统与工作流引擎集成设计与实现[J].中国机械工程,2012,23(12-3):186 -188.
[6] 郭广丰,马占飞.一个面向电子审批系统的嵌入式工作流引擎的设计与应用[J].计算机与现代化,2012,30(8):334-360.
[7] 时国栋,汪海涛,陈宇星.协同办公系统的整体研究与开发[J].河北工业科技,2012,6(5):286 -290.