论坛首页 Java企业应用论坛

国内开源工作流 Fire Workflow 出炉了

浏览 100708 次
该帖已经被评为精华帖
作者 正文
   发表时间:2009-02-03   最后修改:2009-02-16
2009-02-02日 Fire Workflow 的Eclispe设计器插件上传到google code ,并有较详细的文档(2_通过设计器和模拟器快速了解Fire Workflow.pdf,3_各种工作流模式的实现.pdf)。

请到http://code.google.com/p/fireflow下载。




                 Fire workflow FAQ
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代表实际的业务逻辑。
   发表时间:2009-02-03  
自己给自己*顶*一*下*。

Fire Workflow还有很多工作要做,有兴趣的可以加入阿

更多信息请看我的blog或者http://code.google.com/p/fireflow/
0 请登录后投票
   发表时间:2009-02-04  
强烈建议您使用flex来实现图形化流程实例监控和web流程自定义功能
0 请登录后投票
   发表时间:2009-02-04  
您好,您做的这个工作流非常棒,简单易用,文档及示例方面的资料太少了,能否提供下该工作流的数据库以及数据库表说明、以及完整的应用示例。我的联系方式:xuancheng034@163.com;msn:xuancheng034@hotmail.com
0 请登录后投票
   发表时间:2009-02-04  
to supercwg
图形化流程实例监控和Web流程自定义都在计划中。我以前用SVG做过一个实例监控的东西,现在用什么技术实现还在考虑中,你的建议我一定会考虑。

to xuanch0034
将Fire workflow集成到系统中的demo已经基本完成,文档也在编写,会尽快提供。
0 请登录后投票
   发表时间:2009-02-09  
《4_将FireWorkflow嵌入自己的系统中》已经写好了,API、示例等都已做好了,请到http://code.google.com/p/fireflow下载
0 请登录后投票
   发表时间:2009-02-09  
基于eclipse 的流程定义工具怎么做到的,有源码,能分享吗,我一直想改写osworkflow的流程定义工具,自带的那个太烂了!
msn:qujiakang@hotmail.com
0 请登录后投票
   发表时间:2009-02-09  
to kjj
目前主要精力放在写文档上面,eclipse设计器的代码还没有整理好。NetBeans的设计器代码在http://code.google.com/p/fireflow上有,不过不是最新的,因为最新版本的我自己还没有编译通过 ~_^。

0 请登录后投票
   发表时间:2009-02-09  
大概半年后我也要开始写一个了,关注一下。
0 请登录后投票
   发表时间:2009-02-10   最后修改:2009-02-10
在我的Fire Workflow文档计划中有一篇叫做《工作流应用中经典问题的解决方案》,准备动手写,下面是文档提纲。欢迎提建议。您可以到http://code.google.com/p/fireflow下载所有的文档。

1、流程定义文件的本质,流程定义文件的存储与版本控制
2、业务数据vs工作流数据
3、流程数据存取设计与事务一致性
4、与用户管理系统的接口
5、与业务表单的接口
6、自由流
7、退回与取回
8、委派
9、工单签收与业务实际中的材料移交
10、工作流系统的性能问题
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics