为了更好的说明activiti 与jflow的两款工做流引擎的特色与区别,咱们按照以下几个方面作一次全面的、客观的对比。线程
首先activiti是国外的一款开源的工做流程引擎,在国际上影响比较深远与普遍,解决了BPM领域的不少问题,值得咱们赞扬。他的boss是jbpm的前身。设计
JFlow是济南驰骋公司开放的一款工做流程引擎,JFlow的前身是CCFlow,ccflow是国内开源的一款老牌的工做流程引擎,承担过不少大型项目,适应于复杂的国内应用环境。3d
Activity 相对简单,仅有流程引擎,没有表单引擎。在BPM的研究领域, 不少的学者,专家都是把流程引擎与表单引擎分开的,对于这个观点咱们并不很赞同。实现功能须要大量的代码开发。orm
JFlow是JFlow流程引擎+CCForm的表单引擎的有机结合,内容相对复杂,配置程度较高,实施周期短,上手快。blog
以国外流行的工做流activiti的模式与当今中国开源的JFlow(ccflow和jflow的总称)流程引擎对照。以便让各位可以了解到中国国情的工做流引擎与国际流行的设计规则的差异、不一样、与优缺点。开发
国外工做流比较通用的就是知足21种流程模式的支持。同步
ACTIVITI :工作流
就是按照流程设计的步骤,一步步的向下运行,这样的模式下每一个节点有前后顺序,就是每一个节点只有一个节点是活动的。it
例子:好比申请后进行审批,一步一步的进行任务。io
JFLOW:
顺序流,也叫作没有分支的线性流程,流程通常在最后一个节点自动结束,并标识流程完成。也能够经过设置节点条件,自动结束流程。
JFlow的特色是:容许用户本身定义流程完成条件,在任何一个节点运行过程当中,JFlow都要去检查条件设置,若是知足这个条件流程就自动结束。
ACTIVITI :
流程在某个活动(节点、步骤)以后产生多个分支,而且并行流转。
例子:好比在淘宝买了个商品须要开发票,那么卖家就须要一边准备商品发货,一边准备发票邮寄。
JFLOW:
异表单分合流的分流动做,一个动做结束后(分流节点),并行启动多个分支,每一个分支都要向下运动。
在cc中,能够根据方向条件设置来决定是否启用某一个分支。
ACTIVITI :
在流程中的某个点,多个并行的子流程或者活动,合并成一个流程。流程必须等待全部的分支都执行完成后,才能激活后续活动。
例子:好比商家在收到“发票”和“商品”后,才能确认收货。
JFLOW:
异表单分合流中的合流动做,能够指定必定的完成率,才能到达合流节点。对于未完成的子线程,能够进行删除操做。
ACTIVITI :
一个活动完成后,只能在后面的多个分支中激活一个。
例子:好比用户下单后,能够有N种付款方式,可是只能选择其中一种。
JFLOW:
具备分支的线性流程。能够由方向条件控制,也能够由用户手动控制。
ACTIVITI :
在流程中有2个以上的分支中某一个点处被合并成一个分支,只要分支中的一条完成,便可继续进行,而其余分支自动结束。
例子:好比发货在建设银行和中国银行等支付方式中的一个完成后才被激活。
JFLOW:
便可觉得带有分支的线性流程,又能够是异表单的合流动做。在线性流程中,在某一处选择须要执行的节点并完成执行后,后面的节点一步一步的执行,没有被选择的节点不执行。
在异表单中,能够经过条件设置须要执行的节点,其余节点不执行,在合流点完成汇总并激活。或者,经过设置完成率来激活合流点的操做。
区分究竟是否是分合流,经过查看节点类型。
ACTIVITI :
JFLOW: