【Activiti】带节点判断的流程执行

1.部署规则

2.开启流程

3.获取第一个excution执行对象

4.根据条件判断,下一个执行的Excution执行对象,并完成相应逻辑

                                                                                                                             注:共3种情况,其中默认情况需要在判断节点的default flow选项中选择指向默认节点的sequence flow连线          

package com.tabchanj.activiti.receive;

import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;
import org.junit.Assert;
import org.junit.Test;

public class ReceiveTest extends BaseProcess {

    @Test
    public void testPss() throws Exception {
        // 部署规则
         deploy("pss.bpmn");
        // 开启流程
        ProcessInstance pi = runService.startProcessInstanceByKey("pssID");
        System.out.println("流程id:"+pi.getId());
        //获取当前流程实例的id
        String pid  = pi.getId();
        //获取的id名为统计当日销售额ID的执行对象
        Execution e1= runService.createExecutionQuery()
                .processInstanceId(pid)
                .activityId("统计当日销售额ID")
                .singleResult();
        //使用断言,预期结果应该不为空
        Assert.assertNotNull(e1);
        Double money =2888.8D;
        //将作为判断依据的流程变量money设置到流程变量中
        runService.setVariable(e1.getId(), "money", money);
        //发出信号,当前节点执行完成
        runService.signal(e1.getId());
        //流程判断
        if(money<1000){
            Execution e2= runService.createExecutionQuery()
                    .processInstanceId(pid)
                    .activityId("给老板发短信ID")
                    .singleResult();
            Assert.assertNotNull(e2);
            System.out.println("短信:老板,今日小赚"+runService.getVariable(e2.getId(), "money")+"元");
            runService.signal(e2.getId());
        }else if(money>=10000){
            Execution e3= runService.createExecutionQuery()
                    .processInstanceId(pid)
                    .activityId("给老板发邮件ID")
                    .singleResult();
            Assert.assertNotNull(e3);
            System.out.println("邮件:老板,今日豪赚"+money+"元");
            runService.signal(e3.getId());
        }else{
            Execution e4= runService.createExecutionQuery()
                    .processInstanceId(pid)
                    .activityId("默认的ID")
                    .singleResult();
            Assert.assertNotNull(e4);
            System.out.println("默认:老板,今日赚"+money+"元");
            runService.signal(e4.getId());
        }
        //检查流程状态
        Assert.assertNull(getProcessInstence(pid));
        System.out.println("流程检查完毕");
    }

}
时间: 2024-08-24 23:06:15

【Activiti】带节点判断的流程执行的相关文章

activiti 任务节点 处理人设置

1.1.1. 前言 分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) 我们在使用activiti 工作流引擎的时候,最常用的肯定是任务节点,因为在OA系统.审批系统.办公自动化系统中核心的处理就是流程的运转,流程的运转依赖于人员如何设置,人员的设置是非常重要的一个环节,所以说如果能让activiti 工作流引擎运转的核心,就必须要支持强大的人员组织架构设计.下面我们先说一下activiti 工作流引擎自身支持的可

不带MASTER_LOG_FILE,MASTER_LOG_POS参数,执行change master 语句复制异常

-------------分析日志------------- 1.先停止复制进程: [email protected](none) 08:05:45>stop slave; Query OK, 0 rows affected (0.10 sec) 2.查看丛库的状态及复制点坐标: [email protected](none) 08:05:52>show slave status \G *************************** 1. row *******************

【Activiti】一个简单的单线流程的规则部署,流程启动,流程执行,任务查询,任务处理全过程

package com.tabchanj.activiti; import java.util.List; import org.activiti.engine.HistoryService; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RepositoryService; import org.activiti.en

也谈一下Activiti工作流节点的自由跳转

最近在搞openwebflow的工作流节点自由跳转功能,在网上看了一些资料,感觉不是很好,总结原因如下: 直接手动调用SqlSession的操作,感觉会漏掉一些重要的初始化操作(如:启动新节点之后加载其用户授权策略,等): 只有往前(往已执行过的节点)跳转的功能,没有往后节点(往还没有执行的节点)跳转的功能: 新任务不是追加到已有执行路径上,而是覆盖老任务: 那么就自己动手吧!操作流程其实也简单,大概如下: 按照目标节点(activity)定义创建一个新的任务(task),这个创建过程必须和正常

Activiti 查询最新版本的流程定义

package com.mycom.processDefinition; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.zip.ZipInputSt

Activiti 多个并发子流程的应用

多个部门发起资金计划,最后统一到财务部审批,每个部门发起资金计划是一个子流程,财务部审批是多个部门的计划同时审批,审批完成后,再提交上级领导审批. 流程如下: 要解决以上问题,需要实现多个子流程并行处理的功能.在Activiti5有一个比较强的节点属性就是多实例,它可以支持多实例的子流程,多实例任务,多实体脚本等.目前支持多实例的节点类型有: User task Script task Java service task Web service task Business rule task E

Activiti工作流框架学习(二)——使用Activiti提供的API完成流程操作

可以在项目中加入log4j,将logj4.properties文件拷入到src目录下,这样框架执行的sql就可以输出到到控制台,log4j提供的日志级别有以下几种: Fatal  error  warn  info  debug  trace 一.部署流程定义 1,在工程项目下创建源码文件夹process 2,在该文件下下面新创建一个工作流流程定义文件test1.bpmn(NewàActivit Diagram) 3,在test1.bpmn文件定义请假流程或者是报销流程 4,测试代码 [java

[Shell]条件判断与流程控制:if, case, for, while, until

-------------------------------------------------------------------------------------------------------- [条件判断] 1. 按文件类型进行判断 -b 文件    判断该文件是否存在,并且为块设备文件(是块设备文件为真) -c 文件    判断该文件是否存在,并且为字符设备文件(是字符设备文件为真) -d 文件    判断该文件是否存在,并且为目录文件(是目录为真) -e 文件    判断该文

BOS项目 第10天(activiti工作流第二天,流程变量、组任务、排他网关、spring整合activiti、项目中实现流程定义管理)

BOS项目笔记 第10天 今天内容安排: 1.流程变量(设置.获取) 2.组任务(候选人.候选组) 3.排他网关使用 4.spring整合activiti 5.将activiti应用到bos项目中 6.在bos项目中实现流程定义管理(部署.查询.查看png.删除) 1. 流程变量 1.1 设置流程变量的方式 l 方式一:启动流程实例时设置 l 方式二:办理任务时设置 l 方式三:使用RuntimeService的set方法设置 l 方式四:使用TaskService的set方法设置 注意:如果设