精华内容
下载资源
问答
  • activity并行网关实现

    千次阅读 2018-11-15 15:53:05
    activity并行网关 即同时执行并行网关后的多个作业(task/事件/任务) 即同时收回执行多条后继续主流程中的后续一条事件 我这里也只是跑了一个较为简单的并行网关demo 以下是我跑的流程图:   以下是BPMN2.0 ...

    activity并行网关

    即同时执行并行网关后的多个作业(task/事件/任务)

    即同时收回执行多条后继续主流程中的后续一条事件

    我这里也只是跑了一个较为简单的并行网关demo

    以下是我跑的流程图:

     

    以下是BPMN2.0 的XML:

    <process id="Eventgateway" name="Eventgateway" isExecutable="true">
        <documentation>并行网关dome</documentation>
        <startEvent id="start" name="开始"></startEvent>
        <parallelGateway id="parallelgatewaysend"></parallelGateway>
        <userTask id="usertask1" name="usertask1"></userTask>
        <userTask id="usertask2" name="usertask2"></userTask>
        <userTask id="usertask3" name="usertask3"></userTask>
        <userTask id="usertask4" name="usertask4"></userTask>
        <parallelGateway id="parallelgatewayput"></parallelGateway>
        <userTask id="usertask5" name="usertask5"></userTask>
        <endEvent id="end" name="结束"></endEvent>
        <sequenceFlow id="start-usertask1" sourceRef="start" targetRef="usertask1"></sequenceFlow>
        <sequenceFlow id="usertask5-end" sourceRef="usertask5" targetRef="end"></sequenceFlow>
        <sequenceFlow id="eventgateway-usertask5" sourceRef="parallelgatewayput" targetRef="usertask5"></sequenceFlow>
        <sequenceFlow id="usertask4-eventgateway" sourceRef="usertask4" targetRef="parallelgatewayput"></sequenceFlow>
        <sequenceFlow id="usertask3-eventgateway" sourceRef="usertask3" targetRef="parallelgatewayput"></sequenceFlow>
        <sequenceFlow id="usertask2-eventgateway" sourceRef="usertask2" targetRef="parallelgatewayput"></sequenceFlow>
        <sequenceFlow id="eventgateway-usertask2" sourceRef="parallelgatewaysend" targetRef="usertask2"></sequenceFlow>
        <sequenceFlow id="eventgateway-usertask4" sourceRef="parallelgatewaysend" targetRef="usertask4"></sequenceFlow>
        <sequenceFlow id="eventgateway-usertask3" sourceRef="parallelgatewaysend" targetRef="usertask3"></sequenceFlow>
        <sequenceFlow id="usertask1-eventgateway" sourceRef="usertask1" targetRef="parallelgatewaysend"></sequenceFlow>
      </process>

    以下是JAVA API编程代码

    //主体流程的开始
    		//创建数据库链接信息 链接库名、用户名、密码请输入自己的
    		ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration()
    		.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/*******?characterEncoding=UTF-8")
    		.setJdbcUsername("****")
    		.setJdbcPassword("****")
    		.setJdbcDriver("com.mysql.jdbc.Driver")
    		.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE);
    		// 通过数据库链接信息         创建Flowable流程引擎 Create Flowable process engine
    		ProcessEngine processEngine = cfg.buildProcessEngine();
    		// 获取Flowable服务 Get Flowable repositoryService 定义流程和部署流程
    		RepositoryService repositoryService = processEngine.getRepositoryService();
    		// 获取Flowable服务 Get Flowable runtimeService 开始新流程实例和查询
    		RuntimeService runtimeService = processEngine.getRuntimeService();
    		// 获取taskService对象 Get the first task  任务查询与操作
    		TaskService taskService = processEngine.getTaskService(); 
    		
    		Deployment deploy = repositoryService.createDeployment().addClasspathResource("processes/gateway/EventGateway.bpmn20.xml").deploy();
    		ProcessInstance process = runtimeService.startProcessInstanceByKey("XMEventgateway");
     
    		
    		Task task = taskService.createTaskQuery().processInstanceId(process.getId()).singleResult();
    		System.out.println("1 task is="+task);
    		if (task!=null) {
    			System.out.println("提交 task 服务 is="+task.getName());
    			taskService.complete(task.getId());
    		}
    		//查询多个节点任务
    		List<Task> list = taskService.createTaskQuery().processInstanceId(process.getId()).list();
    		System.out.println("lists is="+list.toString());
    		for (Task tasks : list) {
    			System.out.println("提交任务 is="+tasks.getName());
    			taskService.complete(tasks.getId());
    		}
    		task = taskService.createTaskQuery().processInstanceId(process.getId()).singleResult();
    		System.out.println("2 task is="+task);
    		if (task!=null) {
    			System.out.println("提交任务 is="+task.getName());
    			taskService.complete(task.getId());
    		}
    		task = taskService.createTaskQuery().processInstanceId(process.getId()).singleResult();
    		
    		
    		processEngine.close();
    		if (task==null) {
    			System.out.println("所有任务执行完成");
    		}else {
    			System.out.println("还有任务等待执行");
    		}
    		System.exit(0);

    以上是成功demo

    以上如有问题可评论  我看到立马回答

    请不要所以转载 !!!

    展开全文
  • 说一说activiti中的排他网关和并行网关 activiti工作流中我们经常用到的网关有两种: 1. Exclusive Gateway 排他网关 排他网关.png 排他网关(也叫异或(XOR)网关,或更技术性的叫法 基于数据的...

    说一说activiti中的排他网关和并行网关

     

     

    activiti工作流中我们经常用到的网关有两种:

    1. Exclusive Gateway 排他网关

     

     

    排他网关.png

    排他网关(也叫异或(XOR)网关,或更技术性的叫法 基于数据的排他网关), 用来在流程中实现决策。 当流程执行到这个网关,所有外出顺序流都会被处理一遍。 其中条件
    解析为true的顺序流(或者没有设置条件,概念上在顺序流上定义了一个'true') 会被选
    中,让流程继续运行。

    注意这里的外出顺序流 与 BPMN 2.0 通常的概念是不同的。通常情况下,所有条件结果> 为true的顺序流 都会被选中,以并行方式执行,但排他网关只会选择一条顺序流执行。
    就是说,虽然多个顺序流的条件结果为true, 那么XML中的第一个顺序流(也只有这一
    条)会被选中,并用来继续运行流程。 如果没有选中任何顺序流,会抛出一个异常

    排他网关定义非常直接,在xml里面就一句

    <exclusiveGateway id="exclusiveGw" name="Exclusive Gateway" /><sequenceFlow id="flow2" sourceRef="exclusiveGw" targetRef="theTask1">
      <conditionExpression xsi:type="tFormalExpression">${input == 1}</conditionExpression></sequenceFlow><sequenceFlow id="flow3" sourceRef="exclusiveGw" targetRef="theTask2">
      <conditionExpression xsi:type="tFormalExpression">${input == 2}</conditionExpression></sequenceFlow><sequenceFlow id="flow4" sourceRef="exclusiveGw" targetRef="theTask3">
      <conditionExpression xsi:type="tFormalExpression">${input == 3}</conditionExpression></sequenceFlow>

     

     

    排他网关示意图.png

    上图是使用activiti modeler在线设计时候的截图

    排他网关有点像java里面 if ... else if ... 每一个分支线上都要指定一个条件,可以有多条分支线,分支线的的变量需要在网关之前就设置到流程变量中。

    ** 举个栗子,可以在我上面图里面usertask这个节点添加一个执行监听器 **

     

     

    添加执行监听器.png

     

     

    添加执行监听器.png

    执行监听器代码

    @Service("taskFinishedLicenser")@Transactional(propagation = Propagation.NOT_SUPPORTED)public class TaskFinishedLicenser implements ExecutionListener {
        private static final long serialVersionUID = 2105979050046650949L;
    
        @Override
        public void notify(DelegateExecution execution){
            try{
                //set global flow varible
                execution.getEngineServices().getRuntimeService().setVariableLocal(execution.getProcessInstanceId(),"input",1);
            }catch(Exception e){
                execution.getEngineServices().getRuntimeService().setVariableLocal(execution.getProcessInstanceId(),"input",2);
                logger.error(e.getMessage());
            }
        }
    }

    设置了流程变量后,分支条件获取的时候就可以读取到变量了。

    2. Parallel Gateway 并行网关

     

     

    并行网关.png

    网关也可以表示流程中的并发情况。最简单的并发网关是 并行网关,它允许将流程分成
    多条分支,也可以把多条分支 汇聚到一起。
    并行网关的功能是基于进入和外出的顺序流的:

    • 分支: 并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。

    • 汇聚: 所有到达并行网关,在此等待的进入分支, 直到所有进入顺序流的分支都到达以后, 流程就会通过汇聚网关。

    注意,如果同一个并行网关有多个进入和多个外出顺序流, 它就同时具有分支和汇聚功
    能。这时,网关会先汇聚所有进入的顺序流,然后再切分成多个并行分支。

    与其他网关的主要区别是,并行网关不会解析条件。 即使顺序流中定义了条件,也会被忽略。

    这里需要强调的是,** 并行网关一定是成对出现的,有分支也要有汇聚 **

    ** 一个分支执行完毕后,需要等待其他分支全部执行完流程才会走到下一个节点 **

    还有一个有意思的点是,流程开始执行后,点击流程监控发现,执行到并行网关中间的节点时,当前执行节点是显示在并行网关节点上,并不会显示到中间具体的一个节点,所以activiti是把两个并行节点间的所有任务节点,看作是一个事务。

     

     

    并行网关.png

    <startEvent id="theStart" /><sequenceFlow id="flow1" sourceRef="theStart" targetRef="fork" /><parallelGateway id="fork" /><sequenceFlow sourceRef="fork" targetRef="receivePayment" /><sequenceFlow sourceRef="fork" targetRef="shipOrder" /><userTask id="receivePayment" name="Receive Payment" />  <sequenceFlow sourceRef="receivePayment" targetRef="join" /><userTask id="shipOrder" name="Ship Order" /> <sequenceFlow sourceRef="shipOrder" targetRef="join" /><parallelGateway id="join" /><sequenceFlow sourceRef="join" targetRef="archiveOrder" /><userTask id="archiveOrder" name="Archive Order" /> <sequenceFlow sourceRef="archiveOrder" targetRef="theEnd" /><endEvent id="theEnd" />

     

    转载于:https://www.cnblogs.com/shuchen007/p/9280134.html

    展开全文
  • 一、并行网关 1.并行网关Parallel Gateway “任务一”完成后产生两个并行任务。 即使并行网关上的sequence flow有流转条件 ,默认忽略流转条件,产生并行任务。 上图第一个并行网关是"fork",第二个并行网关...

    一、并行网关

    1.并行网关Parallel Gateway

    “任务一”完成后产生两个并行任务。

    即使并行网关上的sequence flow有流转条件 ,默认忽略流转条件,产生并行任务。

    上图第一个并行网关是"fork",第二个并行网关相当于"join"。

    只有并行网关产生的并行任务全部完成后才会汇集到"任务四"。

    二、包容性网关

    三条sequenceflow的流转条件分别是:${circulationConditions=="Y"}、${circulationConditions=="Y"}、${circulationConditions=="N"}

    "任务一"完成后传输“circulationConditions==Y”,则结果是如上图所示的情景,任务二和任务五都完成后流转到“任务四”。

    包容性网关(include getway)是排他网关和并行网关的集合,包含两种网关的特性。

     

     

     

    展开全文
  • 开会流程举例: 详情看链接 https://www.cnblogs.com/adversary/p/9854707.html

     

    开会流程举例:

    详情看链接

    https://www.cnblogs.com/adversary/p/9854707.html

    展开全文
  • "并行一"和“并行二”两个节点是由上一个节点流转,两个的流转条件是一致的,也就是说“候选人设置”节点审批完毕之后,“并行一”和”并行二“两个节点会产生两个并行任务,每个的流转互不影响。 如图,"并行二"的...
  • 并行网关 并行网关的流程图 需求背景 要求:需要实现A驳回到B;C驳回到D,同时消掉AB段的待办,E驳回到D 要求:B->A;C/D->H 并且消除A/B的待办;E到H,并消除A/B的待办;F/G->H java代码实现 // 驳回操作 ...
  • 在微软WF4中有一个Parallel活动,它可以模拟并行执行,但可惜的是Parallel活动并不是一个真正意义上的并行计算方案,实际上Parallel利用了一个线程去分时间段执行下面的各个分支。 今天,我们要做的就是基于...
  • 上一节我们做了个简单的测试证明了Parallel并不是真正意义上的并行工作流,并且分析了它的缺陷。 在.net framework 4里面有很多关于并行计算的组件,现在我们就要利用微软TPL(The Task Parallel Library)中的System...
  • 什么是Activity: 现在提供的Activity大约有28...基础的Activity是Workflow的一个步骤,复杂的Activity可以包含其他的Activity.Activity可以是合作伙伴或者客户提供的一个自定义的Activity,这个Activity可能完成一些...
  • Activity学习资料汇总

    2018-11-05 11:08:23
    Activity学习资料汇总,包括: Activity入门介绍 初始化,部署,启动,查看完成个人任务 部署流程资源的三种方式 流程的增删改查 ...并行网关 接收任务 分配个人任务 分配组任务 工作流提供的用户角色
  • Oracle并行执行

    千次阅读 2015-02-13 10:49:18
    Oracle并行执行是一种分而治之的方法。执行一个sql 时,分配多个并行进程同时执行数据扫描,连接以及聚合等操作,使用更多的资源,得到更快的sql 响应时间。并行执行是充分利用硬件资源,处理大量数据时的核心技术。...
  • activity网关使用

    千次阅读 2020-07-05 16:42:53
    activity提供了多种网关可供选择使用,从插件的流程设计器中大致可以看到有多种网关,分别是:并行网关、排他网关、包含网关以及基于事件类型的网关 排他网关 Exclusive Gateway 排他网关又叫互斥网关,条件计算为...
  • 这一篇博客,我们将继续学习Activity的启动流程。 在启动Activity的过程:一中,我们的流程最终分析到AMS通过zygote启动Activity对应的进程,现在我们看看后续的过程如何进行。
  • Activiti之并行网关 所谓排他网关 顾名思义 执行到该网关,会有多条线路同时并行执行,当都执行完才继续执行后面的; ...
  • 不知道怎么利用多个 CPU 核,做多线程并行计算以节约宝贵的时间和生命?想做并行计算? 高性能计算(HPC)? 本 Chat 将领你走进并行计算的阳光大道。教您“榨干”CPU 的最后一滴算力!Chat 将包含如下内容: ...
  • GitChat连接 https://gitbook.cn/gitchat/activity/5f8fc6cd1f577d4d9f428562 简介 从底层,从原理,我们来重学一次 Java。Stream 是JDK8中新引入的,方便了数据列表的...本篇 Chat 分析了并行 forEach 各种情况的源
  • activiti实战系列 并行网关(parallelGateWay)

    万次阅读 多人点赞 2016-04-16 08:43:09
    流程图 13.2:部署流程定义+启动流程实例 13.3:查询我的个人任务 ...2) 并行网关的功能是基于进入和外出的顺序流的: ...分支(fork): 并行后的...汇聚(join): 所有到达并行网关,在此等待的进入分支, 直到所...
  • 多实例还有并行、串行区分。以下解释一下什么是并行与串行 并行代表同时进行,如把任务分给5个人来处理,这5个人同时会收到任务,并且可以同时处理,不受各自的影响。 串行代表工作或任务由一个人完成后,再由另一...
  • Activity Diagram

    2018-10-04 19:52:00
    活动图支持并行活动 (主要) 流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系;而活动图 描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的...
  • activity流程绘制说明文档,各节点作用说明,包含多个流程图例子,如并行流程,串行流程,条件流程等
  • Activiti并行网关

    千次阅读 2017-03-14 16:42:11
     并行网关:是会有多条线路同时并行执行,当都执行完才继续执行后面的。 重新画一个流程图取名 employeeMyProcess4.bpmn: 整体业务是: 员工发起请假申请——>需要项目组长、项目经理多同意审批——>才...
  • 2.4 什么是Activity我们可以从两个方面理解Activity: Activities are the building blocks of workflowsActivity是workflow一个已经编译的模块 The unit of execution, re-use and composition 是一个可
  • 为什么现在用 GPU 做并行计算最近这么火?它有什么优势?为什么这么多人谈论它?GPU 用于计算很重要!而 CUDA 是程序员能控制 GPU 的桥梁。 本场 Chat 带你走进 N 家的 GPU 和 CUDA 的世界。 本场 Chat 将从三个方面...
  • 目录 前言 一、AsyncTask基础 二、使用步骤 三、注意事项 1、关于 生命周期 2、 关于 内存泄漏 3、 线程任务执行结果 丢失 ...五、多实例并行 前言 Async | Task async[æˈsɪŋk]abbr....
  • Activity流程框架

    千次阅读 2019-07-12 12:47:37
    并行网关:多个分支同时都被执行,流程才能往后执行 ,称为并行网关 Deployment deploy = repositoryService.createDeployment().addClasspathResource("文件.bpmn").deploy(); //查询流程定义 ...
  • activiti之并行网关,驳回

    万次阅读 2016-11-28 18:03:59
    并行网关并不能实现驳回功能
  • Activity 会签

    千次阅读 2018-07-09 14:20:49
     其中,isSequential为true则为串行会签,若为false则为并行会签,而activiti:collection可以来自我们Spring容器中的接口及方法,表示获取会签用户集合,taskUserAssignService.getSignUser(execution)。...
  • 使用AttributeTableBuilder的AddCustomAttributes(Activity, Activity显示样式) public class ActivitiesLibraryMetaData { public static void RegisterAll() { var builder = new Attrib...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,339
精华内容 5,735
关键字:

activity并行