复习步骤15- 19 BPMN事件(6)补偿事件

补偿事件

  • 补偿边界事件

    补偿边界事件触发的条件

    • 事务子流程取消,导致补偿边界事件触发
    • 补偿中间事件触发,导致补偿边界事件触发
  • 补偿中间事件

 

 

事件的学习掌握两点:什么时候会被触发,触发后有什么后果

一、事务子流程取消,导致补偿边界事件触发,

在/**

 * @author lqx

 * 文件在 E:\学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤12- 16 BPMN事件(3)结束事件

 * 或 我的网盘\我的笔记\学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤12- 16 BPMN事件(3)结束事件

 */

 有用到

二、补偿中间事件触发,导致补偿边界事件触发

 

2.1参照如上,补偿中间事件触发,会导致所有补偿边界事件触发(即在农业银行节点执行完后,流转到补偿中间事件节点,接着先触发1补偿事件节点,接着其serviceTask 农业银行处理补偿自定义类做处理,再接着触发2补偿事件节点,接着其serviceTask 工商银行处理补偿自定义类做处理) 新建compensation-signal-intermediate-event-test.bpmn 流程图

 

2.2 修改 compensation-signal-intermediate-event-test.bpmn,将如图4个serviceTask自定义类(均需实现JavaDelegate接口)分别放入对应位置,并且如果这个节点是补偿自定义类的节点需加 isForCompensation="true" 属性

 

 

2.3测试方法

public static void main(String[] args) {

       ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();

        // 存储服务

        RepositoryService rs = engine.getRepositoryService();

        // 运行时服务

        RuntimeService runService = engine.getRuntimeService();

        // 任务服务

        TaskService taskService = engine.getTaskService();

        Deployment dep = rs.createDeployment().addClasspathResource("compensation-signal-intermediate-event-test.bpmn").deploy();

        ProcessDefinition pd = rs.createProcessDefinitionQuery().deploymentId(dep.getId()).singleResult();

        ProcessInstance pi = runService.startProcessInstanceById(pd.getId());

        /*

              输出结果

              工商银行扣款

       农业银行加款

       农业银行处理补偿--扣款退还给工商银行

       工商银行处理补偿--加款,收回之前扣给农业银行的钱

        */

    }

 

CompensationEventTest.java

package com.xiangshuai.act.c18;

 

import org.activiti.engine.ProcessEngine;

import org.activiti.engine.ProcessEngines;

import org.activiti.engine.RepositoryService;

import org.activiti.engine.RuntimeService;

import org.activiti.engine.TaskService;

import org.activiti.engine.repository.Deployment;

import org.activiti.engine.repository.ProcessDefinition;

import org.activiti.engine.runtime.ProcessInstance;

 

/**

 * * @author lqx

 * 文件在 E:\学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤15- 19 BPMN事件(6)补偿事件

 * 或 我的网盘\我的笔记学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤15- 19 BPMN事件(6)补偿事件

 * */

public class CompensationEventTest {

  public static void main(String[] args) {

                  ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();

             // 存储服务

             RepositoryService rs = engine.getRepositoryService();

             // 运行时服务

             RuntimeService runService = engine.getRuntimeService();

             // 任务服务

             TaskService taskService = engine.getTaskService();

             Deployment dep = rs.createDeployment().addClasspathResource("compensation-signal-intermediate-event-test.bpmn").deploy();

             ProcessDefinition pd = rs.createProcessDefinitionQuery().deploymentId(dep.getId()).singleResult();

             ProcessInstance pi = runService.startProcessInstanceById(pd.getId());

             /*

                   输出结果

                   工商银行扣款

                  农业银行加款

                  农业银行处理补偿--扣款退还给工商银行

                  工商银行处理补偿--加款,收回之前扣给农业银行的钱

             */

    }

}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值