计算机研究与发展
JOURNAL OF COMPUTER RESEARCH
AND DEVELOPMENT
1999年 第36卷 第12期 Vol.36 No.12 1999



支持企业动态联盟的敏捷工作流系统
胡锦敏　　　张申生
摘　要　针对企业动态联盟应用和大型企业的商业过程重组，文中提出了一种支持系统重构、软件重用和规模可扩展的敏捷工作流系统.文中针对动态联盟的应用建立了基于过程分解的工作流概念模型,同时对该模型进行形式化描述并设计了一种支持此概念模型的分层递解的敏捷工作流系统框架.文中提出的基于CORBA和Agent的两级可供调用的功能体封装提高了软件的重用性和系统的重构性，分层递阶模型增强了系统重构能力和规模的扩展能力.
关键词　工作流系统，动态联盟，系统重构，软件重用
中图法分类号　TP14；TH166
AN AGILE WORKFLOW SYSTEM SUPPORTING
DYNAMIC ALLIANCE
HU Jin-Min and ZHANG Shen-Sheng
(CIT Laboratory, Shanghai Jiaotong University, Shanghai 200030)
Abstract　Aiming at the applications of dynamic alliance and the business process re-engineering of large enterprises, an agile workflow system is introduced in this paper, which supports system reconfiguration, software reusability, and scalable system. A workflow conceptual model based on process decomposition is given and some formal definitions describing this conceptual model are also presented.Based on this model,a multi-layer architecture framework for this agile workflow system is designed.Two-layers-invoked function body encapsulation separately based on CORBA and agent enhances the software reusability and system reconfiguration capability. The multi-layers architecture also enhances the system reconfiguration capability and the scalability.
Key words　workflow system, dynamic alliance, system reconfiguration, software reuse
1　引　　言
　　随着市场经济的发展，企业为了适应市场的变化有必要进行企业商业过程重组（business process reengineering,BPR).对于大型的企业，为了提高竞争能力和快速响应市场变化的能力，也就是企业的敏捷性，也要和合作伙伴组成动态联盟(也称虚拟企业).要达到这些目的一定要有集成化软件系统的支持，并要求该软件系统是一个敏捷的系统，即能够在分布异构的环境下支持系统重构、软件重用，支持系统规模的扩展.也就是一个RRS（reconfigurable reusable scalable)系统［1］.系统的重构保证了系统可根据商业过程的改变和结盟情况的变化而实现系统的快速重构；软件重用保证已有系统（Legacy系统)在新的系统中得到继承并集成其中，并且保证现在开发的功能应用能很好地在以后的系统中方便地得到集成；系统规模的可扩展性保证了系统能随着企业发展和结盟的变化而可扩展.这些都是系统敏捷性（agility）的重要体现.目前，工作流技术的发展很快，基于工作流的应用已得到越来越多企业的重视，其最有希望成为现代企业集成和企业间集成的解决方案.
2　工作流参考模型
　　工作流就是商业过程部分或全部地计算机化或自动化［2］.换言之，工作流是为了达到一定的商业目的而根据一组定义的规则将文本、信息和任务在工作过程参与者之间传送的过程自动化.对于庞大的商业过程往往要牵涉到许多企业的参与，各个企业负责的工作不同，使用的工作流系统也允许不一样，但是对于这一个商业过程它们不是孤立的，需要进行信息交换，需要相互协作才能完成整个商业过程.为了实现不同工作流系统之间的信息交换和协作，工作流管理联盟（workflow management coalition, WfMC)定义了工作流参考模型，图1描述了该模型的基本部件和基本接口.
　　图1中的工作流系统有5个基本部件：
　　(1)工作流定义工具.它是提供一种描述工作流过程的软件，把实际的过程步骤用图视化的方法或简单的文本描述出来并产生或转化成规范的工作流定义语言格式；
　　(2)工作流执行服务（workflow enactment service)，它由一个或多个工作流引擎（workflow engine)组成，是工作流的核心，负责创建、管理和执行工作流实例.各种工作流应用通过工作流应用编程接口（workflow API,WAPI）访问它.逻辑上它一共提供5个接口（图1中的双向箭头表示接口），分别是与过程定义模块的接口、与工作流客户端应用模块的接口、与管理和监视工作流工具的接口、与供调用的各种功能服务的接口以及与其它工作流系统的接口.工作流引擎是工作流实例提供运行时的执行环境，它解释过程定义、控制工作流实例的运行、根据工作流的定义和状态导航（navigate)工作流、分派各种角色、维护工作流的控制数据、调用各种应用等等；
　　(3)供调用的应用（invoked application）.它是一些功能应用的集合，每一个应用可能负责完成工作流的某一个子过程的执行或完成某项（些）任务.工作流引擎根据工作流的运行情况调用它们来完成工作流的执行；
　　(4)工作流的客户应用（workflow client application).它可以通过工作列表访问（worklist access)接口访问工作列表（worklist)库，而工作流引擎可以把工作（任务）分配到工作列表库而由用户去访问接受分配给的任务.工作流客户应用部件在实现时是可选的，但在需要人参与完成工作流中某些非完全自动的过程时应提供此应用；
　　(5)工作流的管理和监视.它负责管理监视工作流，包括用户管理、角色管理、运行记录、错误恢复、停止和删除工作流等.

