工作流定义工具需求分析
工作流分类:
管理型、设定型、协作型、生产型。
以通讯为中心、以文档为中心、以过程为中心、
基于文件、基于消息、基于web。
工作流模型包括了描述一个能够由工作流执行服务软件系统执行的过程所需的所有信息。这些信息包括:过程的开始、完成条件,构成过程的活动,进行活动间导航的规则,用户要完成的任务,可能被调用的应用,工作流机的引用关系,所有与工作流相关的数据定义。
过程定义可能引用组织/角色模型中关于组织结构、组织中的角色等信息。(过程定义指定完成某项活动的组织实体或角色,而不是具体的人员。将角色与具体人员连接的是工作流执行服务。)
过程建模:基于形式化的过程定义语言、对象-关系模型(对简单系统可以用一组路径选择命令的方式来描述信息或文档在参与者之间的传递)
建模工具的输出:能被工作流机解释执行的过程定义。
工作流模型的元模型:描述了工作流模型内在的联系,这个模型有利于在不同工作流产品间交换信息。
数据:工作流相关数据,监控和控制信息(工作流定义)p58
过程定义输入输出接口:
1通信建立
2工作流模型操作:过程模型名称检索;对过程模型对象的读写
3工作流模型对象操作:在建模工具中创建、检索、删除对象;创建、设置、删除对象属性
工作流模型与工作流定义语言研究(工作流建模方法、工作流模型形式化表示、工作流定义语言)
IBM Exotica
建模方法:
工作流模型与高级事务模型的目标相似,是支持异构分布应用环境的工具系统。Exotica研究了两者的结合。事务模型saga,flexible transactions有些复杂,Exotica提出一个中间件FMTM,作为将事务模型转换为工作流模型的预处理器
FDL(flowmark define language)
佐治亚大学的Meteor(Managing End-To-End Operation),LSDIS实验室 p90
图形化建模工具:流程设计器,数据设计器,任务设计器。
流程设计器:定义各个活动之间的关系。
数据设计器:定义执行活动所使用和传递的数据。采用了面向对象的技术来设计数据设计器,由设计器生成所需的所有的数据类,利用继承,提高了数据管理的清晰程度,强化了数据之间的逻辑关系。
任务设计器:描述如何激活不同类型的活动(非事务型,事务型,WEB型,人机交换型,两阶段提交型)。不同的活动有不同的设计器。对于需要从数据文件获得输入数据的活动,设计器提供了一个模板来描述这些数据文件,模板中包含了有关数据类的属性和其他的一些文本信息。
模型将以工作流中间语言WIL(Workflow Intermediate Language)形式保存,该语言与WPDL(Workflow Process Definition Language)类似。
WIDE(Workflow on Intelligent and Distributed database Environment)的工作流模型:组织模型,信息模型,过程模型。是对WFMC参考模型的扩展。不仅支持工作流的基本要素(三个模型及它们之间的相互关系????)还支持丰富的组织模型,复杂的活动分配约束,动态控制流程,复杂过程结构,工作流事务管理。
组织模型:记录企业内部组织结构,资源信息。记录了单个雇员信息,职位信息,为了某种目的建立的临时工作组信息,雇员间、职位间、工作组间的关系。与其他工作流产品的区别:严格实现组织模型与过程模型的分离(其他?),通过授权机制实现过程模型定义的角色到组织模型中代理的对应。
信息模型:定义并维护一个工作流实例运行所需全部数据,并管理其表示方式和使用范围。
过程模型:。。。
WIDE支持层次化建模,
基于状态与活动图的工作流管理系统Mentor(Middleware for Enterprise-wide Management)
采用状态和活动图建立模型,使用可视化软件工具Statemate作为建模工具。也可采用其他建模工具(flowmark),Mentor会将其转换为状态和活动图。
活动图反映系统功能的分解,每个活动代表一个功能,者与工作流模型中的活动类似,活动间的有向弧代表数据的流动。状态图反映活动之间控制信息的流动。状态的转换由ECA(Event Condition Action)规则驱动。状态图还支持嵌套的状态,正交组件(orthogonal components)。
研究方向:
工作流模型的正交分解:为了实现分布运行。包括活动图和状态图的分解。其中,后者较难。Mentor提出了一种方法分解后者,
工作流建模方法:基于活动网络的建模方法,以活动及其关系为基础。
基于形式化表示的建模,如petri,工作流网,
基于对话形的建模,Winograd ,Flores
基于状态和状态图,从使用和正确性验证上来看,介于pertri与图形化模型之间的,
基于事务模型,事务是数据库的概念。工作流中的事务比数据库中的要复杂。
图形化,
工作流描述语言:
wpdl,psl(chapter 7), wfdl,tsl,wfsl,C&Co(from c)
几种产品:
IBM MQSeries Workflow,是基于消息的(基于ibm的消息队列产品MQSeries),企业可以采用工作流工具建模其业务过程,然后使用BPR工具分析并优化其业务流程,最后可以将优化的过程交给工作流执行服务为执行
在创建阶段提供的建模工具允许管理员用图形化的方式描述一个过程和其中的活动,并且通过一个图形用户界面可以定义工作流模型中的所有其他信息。还提供函数定义MQSeries Workflow服务器的特性和它们的网络拓扑结构。
用户可以在建模界面自定义图标。
建模工具还提供一个重要功能,允许定义活动之间的控制流,且允许定义数据映射。这个映射功能可以定义在过程实例的执行过程中,活动之间数据的传递和相关的传递规则中。
工作流模型
工作流建模就是对经营过程进行计算机化的定义。工作流模型除了支持完整的工作流概念定义,即提供定义工作流所需的所有组件或元素,理想的工作流还应该具有强大的描述能力,即能够描述清楚几乎所有的业务流程类型。现在还未做到。
工作流不但要表达经营过程中的活动及相互关系,还要对活动间传递的信息、活动的执行实体、活动所需资源等定义。因此加入了描述数据(信息)、组织、资源等部分。很多工作流产品允许在一定范围内自定义数据、人员等。为了更好描述这些信息,将这些描述信息扩展为独立的模型。如WIDE中的组织模型、信息模型、过程模型共同构成工作流模型。惠普实验室提出一种层次化的树状的资源模型。
为了交互,提出了规范的描述语言,即工作流定义语言。如WFMC的WPDL,IBM FDL,METEOR2 WIL(Workflow Intermedia Language)
模型的评价标准【文献31】:
1表达能力丰富:提供丰富的建模概念,使得由大量约束集合而成的元素能够在模型中被直接表达。
2容易理解:对于专家和普通用户都能理解
3最小化:模型中的概念的集合是最小化的
4形式化:模型定义能够作为现实对象的形式化描述。
1从过程描述入手,基于有向模型:流程图、状态图、活动网络图、EPCM模型。不能处理复杂的过程逻辑。
2IDEF系列方法:功能建模IDEF0(系统功能结构,描述的是功能的输入、输出、资源使用情况),信息建模IDEF1/IDEF1x(信息实体及相互间关系),动态行为建模IDEF2,过程建模IDEF3(描述过程,过程流网,对象状态转移网。前者包括不同人员对事件与活动、参与事件的对象,以及操纵这些事件的行为之间的约束关系等),面向对象建模IDEF4。用于过程建模的:IDEF0,1x,3。
STEP Part 49
基于对话的工作流模型(产品:ActionFlow)
基于活动网络的过程建模-FlowMark工作流模型
一个经营过程由一个无自环的有向图构成。
节点:可执行的步骤或任务。
节点间的连接弧:过程中的控制流与数据流
模型组成元素:process,activity,block,control connector,data connector,conditions
1process:有一系列具体步骤组成,为完成某项定义目标而定义。一个过程就是用一个有向图来表示的一个工作流。
2activity:过程中的每个步骤就是一个活动,在图中就是用一个节点元素表示。分为:program activity:为活动绑定了一段程序代码,活动开始就是程序的执行;process activity在活动基础上嵌一个过程,活动开始时,就开始了相应的过程,process activity主要是用于子过程的嵌套描述与模型的层次化分解。活动的内部结构:输入数据箱,输出数据箱,开始与结束条件,状态,绑定的相应程序或过程。
3block:类似于“过程”,区别是,一个过程有一个唯一的标识,可以在不同的工作流过程中使用。而模块没有这一项,只能被一个工作流过程使用,也具体输入数据箱,输出数据箱。模块就像begin和end之间的内部代码,而过程则是外部的连接库代码(?)。
4control connector:定义活动间的执行顺序,在有向图中以连接弧表示。当连接弧的起始节点执行完毕,工作流机根据控制连接弧的定义进行过程导航,使连接弧的终止节点能够被执行。控制连接弧与它们所连接的活动节点构成整个工作流过程的控制逻辑。
5data connector:定义两个活动间的信息流,在有向图中也是以连接弧表示。前一个活动的输出数据箱指向后一个活动的输入数据箱,即前一个活动的输出信息被后一个活动使用。(数据箱:工作流相关数据,该活动执行有关的具体应用数据)
6condition:用于定义过程执行中的约束。转移条件:定义control connector上的条件,根据条件的判断结果是真或假,决定是否执行下一个活动。开始条件:定义活动在什么情况下才能开始执行。(区别两个概念:活动被使能,活动被执行。被使能:满足转移条件,发生转移时,活动有可能被执行,称为被使能。活动是否开始执行,决定于开始条件。)结束条件:定义活动什么情况才能结束。当活动执行完,结束条件就被检查,如果满足该条件则结束活动,否则活动被重新执行,直到满足结束条件。通过该条件可以定义多次执行。(p141)
活动状态是一个重要属性:ready,running,terminated,suspend等。过程的推进就是在这些状态间的转换。
基于活动网络的过程建模优点不少,缺点是不够灵活,对紧急事件的应变能力不够。
Event-driven Process Chain
基于语言行为理论的工作流模型
基于Petri网的工作流模型(工作流网)-WF-net
事务模型
事务的四个特性:atomicity,consistency,isolation,durability
wpdl的关键字,由空格符分割,区分大小写
约定:操作符以Op结尾
常量以C结尾
括号以大写字母结尾,如<OpenArrayB>表示数组定义中的一个括号(????????)
类型字符用大写字母书写,以T结尾,如<INTEGER-T>表示整数类型。
其他结束符以大写字母书写。
<basic data>::=
<string>|<float>|<integer>|<reference>|<date>
<reference>::=外部对象的指针,以字符串表示。如,”c:/test/test.ext”,”abc@gmail.com”,”http://www.agc.com”
<date>::=YYYY-MM-DD [hh:mm[:ss]]
间隔符:
<blank> ::= 空格|回车(CR)|/(?)|换行(LF)
<identifier>::=字母或下划线开头,在一对单引号之间。
<cardinal>::=非负整型数,
<plain data>::=<basic data>|<Boolean>|<performer>
<plain data type>::=<basic data type>|<Boolean type>|<performer type>
<basic data type>::=<STRING-T>|<FLOAT-T>|<INTEGER-T>|<REFERENCE-T>|<DATE-T>
<Boolean type>::=<BOOLEAN-T>
<performer type>::=<PERFORMER-T>
performer是工作流参与者类型的一个实例。
复杂数据:主要用于对数组、结构、枚举、表的定义,这些数据通常用于表达工作流相关数据与有关的扩展属性。
<complex data type>::=<plain data type>|
<RECORD><Member_list><END>//结构类型
|<ARRAY>
<OpenArrayB><cardinal><UPTO><cardinal><CloseArrayB><OF><complex data type>//数组类型
|<ENUM><element list><END>//枚举
|<LIST><OF><element type>//表类型
表达式:(主要用于各种条件的定义,由操作符和操作数组成的序列,是左结合的。)
<expression>::=<RelExpression>[<BooleanOp><expression>]
<BooleanOp>::=<ANDOp>|<OROp>
<RelExpressoin>::=<ArExpression>[<RelationlOp><RelExpression]
<ArExpression>::=<Unray>[<ArithmeticOp><ArExpression>]
<Unary>::=[<NotOp>]<Primary>|<UMinusOp><Primary>
<Primary>::=<VarReference>|<OpenB><expression><CloseB>|<PrimaryConstant>|<function access>|PARTICIPANT<participant id>
<PrimaryConstant>::=<simple constant>
<VarReference>::=<data id>[<VarQualifier list>]
<VarQualifier>::=<OpenArrayB><ArExpression><CloseArrayB>|<PERIOD><identifier>
<function access>::=<function id><OpenB><CloseB>|<function id><parameter map list>
<ActualParameterlist>::=<ActualParameters>[<COMMA><ActualParameterlist>]
<ActualParameters>::=<expression>
<condition>::=<expression>
<integer expression>::=<expression>
<string expression>::=<expression>
<performer expression>::=<expression>
操作符:
<ANDOp>::=AND
<OROp>::=OR
<NotOp>::NOT|!
<RelationalOp>::==|!=|<|<=|>|>=
<ArithmeticOp>::=+|-|*|/
<UMinusOp>::=-
其他符号:
<OpenB>::=(
<CloseB>::=)
<OpenArrayB>::=[
<CloseArrayB>::=]
<UPTO>::=...
<PERIOD>::=.//在RECORD中选择一个成员变量
<COLON>::=:
每个元模型的属性:
<attribute>::=<attribute keyword><attribute description>
属性有预定义的标准属性,也可以由软件供应商扩展。
参数(在过程,子过程,应用间传递数据):
<formal parameters>::=[IN_PARAMETERS <parameter list>]
[OUT_PARAMETERS <parameter list>]
<parameter list>::=<parameter>[<parameter list>]
<parameter>::=<data id>//工作流相关数据
形参与实参的映射:
<parameter map list>::=<OpenB><parameter map><CloseB>
<parameter map>::=<ActualParameterlist>
<ActualParameterlist>把实参按照顺序依次映射给形参。如果出现实参个数不够,或多了,要提供处理机制,如设为零值,或忽略多余的。参数可以是表达式。
工作流元模型
在一个工作流模型中可以定义多个过程,它们共享工具与参与者,但建议每个过程一个模型。P180
<Workflow Model>::=MODEL<model id>
<Workflow Model Definition Header>
[<conformance class declaration>]
[<extended model declaration>]
[<Workflow Participant Specification>]
[<Workflow Application List>]
[<Workflow Relevant Data List>]
[<Workflow Process Definition>]
END_MODEL
<Workflow Model Definition Header>:模型说明信息,如,WPDL版本,供应商信息,创建时间,
包括一个<redefinable header>,该部分不但出现在模型的头定义中,还可以在模型所包含的每个过程的头定义中出现,其定义未:
<redefinable header>::=[AUTHOR <author>]
[VERSION < >]
[CHARACTERSET <>]
[CODEPAGE <>]
[RESPONSIBLE <>]
[STATUS <publication status>]
<publication status>::=UNDER_REVISION|RELEASED|UNDER_TEST
XPDL
一致类声明:
用来说明模型是否与WFMC定义的标准相一致,有三种级别,FULL-BLOCK(全限制,限制很多),LOOP-BLOCK(无自环,即限制循环,循环用多次执行实现),NON-BLOCK(无限制)
扩展库,其中的函数与过程直接与工作流机绑定并在必要时候进行调用或激活,无需通过第二类接口。
<extended library declaration>::=LIBRARY
<libarary element list>
END_LIBRARY
<library element list>::=<library function>[<library element list>]|<library procedure>[<library element list>]
WPDL允许引用其他的工作流模型或在另外已提供好接口的工作流管理系统中所建立的模型,这些都是通过外部模型声明来定义的。
<external model declaration>::=
EXTERNAL_MODEL_REFERENCE
<external model reference>
[<external attribute list>]
END_EXTERNAL_MODEL_REFERENCE
[<external model declaration>]
<external model reference>::=<logical model reference>|
<physical model reference>
<logical model reference>::=WM<model id>
[<Access restriction part>]
<physical model reference>::=OM<reference>
过程定义,包含模型所有活动和转移信息。
<Workflow Process Definition>::=
WORKFLOW<process id>
<Workflow Process Definition Header>
[<formal parameters>]
[<Access rstriction part>]
<Activity List>
<Transition Information List>
[<Workflow Participant Specification]
[<Workflow Application List>]
[<Workflow Relevant Data List>]
END_WORKFLOW
[<Workflow Process Definition>]
<Workflow Process Definition Header>::=
[CREATED <creation data>]
[NAME <> ]
[DESCRIPTION<>]
[redefinable header]
[DURATION_UNIT]
[PRIORITY]
[LIMIT]
[VALID_FROM]
[VALID_TO]
[CLASSIFICATION]
[<time estimation>]
[DOCUMATION ]
[ICON]
[<extended attribute list>]
<duration>::=<integer><duration_tag>
<duration_tag>::=Y|M|D|h|m|s
活动定义:
<Activity List>::=ACTIVITY <activity id>
[NAME <>]
[DESCRIPTION <>]
<Activity Kind Information>
[<Access Restriction part>]
[<Transition Restriction part>]
[<entended attribute list>]
END_ACTIVITY
[Activity List]
<Activity Kind Information>描述活动是怎样被执行的。
<Activity Kind Information>::=ROUTE//路由信息
|IMPLEMNETATION<>
[PERFORMER <>]
[START_MODE<>]
[FINISH_MODE<>]
[PRIORITY <>]
<simulation information>
[ICON]
[DOCUMENTAION]
<implementation>::=NO//不为工作流所支持?????????
|APPLICAITONS<generic tool list>
|WORKFLOW<subflow reference>
|LOOP<loop kind>
CONDITION<loop condition>
<subflow reference>::=<execution><process id>[<parameter map list]
<execution>::=ASYNCHR|SYNCHR
<loop kind>::=WHILE}REPEAT_UNTIL
<participant assignment>::=<performer expression>
<mode>::=AUTOMATIC|MANUAL
<simulation information>::=[INSTANTIATION<>]
[<time estimation>]
[COST <>]
<instantiation>::=ONCE[|MULTIPLE]
转移限制定义了与活动相连的转移结构,如分支,汇合
<Transition Restriction part>::=
[<Inline Block Information>]
[JOIN <>]
[SPLIT<>]
<JOIN characterisation>::=AND|XOR
<SPLIT characterisation>::=AND|XOR<list of Transition>
<Transition Information List>::=
TRANSITION <transition id>
[NAME <>]
[DESCRIPTION <>]
<transition kind description>
[<extended attribute list>]
END_TRANSTION
[<Transition Information List>]
<transition kind description>::=
FROM <activity id>TO<activity id>
[CONDITION <>]
|FROM LOOP<activity id>TO<activity id>
|FROM <activity id>TO LOOP<activity id>
工作流应用定义:应用及工具的列表(包括激活时需要的参数),在工作流执行中被激活或调用,
工作流相关数据:定义了所有在工作流过程或工作流模型中用到的变量,实际上是一个变量表
<Workflow Relevant Data List>::=
DATA <data id>
[NAME <name>]
[DESCRIPTION<>]
TYPE<>
[LENGTH<cardinal>]
[DEFAULT_VALUE<>]
[<extended attribute list>]
END_DATA
[<Workflow Revelant Data List>]
工作流参与者,是组织模型中的元素,他们或者执行工作流过程的某部分,或者对其负责。参与者的定义要引入外部的组织模型,且定义可以是多种不同的形式,即“类型”。
一个例子:WfMC TC-1016-X
一个具体的工作流软件CIMFlow
模型:
1Activity Network Diagram,可读性好,
2为了提高过程的描述能力,扩展了WFMC的基本语义。特别是融入了“状态”的概念(????)
3多视图,提供除了过程模型外的组织模型,资源模型,工作流相关数据。
组织模型:人员的组织结构,提供柔性的组织定义。
资源模型:资源的组织结构,提供“物”的支持。
相关数据:工作流执行中用到的数据,主要用于各种条件的判断,以实现工作流机对不同活动的选择性路由。
活动网络图:节点,连接弧,状态,条件
节点:
1任务节点:人工型活动:需要人参与来完成的,在自动化不高的情况下,这种活动很多。
自动应用:不用人参与,直接由工作流管理系统激活相关应用。体现了工作流系统与企业应用间的集成关系。
过程:人工型、自动应用都是原子级,过程是个子工作流。
任务节点的可重用设计,统一任务节点的内部结构,建立输出到输入的映射机制,是提高建模速度,规范建模活动的重要工作。
任务节点的内部结构统一为IPO式,节点间的连接是通过输入、输出实现的。因此,封装模块的内部细节,建立O到I的映射,就能够实现重用。从宏观上看,可重用的工作流就是一个IPO结构,经过分解细化,内部的每个精细结构也是IPO式的(?????????)。
在重用时,用户只需定义前驱的输出及后继所需的输入间的对于关系即可。
2逻辑节点:不代表真正要执行的活动,表示的是节点间的逻辑关系。
支持节点间的复杂逻辑关系:与,或等。(顺序,与分支(并行),与连接,或分支,或连接,循环)
空节点可以表达复杂的逻辑。
3标志节点:开始节点,结束节点:为了简化模型,方便理解。
连接弧:控制连接弧,数据连接弧。
在控制连接弧上加上条件可以实现或分支,循环逻辑。
数据连接弧:节点在执行完毕后,不仅要向与其控制连接弧相连的后继节点传递数据,还可能要向其他某些节点传递数据,而这些节点又不与之构成合理的控制逻辑,无法用控制连接弧表示。因此,引入数据连接弧。数据连接弧,还可以传递物理对象。
上图中,每一个叶子节点在建模工具中,都作为一个功能部件出现在工具栏中。
状态:活动图在有些情况下表达含糊,如当控制连接弧转移后,其后继节点只是被使能,不一定开始执行,这种情况活动图表达不够。所以,引入状态来表达。
如上,有七个状态,这些状态被隐含在活动的条件中,无法直接读出。
条件:定义在工作流数据集(相关数据,相关数据)上的二值函数。
转移条件:定义在控制连接弧上,前文以叙。
开始条件,
结束条件:
条件和状态都是隐式表达,却使模型具有类似PETRI的状态表达能力。
组织模型:WFMC没有提供一个强大的组织模型,只是对workflow partictipant在role上加以区分,并由此建立一个具有层次化的role model。
CIMFlow提供五种实体:人员,角色,职务,部门,工作组。
角色:按技能
职务:按行政责任
部门:企业静态结构
工作组:动态组建,跨部门的,
除人员外,其他实体都是自上而下逐层分解的树状结构。如,
组织模型的数据的建立与维护通过专门的组织管理器来实现,基本需求:允许企业建立自己的组织模型数据库,进行人员属性的定义与组织的划分。特别要保证数据的一致性,因为,组织模型种常常出现一对多的实体关系。
资源的范围很广,在工作流中,应注重在生产中起重要作用的那部分,如原材料。
资源种类繁多,但组织形式不复杂。CIMFlow中,用资源类型和资源个体来定义。
资源个体是叶子,是原子的,
类似资源组合在一起,构成某种资源类型。
工作流相关数据:
是工作流管理系统在进行工作流实例的状态转换时所需要访问的数据,这些数据可以被工作流机、工作流参与人员,应用程序访问,修改。
CIMFlow中的相关数据是信息模型的简化,即只有数据定义所需的实体类型,没有实体间关系的讨论。
CIMFlow中,相关数据:简单数据,对象。
对象,封装了属性和方法的复杂信息实体。实际,被作为工作流相关数据的是对象的属性或方法函数的返回值。通常将具有特殊含义的信息实体做为对象,如word文档,提货单。对象内部隐藏了与具体文件系统、数据库系统交换的细节。
对象的最初定义与维护由对象管理器完成。工作流建模工具只能引用,不能生成对象。
相关数据的定义有作用域限制。