文档库 最新最全的文档下载
当前位置:文档库 › 用SQL脚本实现工作流参与者定义

用SQL脚本实现工作流参与者定义

第40卷第1期2007年2月武汉大学学报(工学版)

Engineering Journal of Wuhan University Vol.40No.1Feb.2007

收稿日期:2006203215

作者简介:刘姜涛(19792),女,江西进贤人,助教,主要从事计算机控制技术研究.

文章编号:167128844(2007)0120138205

用SQ L 脚本实现工作流参与者定义

刘姜涛1,邓其军2

(1.湖北教育学院物理与电子工程系,湖北武汉 430205;2.武汉大学动力与机械学院,湖北武汉 430072)

摘要:目前,多数的工作流管理系统中,活动的参与者定义主要还是使用基于角色的机制,即将角色、岗位、部门

或用户等指定为参与者,缺乏灵活的动态分配能力.文章对这种传统的活动参与者定义机制进行了扩展,提出了一种利用SQL 脚本来完成参与者定义的新方法.SQL 脚本以组织结构和实例数据为条件构建形如SQL 脚本的命令,来指定活动的参与者.应用结果表明,文章提出的参与者定义方法能够极大地增强参与者定义的灵活性,具有很好的应用前景.

关键词:工作流;参与者定义;SQL 脚本;实例数据中图分类号:TP 311.51 文献标志码:A

R ealization of w orkflow participant def inition

by using SQ L 2like script

L IU Jiangtao 1,D EN G Qijun 2

(1.Department of Physical and Electronic Engineering ,Hubei Institute of Education ,Wuhan 430205,China ;

2.School of Power and Mechanical Engineering ,Wuhan University ,Wuhan 430072,China )

Abstract :The role 2based mechanism is widely used for participant assignment in workflow systems at p resent.This mechanism defines activity participant as role ,position ,depart ment or user ID.This mechanism lacks of flexibility for dynamic assignment of participant.This t raditional app roach is ex 2tended to a novel one which uses SQL 2like script s to define activity participant s.The SQL 2like approach is based on organizational struct ure and instance data.The SQL 2like means imp roves t he flexibility of participant definition greatly and has good application p ro spect s.

K ey w ords :workflow ;participant definition ;SQL 2like script ;instance data

工作流(workflow )是一类能够完全或部分自

动执行的过程,它根据一系列的过程规则,使文档、信息或者任务能够在不同的执行者之间进行传递与执行[1].为实现业务的自动流转,必须为业务的各个步骤定义相应的参与者.

根据工作流管理联盟(Workflow Manage 2ment Collation ,WFMC )的定义[1],参与者指的是执行工作流活动实例任务的一种资源.该资源通常指的是人(执行人工活动),也可以是计算机程序(执行自动活动).自动活动的参与者比较简单,本

文不予讨论.目前最常用的参与者定义方法是基于角色的方法.该方法为活动指定一个具体的用户名,或者指定一个组织实体,如角色、岗位、部门等作为活动的参与者(实际上是拥有该角色的所有人员,或者是在某岗位、部门的人员).当前的工作流管理系统的参与者定义,基本上都还是使用基于角色的方法.例如,在WFMC 的工作流过程定义语言(Workflow Process Defini 2tion Language ,WPDL )[2]使用的组织定义模型[3]中,活动的参与者分为4种:组织单位、个人、角色、

 第1期刘姜涛,等:用SQL脚本实现工作流参与者定义

资源.一个组织单位包括组织的管理者和所有成员;个人信息包括该人员所拥有的角色、从属的组织单位和所有的代理者;角色包括所有拥有该角色的人员.WPDL在定义参与者时,使用的信息包括两个:参与者类型(Type)和参与者描述(Descrip2 tion).其中参与者类型是上述的4种类型之一,而参与者描述能够表达诸如“组织的所有成员”、“组织的直接管理者”、“某人的所有代理人”等简单的内容,但是该组织模型(过程定义模型)规划并没有提供详细的对描述的解析方法.

IBM的WebSp here MQ Workflow[4]在M FMC提出的参与者定义模型的基础上,使用动态和静态两种方法来定义参与者.动态定义不直接指定具体的人员,而是依据人员的级别、组织、角色及其组合条件来指定参与者,还可以根据前趋活动的执行者信息来指定;静态定义则直接指定特定的人员为活动的参与者.另外,这种工作流参与者定义方法还使用了“容器”进行参与者定义.所谓“容器”,实际指的是一组预定义的参与者.

国内比较典型的工作流管理系统,如上海东兰科技的DL Flo[5],及清华大学CIMS实验室研制的SIM Flow,也基本上是使用了上述的参与者定义方法.

基于角色的参与者定义方法,能够比较方便地定义活动的参与者.但是,这种方法只是简单地使用了用户的角色、帐户、组织单位、用户间的关系等组织信息,对于活动实例的信息,则不能很好地考虑进去.例如,对于一个银行的贷款申请单,如果资金小于5000元,只需要普通的信贷员审核;如果大于等于5000元,则直接由主管审批.在基于角色的参与者定义中,只能定义两个并行的OR分支才能完成上述情景的工作流定义.又比如,在电厂的缺陷管理中,规定缺陷工单需要由与缺陷所属专业相同的点检员来制作(专业分为汽机、锅炉、电气、热工、化学等),则需要为每一个专业的点检员定义一个并行活动,而且一旦专业增加或减少,又需要对分支作相应的修改,减少了工作流定义的灵活性,增加了工作量.

针对上述问题,本文提出了基于用户属性和业务实例数据表的参与者定义方法,并使用SQL脚本来完成参与者定义.文章的余下部分从组织模型、参与者定义、应用实例等几个方面对该方法进行了讨论.1 参与者定义的组织模型

组织模型是参与者定义机制的基础.在目前的参与文献中[629],每种参与者定义机制都会提出对应的一个组织模型.它们的参与者定义机制都是建立在这些组织模型的基础上的.本文也提出一个组织模型,作为我们的SQL脚本的基础.

1.1 组织模型架构

为满足更复杂的参与者定义要求,本文在WFMC的组织模型基础上提出一种新的组织模型,如图1所示

.

图1 组织模型

该组织模型由4个实体组成.部门(Department)实体表示企业的部门结构,它通过部门代码(Depart2 mentC ode)和该部门的父部门代码(ParentDeparment2 C ode),形成一个树形结构.用户实体表示系统的所有用户,一个用户具有一个惟一性标识UserID,并从属于一个部门(DepartmentC ode).Password是用户的密码,IsDepartmentLeader表明该用户是否为部门领导.属性(Property)实体用于规划企业的用户所有可能具有的属性,在WFMC的组织结构模型中,与属性概念比较接近的是角色(Role),用于表示具有某类资格或能力的一组人员的总称.本文的“属性”概念对角色进行了扩展,可以指用户在任意一个方面所具有的属性.例如,在电厂的岗位设置中,“点检员”与“检修员”是两个岗位类别,“汽机”、

“锅炉”、

“电气”、

“热工”则是各个专业,都可以用于表征人员的某个特性.于是,可以将上述的岗位与专业都作为属性.

931

武汉大学学报(工学版)2007

用户属性(U ser Property)实体表达了用户与属性的对应关系.一个用户可以拥有多个属性(PropertyCode)和多个扩展属性(Ext Property2 Code),一条属性和一条扩展属性一起来表示一个用户的某一个方面的资质或功能.如“点检员”属性加上“汽机”扩展属性,表示该用户能够拥有汽机点检员的资质.

用户替代者(U serSubstit ute)表达了用户在某个角色的替代者.在用户(U ser ID)不能处理根据自己的某属性(PropertyCode)所需要处理的业务时,可以交由替代者(SubU ser ID)处理.1.2 组织关系运算

为了简化参与者定义的组织结构表的多表联接查询,本文提出了一些内建的功能函数,用于表示表查询的结果(内建的功能函数的解析由工作流引擎来处理).例如,使用函数U ser_dept(M I KE)表示如下的SQL查询(该查询用于查询指定用户Mike所属的部门):

