PHP工作流引擎Radicore:基于Petri网的实现
![](https://csdnimg.cn/release/wenkucmsfe/public/img/starY.0159711c.png)
"PHP版工作流引擎(radicore)"
在本文中,我们将深入探讨一款基于PHP的工作流引擎——Radicore。Radicore的独特之处在于它采用了Petri网理论来构建其工作流系统,这与传统的基于活动的工作流引擎如openflow或Galaxia有所不同。Radicore的设计强调了系统架构的多层分离,从而确保工作流系统与业务系统之间保持高度的松耦合。这种设计使得工作流系统无需了解业务逻辑,同时业务系统也不必关心工作流的具体实现,这种分离带来了极大的灵活性和可扩展性。
**Petri网模型的工作流**
Petri网是一种图形模型,用于描述并发和同步行为。在Radicore的工作流中,Petri网的各个组成部分扮演着关键角色:
1. **Petri网内的对象**:这些对象代表工作流中的状态或位置,比如任务的开始、结束以及中间状态。
2. **Petri网的触发器**:触发器是引起工作流状态转移的事件,比如用户操作、时间触发或外部系统交互。
3. **Petri网的路由**:路由定义了工作流如何从一个状态转移到另一个状态,包括条件判断和流程分支。
4. **Petri网里的分离和合并**:分离表示一个任务可以被多个并发实例执行,而合并则意味着多个任务实例的结果将汇集到一起。
**一个工作流过程例子**
文章提供了一个具体的工作流过程例子,例如"订单履行"过程,该过程由一系列顺序或并行的任务组成,如"客户下单"、"交易订单"、"打包订单"和"配送订单"。这些任务通过Petri网模型相互连接,形成一个完整的工作流实例。
**数据库设计**
Radicore的工作流系统依赖于精心设计的数据库结构来存储和管理工作流实例。主要的数据库表包括:
1. **WORKFLOW表**:存储工作流的定义和配置信息。
2. **PLACE表**:代表Petri网中的位置或状态。
3. **TRANSITION表**:定义状态之间的转移和触发条件。
4. **ARC表**:连接PLACE和TRANSITION,表示令牌(工作流实例)如何在网中流动。
5. **CASE表**:存储每个工作流实例的信息。
6. **TOKEN表**:记录每个实例在工作流中的位置。
7. **WORKITEM表**:管理任务实例,包括分配给用户的任务和任务状态。
**在线修改界面**
Radicore提供了在线修改界面,允许用户直观地编辑和调整工作流,如添加、删除或修改任务,调整路由规则,以及设置触发条件。
**工作流引擎**
工作流引擎是Radicore的核心,负责执行以下功能:
1. **创建工作流实例**:当一个新的工作流程启动时,引擎会根据预定义的工作流配置创建实例。
2. **更新工作流实例**:随着任务的完成和状态的改变,引擎会更新CASE表和相关表格,反映工作流的当前进度。
3. **创建令牌结果**:处理工作流实例中的触发器事件,创建或销毁令牌,推动工作流的执行。
总结,Radicore作为PHP的开源工作流引擎,利用Petri网理论实现了高度灵活且与业务系统松耦合的工作流管理。其强大的数据库设计和直观的在线编辑界面,使得开发者能够轻松地定制和管理复杂的工作流程。
2021-04-29 上传
2018-03-05 上传
2018-02-25 上传
2018-04-30 上传
![](https://profile-avatar.csdnimg.cn/2d05b85afc1c4126bf6281b9da5695bb_si812cn.jpg!1)
si812cn
- 粉丝: 1
- 资源: 20
最新资源
- 计算机人脸表情动画技术发展综述
- 关系数据库的关键字搜索技术综述:模型、架构与未来趋势
- 迭代自适应逆滤波在语音情感识别中的应用
- 概念知识树在旅游领域智能分析中的应用
- 构建is-a层次与OWL本体集成:理论与算法
- 基于语义元的相似度计算方法研究:改进与有效性验证
- 网格梯度多密度聚类算法:去噪与高效聚类
- 网格服务工作流动态调度算法PGSWA研究
- 突发事件连锁反应网络模型与应急预警分析
- BA网络上的病毒营销与网站推广仿真研究
- 离散HSMM故障预测模型:有效提升系统状态预测
- 煤矿安全评价:信息融合与可拓理论的应用
- 多维度Petri网工作流模型MD_WFN:统一建模与应用研究
- 面向过程追踪的知识安全描述方法
- 基于收益的软件过程资源调度优化策略
- 多核环境下基于数据流Java的Web服务器优化实现提升性能