在Springboot集成Activiti工作流引擎-任务分配 三种模式【基础讲解】

任务分配 三种模式

1. 固定分配

指定人去做

2. UEL表达式分配

activiti使用uel表达式,UEL是java EE6规范的一部分,UEL即统一表达式语言
activiti支持两个UEL表达式:UEL-value 和 UEL-method
UEL-value 写法 ${变量}
${assignee1}
测试

//部署流程定义@Testpublic void deployProcess1(){Deployment deploy = repositoryService.createDeployment().addClasspathResource("process/jiaban.bpmn20.xml") //xml 设置了UEL-value.addClasspathResource("process/jiaban.png").name("加班流程").deploy();System.out.println(deploy.getId());System.out.println(deploy.getName());}//启动流程实例@Testpublic void startProcess1(){// UEL表达式分配Map<String,Object> map=new HashMap<>();map.put("assignee1","json");map.put("assignee2","haha");ProcessInstance qingjia = runtimeService.startProcessInstanceByKey("jiaban",map);System.out.println("流程定义ID"+qingjia.getProcessDefinitionId());System.out.println("流程实例ID"+qingjia.getId());System.out.println("流程活动ID"+qingjia.getActivityId());}//查询个人代办任务 -- json@Testpublic void findTaskList1(){String name="json";List<Task> taskList = taskService.createTaskQuery().taskAssignee(name).list();taskList.forEach(item->{System.out.println("流程实例的ID"+item.getProcessInstanceId());System.out.println("任务id"+item.getId());System.out.println("任务负责人"+item.getAssignee());System.out.println("任务名称"+item.getName());});}

UEL-method 实现
userBean是spring容器中的bean 标识调用该bean的getUsername方法
比如
经理审批
${userBean.getUsername(1)}
人事审批
${userBean.getUsername(2)}
实现代码和UEL-value 差不多

3. 监听器分配

使用监听器的方式来指定负责人
那么在流程设计时不需要指定assignee
任务监听器时发生对应的任务相关事件执行自定义java逻辑或表达式

Event的选项包含
Create 任务创建触发
Assignment 任务分配后触发
Delete 任务完成后触发
All 所有事件发生都触发

package com.oa.auth;import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;/*** @User: Json* @Date: 2023/7/24* 这里的代码执行 主要是配合activiti的 设计工具使用* 在设计工具中配置 触发方式**/
public class MyTaskListener implements TaskListener {@Overridepublic void notify(DelegateTask delegateTask) {if(delegateTask.getName().equals("经理审批")){//分配任务delegateTask.setAssignee("jack");}else if(delegateTask.getName().equals("人事审批")){delegateTask.setAssignee("json");}}
}

=====================================

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

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

相关文章

RT-Thread快速入门-定时器管理

1时钟节拍 任何操作系统都需要提供一个时钟节拍&#xff0c;以供系统处理所有和时间有关的事件&#xff0c;如延时、线程的时间片轮转调度以及定时器超时等。时钟节拍&#xff08;OS Tick&#xff09;是操作系统中最小的时间单位。 时钟节拍是特定的周期性中断&#xff0c;这…

java模板模式

在Java中&#xff0c;模板模式&#xff08;Template Design Pattern&#xff09;用于定义算法的骨架&#xff0c;并将一些步骤的具体实现延迟到子类中。模板模式是一种行为型设计模式&#xff0c;它允许在父类中定义算法的结构&#xff0c;但允许子类重写某些步骤的具体实现。 …

vue预览和下载txt、PDF、execl等在线文件

因为浏览器默认能直接打开TXT、PDF等文件索引默认就是点击链接打开文件。但是浏览器却又不能在线打开execl、world等文件。 现在我们可以统一的实现文件的预览以及下载。 下载文件 downloadfile方法 downloadfile(url,fileName){const newUrl url;const x new XMLHttpRequ…

【vue3】vue3的一般项目结构、成功显示自己的vue3页面

一、vue3的一般项目结构 Vue 3并没有规定特定的项目结构&#xff0c;因此您可以根据项目的需求和个人偏好来组织您的Vue 3项目。以下是一个常见的Vue 3项目结构示例&#xff0c;供参考&#xff1a; your-project/|- public/| |- index.html # 应用程序的入口HTML文件…

微信小程序开发5

一、自定义组件-插槽 1.1、什么是插槽 在自定义组件的wxml结构中&#xff0c;可以提供一个<slot>节点(插槽)&#xff0c;用于承载组件使用者提供的wxml结构 1.2、单个插槽 在小程序中&#xff0c;默认每个自定义组件中允许使用一个<slot>进行占位&#xff0c;这种…

智慧井盖监测管理系统解决方案

一、方案概述 近年来&#xff0c;随着城市化的不断发展&#xff0c;城市地下管道设施的一步步完善&#xff0c;井盖作为城市基础设施中必不可少的一部分&#xff0c;其重要性也逐渐凸显。然而&#xff0c;在实际应用中&#xff0c;井盖监测和管理并不容易。如井盖地理位置分散&…

【libevent】http客户端1:转存http下载的数据

read_http_input // // HTTP endpoint: GET /rpc/1 (list methods) or POST /rpc/1 (execute RPC) // // JSON-RPC API endpoint. Handles all JSON-RPC method calls. // static void rpc_jsonrpc(evhttp_request *req, void *opaque) {RpcApiInfo *ap =

第一百一十四天学习记录:C++提高:类模板案例(黑马教学视频)

类模板案例 main.cpp代码&#xff1a; #include "myarray.hpp"void printIntArray(MyArray <int>& arr) {for (int i 0; i < arr.getSize(); i){cout << arr[i] << " ";}cout << endl; }void test01() {MyArray <int&…

史上最全,接口测试-Fiddler抓包常用功能总结(超详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Fiddler中常用的功…

冒泡排序实现原理

文章目录 前言一、算法原理二、复杂度三、Java实现总结 前言 冒泡排序&#xff08;Bubble Sort&#xff09;,是一种比较简单的排序算法。 它重复地走访要排序的元素列&#xff0c;依次比较两个相邻的元素&#xff0c;如果它们的顺序错误&#xff0c;则把它们交换位置。走访元…

macOS Monterey 12.6.8 (21G725) 正式版发布,ISO、IPSW、PKG 下载

macOS Monterey 12.6.8 (21G725) 正式版发布&#xff0c;ISO、IPSW、PKG 下载 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持…

C++运算符:优先级

#include <iostream> using namespace std;//#define INT int //宏命令 // typedef int BOO; //移动 // INT a10; // BOO b 12;void fun(string& str) {int pos str.find(a);cout << "位置" << pos << endl;str.replace(pos,…

Windows Active Directory密码同步

大多数 IT 环境中&#xff0c;员工需要记住其默认 Windows Active Directory &#xff08;AD&#xff09; 帐户以外的帐户的单独凭据&#xff0c;最重要的是&#xff0c;每个密码还受不同的密码策略和到期日期的约束&#xff0c;为不同的帐户使用单独的密码会增加用户忘记密码和…

微信小程序弱网监控

前言 在真实的项目中&#xff0c;我们为了良好的用户体验&#xff0c;会根据用户当前的网络状态提供最优的资源&#xff0c;例如图片或视频等比较大的资源&#xff0c;当网络较差时&#xff0c;可以提供分辨率更低的资源&#xff0c;能够让用户尽可能快的看到有效信息&#xf…

Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header)

目录 1.获取参数 1.1获取单个参数 1.2获取多个参数 传参注意事项&#xff1a; 2.获取对象 3.后端参数重命名RequestParam 4.获取JSON对象RequestBody 5.从 URL 地址中获取参数 PathVariable 6.上传文件 RequestPart 7.获取Cookie/Session/Header 7.1 获取 Request 和…

【MySQL】MySQL索引、事务、用户管理

20岁的男生穷困潦倒&#xff0c;20岁的女生风华正茂&#xff0c;没有人会一直风华正茂&#xff0c;也没有人会一直穷困潦倒… 文章目录 一、MySQL索引特性&#xff08;重点&#xff09;1.磁盘、OS、MySQL&#xff0c;在进行数据IO时三者的关系2.索引的理解3.聚簇索引&#xff0…

安全杂记 - 状态码,DNS,编码

目录 1.状态码2.DNS解析过程3.URL编码4.HTML实体编码5.FORM表单 1.状态码 200 - 请求成功 301 - 资源&#xff08;网页等&#xff09;被永久转移到其它URL 302 - 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI 304 - 未修改。所请求的资源未修改&#…

WebSocket工具类

最近的项目在整长连接WebSocket&#xff0c;之前也写过一个感觉没有这个全面。提供个工具类WebSocketHelper和Java-WebSocket-1.3.9.jar包以及一个HttpURLConnectionUtil 1、WebSocketHelper import android.util.Log;import org.java_websocket.client.WebSocketClient; imp…

Two Days wpf 分享 分页组件

迟来的wpf分享。 目录 一、序言 二、前期准备 三、前端界面 四、后台代码部分 1、先定义些变量后面使用 2、先是按钮事件代码。 首页按钮 上一页按钮 下一页按钮 末尾按钮 画每页显示等数据 每页显示多少条 判断是否为数字的事件 分页数字的点击触发事件 跳转到…

HCIP——OSPF基础

OSPF基础 一、OSPF基础二、OSPF的区域划分三、OSPF的数据包hello包数据库描述包DBD包链路状态请求包LSR包链路状态更新包LSU包链路状态确认包LSAck包 四、OSPF的状态机五、OSPF的工作过程六、链路状态型的路由生成过程七、条件匹配五、OSPF数据包头部八、OSPF的接口网络类型 一…