《工作流管理——模型、方法和系统》笔记2:Petri网对工作流建模

一、工作流概念
1.案例(case):工作流系统的基本目的就是处理案例,保险索赔、绩效考核、抵押申请等等都是案例。每一个案例都有一个唯一的标识,案例在出现和消失之间总是处于某个特定状态,这个状态有三个元素组成:
(1)案例相关的属性,指出特定条件下案例是否被执行或者忽略
(2)已经满足的条件,说明案例的进展。
(3)案例的内容,可能是文档、文件、档案或者数据库
2.任务(task),泛指一般的工作单元,而非具体案例活动的一次具体执行(这一般称为活动),为了区分这一点,引入了工作项(work item)和活动的概念(activity)。工作项是指将要被执行的实际工作块,而活动就是指工作项的执行。

3.过程(process):过程指出了哪些任务需要被执行,以什么顺序执行。可以将过程理解为具体案例的蓝图。过程定义了案例的生命周期,每个生命周期都有start和end。

4.路由(route):决定了那些任务被执行和以何种方式执行,包括顺序、并行、选择和循环四种形式的路由

5.启动(start):触发,工作项是有一个resource来启动的,触发的形式包括:
(1)资源驱动,比如某个员工
(2)外部事件,一个JMS消息
(3)时间信号,比如凌晨2点触发某任务等等。
显然,触发是由环境而非工作流系统负责的。
二。Petri网

    Petri网是一种过程建模和分析工具,是1962年由Carl Adam Petri提出的,它有着坚实的数学基础,完全形式化的,可以将Petri网应用于工作流的建模和分析过程。

1.传统的Petri网:
 Petri网有place(库所)和transition(变迁)组成
place用于容纳token,token用以表示具体的案例,通过transition的firing(实施)来表现过程的状态转变。理解几个概念:
(1)transition enabled(变迁的就绪):当且进当transition的每一个输入place都至少有一个token的时候,变迁就绪,可以实施。
(2)transition firing(变迁的实施):变迁的从每个输入place取走一个token,并往它的每个输出place增加一个token。
看一个Petri网进行过程建模的例子:

圆圈表示place;矩形表示transition;用黑点表示token,存在于place中,这里没有表示出来,我在网上随便找的一张图,不过这里也展示了And-split、And-join、Or-split和Or-join的四种任务以及四种形式路由(从上到下依次是:顺序、并行、选择和循环)的Petri网建模。

2.高级Petri网
    传统Petri网有一些缺点,比如无法对某些活动进行有效的建模,容易变的庞大而难以理解,因此通过扩展,就可以对复杂情况用结构化、容易理解的方式建模。关注三种扩展:颜色扩展、时间扩展和层次扩展。
1.颜色扩展,为token引入颜色,用以区分同一place中的不同token,颜色其实代表了token(具体到某个案例)的属性,通过颜色扩展,我们可以为将要被消耗的token值设置了前置条件,那么变迁就绪的前提变化为:每个输入place都至少有一个token,并且满足前置条件。颜色扩展,也将产生的token与消耗的token进行了关联,产生token的值和数目将依赖于被消耗的token的值。

2.时间扩展,当需要对一个过程的预期性能进行判断时,引入了时间扩展,为token加入时间戳,只有当被消耗的token的时间戳早于当前时间,就绪的transition才可以firing,而产生的token的时间戳就等于firing的时间加上延时。通过引入时间扩展,我们将可以对类似十字路口红绿灯时间敏感的复杂过程进行建模。

3.层次扩展,过程是由一系列的place、transition、弧线和子过程组成的,为了反映这样的层次结构,适应复杂过程的建模,引入了层次扩展。

三、工作流概念到Petri网的映射

1.过程:过程是由条件和任务组成,映射到Petri网,place就是条件,而transition就是任务。条件和place都是被动元素,而任务和变迁都是主动元素。案例就是token,案例的属性通过颜色扩展来映射,token的值包含了案例的属性值。比如保险索赔案例的属性:赔额、索赔人、时间等等。

