您用过哪些工作流产品

你用过哪些工作流产品?

最初接触工作流是从jBPM开始的,从对工作流没有什么概念,到将其应用到一个小项目中,研究了两三个月。

开源的工作流缺乏文档,更重要的是缺乏结合业务的示例。试用jBPM的日子可谓痛并快乐着,配置成功花费了好几天的时间。因网上给出的配置范例都是使用Hibernate,而我用的是ibatis,jBPM与ibatis使用不同的数据源。结果一个jBPM与Spring的结合,再加上ibatis和事务控制,把我弄得焦头烂额,但终究大功告功,可谓大大松了一口气,可以进行实战了。

jBPM源码中给出的例子虽然在教你怎么用它的API,但都是些玩具,没有一个结合业务逻辑的例子。网上流转的那个请假的例子,算是唯一可以学习的榜样。但还是过于简单,离实际应用有很大的差距。最后我做了一个在线订单系统把jBPM用上了,没用去实现那些有中国特色的工作流功能(回退,会签,自由流等)功能。

 

当时我很想知道商用的工作流产品是个什么样子,到底实现了哪些功能。恰巧现在的项目用到了西安协同的工作流,这也算是国内工作流软件的一个老牌子了。使用jBPM的经验,让我自然的将两者进行对比。说功能,当然是商用产品功能产品强。对回退/自由流/会签/取回/同步工作组/异步工作组这些较复杂功能的支持,加上与组织架构的结合,使商用工作流产品显得强悍很多。

而做为开源Java工作流的老大jBPM,在工作流设计上显得要优雅很多,从api的设计,总体架构来看,jBPM是大师的作品,而西安协同的工作流就像是软件作坊出来的。从工作流引擎的原理上看,jBPM更加灵活。

 

jBPM的设计与一般工作流产品最大的不同在于,jBPM没有服务端,它与你的其他代码一样,运行在你的web服务器里。而一般工作流产品都有服务端,引擎运行在服务端,你必须架设工作流服务器,客户端通过RMI的方式与服务端连接。RMI方式有短暂的延时,所以你完成一个工作项后,并不能马上返回下一个工作项的实例。

 

移植性来说,jBPM工作流更方便。因为他的移植只需移植他的流程定义文档,而不用管数据库。流程定义文档就是用源码的一部分,受版本控制, 流程定义要更新到数据库时,只需调用jBPM的一个API,你可以用ant实现自动发布。而西安协同的工作流在流程定义时,就将一些数据写入了数据库,移植时需要用其专用工具导成jar文档,再导入。

 

有人认为,有服务器端可以承受更大的负载,性能更好,必要时还可以使用集群。当有多个客户端时,都由服务器端统一控制,所以不用担心数据竞争访问的问题。而jBPM这种,若为了统一管理使用同一工作流数据库,但客户端各自管理工作流引擎,会有数据竞争访问的问题?

 

你使用过哪些工作流产品,觉得哪种更好呢?

1 楼 gzspark 2008-09-28  
惭愧,这方面经验不多,最早做OA时用过IBM的NOTES,但只能说懂点点。深入的只用过开源的shark,应该说感觉挺好用的,除了JaWe不太好集成到自己的界面上来,shark本身在应用和二次开发中都没啥问题。完全遵循XPDL规范的WFMC标准工作流。
项目是给一个省移动做的,做完了,好象也没啥反馈,估计又象其它系统一样晾着了,中国的系统建设就是这会事,发起时候与评奖用一下,平时鬼都不碰它!
不知道别的同学用shark的多不多。
2 楼 cleaneyes 2008-10-23  
谢谢两位的回复!
很久没上来了。我们现在做的这个项目也是客户要求要用工作流的,一些没用过工作流的同事,想不通用工作流有什么好处。项目中,工作流的很多功能都没有用上,发挥的作用不大。
在前一家公司还有使用Ultimus BPM(全球领先的BPM产品),设计思路与西安协同属于同类型,有专门的服务端。直接支持自由流,流程结点可以任意跳转,采用变量值来控制流转,而且内部直接支持用Web Service与外部程序接口,配合第三方的页面开发工具,开发速度很快,流程考核与分析的功能也很强。
3 楼 pengzhou 2010-03-16  
    并非商业工作流产品都是需要独立的服务器的,你可以看看国内其他的产品,比如华创动力的MatrixFlow,普元的BPS等等,都可以采用独立服务器形势,或者嵌入到客户工程中的形势,而且往往推荐嵌入到客户工程中,这样也可以控制事务,产品的api和架构也都设计得非常经典,手工作坊的感觉仅仅是西安协同给你的感觉而已,毕竟早期是大学里研究生的作品,而不是从初期就作为商业产品进行严格的设计
    另外 短暂的延时延时是流程引擎采用异步驱动的效果,而不是rmi造成的,rmi是为了独立服务器提供远程接口调用提供的,和延时没有关系
4 楼 cleaneyes 2010-03-22  
谢谢pengzhou兄的回复和指正,可惜还无缘使用其他厂商的工作流产品,希望以后有机会可以再请教。