摘要
目前各行各业都需要工作流,而每个行业由于环境不同,操作方式也差别迥异。国产的开源工作流引擎FoxBPM(FixFlow)吸取了jBPM3、Activiti5等国际开源流程引擎的精髓,再加上自身所具备的专业能力与灵活性使其价值体现了出来。关于FoxBPM的优秀实践是一个系列的文章,第一期主要介绍开源工作流引擎FoxBPM的开发团队(以下简称FoxTeam)及产品功能简介,后面会会介绍基于FoxBPM的最佳实践。
团队介绍
一群人如果有着共同的目标,那他们可以成为工作上的朋友;如果还有共同的爱好,那更是一件让人感到愉悦的事情。而我们,就是这样的一群80后。
FoxBPM团队当中有专门从事设计器插件开发、Web设计器开发、引擎内核开发、UI、外围功能、BPA等成员。团队是从事开发平台类的产品研发,其中包含了工作流的部分,这几年渐渐将工作的重点转到了BPM领域。
我们是一个有理想、有追求、乐于尝试各种新技术的团队。除了代码,游戏是我们共通的爱好,大家经常会找一款游戏一起玩到high。可能听起来有点像是技术宅,但我们却乐在其中。
FoxBPM介绍
FoxBPM介绍 FoxBPM(原名Fixflow,6.0版本改名为FoxBPM)是一款开源的基于BPMN2.0 标准的工作流引擎,引擎从2002年开始研发,到现在一共历经了6个版本,引擎底层直接支持BPMN2.0 国际标准,吸纳了jBPM3 、 Activiti5、BonitaBPM 等国际开源流程引擎的精髓,同时提供了强大的中国式流程流转处理,引擎采用微内核+插件形式设计,提供灵活的扩展模式,建模采用基于BPMN2.0 标准的Eclipse 设计器和基于Web 的流程设计器,不仅为审批流程提供了解决方案,同时还为复杂业务流程编排提供了强大的支持。 FoxBPM本身并不具备完整的开发平台功能,它的定位是专门用于集成到现有系统的引擎。 FoxBPM引擎内核托管于Github社区,Star达到115,Fork高达79,已经成为关注度最高的国内工作流引擎。
FoxBPM功能图
基于Eclipse的流程设计器
基于web的流程设计器
任务中心流程追踪
和其他国外开源产品的对比
FoxBPM和类似的软件如 Activiti 、jBPM 等相比起来, FoxBPM更加符合中国国情,支持复杂任务流转,如转发、退回、自由跳转、会签等处理,可以大大减少二次开发工作量。它还提供更加友好的设计器界面,可视化的连接器,还有中文的社区支持和有开发人员参与的技术交流群。
基于FoxBPM 的产品应用的领域
我们耳熟能详的不外乎OA、综合办公管理,ERP,更细一些的包括:报销、请销假、员工入职离职等,然而从我们多年实施的项目经验来看,各行各业都需要工作流,其原因是由于行业的工作趋于标准化,而标准化的工作需要通过符合企业自身环境的步骤来执行。每个企业的环境不同,操作方式也差别迥异,不可能用唯一的行业标准来规范企业运作过程中的所有步骤。所以在这样的一种现状下,工作流引擎的专业能力与灵活性的价值就体现出来了。 应用领域: 机械制造中的零件采购、使用、产品设计、销售等; 生产加工中的计划编制、车辆调度、仓库物流管理、上下游供应链管理等; 工程设计中的工程项目立项流程、工程设计流程、计划编制流程、图档借阅、归还流程等; 国际、国内物流中的揽货流程、订舱流程、入库出库流程、报关流程等; 另外横向的应用领域有:办公自动化、企业运营管理、项目管理、供应链管理、行政管理等;
FoxBPM引擎在创建FoxBPM过程中的心得的经验
先是技术难度问题。当时国内还很少有人研究BPMN2,另外基于它的设计器也没有很好的参考,感觉有点是摸着石头过河。后来发现了Activiti 和Eclipse 的 BPMN 模型项目,可以说是很不错的参考对象,但实际上资料并不多,很多还是自己慢慢摸索着过来的,包括Eclipse 的插件开发。 然后是功能设计问题。流程引擎设计之初就考虑既要和开发平台集成比较方便的使用,也要能够独立出来与其他框架和系统整合。这里就需要一个设计拿捏的问题。包括怎么去整合组织架构、怎么去整合和扩展处理命令、怎么去关联表单字段、怎么让用户扩展自己的常用配置、怎么去扩展业务逻辑等等。这里面参考了很多 Bonita 的设计器,也做了相应的改进。比如现在 FoxBPM 中的表达式编辑器,连接器,还有会签任务的配置等功能。 FoxBPM 借鉴了很多开源引擎 jBPM、Activiti、Bonita 的经验,但要想把这些都整合到一起,并且加上各种中国式流程的特殊处理,很不容易。另外,也感谢很多技术前辈,如银狐999,荣浩,八进制等等,这期间拜读了他们很多的文章。
FoxBPM 是如何在激烈的竞争环境下积累用户的
积累用户主要是靠国际标准、国产本地化、开源等,以下几点是我们的特色,实实在在地解决了广大开发者的实际问题。 2009年开始,国外的流程引擎全面拥抱 BPMN 2.0 国际标准,从流程设计的图形化符号,到符号执行语义的标准化统一,而国内工作流在这方面相对落后,国内基于BPMN 2.0 的开源工作流引擎更是一片空白,其核心原因还是由于国际标准与国内工作流应用存在较大鸿沟。 创建 FoxBPM 项目的目的主要是为了解决国际标准在国内本地化应用中出现的问题,将国外优秀的经验吸取进来,做出符合国情的优秀产品。比如:中国式的流程审批命令(同意、拒绝、退回、转办、追回)、中国式的流程设计建议(会签、子流程、多级审批)等等。 所谓竞争激烈,我们并不这么认为,我们只想用心做好这款产品,让更多的开发者和流程设计者去使用。 目前大部分的开发者都还是在使用国外的开源流程引擎,如Activiti 和 jBPM,我们希望他们知道有这么一款不输于Activiti 和 jBPM的国产工作流引擎,大家一起在来添砖加瓦,有句经典的话叫做:不用重复造轮子了。这也是让我们决定对于这个项目采用开源方式的决定因素。 为了能够取得这样的结果,我们也在不断努力,除了Github上我们还建立了社区群(QQ群:152654373),我们在乎的是做出优秀的产品,并且让更多的人知道,在一个优秀的基础上搭建更好的中国应用,我们并不在意别人的模仿,我们已经将在群里面回答的问题进行了总结,不断完善文档帮助新朋友快速了解这款产品。
FoxBPM未来的发展目标和开发计划
我们希望FoxBPM 在开源工作流领域、教育行业成为国内最好的工作流引擎,并能和世界级的开源产品一较高下。在我们的Github 主页上有FoxBPM 新版本的开发计划,一般我们会保持 2-3个月发布一个小版本的速度。
未来的版本
6.0.0(2014-12)
功能方向:
全新版本,重写引擎内核和设计器,BPMN2.0规范全方位支持,同时引入 Dubbo、MuleEsb、ActiveMQ 支持
1.全新的流程微内核构架,kernel项目支持多流程定义。
2.引入mybatis完成引擎持久化层工作。
3.引入运行轨迹,可用于监控和前端运行轨迹回放。
4.引入全局事件注入机制。
5.提供多种更加简单的事务整合方式。
6.全新的处理人选择器,方便开发人员选择处理者,积累处理者选择规则。
7.全新的eclipse流程设计器,基于webserver请求数据,并可以离线运行。
8.可扩展的实现事件支持(Message、Error、Signal、Link、Compensation、Escalation、Conditional)
9.事务节点、事件子流程、事件网关
10.可扩展的规则引擎引入(Drools)
11.功能更加完善的web流程设计器
12.rest服务接口
13.这次文档一定很详细:)
历史的脚印
5.2.1 hotfix(2014-4)
1.修复了性能问题
5.2.0(2014-3)
1.引入Maven方式构建,重新调整项目结构。
2.调整配置文件位置,流程系统文件位置可自由配置。
3.重构了异常体系,引入异常国际化支持,更加合理的异常管理。
4.重新设计了日志体系引入slf4j,流程的流转过程通过日志框架输出。
5.修复5.2里程碑中的Issues
5.1.0(2014-1)
Web流程设计器(预览版)
新增流程资源管理器
新增web流程编辑器,支持流程加载、保存、发布,暂不支持连接器
Eclipse设计器新增功能
设计器插件新增支持支持kepler版本的eclipse.插件将支持主流的 Indigo (3.7) Juno (4.2)kepler(4.3).
新的表达式编写方式,支持手写表达式不需要弹出编辑框.
流程创建模板功能,选中一个节点创建模板,可以在任何流程中来使用创建的模板.
全新连接器,支持更多控件模型,兼容老连接器可以继续使用.
流程引擎新增功能
引擎支持子流程终止退回主流程指定节点.
新增全局操作表单、全局浏览表单.
数据库语句外置,开发人员可自行修改.
新增执行Rule配置。