《工作流管理——模型、方法和系统》笔记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

目录
相关文章
|
7月前
|
存储
SAP 订单模型的编排方式概述
SAP 订单模型的编排方式概述
62 0
SAP 订单模型的编排方式概述
|
3月前
|
机器学习/深度学习 Python
机器学习中的工作流机制
机器学习中的工作流机制
|
2月前
|
存储 XML 数据格式
流程建模艺术:使用Activiti设计流程
流程建模艺术:使用Activiti设计流程
17 0
|
3月前
|
存储 人工智能 分布式计算
工作流、数据集、模型一网打尽
揭开人工智能的面纱:工作流、数据集、模型一网打尽 随着人工智能技术的飞速发展,越来越多的企业开始尝试运用AI来提升工作效率、优化业务流程。然而,对于AI的内部机制,许多人仍然感到神秘莫测。今天,就让我们来揭开AI的面纱,聊聊与AI密切相关的几个核心概念:工作流(Pipeline)、数据集(DataSet)和模型(Model)
36 2
|
5月前
|
SQL 数据采集 数据挖掘
90 网站点击流数据分析案例(工作流调度)
90 网站点击流数据分析案例(工作流调度)
19 0
|
存储 弹性计算 监控
浅析数据工作流Prefect
简述 Prefect 是一种新的工作流管理系统,专为现代基础设施而设计,由开源的 Prefect Core 工作流引擎提供支持。 用户只需将任务组织成流程,Prefect 负责其余的工作,可让您非常容易使用数据工作流并添加重试、日志记录、动态映射、缓存、失败通知等语义。
如何学习3D角色建模?这些流程步骤你一定要知道!
3Dmax、Maya建低模,什么是低模?准确的说叫低模手绘,分为3D角色/3D场景,简单说就是3D设计师根据原画,通过3D制作的形式还原原画3D造型,因为制作模型面数较低,主要靠手绘贴图达到最终效果,所以称为低模手绘。
147 0
如何学习3D角色建模?这些流程步骤你一定要知道!
|
存储
SAP订单编排和流程增强概述
SAP订单编排和流程增强概述
171 0
|
XML Java Unix
不了解工作流框架 Activiti 中的流程事件?这篇工作流流程元素详解,带你详细分析工作流流程执行过程中的各种事件
本文介绍了工作流Activiti框架中BPMN结构中各种事件。主要包括定时器事件,错误事件,信号事件,消息事件,开始事件,结束事件,边界事件,中间捕获事件以及内部触发事件。通过对BPMN中各种事件的学习了解,可以帮助我们在项目中更加方便地对工作流中各种处理流程进行应用,极大提高了项目的开发效能。
920 0
不了解工作流框架 Activiti 中的流程事件?这篇工作流流程元素详解,带你详细分析工作流流程执行过程中的各种事件
|
存储 搜索推荐 数据可视化
看我如何用Dataphin实现自动化建模
数据小海豚,作为Dataphin测试用户,他梳理了试用Dataphin完成自动化建模的分步教程。
2178 0
看我如何用Dataphin实现自动化建模