`
Augustan
  • 浏览: 52111 次
  • 性别: Icon_minigender_1
  • 来自: 江蘇
社区版块
存档分类
最新评论

基于petri网的工作流笔记(一)

    博客分类:
  • bpm
阅读更多

----工作流模型如何和petri网联系起来呢?
petri网的几个扩展:着色petri网、时间petri网、层次petri网
着色petri网给令牌“着色”赋值,增加了属性特征,使得流程中的各个令牌可以明确的区分。

一个例子:
十字路口,两组交通信号灯控制四个方向的车辆。每组灯包含红、黄、绿三种颜色。同时是绿灯或者同时是黄灯这两种情况都不能出现(黄灯的时候车辆如果已经越过停止线,可以继续行驶)

----几个概念
流程是什么?流程是一组任务、条件、子流程以及它们之间关系的集合。
特定的流程处理一类特定的案例,也即可以处理许多单独的案例。
一个工作项是一个实例和一个就绪任务的结合。正在执行的工作项称为活动。当工作项真正执行的那一刻,它就转变为活动。 可见前者是静态 后者是动态的 。但是工作项和活动都是和实例相联系的。

工作流系统的目标是竟可能快的完成所有的任务。需要考虑两点:工作项以哪种顺序转变成活动?活动被哪个资源执行?这两者是相互影响的。

转变顺序有如下几个原则:
先进先出  :工作项依据他们被创建的顺序被处理
后进先出:
最短流程时间:
最短剩余流程时间“
最早底线时间:每个活动都有一个底线时间,最接近底线时间的那个最先被触发。


把工作项目分配给资源有两种办法:
工作流引擎自动分配,通过前置条件
资源自动适配

工作流的瓶颈:
实例运行太多
运行时间太长
服务级别过低。


流程设计指南

1, 建立流程目标
2, 定义一个流程的时候忽略资源的存在
3, 尽可能为每个实例流程配置一个管理者
4, 检查每个任务的必要性
5, 考虑任务范围i
6, 尝试最简单的流程
7, 搞一个通用流程 还是一个流程多个版本
8, 比较特殊化合普遍化
9, 尽可能达到任务平行运行

 

工作流的定义几种常规的错误:
没有输入或者输出的任务。没有输入,则不确定何时会执行。没有输出,则对流程的完成毫无作用。
无法抵达的任务
死锁
死循环
End已经抵达了  但是活动还在进行
流程已经结束了 还有token在。


要想工作流系统不发生死锁或者无法终止的情况,需要满足下面的条件
对于每个放在开始里面的token,有且仅有一个在结束里面  首尾呼应
令牌出现在结束库所的时候,其他地方要没有令牌
Petri网必须是活性并且有界的
活性意味着每个状态和变迁都都能通过初始状态到达
有界说明不存在某个库所含有无限多令牌的情况。


工作流系统的几个接口:
接口1  流程定义工具  创建 修改 保存流程定义 打开和关闭连接
接口2  工作流客户端应用程序  打开关闭连接 案例 开始 完成的创建==
接口3 管理和监视工具  工作流管理api和工作流跟踪api

 


待续

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics