JFlow与activiti的对比

合集下载

BPMN工作流的基本概念!详解工作流框架Activiti

BPMN工作流的基本概念!详解工作流框架Activiti

BPMN⼯作流的基本概念!详解⼯作流框架Activiti⼯作流⼯作流简介⼯作流(Workflow): ⼯作流就是通过计算机技术对业务流程进⾏⾃动化管理。

实现多个参与者按照预定的流程去⾃动执⾏业务流程。

定义: 通过计算机对业务流程⾃动化执⾏管理主要解决的是: 使在多个参与者之间按照某种预定义的规则⾃动进⾏传递⽂档,信息或任务的过程.从⽽实现某个预期的业务⽬标,或者促使此⽬标的实现⼯作流管理系统的⽬标:管理⼯作的流程以确保⼯作在正确的时间被期望的⼈员所执⾏在⾃动化进⾏的业务过程中插⼊⼈⼯的执⾏和⼲预⼯作流框架:Activiti,JBPM,OSWorkFlow,WorkFlow⼯作流框架底层需要有数据库提供⽀持⼯作流术语⼯作流引擎ProcessEngine对象: 这是Activiti⼯作的核⼼.负责⽣成流程运⾏时的各种实例及数据,监控和管理流程的运⾏BPM业务流程管理:是⼀种以规范化的构造端到端的卓越业务流程为中⼼,以持续的提⾼组织业务绩效为⽬的的系统化⽅法常见商业管理教育如EMBA,MBA等均将BPM包含在内BPMN业务流程建模与标注:这些图如何组合成⼀个业务流程图(Business Process Diagram)讨论BPMN的各种的⽤途:包括以何种精度来影响⼀个流程图中的模型BPMN作为⼀个标准的价值BPMN未来发展的远景流对象⼀个业务流程图有三个流对象的核⼼元素事件⼀个事件⽤圆圈来描述,表⽰⼀个业务流程期间发⽣的东西事件影响流程的流动.⼀般有⼀个原因(触发器)或⼀个影响(结果)基于它们对流程的影响,有三种事件:开始事件,中间事件,终⽌事件活动⽤圆⾓矩形表⽰,⼀个流程由⼀个活动或多个活动组成条件条件⽤菱形表⽰,⽤于控制序列流的分⽀与合并。

