JFlow与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⽅法,因为有新任务⽽被调⽤。
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服务的缔造者,欧格工作流引擎能够简化和优化所有流程,并为流程提供统一的管理平台。
java 流程编排架构

java 流程编排架构
Java流程编排架构是一种用于构建、管理和执行复杂工作流的系统架构。
它允许您将不同的任务、服务和组件组合在一起,以实现特定的业务目标。
以下是一些常见的Java流程编排架构:
1. Spring Integration:Spring Integration是一个基于Spring的集成框架,它提供了一种用于构建事件驱动的集成应用程序的方法。
它支持多种消息传递协议,包括消息队列、事件总线、电子邮件和文件传输等。
通过使用Spring Integration,您可以轻松地将不同的服务、应用程序和组件连接起来,以实现复杂的业务流程。
2. Camunda BPM:Camunda BPM是一个开源的工作流引擎,它使用BPMN 标准来建模和执行业务流程。
它提供了一个易于使用的API和用户界面,使您能够创建、部署和管理业务流程。
Camunda BPM还支持Java 和JavaScript等编程语言,并与其他平台和框架集成。
3. Activiti:Activiti是一个轻量级的业务流程管理(BPM)平台,它提供了一个易于使用的API和用户界面,使您能够创建、部署和管理业务流程。
Activiti支持BPMN 标准,并与其他平台和框架集成。
4. jBPM:jBPM是一个基于Java的业务流程管理(BPM)框架,它使用BPMN 标准来建模和执行业务流程。
jBPM提供了一个易于使用的API和用
户界面,使您能够创建、部署和管理业务流程。
jBPM还支持多种集成选项,包括与数据库、应用程序和消息队列的集成。
这些架构都具有不同的特点和优势,您可以根据您的具体需求选择最适合您的架构。
JBPM与Activity分析

1概述这里对现阶段市面上的几个主流工作流引擎进行对比,同时将其与FixFlow 进行功能和各方面的对比。
这里选定的目标是JBPM和Activit,现在两者最新稳定版本分别是JBPM5以及Activiti5。
同时这里会讲讲FixFlow这个国产工作流引擎,对于国内用户来说,使我们在几个国外工作流之外又有了更多的选择。
我们可以看到国内的开源流程引擎也可以做到国际级的水平,同时还可以支持加签、会签、回退等这样的“中国式工作流”。
2JBPM和Activiti对比首先先看看JBPM5和Activiti5,这两者现在可以说是国内外最常见到的开源工作流引擎。
如果总管两者的发展史会发现两者的奠基人都是来自于一个叫Tom Baeyens的人。
所以就会发现JBPM系列和Activiti系列的风格方面有很多相似,而Activiti看起来更像是JBPM的后续发展。
2.1 从JBPM3到Activiti5从架构层面上来看JBPM3的架构为:从这张图可以很清晰的看出JBPM的技术架构,可以说作为一个工作流引擎应该有的成分:设计器、控制台、流程引擎、引擎数据库这几者已经明显的标注之上,在后续的各个工作流引擎中这种架构都没有颠覆性的变化。
这里我们来看一下JBPM5的架构他引入了规则引擎Drools,规则引擎负责了整个流程引擎的运转,而知识仓库的存在。
让面向流程的知识管理有了更直观的认识,事实上JBPM的代码操作几乎都是从知识库类开始的。
这张图很好的表现出了一个以BPMS为方向的流程产品应该是什么样的架构模式。
如果说JBPM是产品经理的造物的话,那么Activiti就是技术人员的杰作,Activiti更多的精力是放在了技术架构的精妙。
其易用性方面是JBPM难以比拟的。
集成一个Activiti的难度要远低于JBPM,同时JBPM业务化的api体系也着实让技术人员有些头疼。
这张图就是Activiti的架构图,可以看出这张图与其说产品架构图,更有点像技术架构图。
Activiti和FixFlow介绍

