1、为什么要写Fire Workflow
本人从事企业MIS系统开发很多年头了,感觉MIS系统很多领域都有比较好的解决方案并已成为事实标准,例如Spring,Hibernate等等;然而工作流还没有令人满意的开源产品。我了解过的工作流产品(主要是开源的,收费产品没有什么研究,仅仅看看其白皮书而已)都存在如下毛病:
- 缺乏严密的理论做支撑,工作流模型大多千篇一律地照搬WfMC的xpdl,
- 因为缺乏理论支撑,所以工作流引擎的算法有点七拼八凑,扩展性也比较差。
- 没有好的设计器,应用比较困难
最近研究并应用了一下JBoss的Jbpm,除了其面向图的引擎算法让我眼前一亮外,其他的也不是令人满意。其引擎的扩展性不好,表结构太复杂,在大数据量系统中,性能令人堪忧。
鉴于此,我动手写了一个Fire Workflow,抛砖引玉。
2、Fire Workflow的定位
我从来不认为工作流可以“自定义”,所以Fire Workflow是面向开发人员的。Fire Workflow和Spring、Hibernate一样,是一个或几个普普通通的jar包,嵌入到系统中,用以解决系统开发中工作流领域的问题。
因为Fire Workflow是面向开发人员的,所以在下面两个方面花了较大功夫。
- 流程设计器。Fire Workflow用于帮助开发人员解决系统中的流程问题,所以好的流程设计器有助于开发人员提高开发效率。Fire Workflow设计器和主流IDE紧密集成(目前有Eclipse插件和NetBeans插件),使得开发人员开发调试流程就像开发调试一个普通java类一样简单。
- 工作流引擎。Fire Workflow引擎设计充分考虑扩展性,因为业务系统的需求五花八门,所以一个写的很死的引擎必然没有生命力。Fire Workflow引擎的各种服务都可以扩展或者替换。
Fire Workflow虽然不认可流程“自定义”需求,但是并不否认用户有调整业已存在的流程的需求,而且这种需求还比较普遍。所以Fire Workflow计划提供Web界面,让最终用户的系统管理员在一定范围内调整流程。
3、Fireflow的特点
理论严密
Fire Workflow以Petri Net作为理论基础,流程的顺序流转、分支、汇聚、跳转等算法都有定义/定理为依据。
设计合理
Fire workflow将工作流引擎的职责分解委派到各种服务中,每中服务都可以被扩展或者替换。
应用简单
Fire workflow的API以及数据库表结构非常简单。
性能优良
Fire workflow着重在流程实例的数据量,数据库IO等方面进行性能优化。
4、Fireflow的构成
Fire Workflow由模型、引擎、设计器(包含模拟器)三部分组成。
- 模型部分规定了流程定义文件的各种元素及其相互关系,例如流程(WorkflowProcess)、活动(Activity)、转移(Transition)、开始节点(StartNode)、结束节点(EndNode)、同步器(Synchronizer)。模型部分的实现在org-fireflow-model.jar中。
- 引擎读取流程定义文件并解释执行。引擎提供一组对象和相关的API供外部系统调用,如流程实例(ProcessInstance)、任务实例(TaskInstance)、工单(WorkItem)、事件等等。引擎部分的实现在org-fireflow-engine.jar中。
- 设计器编辑并输出流程定义文件。Fire Workflow的设计器附带了强大的模拟器,可以在设计时模拟流程的执行,从而检查流程定义的正确性。
此处附带解释一下我的一个观点:我认为,流程定义文件和java文件一样,是应用系统源代码的一部分。因此,流程设计器做成了当前流行的IDE的插件,便于开发人员进行流程开发。而且每个流程单独一个定义文件,就像每个java类在通常情况下单独一个文件一样。
5、Fire Workflow的流程定义语言为什么不使用Xpdl
本人认为Xpdl好看不好用。
相较于Xpdl,Fire workflow 的流程定义语言主要做了如下变动。
- 废除Package的概念:在我看来一个流程一个文件比较方便开发,流程定义文件在某中程度上和java类文件一样,是系统源代码的一部分
- 废除全局和局部的概念:在xpdl中有全局DataField和局部DataField区分,实际上其作用不大。
- 增加同步器节点:Fire Workflow将流程中的节点分成两类 ,即Acitivyt和Sychronizer(Start Node和End Node是synchronizer的特例)。这两类节点分别代表了业务子系统的逻辑操作和工作流子系统的逻辑操作。
- 增加Task元素:一个Activity可以包含多个Task,Task代表实际的业务逻辑。
(不断补充中……)
分享到:
相关推荐
FireWorkflow 3 工作流模式实现整理 FireWorkflow 3 是一种流行的工作流引擎,用于实现复杂的业务流程。该引擎提供了多种工作流模式,帮助开发者快速构建企业级应用程序。本文档对 FireWorkflow 3 中各种工作流模式...
1. **Fire Workflow 工作流**: Fire Workflow的核心是工作流引擎,它能够自动执行预定义的业务流程。这些流程可以是审批流程、订单处理流程或其他任何需要步骤化操作的业务场景。工作流引擎通过解析流程定义文件,...
1. **工作流模型**:在FireWorkFlow中,工作流模型通常采用BPMN(Business Process Modeling Notation)标准,这是一种图形化表示业务流程的方法。了解BPMN符号及其含义,如活动、事件、网关等,是理解工作流模型的...
本篇文章将详细介绍如何将`fireworkflow`工作流引擎集成到MyEclipse中,以便于开发人员进行更高效的工作。 `fireworkflow`是一个开源的工作流引擎,它提供了一种灵活的方式来管理业务流程。它可以被用于自动化企业...
C# 流程设计,主要了解流程节点走向,流程图设计,流程节点选择,工作流编辑!
【标题】"js.rar" 是一个包含JavaScript代码的压缩文件,特别关注的是 "ccorrect_btn.js" 和 "js_workflow" 这两个部分。"ccorrect_btn.js" 可能是一个用于实现特定功能(如修正按钮)的JavaScript脚本,而 "js_...
工作流(Workflow)是软件系统中用于自动化业务过程的技术,它可以帮助组织管理和控制跨部门的任务、活动和审批流程。在IT行业中,Windows Workflow Foundation (WWF) 是微软提供的一种强大的工作流平台,它允许...
**XiorkFlow-workflow.rar** 是一个包含JavaScript工作流实现的压缩包,主要关注的是**js_workflow**,也就是使用JavaScript来构建工作流管理系统。工作流(Workflow)在信息技术领域指的是自动化处理任务、审批流程...
FireWorkFlow是一款强大的工作流引擎,它为开发者提供了一种高效的方式来实现业务流程自动化。在本主题中,我们将深入探讨其Silverlight工作流设计器,这是一个创新的工具,它利用Microsoft的Silverlight技术来提供...
为什么要写Fire Workflow 本人从事企业MIS 系统开发很多年头了,感觉MIS 系统很多领域都有比较好的解决方 案并已成为事实标准,例如Spring,Hibernate 等等;然而工作流还没有令人满意的开源产 品。我了解过的工作流...
bossa引擎是一款开源的轻量级的工作流引擎,他是基于petri net的,不需要后台数据库系统的支持,他通过叫prevaler的系统来维护自身的持久化,所谓prevaler系统是基于sun的Serializable接口的。
1. 入门指南:这份文档通常会介绍fireworkflow的基本概念,如工作流、节点、任务、流程定义等,帮助初学者快速理解框架的工作原理。同时,它还会提供安装步骤、环境配置以及第一个示例的创建过程,让开发者能够迅速...
1. **课程管理**:为不同阶段的矿山开发课程设置模块,便于教师规划和调整教学内容。 2. **作业与项目管理**:分配和跟踪学生的作业和项目进度,确保学习任务的完成。 3. **文档共享与协作**:支持上传、下载和编辑...
1. 部署流程定义:将BPMN 2.0 XML文件部署到Activiti引擎,这些文件定义了业务流程的逻辑。 2. 启动流程实例:通过调用API,根据特定的业务需求启动流程实例。 3. 执行任务:Activiti引擎根据流程定义自动执行任务,...
"Fire Workflow工作流开发程序包"是一个专门针对工作流管理系统的开发工具,旨在帮助程序员和系统架构师设计、实现和管理复杂的工作流程。这个程序包包含了一整套用于工作流开发的工具和资源,旨在提高工作效率,...
**jbpm3.rar_bpm_bpm jbpm_jbpm3_workflow_workflow process bpm** **jbpm3** 是一个基于Java的企业级工作流引擎,是**BPM(Business Process Management)**领域的重要工具。它允许开发者设计、执行和管理业务流程...