可以作为选择,包括路径的分⽀与合并内部的标记会给出控制流的类型Activiti开源⼯作流框架Activiti简介Activiti是⼀个开源的⼯作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进⾏流程调度Activiti 作为⼀个遵从 Apache 许可的⼯作流和业务流程管理开源平台,其核⼼是基于Java的超快速,超稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌⼊性和可扩展性,同时更加强调⾯向业务⼈员Activiti 流程引擎重点关注在系统开发的易⽤性和轻量性上.每⼀项BPM业务功能Activiti流程引擎都以服务的形式提供给开发⼈员.通过使⽤这些服务,开发⼈员能够构建出功能丰富,轻便且⾼效的BPM应⽤程序Activiti服务结构Activiti系统服务结构图核⼼类:ProcessEngine: 流程引擎的抽象,可以通过此类获取需要的所有服务服务类:XxxService: 通过ProcessEngine获取,Activiti将不同⽣命周期的服务封装在不同Service中,包括定义,部署,运⾏.通过服务类可获取相关⽣命周期中的服务信息RepositoryServiceRepository Service提供了对repository的存取服务Activiti中每⼀个不同版本的业务流程的定义都需要使⽤⼀些定义⽂件,部署⽂件和⽀持数据(例如BPMN2.0XML⽂件,表单定义⽂件,流程定义图像⽂件等),这些⽂件都存储在Activiti内建的Repository中RuntimeServiceRuntime Service提供了启动流程,查询流程实例,设置获取流程实例变量等功能.此外它还提供了对流程部署,流程定义和流程实例的存取服务TaskServiceTask Service提供了对⽤户Task和Form相关的操作.它提供了运⾏时任务查询,领取,完成,删除以及变量设置等功能HistoryServiceHistory Service⽤于获取正在运⾏或已经完成的流程实例的信息,与Runtime Service中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化FormService使⽤Form Service可以存取启动和完成任务所需的表单数据并且根据需要来渲染表单Activiti中的流程和状态Task均可以关联业务相关的数据IdentityServiceIdentity Service提供了对Activiti系统中的⽤户和组的管理功能Activiti中内置了⽤户以及组管理的功能,必须使⽤这些⽤户和组的信息才能获取到相应的TaskManagementServiceManagement Service提供了对Activiti流程引擎的管理和维护功能这些功能不在⼯作流驱动的应⽤程序中使⽤,主要⽤于 Activiti 系统的⽇常维护核⼼业务对象:org.activiti.engine.impl.persistence.entity包下的类,包括Task,ProcessInstance,Execution等根据不同职责实现相应接⼝的⽅法(如需要持久化则继承PersistentObject接⼝),与传统的实体类不同Activiti组件Activiti上下⽂组件Context: ⽤来保存⽣命周期⽐较长,全局性的信息,类似Application.主要包括如下三类:CommandContext: 命令上下⽂-保存每个命令必要的资源,如持久化需要的sessionProcessEngineConfigurationImpl: 流程引擎相关配置信息-整个引擎全局的配置信息.如数据源DataSource等.该对象为单例,在流程引擎创建的时候初始化ExecutionContext: 持有ExecutionEntity对象持久化组件:Activiti使⽤mybatis作OR映射,并在此基础上增加设计了⾃⼰的持久化框架在流程引擎创建时初始化,顶层接⼝Session,SessionFactorySession有两个实现类:DbSqlSession: 负责sql表达式的执⾏AbstractManager: 负责对象的持久化操作SessionFactory有两个实现类:DbSqlSessionFactory: 负责DbSqlSession相关操作GenericManagerFactory: 负责AbstractManager相关操作Event-Listener组件:Activiti允许客户代码介⼊流程执⾏,提供了事件监听组件监听的事件类型:TaskListenerJavaDelegateExpressionExecutionListenerProcessEngineConfigurationImpl持有DelegateInterceptor的某个实例,⽅便调⽤handleInvocation Cache组件DbSqlSession中有cache的实现Activiti基于List和Map来做缓存:如查询时先查缓存,没有则直接查询并放⼊缓存异步执⾏组件Activiti可以执⾏任务,JobExecutor为其核⼼类,JobExecutor包含三个主要属性:JobAcquisitionThreadBlockingQueueThreadPoolExecutor⽅法ProcessEngines在引擎启动时调⽤JobExecutor.start,JobAcquisitionThread 线程即开始⼯作,其run⽅法不断循环执⾏AcquiredJobs中的job,执⾏⼀次后线程等待⼀定时间直到超时或者JobExecutor.jobWasAdded⽅法,因为有新任务⽽被调⽤。

常见 流程编排框架

常见 流程编排框架

流程编排框架是用于定义、设计和管理业务流程的工具。

以下是一些常见的流程编排框架:1. **BPMN (Business Process Model and Notation)**:BPMN 是一种用于描述业务流程的图形化标准。

它为业务流程的设计、建模和可视化提供了一种通用的符号体系。

2. **Camunda BPM**:Camunda BPM 是一个开源的流程引擎,它支持 BPMN 2.0、CMMN 和 DMN 标准,并提供了一套完整的工具链来设计、执行和管理业务流程。

3. **Activiti**:Activiti 是一个轻量级的业务流程管理框架,它支持 BPMN 2.0,并提供了灵活的工作流引擎。

4. **Drools Flow (JBPM)**:Drools Flow 是基于 JBPM(Java Business Process Model)的一个业务流程管理框架,它支持 BPMN 2.0 和 Jbpm 工作流引擎。

5. **Spring Integration**:虽然 Spring Integration 主要用于集成应用程序,但它也提供了一些用于流程编排的功能,如事件驱动的流程和消息驱动的流程。

