基于Petri网的工作流与ERP

本文

第一部分介绍Petri

第二部分将Petri网用于ERP

第三部分介绍FSM,有限状态机及审批流。

 

Petri

Petri网是1962年被Carl Adam Petri作为一种过程建模和分析的工具提出,它是一种图形化描述过程的强有力的工具。Petri网也有有严格的数学基础和表述方式。

 

经典的Petri net是简单的过程模型,由两种节点:库所(Place)和变迁(Transition),及有向弧,以及令牌(Token)组成的。

我们用圆圈表示库所,用矩形表示变迁,用黑点表示令牌。两个库所或两个变迁之间不允许有弧,只能是库所到变迁或者是变迁到库所。库所中可以拥有任意数量的令牌Token)。

 

Petri网实例:保险索赔流程案例

  o_A.%E4%BF%9D%E9%99%A9%E7%B4%A2%E8%B5%94%E6%B5%81%E7%A8%8B%E6%A1%88%E4%BE%8B.JPG

 

变迁是Petri网中的主动因素。通过实施变迁,过程从一个状态转变到另一个状态。因此变迁经常表示事件、操作、转换或传输等。

库所是Petri网中的被动因素,它们不能改变网的状态。库所经常表示媒介、缓冲器、地理位置、(子)状态、阶段或条件。

令牌通常表示对象,这些对象可能是具体的事物,也可能是抽象的信息。

 

Petri net不光抽象了经典的过程模型,并描述了完备的支撑过程调度的算法:如果一个变迁的每个输入库所(input place)都拥有令牌,该变迁即为被允许(enable)或就绪。一个变迁被允许时,变迁将发生(fire),输入库所(input place)的令牌被消耗,同时为输出库所(output place)产生令牌。

record实施前后的状态

 

 o_B.record%E5%AE%9E%E6%96%BD%E5%89%8D%E5%90%8E%E7%9A%84%E7%8A%B6%E6%80%81.JPG

pay实施后的状态

o_C.pay%E5%AE%9E%E6%96%BD%E5%90%8E%E7%9A%84%E7%8A%B6%E6%80%81.JPG

 

加入控制的例子

o_D.%E5%8A%A0%E5%85%A5%E6%8E%A7%E5%88%B6%E7%9A%84%E4%BE%8B%E5%AD%90.JPG
    如果想要限定任何时候正在执行的案例个数不超过n,只需要在开始时往库所free中放入n个令牌。

 

高级Petri网

颜色扩展:

传统的Petri网无法区别各个令牌有什么不同。

一个令牌token)通常代表具有各种属性的对象,颜色扩展是使令牌拥有值(颜色)代表由令牌建模的对象的具体特征。每个令牌都有一个值,通过他能对令牌进行区分。

变迁实施所产生的令牌,取决于实施时被消耗的令牌的值,生产出的令牌的值也可以依赖于那些消耗的令牌的值。与传统Petri网不同,生产的令牌数目也是变化的,即生产的令牌数目由被消耗的令牌的值决定。

 

在经过颜色扩展的Petri网中,我们可以为每个要被变迁所消耗的令牌设置前置条件。单纯的颜色扩展使得图形无法表示网的全部信息。

因此对每个变迁,需要指出一下因素:是否有前置条件,如果有,则必须准确定义。包括每个输出库所送出的令牌个数,以及被消耗的标记的值,生产出来的令牌的值,可能依赖于被消耗的令牌的值

时间扩展:略

层次扩展

 

路由

顺序路由:
   o_E.%E9%A1%BA%E5%BA%8F%E8%B7%AF%E7%94%B1.JPG
    并行路由
    o_F.%E5%B9%B6%E8%A1%8C%E8%B7%AF%E7%94%B1.JPG

选择路由
    o_G.%E9%80%89%E6%8B%A9%E8%B7%AF%E7%94%B1.JPG

基本结构表示方法
    o_H.%E5%9F%BA%E6%9C%AC%E7%BB%93%E6%9E%84%E8%A1%A8%E7%A4%BA%E6%96%B9%E6%B3%95.JPG

循环路由
    o_I.%E5%BE%AA%E7%8E%AF%E8%B7%AF%E7%94%B1.JPG

 

触发

Petri网中的变迁是饥饿的。它们一旦就绪,就会立刻实施,每个就绪的变迁都对应一个工作项

三种类型的触发

1资源主导(例如雇员从他的工作篮中取出一个工作项)

2外部事件(例如一个EDI消息的到来)

3时间信号(例如再六点中生成一个订单列表)

 

 o_J.%E8%A7%A6%E5%8F%91.JPG

通常用一个向下的宽箭头表示被资源触发的任务

用一个信封符号表示被外部事件触发的任务

用一个时钟符号表示被时间出发的 任务

 

Petri ERP

 

不知道为什么国人特别喜欢制定那么多单据,特别喜欢在一个文件上盖它七八十个章,只考虑安全,权利,谁来考虑效率呢?

 

假设单据为一单多物,单据关系为多对多。

我们以单据集合为库所,以物料需求为令牌,以物料数量为令牌数量,以各种处理为变迁。

 

譬如销售给发货的令牌为:

以物料编码+单据类别+销售订单号+销售行号为令牌的ID,以销售数量为令牌数量,以客户,发货时间,发货地址等为令牌的属性。

描述为:需要为XX客户在XX时间往XX地址发送XX物料,数量为XX。

只有提交到工作流的销售订单才会发出此令牌。

 

对变迁处理者设立角色,在发送令牌时按工作流设计只发送给特有角色。这样,令牌就替代了以前针对单据设计的用户权限,部门权限,数据权限等等。每个处理者只能处理自己拥有的令牌。

 o_K.%E4%BE%9B%E9%94%80%E5%AD%98.JPG

 

客户A要求:10日供应300个物料B。

P1得到300个令牌。T1的处理人员执行T1,消耗100个令牌,则P2 P3各得到100个令牌。

假设T2的处理人员消耗50个P2的令牌,则P4得到50个令牌。

 

现在T4拥有100个P3,50个P4,则T3只能处理50个令牌。

 

这样,每个角色只能通过工作流得到令牌,处理自己能处理的任务。

 

 

 

 

FSM(finite state machine,有限状态机)理论

最基本的FSM包含三部分:States,Start State,Transtion/Actions

 

如下图所示

 o_L.FSM%E6%9C%89%E9%99%90%E7%8A%B6%E6%80%81%E6%9C%BA.JPG

一个state到另一个state就称为Transtion。

 

FSM模型适合于建立复杂的公文审批流程。

 

转载于:https://www.cnblogs.com/flame/archive/2007/03/07/Petri.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值