工作流 —activiti7网关

1. 排他网关

    排他网关(也叫异或(XOR)网关,或叫基于数据的排他网关),用来在流程中实现决策。 

  当流程执行到这个网关,所有分支都会判断条件是否为true,如果为 true 则执行该分支,

  注意,排他网关只会选择一个为 true 的分支执行。(即使有两个分支条件都为 true,排他网关也会只选择一条分支去执行)

 

  1.1 定义流程

  

   1.2 部署流程  

/**
     * 流程部署的方法
     */
    @Test
    public void deployment() {
        //获取ProcessEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取RepositoryService对象
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //流程部署
        Deployment deploy = repositoryService.createDeployment()
                .addClasspathResource("holiday/holidayOld.bpmn")
                .name("请假流程-排他网关")
                .deploy();
        System.out.println("流程部署成功:" + deploy.getName());
    }

  1.3 启动流程  当前给的流程变量是5 两个条件都符合

/**
     * 启动流程实例,设置流程变量的值
     */
    @Test
    public void startInstance() {
        //获取ProcessEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取RuntimeService
        RuntimeService runtimeService = processEngine.getRuntimeService();
        //设置流程变量
        Holiday holiday = new Holiday();
        holiday.setNum(5);
        Map<String, Object> assMap = new HashMap<>();
        assMap.put("holiday", holiday);
        //启动流程实例
        ProcessInstance holidayGroup = runtimeService.startProcessInstanceByKey("holidaygetway", assMap);
        System.out.println("流程实例:" + holidayGroup.getId());
    }

  1.4 处理任务

/**
     * 处理任务
     */
    @Test
    public void commitTask() {
        //获取ProcessEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取TaskService对象
        TaskService taskService = processEngine.getTaskService();
        //查询到自己的任务,然后通过任务ID进行提交
        Task task = taskService.createTaskQuery().processDefinitionKey("holidaygetway").taskAssignee("zhangsan").singleResult();
        //处理任务
        taskService.complete(task.getId());
    }

  1.5  处理lisi的任务

/**
     * 处理任务
     */
    @Test
    public void commitTask() {
        //获取ProcessEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取TaskService对象
        TaskService taskService = processEngine.getTaskService();
        //查询到自己的任务,然后通过任务ID进行提交
        Task task = taskService.createTaskQuery().processDefinitionKey("holidaygetway").taskAssignee("lisi").singleResult();
        //处理任务
        taskService.complete(task.getId());
    }

  1.6 处理完lisi的任务时条件两者都符合时选择ID最小的分支

   1.7 查看数据库任务表 

猜你喜欢

转载自www.cnblogs.com/szhhhh/p/12653478.html