6. **AWS Step Functions**:AWS Step Functions 是Amazon Web Services (AWS) 提供的一种服务,它允许用户使用可视化的方式编排和执行一系列的AWS Lambda 函数。

7. **Azure Logic Apps**:Azure Logic Apps 是Microsoft Azure 提供的一种服务,它允许用户通过可视化的方式创建、管理和执行工作流。

8. **Mulesoft**:Mulesoft 提供了一个完整的API 管理和集成平台,其中包括用于流程编排和集成的工具。

这些框架都有各自的特点和优势,选择哪一个取决于具体的需求、技能和预算。

JFlow与activiti的对比

JFlow与activiti的对比

驰骋工作流引擎JFlow 与activiti对比分析报告目录前言 (4)工作流程引擎- 对比 (4)5 种基本控制流模式的对比 (5)4 种高级分支同步模式 (10)2 种结构化模式 (14)4 种包含多实例的模式 (16)3 种基于状态的模式 (19)2 种取消模式 (22)总结 (23)表单集成 (24)表单引擎与流程引擎的关系 (25)最简单的请假流程-根据表单的请假天数来判断流程的分支 (25)流程引擎操纵表单引擎的一个案例 (27)对多种表单的支持 (29)简洁明快的CCForm (29)Word 文档支持 (31)Excel 表单的支持 (31)表单树的支持 (32)符合中国特色个性化JFlow 功能 (32)流程属性 (33)多种接受人规则 (33)接受人员投递路径自动记忆 (34)发起前置导航 (35)节点属性 (35)方向条件可视化配置 (36)JFlow 对工业自动化的流程支持 (37)前言为了更好的说明activiti 与jflow 的两款工作流引擎的特点与区别,我们按照如下几个方面做一次全面的、客观的对比。

首先activiti 是国外的一款开源的工作流程引擎,在国际上影响比较深远与广泛,解决了BPM领域的很多问题,值得我们赞赏。

他的boss 是jbpm 的前身。

JFlow 是济南驰骋公司开放的一款工作流程引擎,JFlow 的前身是CCFlow ,ccflow 是国内开源的一款老牌的工作流程引擎,承担过很多大型项目,适应于复杂的国内应用环境。

Activity 相对简单,仅有流程引擎,没有表单引擎。

在BPM 的研究领域, 很多的学者,专家都是把流程引擎与表单引擎分开的,对于这个观点我们并不很赞同。

实现功能需要大量的代码开发。

JFlow 是JFlow 流程引擎+CCForm 的表单引擎的有机结合,内容相对复杂,配置程度较高,实施周期短,上手快。

工作流程引擎- 对比以国外流行的工作流activiti 的模式与当今中国开源的JFlow(ccflow 和jflow 的总称)流程引擎对照。

activity 工作流详细介绍

activity 工作流详细介绍

activity 工作流详细介绍Activity工作流详细介绍随着科技的发展,人们对于工作效率和流程管理的要求也越来越高。

在现代企业和组织中,活动(Activity)工作流成为了一个重要的工具,用于管理和优化各种类型的业务流程。

本文将详细介绍Activity工作流的定义、特点、使用场景以及它所带来的好处。

一、定义Activity工作流是一种用于描述、管理和执行业务流程的工具。

它通过将业务流程拆解为一系列的活动(Activity)和控制流(Flow)来实现对流程的管理和控制。

每个活动代表了一个具体的业务操作,而控制流则描述了活动之间的先后顺序和条件关系。

二、特点1. 可视化建模:Activity工作流提供了图形化的建模工具,使用户可以直观地设计和编辑业务流程。

通过拖拽和连接各种活动和控制流,用户可以快速构建出复杂的流程模型。

2. 强大的执行引擎:Activity工作流的执行引擎可以自动执行和协调各个活动,按照预定义的规则和条件进行流转。

同时,它还提供了错误处理、并发控制、事务管理等功能,确保流程的正确执行。

3. 灵活的流程控制:Activity工作流支持多种流程控制机制,如条件分支、循环、并行等。

