----工作流模型如何和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
待续