工作流JBPM画图与配置

2024-04-18 15:44
文章标签 配置 工作 画图 jbpm

本文主要是介绍工作流JBPM画图与配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • ☃️7.1 画图
      • ☃️7.2 配置
        • 7.2.1 配置任务办理人
          • 7.2.1.1 写死的方式配置任务办理人(不推荐)
          • 7.2.1.2 #{}方式配置任务办理人
          • 7.2.1.3 实现接口方式配置任务办理人
          • 7.2.1.4 方法指定方式分配任务办理人
        • 7.2.2 配置节点属性
          • 7.2.2.1 判断节点(decision)
          • 7.2.2.2 分支/聚合节点
      • 7.3 ☃️完成画图与配置后的效果
        • 7.3.1 完成后的图
        • 7.3.2 完成后配置的xml文件


在这里插入图片描述

☃️7.1 画图

完成以上的配置和概念了解后,我们来画图实际操作吧:

首先,我们画出如下图这样的一个流程图出来:(下图彩线箭头和汉语文字为辅助添加的,不包含在原流程图中)

在这里插入图片描述

☃️7.2 配置

7.2.1 配置任务办理人
7.2.1.1 写死的方式配置任务办理人(不推荐)

当我们点击流程图中的每个节点,流程图下方都会出现如下图示的 属性编辑 框。

在这里插入图片描述

如果没有弹出该框。请在myeclipse 工具 ,按下图操作:

在这里插入图片描述

弹出该框后,我们看到该框有两个编辑栏可编辑:

点击 General 属性,可以在 右侧 输入框 输入 该节点的名称 ,输入名称后 该名称将会作为 该节点的name显示在流程图中和保存在数据库的相关表中(如下图示)。

在这里插入图片描述

点击 Assignment 属性,可以在右侧 输入框 配置该节点的

在这里插入图片描述

我们将本案例的流程图的 task1 和 task2 的任务办理人按照同样的方式分别设置成 “张三” 和 “李四” 。

7.2.1.2 #{}方式配置任务办理人

如下图操作:
在这里插入图片描述

然后,这样设置的是一个动态的,我们在完成 该节点的上一步 的任务的时候去设置该处的具体任务办理人。

具体代码在办理任务的时候添加。

7.2.1.3 实现接口方式配置任务办理人

该方式不需要在画图处设置,但是要在 流程图 的 xml 文件里设置。

在这里插入图片描述

我们此处是要设置 task4 的办理人,所以我们打开 流程图 的Source文件(如上图示):

找到 task4 的节点 ,加入如下节点,在该节点指定该处任务办理人的处理类的全路径名(完成后效果如下)。

 <task name="task4" g="512,360,92,52"><assignment-handler class="com.snow.config.User3AssignmentHandlerImpl">          </assignment-handler><transition name="to join1" to="join1" g="-49,-22"/></task>

注意:该类必须是实现了 AssignmentHandler 接口的类(如下)。

public class User3AssignmentHandlerImpl implements AssignmentHandler {private static final long serialVersionUID = 1L;@Overridepublic void assign(Assignable assignable, OpenExecution execution) throws Exception {//  模拟从 数据库 拿到 的 相关人String userName = "王五";//  将 获取到的办理人 设置 给 该任务assignable.setAssignee(userName);  }
}

该类的调用时机是在 流程图 的流走到该节点自动调用。

7.2.1.4 方法指定方式分配任务办理人

此方式不需要在流程图中指定。需要在流程走到该节点之前的任何时机指定。

代码如下:

// 使用默认配置文件,先获取流程引擎
ProcessEngine processEngine = Configuration.getProcessEngine(); 
//  获取任务serviec
TaskService taskService = processEngine.getTaskService();
String tasjId = "1010101";
String userId = "赵六";
askService.assignTask(taskId, userId);
7.2.2 配置节点属性
7.2.2.1 判断节点(decision)

这是一个判断节点,流程走到这一步会根据该流程的特定属性进行判断,判断条件写在一个实现了 DecisionHandler 接口的类里,并在这里指定类的全限定类名。

在这里插入图片描述

实现类如下:

public class My3DecisionHandlerImpl implements DecisionHandler {private static final long serialVersionUID = 2L;//  根据指定的属性进行流程下一步的判断@Overridepublic String decide(OpenExecution execution) { //    获取申请数额 (这里的属性是在 流程到达该节点前指定的)Double money = Double.parseDouble((String) execution.getVariable("money"));//  重新分配流程下一步走向if(money > 100000){//  task6 节点名称 具体在画图时已指定  return "to task6";}//  end1 介绍节点名称 具体在画图时已指定return "to end1";}
}

该类控制下图的走向:

在这里插入图片描述

7.2.2.2 分支/聚合节点

在这里插入图片描述

如上图示:

流程完成 task2 后,会进入 fork(分支) 节点,流程一分为二:指向 task3 和 task4 。此时 task3 和 task4 节点任务办理人分别在他们的任务列表会看到该任务,只有当他们完成了各自的任务后,该流程才能继续往下走(task3 和 task4 任何一个节点任务没有完成,流程都不会再继续往下走),汇入 join 节点。

注意:区别于decision判断节点,分支与聚合节点本身是不需要额外的代码控制的,这两个节点本身自带的逻辑控制功能。

7.3 ☃️完成画图与配置后的效果

7.3.1 完成后的图

至此,我们的流程图 层面的配置就完了,流程图如下:

在这里插入图片描述

7.3.2 完成后配置的xml文件

流程图产生的xml文件如下(注意看配置相关节点节后与原xml文件的对比):

<?xml version="1.0" encoding="UTF-8"?><process name="test" xmlns="http://jbpm.org/4.4/jpdl">   <start g="472,32,48,48" name="start1">      <transition g="-46,-17" name="to task1" to="task1"/>   </start>   <task assignee="张三" g="450,112,92,52" name="task1">      <transition g="-47,-10" name="to task2" to="task2"/>   </task>   <decision g="472,608,48,48" name="exclusive1">   <handler class="com.snow.config.My3DecisionHandlerImpl" />      <transition g="6,-19" name="to end1" to="end1"/>      <transition g="-45,-17" name="to task6" to="task6"/>   </decision>   <task assignee="李四" g="450,196,92,52" name="task2">      <transition g="-44,-8" name="to fork1" to="fork1"/>   </task>   <task assignee="#{user3}" g="388,360,92,52" name="task3">      <transition g="-49,-22" name="to join1" to="join1"/>   </task>   <task g="512,360,92,52" name="task4">      <assignment-handler class="com.snow.config.User3AssignmentHandlerImpl"/>      <transition g="-49,-22" name="to join1" to="join1"/>   </task>   <fork g="472,280,48,48" name="fork1">      <transition g="-44,-15" name="to task3" to="task3"/>      <transition g="4,-10" name="to task4" to="task4"/>   </fork>   <join g="472,444,48,48" name="join1">      <transition g="-52,-22" name="to task5" to="task5"/>   </join>   <task g="450,524,92,52" name="task5">      <transition g="-79,-22" name="to exclusive1" to="exclusive1"/>   </task>   <end g="472,772,48,48" name="end1"/>   <task g="378,688,92,52" name="task6">      <transition g="-50,-22" name="to end1" to="end1"/>   </task></process>



在这里插入图片描述



这篇关于工作流JBPM画图与配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S