这使得用户可以根据不同的业务需求,灵活地设计和调整流程的控制逻辑。

4. 高度可扩展:Activity工作流提供了丰富的扩展机制,用户可以通过自定义活动和控制组件,满足特定业务场景的需求。

此外,它还支持与其他系统进行集成,实现流程的自动化和信息的无缝传递。

三、使用场景Activity工作流可以应用于各种业务场景,尤其适用于以下几个方面:1. 流程管理:Activity工作流可以帮助企业和组织规范和优化各种类型的流程,如请假流程、审批流程、销售流程等。

通过明确的流程定义和自动化的执行,可以提高工作效率和质量。

2. 工作协同:Activity工作流可以实现不同岗位之间的协同工作。

通过定义和分配任务,每个参与者可以清楚地知道自己需要做什么,以及何时完成。

国内外主流工作流引擎及规则引擎分析

国内外主流工作流引擎及规则引擎分析

国内外主流工作流引擎及规则引擎分析工作流引擎和规则引擎是现代信息化系统中常用的技术工具,旨在提高工作效率、降低人工操作成本并优化业务流程。

本文将对国内外主流的工作流引擎和规则引擎进行分析。

工作流引擎是一种用于管理和自动化业务流程的软件工具。

它定义、执行和监控各种业务流程,能够自动化工作流程、加强协作和控制、提高工作效率。

国内外主流的工作流引擎有:1. Activiti:Activiti是一个轻量级的工作流引擎,基于Java语言开发,采用BPMN2.0标准,具有可扩展性和灵活性,可以与各种企业应用集成。

Activiti提供了很多常用的工作流功能,如用户任务管理、调度执行、流程设计和监控等。

2. jBPM:jBPM是Red Hat公司开发的一个开源的工作流引擎,用于构建、执行和管理业务流程。

它使用BPMN2.0规范,支持业务流程建模、流程定义和流程执行。

jBPM可以与其他系统集成,并提供了各种工具和API来管理和监控工作流程。

3. Camunda:Camunda是一个基于Java的开源工作流引擎,也采用BPMN2.0标准。

Camunda具有灵活的工作流程定义、任务分配、任务执行和流程监控功能,可以与各种技术和系统集成。

Camunda还提供了Web模型器和集成开发环境,简化了工作流程的设计和开发过程。

规则引擎是一种用于管理和执行复杂业务规则的软件工具。

它可以将业务规则从应用代码中分离出来,使得规则的维护和修改更加灵活和高效。

国内外主流的规则引擎有:1. Drools:Drools是一个基于Java的开源规则引擎,提供了业务规则管理、规则引擎和决策表等功能。

Drools使用基于规则的编程模型,将业务规则和应用代码分离开来,并提供了灵活的规则引擎和规则语言,可以实现复杂的规则逻辑。

2. Jess:Jess是一个基于Java的规则引擎,也是一个专门用于开发专家系统的语言。

Jess提供了强大的推理和规则匹配功能,支持定义和执行各种复杂的业务规则。

国内外主流工作流引擎及规则引擎分析

国内外主流工作流引擎及规则引擎分析

国内外主流工作流引擎及规则引擎分析近年来,随着信息技术的高速发展和应用需求的增加,工作流引擎和规则引擎已成为企业信息化建设的重要组成部分。

相比于传统的人工操作,工作流引擎可以通过自动化和流程化的方式提高企业的工作效率和质量,规则引擎则可通过规则的自动验证和执行帮助企业实现业务流程的自动化处理。

本文将着重对国内外主流的工作流引擎和规则引擎进行分析。

一、国际主流工作流引擎1.1 ActivitiActiviti 是一个开源工作流管理系统,最初由Alfresco 软件公司开发。

Activiti 使用Java语言编写,采用Spring和Hibernate框架,并且允许开发人员使用BPMN 2.0 规范来定义工作流程。

Activiti 支持分布式部署,具有良好的可扩展性和高度的灵活性。

1.2 jBPMjBPM 是一个基于开放标准的开源业务流程管理系统,也是一个部分Java Business 的资深技术。