SEL EC T Depart ment Code

FROM U ser

W H ERE U ser ID=‘M IKE’

表1列出了一些基本的组织关系运算函数.

表1 基本组织关系运算函数

返回类型函数描述

部门代码DEPT_PAREN T(DepartmentCode)某个部门的父部门(0~N个) USER_DEPT(User ID)表示用户所属的部门(1个)

部门代码

集合

DEPT_CHILD(DepartmentCode)部门的子部门(0~N个)

用户集合DEPT_USER(DepartmentCode)部门的所有用户(0~N个)

DEPT_L EADER(DepartmentCode)部门的所有领导(0~N个)

USER_L EADER(User ID)用户所在部门的所有领导(0~N个)

USER_SUB(UserID)一个用户的所有替代者(0~N个)

USER_SUB(UserID,PropertyCode)一个用户的某个属性的所有替代者(0~N个); USER_B YSUB(User ID)一个用户的所有被替代者(0~N个)

USER_B YSUB(User ID,PropertyCode)

一个用户的某个特定属性的所有被替代者(0~N

个)

PROP_USER(PropertyCode)拥有某属性的所有用户(0~N个)

EXTPROP_USER(User ID)拥有某扩展属性的所有用户(0~N个)

PROP_SUB(PropertyCode)具有某属性的所有替代者

属性集合SER_PROP(User ID)用户拥有的所有属性(0~N个)

USER_PROP(User ID,Ext PropertyCode)用户的特定扩展属性对应的属性(0~N个) USER_EXTPROP(User ID)用户的所有拥有的扩展属性(0~N个)

USER_EXTPROP(User ID,PropertyCode)

用户的特定属性所对应的所有扩展属性(0~N

个)

在类SQL参与者定义脚本中,上述的各类函数都具有与SQL的常规函数类似的用法.

2 基本的参与者定义方式

参与者指定,简单的如直接指定用户(U se2 r ID),或者指定具有某一属性的所有用户.但是,在实际应用中,还要根据业务实例的数据来指定.例如,在银行的贷款申请单的处理中,如果申请单的金额小于5000,由一般的服务人员处理;如果金额大于或等于5000,则由主管来处理.因此,在定义参与者时,需要考虑诸如此处的“申请金额”等等关键业务实例信息.为此,本文引入一个输出数据表,用于保存业务实例的某些关键信息.在过程定义中,可以指定在某些活动执行时,将后续活动需要使用的关键参数输出到输出数据表,用于后续活动的参与者定义时引用.输出数据表(OutData)的字段包括p rocessCaseID、parameter、parameterVal2 ue.其中processCaseID惟一标识一个业务过程实例;parameterName是输出参数名称;parameter2 Value是输出参数的实际值.另外,如果有必要,也可以将每步活动的实际执行者的相关信息,作为输出数据保存起来以备后续活动使用.为方便条件的表达,增加一个对OutData表查取数据的函数OutData(ProcessCaseID,Parameter),用于求取过

041

 第1期刘姜涛,等:用SQL脚本实现工作流参与者定义

程实例ProcessCaseID的Parameter输出参数的值.在实际应用中,由于每个过程实例的Process2 CaseID是不断变化的,所以在参与者定义时不硬性指定.但在过程实例运行时,工作流引擎会自动加上一个ProcessCaseID.因为每步活动实例的输出参数对应的ProcessCaseID就是过程实例的ProcessCaseID,它与后续活动在指定参与者时需要的ProcessCaseID是同一个值.

下面介绍几种典型的参与者条件定义方法:

(1)直接指定参与者.

SEL EC T U ser ID FROM U ser W H ERE U se2 r ID COM PARE:userid

其中COM PARE表示数据库操作符,如“=”、“<>”、

“L IKE”、

“IN”、

“NO T IN”等等.

对于参数:userid,有多种赋值方法,如直接指定、按输出数据来指定、按用户的代理者来指定、按用户的部门领导者来指定等,下面的几条语句分别对此进行描述:

(A1.1)SEL EC T U ser ID FROM U ser W H ERE U ser ID=‘Mike’,直接指定Mike作为活动参与者.

(A1.2)SEL EC T U ser ID FROM U ser W H ERE U ser ID=OutData(:parameter),根据输出数据来指定活动参与者.注意此处OutData()函数省略了ProcessCaseID参数.例如,在售后服务中,客户指定某个员工为其服务,则该员工姓名可以作为输出数据参与查询.

(A1.3)SEL EC T U ser ID FROM U ser W H ERE U ser ID IN U SER_SUB(:userid),指定某用户的所有代理者为活动的参与者.

(A1.4)SEL EC T U ser ID FROM U ser W H ERE U ser ID IN U SER_L EADER(:userid),指定某用户的所有部门领导为活动的参与者.

(2)根据部门指定参与者.

SEL EC T U ser ID FROM U ser W H ERE Dep2 art ment Code COM PARE:depart mentcode

对于参数:depart mentcode,有多种赋值方法,如直接指定、按输出数据来指定、按用户所属部门来指定、按部门的父部门或子部门来指定等等.下面的几条语句分别对此进行描述:

(A2.1)SEL EC T U ser ID FROM U ser W H ERE Depart ment Code=‘Client Service’,直接指定Client Service(客户服务部)的所有人员作为活动参与者.

(A2.2)SEL EC T U ser ID FROM U ser W H ERE Depart ment Code=OutData(:parame2 ter),根据输出数据来指定活动参与者.例如,在售后服务中,客户指定某个地区的客户服务部为其服务,则该客户服务部可以作为输出数据参与查询.

(A2.3)SEL EC T U ser ID FROM U ser W H ERE Depart ment Code=DEP T_PAREN T(: depart mentcode),指定某部门的父部门所有人员为活动的参与者.

(3)根据属性指定用户.

SEL EC T U ser ID FROM U ser Property W H ERE PropertyCode COM PA RE:p roperty2 code

对于参数:propertycode,有多种赋值方法,如直接指定、按输出数据来指定、按用户所拥有的属性指定等等.下面的几条语句分别对此进行描述.

(A3.1)SEL ECT U ser ID FROM U ser Proper2 ty W H ERE PropertyCode=‘manager’,直接指定拥有‘manager’属性的所有人员作为活动参与者.

(A3.2)SEL ECT U ser ID FROM U ser Proper2 ty W H ERE PropertyCode=OutData(:parame2 ter),根据输出数据来指定活动参与者.例如,在售后服务中,客户指定具有某类资质的员工为其服务,如“电气检修工”,则该资质可以作为输出数据参与查询.

(A3.3)SEL ECT U ser ID FROM U ser Proper2 ty W H ERE PropertyCode IN U SER_PROP(:use2 rid),指定具有某用户任一属性的所有人员为活动的参与者.

(4)根据扩展属性指定用户.

SEL EC T U ser ID FROM U ser Property W H ERE Ext PropertyCode COM PARE:extp rop2 ertycode

参数extpropertycode的赋值方法与参数: p ropertycode一致,本文不再详述.

(5)根据部门和属性的组合条件指定用户.

SEL EC T U ser ID FROM U ser INN ER J OIN U ser Property ON U ser.U ser ID=U ser Property. U ser ID AND U ser.Depart ment Code COM PARE :depart mentcode AND U ser Property.Property2

141

武汉大学学报(工学版)2007

Code COMPARE:p ropertycode

指定某部门具有某种属性的所有人员作为活动的参与者.其中COM PARE、:depart mentcode 和:propertycode的用法与上述一致.

(6)根据部门和扩展属性的组合条件指定用户.

SEL EC T U ser ID FROM U ser INN ER J OIN U ser Property ON U ser.U ser ID=U ser Property. U ser ID AND U ser.Depart ment Code COM PARE :depart mentcode AND U ser Property.Ext Proper2 tyCode COM PARE:extp ropertycode

指定某部门具有某种扩展属性的所有人员作为活动的参与者.

