EOS工作流引擎工作原理(四)

10.  一种理论上的引擎原理

  Petri Net 是离散并行系统的数学表示,它的数学表述我搞不明白,只能明白他的表面上的一些东西。它不是为工作流而产生的,但如果能把Petri NetXPDL 结合起来去构造一个引擎不一定是符合实际需求的,但我相信它一定是很有前景的。也是很具有竞争力的。
Petri Net 中主要有四个元素:
1. Place

Place
是一种状态,譬如马路上的红绿灯,他的Place 可以是红灯,绿灯。
2. Transition
Transition
是从一个状态转变到另一个状态的过程。
3. Arc
Arc
是连接PlaceTransition 的一个有向弧,可以从Transition 指向Place ,也可以从Place 指向Transition ,但不能从Place 指向Place 或从Transition 指向Transition ,中间一定要有个状态变迁的过程。
4. Token
Token
是一个物件,他可以代表任何东西,当PlaceTransition 拥有足够的Token 时才可以从一种状态边成另一中状态。

Petri Net 的运作方式
图元定义:

 http://gocom.primeton.com/uploads/FCKUserFiles/Image/01%2869%29.jpg

http://gocom.primeton.com/uploads/FCKUserFiles/Image/01%2870%29.jpg

上图的enter 经过fire 会变成下面的状态:

http://gocom.primeton.com/uploads/FCKUserFiles/Image/01%2871%29.jpg

  使enter 可以fire 必须消耗freewait 的各一个tokenenter 就可以个beforeoccupied 各一个token 。依次类推的方式推动流程的运转。

  至此我们可以给PN 网这样的过程调度算法这样的定义:如果一个变迁的每个输入库所(input place )都拥有令牌,该变迁即为被允许(enable) 。一个变迁被允许时,变迁将发生(fire) ,输入库所(input place) 的令牌被消耗,同时为输出库所(output place) 产生令牌。

  使用这种算法的工作流引擎有开源的YAWL ,还有BOSSA ,大家在茶余饭后可以研究一下。

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值