jBPM 使用BPMN 2.0 规范的建模语言来设计和实现业务流程,并采用面向服务的架构,使其能够处理非常复杂的流程。

1.3 CamundaCamunda 是一个开源工作流引擎,可以轻松地实现工作流程的自动化。

Camunda 使用BPMN 2.0 规范和DMN 规范来定义工作流程和规则,其支持分布式环境下的各种操作。

二、国内主流工作流引擎2.1 艾森格艾森格是一家专业的工作流引擎厂商,艾森格的工作流引擎具有高效性、可靠性以及良好的易用性。

艾森格工作流引擎支持分布式环境,可应用于企业级内部流程处理。

2.2 WeBWorkFlowWeBWorkFlow是一家国内比较优秀的工作流引擎厂商,支持多种操作系统(Linux、Windows等),支持HTTP 与TCP 协议的交互,并具有非常好的任务调度、安全性等特性。

2.3 宁波欧格软件宁波欧格软件是一家专业从事OEM服务的缔造者,欧格工作流引擎能够简化和优化所有流程,并为流程提供统一的管理平台。

activiti 概念

activiti 概念

activiti 概念Activiti是一个开源的、基于Java的业务流程管理(BPM)框架。

它提供了一系列能够帮助企业实现业务流程自动化的功能,包括流程设计、流程执行、流程监控等。

本文将围绕Activiti的概念展开,逐步介绍Activiti 的主要特点、工作原理、核心组件以及与其他流程引擎的比较。

一、Activiti的概念Activiti是一个轻量级的、开源的、基于Java的BPM框架。

它具有以下主要特点:1. 灵活性:Activiti支持各种类型的流程、任务和事件,并且可以与现有的应用系统集成,以满足不同企业的需求。

2. 可扩展性:Activiti可以通过编写自定义的服务类和监听器来扩展其功能,以满足特定的业务需求。

3. 可视化设计:Activiti提供了一个图形化的设计器,可以方便地设计和修改流程模型。

4. 易于使用:Activiti的API简单易用,可以快速上手,并且提供了丰富的文档和示例。

二、Activiti的工作原理Activiti的工作原理是基于业务流程管理的各个环节进行自动化处理。

其主要过程如下:1. 流程设计:使用Activiti提供的图形化设计器,设计和绘制业务流程模型。

流程模型由一系列的活动、转移和网关组成,描述了流程的执行顺序和条件。

2. 流程部署:将流程模型部署到Activiti的运行环境中,生成流程定义。

流程定义包括处理任务的路由和执行逻辑等信息。

3. 流程执行:根据流程定义,Activiti会实例化一个流程实例,并按照流程模型中定义的顺序和条件来执行活动。

4. 任务处理:在流程执行过程中,会产生一系列的待处理任务。

这些任务会分配给相应的参与者,并通过任务管理功能进行处理。

5. 流程监控:Activiti提供了一个监控系统,可以实时查看流程的执行情况和各个活动的状态。

三、Activiti的核心组件Activiti的核心组件包括流程引擎、流程仓库、运行时服务、任务服务以及监控服务。

Flowable与activiti对比

Flowable与activiti对比

Flowable与activiti对⽐⽬前Flowable已经修复了activiti6很多的bug,可以实现零成本从activiti迁移到flowable。

flowable⽬前已经⽀持加签、动态增加实例中的节点、⽀持cmmn、dmn规范。

这些都是activiti6⽬前版本没有的。

1、flowable已经⽀持所有的历史数据使⽤mongdb存储,activiti没有。

2、flowable⽀持事务⼦流程,activiti没有。

3、flowable⽀持多实例加签、减签,activiti没有。

4、flowable⽀持httpTask等新的类型节点,activiti没有。

5、flowable⽀持在流程中动态添加任务节点,activiti没有。

6、flowable⽀持历史任务数据通过消息中间件发送,activiti没有。

7、flowable⽀持java11,activiti没有。

8、flowable⽀持动态脚本,,activiti没有。