(7)根据属性和扩展属性的组合条件指定用户.

SEL EC T U ser ID FROM U ser Property W H ERE PropertyCode COM PA RE:p roperty2 code AND Ext PropertyCode COM PARE:ext2 propertycode

指定具有某种属性且具有某种扩展属性的所有人员作为活动的参与者.

(8)对上述结果集作集合运算来指定用户.

由于上述的4种定义方法中,最终的查询结果是一个集合,因此可以对其进行并、交、减等运算.假定某两个查询结果集是R和S,则R∪S表示在查询结果集R中或S中的记录;R∩S表示在查询结果集R中且在查询结果集S中的记录;R2S表示在查询结果集R中,但不在查询结果集S中的记录.

3 结 论

文章提出了一种工作流参与者定义的新方法.它建立在组织结构和实例数据的基础上,并用一种类SQL语句来定义工作流的各个活动的参与者.

本文提出的工作流参与者定义在一个基于关系数据库的工作流管理系统中已经实现.工作流的参与者定义数据和业务实例数据都保存在关系数据库中.工作流引擎对类SQL语句进行解析时,首先将组织关系运算函数解析成相应的SQL子句,并嵌入到原类SQL语句中,形成一个标准的SQL 脚本命令.该SQL脚本命令的执行结果,就是符合条件的参与者.

为了简化参与者定义的过程,对于几种常用的参与者定义提供了类SQL脚本生成向导.包括按用户属性指定、按部门指定、按实例数据指定等等.对于前两者方法,提供系统规划的用户属性和部门作为选择项;对于最后一种方式,提供该活动的前趋活动的所有输出参数作为选择项.过程定义者还可以对向导生成的类SQL脚本进行编辑,生成符合要求的参与者定义条件.

本文介绍的工作流参与者定义方法,还有一些不完善的地方需要继续进行改进.例如在多个符合条件的参与者中的任务再分配方法(按负荷轻重、按是否空闲、按轮转规则等),指定的参与者不能完成任务(任务异常)时,该异常任务的处理方式等.这些都是笔者下一步研究的兴趣所在.

参考文献:

[1] Workflow Management Coalition.WFMC2TC002

1011Terminology and G lossary[S],1999.U RL:ht2

tp://www.wf https://www.wendangku.net/doc/0a17290601.html,.

[2] Workflow Management Coalition.WFMC2TC002

10162P Interface1:Process Definition Interchange

Process Model[S],1999.U RL:http://www.

wf https://www.wendangku.net/doc/0a17290601.html,.

[3] Workflow Management Coalition,WFMC2TC002

10162O Interface1:Process Definition Interchange

Organizational Model[S],1999.U RL:http://

https://www.wendangku.net/doc/0a17290601.html,.

[4] IBM Publications.WebSphere MQ Workflow Started

Buildtime(SH1226286209)[R].U RL:http://pub2

https://www.wendangku.net/doc/0a17290601.html,/epubs/pdf/h1262869.pdf. [5] 范玉顺.工作流技术基础2实现企业业务过程重组、过

程管理与过程自动化的核心技术[M].北京:清华大

学出版社;施普林格出版社,2001.

[6] Bussler C,Jablonski S.Policy Resolution for Work2

flow Management Systems[C].Proceedings of the

Twenty2Eighth Hawaii International Conference on

System Sciences,1995.

[7] Akhil Kumar,J Leon Zhao.EROICA:A Rule2Based

Approach to Organizational Policy Management in

Workflow Systems[C].L NCS,Vol.2419,Springer2

Verlag,Berlin Heidelberg,2002:2012212.

[8] M zur Muhlen.Resource Modeling in Workflow Ap2

plications[C].Proceedings of the1999Workflow

Management Conference.Muenster,G ermany,No2

vember9th1999:1372153.

[9] Huang Y N,MC Shan.Policies in a Resource Manager

of Workflow Systems:Modeling,Enforcement and

Management[C].Proceedings of the15th International

C onference on Data Engineering,1999:23226.

241

相关文档