图1　工作流参考模型
3　支持企业动态联盟的敏捷工作流系统
3.1　支持企业动态联盟的系统要求
　　动态联盟要求企业从定义新产品的经营过程出发，在经营过程中建立跨公司、跨国家的多企业的动态组织结构［3］.这种动态组织结构能根据经营过程的改变、市场的改变以及合作伙伴的改变实现系统的快速重构.重构的系统必须大量地使用原有系统的功能，以能迅速地开发出新的系统同时维护原有的大部分系统的使用.随着企业的发展和市场的变化，系统的规模应该是可扩充的.总言之，支持动态联盟的系统必须是系统可重构、软件可重用、规模可变化的RRS系统，这也是动态联盟的敏捷性的体现［3］.要实现这些特点，在动态联盟软件系统的设计中必须做以下工作：
　　(1)Legacy系统的模块化封装，封装的粒度对软件的重用和系统的重构都有密切的关系，粒度小则重用和重构度大，但封装的难度和工作量都增大；
　　(2)新功能体的开发，也必须是某种粒度上支持重用的功能部件；
　　(3)企业过程与过程执行者（角色的扮演者）的动态绑定要求把过程分解成一定粒度的子过程，从而使此过程的执行和执行者之间有一定的对应关系；
　　(4)分布式的过程执行调度与信息控制,也就是过程的管理与控制；
　　(5)建立可扩充的系统结构以支持系统规模的扩充.
　　为了实现上述要求，首先要研究动态联盟的运行过程，建立动态联盟的工作流模型，然后建立支持此模型的系统.
3.2　基于过程的工作流概念模型
　　企业间的动态联盟的工作流程或大型企业的商业过程都是非常庞大的过程，它们往往可以分解成多个过程运行于不同的企业或企业的不同部门.为了解决分布系统带来的频繁且大量的数据传输引起的系统开销，必须对过程的相关性进行分析，相关性强的过程应该尽量地在一个系统内完成，相关性弱的过程可以分开在不同的系统运行，这是比较理想的模式［4］.但是，企业往往按照一定的组织模型进行工作流的划分，某部门负责某些工作，这些工作的集合作为一个相对独立的子过程，这与理想的过程划分有一定的差别.同时，为实现系统的敏捷性，必须把过程和其执行者相分离，这也要求对过程进行一定粒度的划分.这里建立基于过程进行分解和对组织模型进行动态分配的工作流概念模型来达到我们的目标.
　　定义1.如果把商务活动看成一项复杂的工作W，设任务T为工作W的最基本单位,则工作W为任务集合Tset,Tset={Ti|i∈N},N为自然数集.
　　定义2.任务序列为一非稠密的线性序.可以表示为Tseq=(Tset,≤)∪{非稠密性},其中Tset为任务集，≤为偏序关系，其含义是任务执行的先后次序关系.
　　任务序列Tseq表示那些具有严格序关系的任务集合，对于两项不可区分执行先后次序的任务它们不会在同一Tseq中，因为它们不具有偏序关系.Tseq也可以表示成（T1,T2,…,Tn),其中Ti∈Tset，i∈N.非稠密性表示在任务集Tset里找不到任务Tx′,它处于任务序列中两相邻任务Tk和Tk+1之间，这样保证了任务序列和自然数列的一一对应关系，保证了任务序列的过程连贯性.非稠密性可形式表示为{x(Tk≤Tx∧Tx≤Tk+1),其中Tk,Tk+1∈任务序列{…,Tk,Tk+1,…}而Tx∈Tset.
　　定义3.一任务序列Tseq是一基本过程Step.
　　定义4.过程P可以通过基本过程Step和∧、∨、、操作递归定义如下：
　　①基本过程Step是一个过程；
　　②如果P1，P2是过程则P1∧P2是过程.其中∧表示连接，也就是P2接在P1的后面，表示P2在P1完成后执行；
　　③如果P1，P2是过程则P1∨P2是过程，其中∨表示分支，也就是P1和P2为两个分支过程，它们可同时执行；
　　④如果P1，P2、P3是过程则（P1∨P2）P3是过程，其中表示非等待连接，也就是P1和P2为两个分支过程只要有一个完成即可执行P3,出现在非∨形式的过程后面等价于∧；
　　⑤如果P1，P2是过程则P1P2是过程，其中表示可选分支，也就是P1和P2为两个分支过程，选择其中一个执行；
　　⑥从①出发反复使用②、③、④、⑤.
　　注意：∧和操作不具有传统意义上的可交换操作，即P1∧P2不等价于P2∧P1.
　　扩充：⊥表示过程结束，既可看作一任务，也可看作一过程，无任何实际动作，只是形式地表示过程终止这一含义.
　　例1.图2描述了一个工作流过程，其中Ti(i=1,…,9)为任务.

图2　过程模型图
　　它所描述的过程可以形式化描述为P={T1,T2}∧(({T3,T4}∨{T5}){T6,T7,⊥}){T8,T9,⊥};这里Ti为任务，而{…,Ti,…}则是过程（基本过程）.
　　定义5.过程执行单元为一个三元组PEU=(P,A,RD)，其中A为执行该过程的Agent或人,RD(relevantdata)为此过程的相关数据（输入输出数据）.
　　PEU表示过程P分配给A(Agent)执行，过程用到的过程相关数据集为RD.这种意义下的一个过程只能分配给一个Agent执行，而一个Agent可执行多个过程.这就说明Agent的封装是针对某一（些）过程的执行进行的，在支持企业动态联盟的敏捷工作流系统中是比较适合的.
　　定义6.过程相关数据为一个二元组RD=(InData,OutData).InData为过程的输入数据，OutData为过程的输出数据.在两个相关的过程P1和P2中，它们的过程数据相关性是指先执行者的输出数据与后执行者的输入数据的映射（mapping）关系［5］.
　　定义7.工作流单元为一个三元组，WFU=(PEU,Eng,Org),PEU为一个过程执行单元，Eng为工作流引擎,Org为组织模型，如部门或企业.
　　每一个WFU是一个工作流运行的基本单位，也就是可分配给工作流EnactmentService系统的基本单位.这里一个PEU只能分配给一个Eng中执行，但是一个Eng可以执行多个PEU.
　　根据以上的定义，可以得到一个针对敏捷工作流的过程分解规则.
　　规则1.设P为总过程，基于任务的过程表示可以把P表示为P={Ti|0＜i＜m}.针对这一任务集合，根据任务序列的定义和任务间的数据相关性可把该任务集划分成多个任务子集，而每一个子集对应于一任务序列，同时这样的划分使不同任务序列的任务之间的数据相关性要尽量的小最好无相关性.如果同一序列内的任务之间的数据相关性还存在差别很大的情形，可继续划分.最后过程P基于任务的表示为

这时，它变成了基于任务序列或基本过程的表示，因为每一个集合{T1,Ti2,…,Tki}i(i=1,…,n)都是相对独立的任务序列，也是基本过程.根据过程的定义，利用∧、∨、、、⊥操作运算把这些基本过程组合成希望执行的过程.
　　然后对这一过程任意的项（项的定义类似于逻辑表达式中项的定义，例如P=A∧B∨C，则A，B，C和A∧B，B∨C，A∧B∨C都是项）给其分配与其对应的相关数据RD和Agent即可获得一个PEU，分配时要考虑过程的相对完整性和Agent的能力.（注意,不要对同一过程进行重复分配.例如，把A∧B作为一过程考虑时，就不要把A，B单独考虑了.）把此PEU分配给一个工作流引擎Eng完成，同时根据组织视图动态绑定组织模型Org，即获得工作流单元WFU.所有WFU的集合组成了整个工作流.
　　定义8.工作流为工作流单元的集合WF={WFUi|i∈N}.
　　采用这种办法，增大了工作分配单位的粒度，把传统的以任务为分配单位的做法变成以相对独立的过程为分配单位.对于动态联盟工作流过程，考虑的过程粒度应该比独立的企业过程的粒度大一些，这样有利于系统的快速重构和减少企业间的频繁数据交换.同时，在工作流这一级才加入组织概念，使过程模型和组织模型得以分离，增强了系统的可重构性.这是敏捷工作流在概念模型上的敏捷性体现.
3.3　敏捷工作流系统框架
　　文献［6］根据工作流任务管理的形式提出了工作流管理系统的5种体系结构，文献［7］提出了一种用Agent增强工作流应用的体系结构，这些系统都在一定程度上细化了工作流参考模型，但是它们都不是分层递解的既不针对大型的应用也不考虑系统的敏捷性.这里设计了支持动态联盟和上述工作流概念模型的敏捷工作流系统框架，如图3所示.

图3　敏捷工作流系统体系结构图
　　从图3可以看出，该系统结构是分层递阶的，层次的多少应根据系统构造的复杂度而定.在图3中画了两层，系统最高一层为总工作流系统，它拥有此大工作流总的过程的视图，它负责此大规模工作流的总控和工作流单元（WFU)的装配，即把过程执行动态分配给下一级的工作流引擎并动态绑定组织模型.它是完成各子工作流系统协调工作的工作流系统，没有实际的过程执行活动，因此它不具有任何实际的应用数据和应用功能的调用，只保存与工作流控制有关的和全局相关的工作流数据.下面一级是各相对独立的工作流系统，它们都是典型的工作流系统，参与组成这个大规模的工作流系统，负责一部分工作流的任务.第二层工作流系统拥有其局部的过程视图，却没有整个大工作流的过程视图，它们都只关心自己的工作流任务，对外提供自己能提供的服务功能.这些功能由可供工作流引擎调用的所有Agent的功能集和CORBA封装对象集体现.这里的Agent设计为能完成某一工作流应用的功能体的集合体，它调用一些CORBA封装的对象来完成这些功能.Agent也可能是封装原来开发的应用系统，或者说是把Legacy系统封装成Agent，这也是实现软件重用的有效手段.
3.4　系统的敏捷性
　　(1)软件重用性
　　软件重用性可以通过两个层次实现：一个层次是CORBA对象封装层次，是基于功能的封装，这是粒度较小的封装.此类封装可以针对完成工作流的某项任务或任务的某一部分的功能进行封装，这种封装的重用性高.另一个层次就是Agent封装层次，是基于应用的封装，这是粒度较大的封装.此类封装可以针对完成工作流的一个执行，是完成一个过程或子过程的功能集合，是针对应用的封装，可以作到一个Agent完成一项相对独立的应用，如库存管理应用.而一个CORBA对象对应的是一项功能，如入库处理功能，它只是库存管理的一部分.
　　(2)系统重构能力
　　系统重构能力通过以下几方面得以实现：
　　第1方面是系统的分级递解结构，这里定义了一个两层结构的系统.这种结构的好处是，系统重构可以通过改变顶层的过程视图来重构系统.而对于第二层相对独立的工作流系统，因为它们参与此大规模工作流的资格是由上一级分配的，它们只有得到上层分配的工作流单元（WFU）时才启动自己的工作流，它们并不关心整个大流程.这种结构非常适合企业动态联盟，每个企业的工作流系统是一相对独立的系统，它们可动态参与和退出某一联盟而对该联盟的其它企业影响很小.这使系统具备了敏捷性；
　　第2方面是基于两级的系统重用增强了系统的重构能力，因为系统的重构必须基于系统能够提供的功能应用的能力及其可变度进行.两种粒度的重用使系统的构造更灵活；
　　第3方面是系统的组织模型的动态绑定，在工作流系统中，过程模型和组织模型相互分离是实现工作流的灵活性的关键所在.组织模型的动态分配也就是任务角色的动态分配，这种做法很适合企业的过程重组，无论过程的改变或是组织的改变工作流系统都能很快重构以适应这种改变；
　　第4方面是各工作流系统自身重构的能力，从WfMC的工作流参考模型可以看出，每个工作流系统都具有相当的重构能力，通过改变过程的形式定义则实例化后的工作流就不一样了，也就改变了工作流的实际运行情况.
　　(3)规模可扩展的特性
　　软件重用和系统重构性也隐含了系统规模可扩展的特性.系统分级递阶的结构是系统规模可扩展的重要手段，通过增加级数和每级的系统数即可扩大系统规模，而影响工作流程变化的是上一级的过程视图.另外，两级可供调用的功能系统：CORBA对象级和Agent级，使系统的构造更灵活，也使系统的规模扩充变得容易.
　　以上这些特性都体现了该系统支持动态联盟的敏捷性.
3.5　系统的应用实践
　　文中所提出的敏捷化工作流系统思想在实现支持企业动态联盟的敏捷供应链系统的实践中得到了利用.供应链系统是集成主生产厂商、零配件供应商和产品销售商在内的跨企业系统.它们各自都有自己的工作流系统以实现相应的工作过程提供相应的服务，而它们相互之间往往根据定单协议进行协作，以完成处理这一定单的全部过程，这是一个更大的工作流.从销售商向主生产商发出订购产品的定单起，经过向供应商订购零配件、装配、生产、入库、出库、发货、收款、开发票等一系列处理过程，都必须有上一级工作流加以调度和协调，而每一步处理过程都要调度相应的功能体来执行具体的任务.它的灵活性体现在处理顺序可以通过调度来改变.
4　结束语
　　文中提出了一种针对企业动态联盟的，支持软件重用、系统重构和规模可扩展的敏捷工作流系统.该系统满足动态联盟的系统需求，也是支持企业过程重组的工作流系统.文中针对动态联盟系统的特性，着重论述了基于过程分解的工作流的概念模型，并设计了支持这种模型的敏捷工作流系统，同时论述了其支持系统重构、软件重用和规模可扩充的特性.本文的思想对开发动态联盟系统、敏捷供应链管理系统和企业的大型应用系统有现实意义.
原稿收到日期：1999-05-25；修改稿收到日期：1999-08-05.
本课题得到国家自然科学基金重大项目（项目编号59799502）和国家“八六三”/CIMS项目（项目编号863-511-930-002）的基金资助.
作者简介：胡锦敏，男，1972年4月生，博士研究生，主要研究领域为动态联盟及敏捷供应链系
　　　　　统、工作流系统及过程建模方法.
　　　　　张申生，男，1951年2月生，教授，博士生导师，主要研究领域为敏捷制造理论体系
　　　　　和关键技术、分布异构环境信息集成技术、CIMS关键技术等.
作者单位：上海交通大学计算机集成技术开放实验室　上海　200030
参考文献
　1　张申生.从CIMS走向动态联盟.中国机械工程,1996,7(3):17～22
　　　(Zhang Shensheng. From CIMS to dynamical alliance. China Mechanical Engineering(in Chinese), 1996, 7(3): 17～22)
　2　Workflow Management Coalition. Workflow Reference Model. http://www.aiim.org /wfmc. 1998
　3　蒋新松，张申生. 敏捷竞争的挑战与思考. 计算机集成制造系统, 1996, 2(1): 3～9
　　　(Jiang Xinsong, Zhang Shensheng. The challenge and thinking of agile competition. Computer Integrated Manufacturing System(in Chinese), 1996, 2(1): 3～9)
　4　Marcl B C, Jim Over M. Process Modelling. Communications of the ACM, 1992, 35(9): 75～89
　5　Alonso G, Agrawal D, Abbadi A E et al. Research Report:Advance Transaction Models in Workflow Contexts. http://www.ibm.com, 1997
　6　John A Miller, Amit P Sheth, Krys J Kochut et al. CORBA-based run-time architectures for workflow management systems. Journal of Database Management, Special Issue on Multi-databases, 1996，7(1): 16～27
　7　Judge D W, Odgers B R, Shepherdson J W et al. Agent-enhanced workflow: BT Technology Journal, 1998, 16(3): 79～85
　8　Leymann F, Roller D. Workflow-based application. IBM System Journal, 1997, 36(1): 102～123
　