Page 18
连接对象(Connecting Objects)
连接对象(Connecting Objects)将流程对象连接起来组成业 务流程的结构。有三种连接对象:序列流(Sequence Flow )、 消息流( Message Flow )和结合关系(Association )
序列流(Sequence Flow ) 用实线实心箭头表示,代表流程中将被执行的活动的执行顺 序。 例如:
Page 12
在BPMN中一个Task使用一个单实线圆角矩形来表示。在 Task上可以设置一个Marker(记号)如下图
Page 13
当事件子流程(Sub-Process)包含的Start Event被触发时, 事件子流程就启动了.事件子流程启动后,它的父流程是终止还是 继续运行呢? 这是由事件子流程的Start Event是否标注为“中 断”决定的。 如果Start Event标注为中断(Start Event表现为实线的圆圈 ,如下图中第二个事件子流程),则事件子流程启动后,父流程 终止; 如果Start Event没有标注为中断(Start Event表现为虚线的 圆圈,如下图中第一个事件子流程),则事件子流程启动后,父流 程继续运行。
Activiti和FixFlow介绍
半城山水
目录
1.什么是BPMN,WorkFlow 2.BPMN2.0介绍 3.Activiti介绍 4.FixFlow介绍 5.Activiti和FixFlow功能比较
Page 2
什么是BPMN、Workflow
BPM(Business Process Management)——“通过建模、自动化、管理 和优化流程,打破跨部门跨系统业务过程依赖,提高业务效率和效果”。
工作流引擎概论

• jBpm是一个灵活可扩展的工作流管理系统。作为 jBpm运行时server输入 的业务流程使用简单强大的语言表达并打包在流程档案中。jBmp将工作 流应用开发的便利性和杰出的企业应用集成(EAI)能力结合了起来。 jBmp包括一个Web应用程序和一个日程安排程序。jBmp是一组J2SE组件, 可以作为J2EE应用集群部署。
关于Activiti
• 背景介绍
• Activiti 其核心是 BPMN 2.0 的流程引擎。BPMN 是目前被各 BPM 厂商广泛接受的 BPM 标准, 全称为 Business Process Model and Notation,由 OMG 组织进行维护,2011 年 1 月份发布了其 2.0 的正式版。BPMN 2.0 对比于第一个版本,其最重要的变化在于其定义了流程的元模型和 执行语义,即它自己解决了存储、交换和执行的问题。这代表着 BPMN 2.0 流程定义模型不 仅仅可以在任何兼容 BPMN 2.0 的引擎中执行,而且也可以在图形编辑器间交换。作为一个 标准,BPMN 2.0 统一了工作流社区。
• 本文将会介绍 Activiti 的基本概念,同时通过示例来介绍如何通过搭建 Activiti 开发环境和 Activiti API 使用,同时也会接触到 Activiti 的一些工具,希望通过阅读这篇文章,Activiti 能成 为您在开发 BPM 系统时的一个选择。
Activiti 基本架构和服务组件介绍
• RuntimeService:在 Activiti 中,每当一个流程定义被启动一次之后,都会生成一个相应 的流程对象实例。Runtime Service 提供了启动流程、查询流程实例、设置获取流程实例 变量等功能。此外它还提供了对流程部署,流程定义和流程实例的存取服务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 中的综合实现ACTIVITIJFLOW:4 种高级分支同步模式1.多重选择( Multiple Choice ) 在流程中,当一个活动完成后,有多个分支进行选择,可以选择执行其中的一个或者N 个分支。
例子:比如去世博园玩,在门口检票后,可以选择A-E 个片区中的N 个进行观光。
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 )在流程中,被激活的多个实例需要在某个聚合点聚合,而实例的个数在设计的时候并不知道,只有在运行时根据条件来决定需要激活多少个实例。
对于运行时可以知晓实例数量的,可以通过设置 JOIN 节点的 multipliclty 来 实现。
JFLOW 中的支持情况:ACTIVITI 中的支持情况:同表单分合流配合节点访问规则可以实现这个功能 在流程中,被激活的多个实例需要在某个聚合点聚合,而实例的个数在设计 的时候并不知道,该模式与上一个模式的区别就是,在产生的实例执行时或 者已经执行完时,仍然有新的实例产生。