2.路由:四种路由的Petri网建模,上面的图片已经给出。简单分析下:
(1)顺序路由,对应图1,任务A和B是顺序执行的,任务B的输入是任务A的结果。通过在两个任务之间引入一个place来解决,中间的圆圈对应的place是任务B执行前的必须满足的条件,同时是任务A执行的结果。

(2)并行路由:对应图2,为了并行地执行任务B和C,引入了任务A,称为And-split,在A和B、C之间引入两个place,当A任务实施后,为两个输出place产生token,任务B和C就处于就绪状态可以实施。当B和C都实施之后,类似的实行And-join任务(任务D)合并两个任务。

(3)选择路由:图3对选择路由的建模并不正确,选择执行B或者C,那么在B和C之前引入两个新任务t11、t12和两个place(合并称为Or-split),在前一个place的token,要么实施t11,要么实施t12,假设实施t11,那么任务B将就绪,反之则任务C就绪。同样的可以建模Or-join。选择路由还根据选择的时刻划分为两类,具体不再展开。

(4)循环路由,图四的建模也不是很精确,循环也跟编程语言中的循环分为:repeate ...until...和while ...do...两种,前者至少执行一次,而后者可能不执行,

3.启动的映射:我们知道工作项是案例和准备执行的任务的组合,而活动是指一个工作项的实际执行,一旦工作项被实际执行,它就转换成活动。映射到Petri网,工作项就是就绪的变迁(enabled transition),而活动对应一个transition的firing。Petri网中的transition是“饥饿”的,一旦它们就绪,就会立刻执行,这样的变迁成为自动的。而工作流中的触发并非是自动的,它可能是资源驱动、外部信号驱动以及时间驱动的。为了建模触发,我们在变迁的上面添加符号来区分:向下的箭头表示资源驱动,信封表示外部信号驱动,而时钟表示时间驱动。

    初步了解了Petri网,确实是对工作流甚至业务过程建模的良好工具,对于利用Petri网进行过程分析,还待进一步学习。

文章转自庄周梦蝶  ,原文发布时间 2007-09-01

时间: 2024-11-05 12:30:42

《工作流管理——模型、方法和系统》笔记2:Petri网对工作流建模的相关文章

写一个简单的工作流,基于petri网