9、flowable⽀持条件表达式中⾃定义juel函数,activiti没有。

10、flowable⽀持cmmn规范,activiti没有。

11、flowable修复了dmn规范设计器,activit⽤的dmn设计器还是旧的框架,bug太多。

12、flowable屏蔽了pvm,activiti6也屏蔽了pvm(因为6版本官⽅提供了加签功能,发现pvm设计的过于臃肿,索性直接移除,这样加签实现起来更简洁、事实确实如此,如果需要获取节点、连线等信息可以使⽤bpmnmodel替代)。

13、flowable与activiti提供了新的事务监听器。

activiti5版本只有事件监听器、任务监听器、执⾏监听器。

14、flowable对activiti的代码⼤量的进⾏了重构。

15、activiti以及flowable⽀持的数据库有h2、hsql、mysql、oracle、postgres、mssql、db2。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

驰骋工作流引擎JFlow与activiti对比分析报告目录前言 (4)工作流程引擎 - 对比 (4)5种基本控制流模式的对比 (5)4种高级分支同步模式 (10)2种结构化模式 (14)4种包含多实例的模式 (16)3种基于状态的模式 (19)2种取消模式 (22)总结 (23)表单集成 (24)表单引擎与流程引擎的关系 (25)最简单的请假流程-根据表单的请假天数来判断流程的分支 (25)流程引擎操纵表单引擎的一个案例 (27)对多种表单的支持 (29)简洁明快的CCForm (29)Word文档支持 (31)Excel表单的支持 (31)表单树的支持 (32)符合中国特色个性化JFlow功能 (32)流程属性 (33)多种接受人规则 (33)接受人员投递路径自动记忆 (34)发起前置导航 (35)节点属性 (35)方向条件可视化配置 (36)JFlow对工业自动化的流程支持 (37)前言为了更好的说明activiti 与jflow的两款工作流引擎的特点与区别,我们按照如下几个方面做一次全面的、客观的对比。

首先activiti是国外的一款开源的工作流程引擎,在国际上影响比较深远与广泛,解决了BPM领域的很多问题,值得我们赞赏。

他的boss是jbpm的前身。

JFlow是济南驰骋公司开放的一款工作流程引擎,JFlow的前身是CCFlow,ccflow是国内开源的一款老牌的工作流程引擎,承担过很多大型项目,适应于复杂的国内应用环境。

Activity 相对简单,仅有流程引擎,没有表单引擎。

在BPM的研究领域, 很多的学者,专家都是把流程引擎与表单引擎分开的,对于这个观点我们并不很赞同。

实现功能需要大量的代码开发。

JFlow是JFlow流程引擎+CCForm的表单引擎的有机结合,内容相对复杂,配置程度较高,实施周期短,上手快。

工作流程引擎 - 对比以国外流行的工作流activiti的模式与当今中国开源的JFlow(ccflow和jflow的总称)流程引擎对照。

以便让各位能够了解到中国国情的工作流引擎与国际流行的设计规则的差别、不同、与优缺点。

国外工作流比较通用的就是满足21种流程模式的支持。

5种基本控制流模式的对比1.顺序流(Sequence)ACTIVITI :就是按照流程设计的步骤,一步步的向下运行,这样的模式下每个节点有先后顺序,就是每个节点只有一个节点是活动的。

例子:比如申请后进行审批,一步一步的进行任务。

JFLOW:顺序流,也叫做没有分支的线性流程,流程一般在最后一个节点自动结束,并标识流程完成。

也可以通过设置节点条件,自动结束流程。

JFlow的特点是:允许用户自己定义流程完成条件,在任何一个节点运行过程中,JFlow都要去检查条件设置,如果满足这个条件流程就自动结束。

2.并行分叉(ParallelSplit)ACTIVITI :流程在某个活动(节点、步骤)之后产生多个分支,并且并行流转。

例子:比如在淘宝买了个商品需要开发票,那么卖家就需要一边准备商品发货,一边准备发票邮寄。

