本文算法
第一部分介绍Petri网ide
第二部分将Petri网用于ERP工具
第三部分介绍FSM,有限状态机及审批流。post
Petri网编码
Petri网是1962年被Carl Adam Petri做为一种过程建模和分析的工具提出,它是一种图形化描述过程的强有力的工具。Petri网也有有严格的数学基础和表述方式。spa
经典的Petri net是简单的过程模型,由两种节点:库所(Place)和变迁(Transition),及有向弧,以及令牌(Token)组成的。设计
咱们用圆圈表示库所,用矩形表示变迁,用黑点表示令牌。两个库所或两个变迁之间不容许有弧,只能是库所到变迁或者是变迁到库所。库所中能够拥有任意数量的令牌(Token)。orm
Petri网实例:保险索赔流程案例对象
变迁是Petri网中的主动因素。经过实施变迁,过程从一个状态转变到另外一个状态。所以变迁常常表示事件、操做、转换或传输等。blog
库所是Petri网中的被动因素,它们不能改变网的状态。库所常常表示媒介、缓冲器、地理位置、(子)状态、阶段或条件。
令牌一般表示对象,这些对象多是具体的事物,也多是抽象的信息。
Petri net不光抽象了经典的过程模型,并描述了完备的支撑过程调度的算法:若是一个变迁的每一个输入库所(input place)都拥有令牌,该变迁即为被容许(enable)或就绪。一个变迁被容许时,变迁将发生(fire),输入库所(input place)的令牌被消耗,同时为输出库所(output place)产生令牌。
record实施先后的状态
pay实施后的状态
加入控制的例子
若是想要限定任什么时候候正在执行的案例个数不超过n,只须要在开始时往库所free中放入n个令牌。
高级Petri网
颜色扩展:
传统的Petri网没法区别各个令牌有什么不一样。
一个令牌(token)一般表明具备各类属性的对象,颜色扩展是使令牌拥有值(颜色)表明由令牌建模的对象的具体特征。每一个令牌都有一个值,经过他能对令牌进行区分。
变迁实施所产生的令牌,取决于实施时被消耗的令牌的值,生产出的令牌的值也能够依赖于那些消耗的令牌的值。与传统Petri网不一样,生产的令牌数目也是变化的,即生产的令牌数目由被消耗的令牌的值决定。
在通过颜色扩展的Petri网中,咱们能够为每一个要被变迁所消耗的令牌设置前置条件。单纯的颜色扩展使得图形没法表示网的所有信息。
所以对每一个变迁,须要指出一下因素:是否有前置条件,若是有,则必须准肯定义。包括每一个输出库所送出的令牌个数,以及被消耗的标记的值,生产出来的令牌的值,可能依赖于被消耗的令牌的值。
时间扩展:略
层次扩展:略
路由
顺序路由:
并行路由:
选择路由:
基本结构表示方法
循环路由:
触发
Petri网中的变迁是“饥饿的”。它们一旦就绪,就会马上实施,每一个就绪的变迁都对应一个工做项。
三种类型的触发:
1资源主导(例如雇员从他的“工做篮”中取出一个工做项)
2外部事件(例如一个EDI消息的到来)
3时间信号(例如再六点中生成一个订单列表)
一般用一个向下的宽箭头表示被资源触发的任务
用一个信封符号表示被外部事件触发的任务
用一个时钟符号表示被时间出发的任务
Petri 网与 ERP
假设单据为一单多物,单据关系为多对多。
咱们以单据集合为库所,以物料需求为令牌,以物料数量为令牌数量,以各类处理为变迁。
譬如销售给发货的令牌为:
以物料编码+单据类别+销售订单号+销售行号为令牌的ID,以销售数量为令牌数量,以客户,发货时间,发货地址等为令牌的属性。
描述为:须要为XX客户在XX时间往XX地址发送XX物料,数量为XX。
只有提交到工做流的销售订单才会发出此令牌。
对变迁处理者设立角色,在发送令牌时按工做流设计只发送给特有角色。这样,令牌就替代了之前针对单据设计的用户权限,部门权限,数据权限等等。每一个处理者只能处理本身拥有的令牌。
客户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
以下图所示
一个state到另外一个state就称为Transtion。
FSM模型适合于创建复杂的公文审批流程。