写一个简单的工作流一直停留在我的"计划"中,最近趁改造绩效系统的机会,决定自己写一个基于petri网原理的工作流来改写绩效考核流程部分.基于petri网的工作流的基本算法,就是当每一个firing发生后,应当遍历整个流程重新改变transition的enable,那么当资源驱动某个transition其实就是将它的输入place中的token转移到输出place.大概的接口类似: WorkFlowManager wm = new BasicWorkflowManager(this.wo

云计算环境下基于Petri网的流程计费模型

云计算环境下基于Petri网的流程计费模型 黄卫东   于瑞强 通过分析云计算环境下服务模块流程组合的动态性,运用随机Petri网进行动态流程建模与追踪,给出了分层计费体系下的流程计费模型,使用Petri网对该计费流程进行建模分析和设计,便于云服务提供商实现基于状态的计费控制,从而优化计费策略.实现了云计算基于过程模型的服务计量,并根据该模型进行相应定价,用户即可按需付费.通过应用实例验证了该计费方法的有效性和可操作性,为云服务提供商计费决策提供了技术支撑. 云计算环境下基于Petri网的流程计

win7系统连不了网的七种原因和解决方法

  win7系统连不了网的七种原因和解决方法 1.检查网线是否连接好 通常网线连接不好会出现这种问题,可以垫一点卫生纸,这样比较牢固. 2.电脑自己查找原因 右键点击右下角的小电脑,选择疑难解答,一般会查出问题所在. 3.修改ip 改一下自己的ip的最后一位,有时候是因为ip冲突. 4.打开命令行 在开始中的搜索中(点击开始后最下边)输入cmd,回车,打开命令行 或者在开始,附件,命令提示符打开 5.查看网关 在命令行中输入ping 网关ip 如果ping的通,就继续下一步如果ping不通,看看

win7系统电脑玩大型网游时很卡的解决方法

  win7系统电脑玩大型网游时很卡的解决方法.对于网游玩家来讲,都希望能够有一个流程的网速,这样玩网游的心情也有有所提高,但是一些win7 64位旗舰版用户玩大型网游时很卡,让人感到很烦恼,每次玩网游总是一卡一卡的,影响游戏心情.有什么方法能够提高电脑玩网游的速度呢?方法当然是有的,我们可以利用"360安全卫士"来提高网速,下面大家一起来看看设置方法吧. 具体方法如下: 1.关闭其它电脑程序,给游戏提供更多的内存空间; 2.待"360安全卫士"运行后,右击任务栏&

大数据典型相关分析的云模型方法

大数据典型相关分析的云模型方法 杨静   李文平   张健沛 针对传统大数据典型相关分析(CCA, canonical correlation analysis)方法的高复杂度在面临大数据PB级数据规模时不再适应的现状,提出了一种基于云模型的大数据 CCA 方法.该方法在云计算架构的基础上,通过云运算将各端点云合并为中心云,并据此产生中心云滴,以中心云滴作为大数据的不确定性复原小样本,在其上施以CCA运算,中心云滴的较小数据量提高了运算效率.在真实数据集上的实验结果验证了该方法的有效性. 大数据

PIPE2——Petri网编辑工具

  最近重新拿起<工作流管理-模型.方法和系统>,需要一个Petri网画图.分析的工具,google一把,在sourceforge上找到PIPE2项目.按它的描述是:Platform Independent Petri Net Editor 2.看了下源码是用swing写的.已经基本满足我的要求了. 项目地址:http://pipe2.sourceforge.net/ 下图是对书中习题七的过程定义 文章转自庄周梦蝶  ,原文发布时间2007-09-05

基于加权Petri网的云计算的服务过程的研究

基于加权Petri网的云计算的服务过程的研究 云南大学   王娟 本文基于"过程决定产品质量"的观点,为了尽可能地改善服务过程的执行效率,提高服务质量,对云计算的服务过程模型.形式化建模以及服务过程改进的形式化方法进行了系统研究. 首先,参照软件过程的定义,给出了服务过程不同粒度的定义.并深入研究了云计算的服务过程的系统过程模型.云计算前期的实现过程模型.云计算的细粒度服务过程模型以及云计算的服务演化过程模型. 其次,为了更准确地描述云计算的服务过程,基于加权Petri网形式化地定义了

win7系统休眠时断网怎么办

  win7系统休眠时断网的解决方法 知道怎么在休眠时不断网,首先我们先看看休眠是怎么运作的,休眠功能是在电脑进入休眠状态时将数据保存到硬盘中,进入休眠状态后,电脑相当于断电了,所以功耗几乎为零!而在休眠状态时不会影响已经保存的数据,当电脑唤醒时,所有工作依然可以正常恢复.但是在休眠过程中网络处于断开状态,所以此时需联网的程序都会被断开连接了. 点击"开始"图标打开"运行"(或者直接快捷键Win+R),输入"regedit"进入"注册表

Win7系统局域网如何抢网速

  为了让网络能够有效地得到运用,局域网的使用受到广大用户的喜欢,虽然可以在同一个局域网下无限制的接入多个用户,但这也一来网络速度就会被分散.使用Win7系统的用户,反应自己在局域网下玩游戏的时候很卡,因为很多人在用网络,导致自己的游戏.看电影很不爽.怎么办好呢?如何解决这样的问题呢?下面我们就一起去看看Win7局域网抢网速的方法. 方法如下: 方法一:通过路由器来限制局域网网速. 1.我们可以通过路由器本身所提供的"网速限制"功能,来限制局域网中其它电脑的网速,从而间接提升自己电脑的