Flowable边界事件-错误边界事件

news2024/12/24 2:51:18

错误边界事件

  • 错误边界事件
  • 一、定义
    • 1. 图形标记
    • 2. 设置错误 选择错误
    • 3. XML标记
  • 二、测试用例
    • 2.1 错误边界事件xml文件
    • 2.2 错误边界事件测试用例
  • 总结


错误边界事件


一、定义

接收到错误编码触发事件

1. 图形标记

在这里插入图片描述

2. 设置错误 选择错误

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
自动审批的配置类配置javaDelegate和抛出错误
在这里插入图片描述

@Slf4j
public class AutomaticReviewService implements JavaDelegate {

    @Override
    public void execute(DelegateExecution execution) {
        String healthCodeStatus = (String) execution.getVariable("healthCodeStatus");
        if (!"green".equals(healthCodeStatus)) {
            String errorCode = "HealthCodeNotGreen";
            log.error("健康码异常,抛出BPMN错误,errorCode为:{}", errorCode);
            throw new BpmnError(errorCode);
        }
    }
}

3. XML标记

错误边界事件的XML

   <error id="theError" errorCode="HealthCodeNotGreen" />
 <boundaryEvent id="Event_05k9xpe" attachedToRef="Activity_0ryoq61">
      <errorEventDefinition errorRef="theError" flowable:errorVariableLocalScope="false" flowable:errorVariableTransient="false" />
    </boundaryEvent>

二、测试用例

2.1 错误边界事件xml文件

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://flowable.org/bpmn">
  <error id="theError" errorCode="HealthCodeNotGreen" />
  <process id="ErrorBoundaryEventProcess" name="边界错误事件" isExecutable="true">
    <startEvent id="a47952f60eef247ad8a93b4dd2697e697" />
    <userTask id="a3b9626571c8542e0a45fc22f94da0ca7" name="提交材料">
      <extensionElements>
        <flowable:assigneeType>static</flowable:assigneeType>
        <flowable:formData />
      </extensionElements>
    </userTask>
    <sequenceFlow id="af7647390384a491d83379d143890cc62" sourceRef="a47952f60eef247ad8a93b4dd2697e697" targetRef="a3b9626571c8542e0a45fc22f94da0ca7" />
    <sequenceFlow id="Flow_1tnf8jl" sourceRef="a3b9626571c8542e0a45fc22f94da0ca7" targetRef="Activity_0ryoq61" />
    <endEvent id="Event_0rcxgdh" />
    <sequenceFlow id="Flow_1c7i87w" sourceRef="Activity_0ryoq61" targetRef="Activity_0eqb1jn" />
    <boundaryEvent id="Event_05k9xpe" attachedToRef="Activity_0ryoq61">
      <errorEventDefinition errorRef="theError" flowable:errorVariableLocalScope="false" flowable:errorVariableTransient="false" />
    </boundaryEvent>
    <userTask id="Activity_1bji7w3" name="人工复审">
      <extensionElements>
        <flowable:formData />
        <flowable:assigneeType>static</flowable:assigneeType>
      </extensionElements>
    </userTask>
    <sequenceFlow id="Flow_101iy5v" sourceRef="Event_05k9xpe" targetRef="Activity_1bji7w3" />
    <userTask id="Activity_0eqb1jn" name="结果登记">
      <extensionElements>
        <flowable:formData />
        <flowable:assigneeType>static</flowable:assigneeType>
      </extensionElements>
    </userTask>
    <sequenceFlow id="Flow_05cqugg" sourceRef="Activity_1bji7w3" targetRef="Activity_0eqb1jn" />
    <sequenceFlow id="Flow_0bj9c6y" sourceRef="Activity_0eqb1jn" targetRef="Event_0rcxgdh" />
    <serviceTask id="Activity_0ryoq61" name="自动审核" flowable:class="com.dragon.test.bpmn.delegate.AutomaticReviewService">
      <extensionElements>
        <flowable:formData />
        <flowable:assigneeType>static</flowable:assigneeType>
      </extensionElements>
    </serviceTask>
  </process>

2.2 错误边界事件测试用例

 ProcessDefinition processDefinition = this.deployByModelKey("ErrorBoundaryEventProcess");

        Map<String, Object> params = new HashMap<>();
        params.put("healthCodeStatus", "red");
        ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinition.getId(), params);

        Task task = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).singleResult();
        taskService.complete(task.getId());
        task = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).singleResult();
        log.info("当前任务为:{}", task.getName());

总结

错误边界事件就没有什么中断与不中断,就只有中断

欢迎加入QQ群学习交流:582010059

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/748323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV安装及案例

目录 常见国内源: 一、简介 二、opencv安装 2.1在虚拟环境中安装 Original error was: No module named ‘numpy.core._multiarray_umath‘ 2.2在conda中安装 三、基本API opencv入门案例: 常见国内源: 清华大学: https://pypi.tuna.tsinghua.edu.cn/simple/ 阿里云:…

opencv 图像基础处理_灰度图像

opencv 学习2_灰度图像 二值图像表示起来简单方便&#xff0c;但是因为其仅有黑白两种颜色&#xff0c;所表示的图像不够细腻。如果想要表现更多的细节&#xff0c;就需要使用更多的颜色。例如&#xff0c;图 2-3 中的 lena 图像是一幅灰度图像&#xff0c; 它采用了更多的数值…

HarmonyOS学习路之方舟开发框架—基于ArkTS的声明式开发范式

UI开发&#xff08;ArkTS声明式开发范式&#xff09;概述 基于ArkTS的声明式开发范式的方舟开发框架是一套开发极简、高性能、支持跨设备的UI开发框架&#xff0c;提供了构建HarmonyOS应用UI所必需的能力&#xff0c;主要包括&#xff1a; ArkTS ArkTS是UI开发语言&#xff0…

Apache Doris (二十五):Doris 数据导入(三)Broker Load-1

目录 1. 基本原理 2. Broker Load语法 进入正文之前&#xff0c;欢迎订阅专题、对博文点赞、评论、收藏&#xff0c;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; 宝子们订阅、点赞、收藏不迷路&#xff01;抓紧订阅专题&#xff01; Apache Doris架构中除了有BE和…

华南农业大学|图像处理与分析技术综合设计|题目解答:定位数显区域并分离电表数字

设计任务 图 28 是一幅正在运行的数字电表图像&#xff08;ipa28.jpg&#xff09;&#xff0c;试采用图像处理与分析 技术&#xff0c;设计适当的算法和程序&#xff0c;找出电表的数显区域&#xff0c;计算目标区域的长宽比 和像素面积&#xff1b;并提取其中面积最大的 …

免费的云数据库:探索PlanetScale,划分分支的MySQL Serverless平台

最近我发现了一个非常有趣的国外MySQL Serverless平台&#xff0c;它叫做PlanetScale。这个平台不仅仅是一个数据库&#xff0c;它能像代码一样轻松地创建开发和测试环境。你可以从主库中拉出一个与之完全相同结构的development或staging数据库&#xff0c;并在这个环境中进行开…

使用Pycharm

本人没有单独安装python&#xff0c;而是直接安装了anaconda 使用Pycharm创建项目 项目取名为HelloWorld&#xff0c;环境使用前面安装的anaconda pycharm安装模块的方法&#xff1a; 打开Pycharm>File > Settings>Project: Python>Project Interpreter

面试题更新之-hook中setState原理

文章目录 hook是什么&#xff1f;hook中setState原理 hook是什么&#xff1f; 在React中&#xff0c;Hook是一种用于在函数组件中添加状态和其他React特性的函数。它们被引入到React 16.8版本中&#xff0c;旨在解决使用类组件编写复杂逻辑时出现的一些问题。 使用Hook&#…

Redis的哨兵机制

Redis的哨兵机制是一套独立的模式&#xff0c;哨兵可看作是一个独立的进程&#xff0c;该进程发送命令&#xff0c;等待Redis的响应&#xff0c;达到监控Redis服务的作用。 如果在规定的时间内&#xff0c;接收不到Redis服务器的响应&#xff0c;那就说明Redis出现了问题&…

通用文字识别OCR 之实现自动化办公

摘要 随着技术的发展&#xff0c;通用文字识别&#xff08;OCR&#xff09;已经成为现代办公环境中不可或缺的工具之一。OCR技术可以将印刷或手写文本转换为可编辑或可搜索的数字文本&#xff0c;极大地提高了办公效率并实现了自动化办公。本文将深入探讨OCR技术在实现自动化办…

Promise的理解和使用(从入门到精通)

Promise的理解和使用 1.1Promise是什么 1、抽象表达 Promise是一门新的技术&#xff08;ES6规范&#xff09;Promise是JS进行异步编程的新解决方案&#xff08;旧方案是单纯的使用回调函数&#xff09; 2、具体表达&#xff1a; 从语法上来说&#xff1a;Promise是一个构造…

C++—C++程序基础

文章目录 1 数据类型1.1 基本数据类型1.2 字面值常量1.3 左值和右值1.4 引用与指针 2 基本输入输出2.1 输出2.2 输入 3 函数3.1 内联函数3.2 函数的重载 1 数据类型 1.1 基本数据类型 在C中&#xff0c;除了C语言中的int&#xff0c;char&#xff0c;float&#xff0c;double…

小程序主包超1.5MB分包处理流程优化方案

"subPackages": [// 分包1 {"root": "src, // 根目录"pages": [{"path": "views/business/index", // 页面路径"name": "business_index","aliasPath": "/business/index",&…

2023年9月广州/重庆/长沙/深圳DAMA-CDGA/CDGP认证考试报名

据DAMA中国官方网站消息&#xff0c;2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启&#xff0c;相关事宜通知如下&#xff1a; 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA) 数据治理专家(CertifiedDataGovernanc…

浅析神经网络模型算法在手写文字识别中的重要作用

神经网络模型是什么&#xff1f;与OCR有何不同&#xff1f; 神经网络模型是一种机器学习算法&#xff0c;用于对数据进行模式识别和预测&#xff0c;可应用于各种任务包括图像识别、自然语言处理等。而OCR&#xff08;Optical Character Recognition&#xff09;是一种特定的应…

我在阴影之中 - InsCode Stable Diffusion 美图活动一期

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…

第24章:事务基础知识

一、数据库事务Transactions 1.为什么要使用事务 事务可以让数据库保持一致性&#xff0c;通过事务的机制恢复到某个时间点&#xff0c;即使系统崩溃数据库修改的数据不会丢失。 2.存储引擎支持事务的情况 命令: show engines; 只有InnoDB支持事务 3.事务基本概念 事务&a…

【第四章 flutter学习之flutter基础组件】

文章目录 一、目录结构二、创建一个flutter项目三、创建自定义组件四、Container组件 就是divalignment 内容对齐方式decoration 类似border 为BoxDecoration的类 五、Text属性六、image组件六、icon组件总结、 一、目录结构 android、ios各自平台的资源文件 lib 项目目录 linu…

今天给大家分享两款实用的软件

在现代社会中&#xff0c;我们越来越依赖各种各样的软件来提高效率、获得信息和享受娱乐。所以&#xff0c;今天我将与大家分享两款我个人常用且非常实用的软件&#xff0c;一起来看看吧。 人工桌面&#xff1a; 人工桌面是一款备受欢迎的动态桌面壁纸软件&#xff0c;它为我们…