JFLOW:异表单分合流的分流动作,一个动作结束后(分流节点),并行启动多个分支,每个分支都要向下运动。

在cc中,可以根据方向条件设置来决定是否启用某一个分支。

3.同步(Synchronization)ACTIVITI :在流程中的某个点,多个并行的子流程或者活动,合并成一个流程。

流程必须等待所有的分支都执行完成后,才能激活后续活动。

例子:比如商家在收到“发票”和“商品”后,才能确认收货。

JFLOW:异表单分合流中的合流动作,可以指定一定的完成率,才能到达合流节点。

对于未完成的子线程,可以进行删除操作。

4.独占式选择(Exclusive Choice)ACTIVITI :一个活动完成后,只能在后面的多个分支中激活一个。

例子:比如用户下单后,可以有N种付款方式,但是只能选择其中一种。

JFLOW:具有分支的线性流程。

可以由方向条件控制,也可以由用户手动控制。

5.简单聚合(Simple Merge)ACTIVITI :在流程中有2个以上的分支中某一个点处被合并成一个分支,只要分支中的一条完成,即可继续进行,而其他分支自动结束。

例子:比如发货在建设银行和中国银行等支付方式中的一个完成后才被激活。

JFLOW:即可以为带有分支的线性流程,又可以是异表单的合流动作。

在线性流程中,在某一处选择需要执行的节点并完成执行后,后面的节点一步一步的执行,没有被选择的节点不执行。

在异表单中,可以通过条件设置需要执行的节点,其他节点不执行,在合流点完成汇总并激活。

或者,通过设置完成率来激活合流点的操作。

区分到底是否是分合流,通过查看节点类型。

6.基本控制流程模式,在ACTIVITI 中与JFLOW中的综合实现。

ACTIVITI :JFLOW:4种高级分支同步模式1.多重选择(Multiple Choice)在流程中,当一个活动完成后,有多个分支进行选择,可以选择执行其中的一个或者N个分支。

例子:比如去世博园玩,在门口检票后,可以选择A-E个片区中的N个进行观光。

ACTIVITI 中的支持情况:1.JPDL方式不支持先定义好这里的几种,然后根据条件去筛选其中的几种进行,但是ACTIVITI.4之后支持一种叫foreach的节点,允许我们在运行时指定几种特定的任务,比如上面例子中的片区,我们可以在选定后再去循环。

2.BPMN方式支持根据条件执行多个子分支。

JFLOW中的支持情况:1.通过定义流程为异表单分合流来实现。

a通过条件控制发起子线程数量。

设置方向条件的时候,可以根据需要,选择不通的条件设置,比如:岗位条件、部门条件、表单条件等。

b通过节点树形中设置手工选择方向控制,可以控制发起子线程的发起数量。

2.通过父子流程也可以实现。

2.同步聚合(Synchronizing Merge)在流程中的某个聚合点,流程会等待所有的分支到来,才能激活后续的活动。

如果分支只有一个,那么就变成简单聚合模式;如果存在2个以上分支,那就是同步模式。

这种模式的关键在于能够动态的根据分支的多少进行聚合。

ACTIVITI 中的支持情况:可以通过设置ACTIVITI 的join节点属性multiplicity的值为某个变量,并在程序中动态的修改变量的值来制定分支的数量。

JFLOW中的支持情况:分合流中合流操作。

无论分支有多少,都可以进行汇总,并且可以对汇总的子线程进行删除操作、完成率控制等。

JFLOW的多重选择与同步聚合实例图:结束为聚合点,中间的为分支。

3.多重聚合(Multiple Merge)在流程中的多个分支,都可以激活后续的活动,也就是会产生多个实例。

例子:游客观光完N个片区之后,每个片区各自的系统可以对游客在自己片区的信息进行存储。

ACTIVITI 与JFLOW的支持请参考同步聚合。

4.鉴别器(Discriminator)在流程的某个聚合点,N个分支的第一个分支到达后,就立刻激活后续活动;与此同时,流程仍然要等待其余的分支完成并忽略完成。

注意:在其余分支未全部完成前,第一个到达的分支所激活的后续节点是无法执行的。

例子:个人申请提交后,并行提交给第一导师审批、第二导师审批、第三导师审批,他们中只要有一个完成了,那么就可以提交给学院审批。

N-out-of-M鉴别器模式:跟鉴别器模式一样的,只是这种模式是N个到达后,激活后续节点,而剩下的M-N个节点未完成前,新激活的后续节点一样无法被执行。

ACTIVITI 中的支持情况:没有直接支持这种模式,但是通过自定义节点,应该是可以处理这种模式的。

JFLOW中的支持情况:有两个属性的控制,可以实现功能,就是上面所说的子线程完成路和子线程删除规则。

第1个:子线程完成率。

该规则可以决定是否可见第2个:子线程删除规则。

该规则决定那些子线程可以被删除以及他们的删除方式。

2种结构化模式1.任意循环(Arbitrary Cycles)ACTIVITI :某一个或多个活动可以反复执行。

例子:用户买了瓶汽水,拿到汽水后,中了一瓶,又去兑换了一瓶汽水,如果又中了,再去兑换一瓶汽水….JFLOW:完全是条件判断,在表单中增加一个审核组件,就可以把每次校验的信息,写入里面,完整的显示出来整个轨迹。

2.隐式终止(Implicit Termination)ACTIVITI :指这一个流程中,如果没有活动可以执行,那么流程会自动终止。

例子:比如用户买了汽水,中了50元,但是没有地方可以兑换。

JFLOW:这种类型属于JFlow的线性流程的一种,该流程配上流程完成条件,就可以实现该功能。

流程完成条件,就是流程在前进中检查的条件,如果满足该条件,流程就停止运行,该流程实例结束。

4种包含多实例的模式1.无同步的多实例(MIwithout)在流程中,一个活动可以激活多个实例,每个实例相互独立,并不需要在后面进行同步。

例子:比如用户购买了N本书,于是后续的支付账单、更新客户可以以本书为单位各自执行。

ACTIVITI 中的支持情况:支持这种模式,但是不允许在后面进行结束动作。

JFLOW中的支持情况:分合流与父子流程支持这种模式,分合流上面已经讲过,下面说下父子流程。

第一种情况:发起子流程后,等所有的子流程执行完成后,父流程继续下一步骤或者结束。

第二种情况:发起子流程后,无论子流程是否执行完成,都执行到下一步或者结束。

父流程:2.设计时确定的多实例(MIwith a Priori Design Time Knoledge)在流程中,被激活的多个实例需要在某个聚合点聚合,而实例的个数在设计的时候就已经知晓率。

ACTIVITI 中的支持情况:对于设计时已经知道实例数量的,最简单的就是使用多个Task节点来实现多个实例。

JFLOW中的支持情况:合流节点处理各个子线程的任务比率。

完成率 = 子线程上已经完成的数据/所有子线程数量*100%该节点对于合流节点与分合流节点有效,当子线程的完成率达到该值的时候,该节点的待办才能显示出来,否则该节点的人员不能处理待办。

如果合流节点的处理人能够看到待办,他就可以对该流程进行操作,比如:发送、删除、退回、删除子线程等等。

3.运行时确定的多实例(MI with a Priori RunTime Knoledge)在流程中,被激活的多个实例需要在某个聚合点聚合,而实例的个数在设计的时候并不知道,只有在运行时根据条件来决定需要激活多少个实例。

ACTIVITI 中的支持情况:对于运行时可以知晓实例数量的,可以通过设置JOIN节点的multipliclty来实现。

JFLOW中的支持情况:同表单分合流配合节点访问规则可以实现这个功能。

4.运行时无法确定的多个实例(MI without a Priori RunTime Knoledge)在流程中,被激活的多个实例需要在某个聚合点聚合,而实例的个数在设计的时候并不知道,该模式与上一个模式的区别就是,在产生的实例执行时或者已经执行完时,仍然有新的实例产生。

相关文档
最新文档