Activiti学习之入门个人任务(07)

这里写目录标题

  • 一、分配任务负责人
    • 1.1 固定分配
    • 1.2 表达式分配
      • 1.2.1 UEL表达式
      • 1.2.2 使用流程变量分配任务
      • 1.2.3 注意事项
    • 1.3 监听器分配
  • 二、查询任务
    • 2.1 查询负责人待办
    • 2.2 关联businessKey
  • 三、办理任务

一、分配任务负责人

1.1 固定分配

在进行业务流程建模时指定固定的任务负责人,Assignee项为任务负责人。
在这里插入图片描述
由于固定分配方式,任务只管一步一步执行任务,执行到每一个任务将按照bpmn的配置去分配任务负责人。

1.2 表达式分配

1.2.1 UEL表达式

Activiti使用

  • UEL-value表达式
    在这里插入图片描述
    assignee这个变量是activiti的一个流程变量。
    在这里插入图片描述
    user也是activiti的一个流程变量,user.assignee表示通过调用user的getter方法获取值。

  • UEL-method表达式

  • UEL-method和UEL-value结合
    ${ldapService.findManagerForEmployee(emp)}
    ldapService 是 spring 容器的一个 bean,findManagerForEmployee 是该 bean 的一个方法,emp 是 activiti
    流程变量,emp 作为参数传到 ldapService.findManagerForEmployee 方法中。

  • 其他
    表达式支持解析基础类型、bean、list、array 和 map,也可作为条件判断。
    如下:
    ${order.price > 100 && order.price < 250}

1.2.2 使用流程变量分配任务

@Testpublic void test2(){//1.得到ProcessEngine对象ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//2.得到RuntimeService对象RuntimeService runtimeService = processEngine.getRuntimeService();//3.设置assignee的取值   用户可以在界面上设置流程的执行人Map<String,Object> map = new HashMap<String,Object>();map.put("assignee0","zhangsan");map.put("assignee1","lishi");map.put("assignee2","wangwu");//4.启动流程实例,同时还要设置流程定义的assignee的值ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("holiday1", map);//5.输出System.out.println(processEngine.getName());}

分配完成后可以通过ACT_RU_IDENTITYLINK查看部署信息。

1.2.3 注意事项

由于使用了表达式分配,必须保证在任务执行过程表达式执行成功,比如:
某个任务使用了表达式${order.price > 100 && order.price < 250},当执行该任务是必须保证order在流程变量中存在,否在activiti异常。

1.3 监听器分配

任务监听器是发生对应的任务相关事件时执行的子定义java逻辑或表达式。

public class MyTaskListener implements TaskListener {public void notify(DelegateTask delegateTask) {System.out.println("方法执行了");delegateTask.setAssignee("zhangsan");}
}

使用监听器分配方式,按照监听时间去执行监听类的notify方法,方法如果不能正常执行也会影响任务的执行。

二、查询任务

2.1 查询负责人待办

 @Testpublic void test2(){//1、创建ProcessEngine对象ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();//任务负责人String assigness="zhangsan";//创建TaskServiceTaskService taskService=processEngine.getTaskService();List<Task> list=taskService.createTaskQuery().processDefinitionKey("holiday2").taskAssignee(assigness).list();for(Task task:list){System.out.println(" 流 程 实 例 id : " +task.getProcessInstanceId());System.out.println("任务id:" + task.getId());System.out.println("任务负责人:" + task.getAssignee());System.out.println("任务名称:" + task.getName());}}

2.2 关联businessKey

需求:
在activiti实际应用时,查询待办任务可能要显示出业务员系统的一些相关信息,比如:查询待审批请假单任务列表需要将请假单的日期、请假天数等信息显示出来,请假天数等信息在业务系统中存在,而并没有在activiti数据库中存在,所以是无法通过activiti的api查询到请假天数等信息。

@Testpublic void test3(){//1、创建ProcessEngine对象ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();//2、创建RuntimeServiceRuntimeService runtimeService=processEngine.getRuntimeService();TaskService taskService=processEngine.getTaskService();//3、通过TaskService查询到个人任务Task task=taskService.createTaskQuery().processDefinitionKey("holiday2").taskAssignee("zhangsan").singleResult();//4、通过task对象,得到任务idString processInstanceId=task.getProcessInstanceId();//5、通过流程实例id,得到流程实例对象ProcessInstance processInstance=runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();//6、processInstance对象,得到businessKeyString businessKey=processInstance.getBusinessKey();System.out.println("businessKey: "+businessKey);}

三、办理任务

指定任务 id,调用 TaskService 完成任务:
// 完成任务

@Test
public void completTask() {
//任务id
String taskId = "10305";
// 创建TaskService
TaskService taskService = processEngine.getTaskService();
taskService.complete(taskId);
System.out.println("完成任务");
}

注意:在实际应用中,完成任务前需要校验任务的负责人是否具有该任务的办理权限。

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

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

相关文章

vdb:虚拟数据库

将文件虚拟成数据库&#xff0c;序列化写入、反序列化读取、直接读取。

离散型制造业中,MES系统的应用场景

在离散型制造业中&#xff0c;MES&#xff08;制造执行系统&#xff09;系统的应用场景极为丰富且关键&#xff0c;它贯穿于整个生产过程的各个环节&#xff0c;从生产计划到生产执行&#xff0c;再到质量控制和物料管理&#xff0c;都发挥着不可替代的作用。以下是离散制造业中…

本地化部署一个简单的AI大模型,Llama3.1

7 月 23 日消息&#xff0c;Meta 今晚正式发布llama3.1&#xff0c;提供 8B、70B 及 405B 参数版本。 Meta 称 4050 亿参数的 Llama 3.1-405B 在常识、可引导性、数学、工具使用和多语言翻译等一系列任务中&#xff0c;可与 GPT-4、GPT-4o、Claude 3.5 Sonnet 等领先的闭源模型…

收藏:高性价比https证书

在当今的数字化世界中&#xff0c;网络安全已经成为了每个网站所有者的首要关注点&#xff0c;为了保护网站的安全&#xff0c;防止数据被窃取或篡改&#xff0c;使用SSL证书已经成为了一种标准的做法&#xff0c;SSL证书是一种用于加密网站和用户之间数据传输的证书&#xff0…

[240726] Mistral AI 发布新一代旗舰模型 | Node.js 合并 TypeScript 文件执行提案

目录 Mistral AI 发布新一代旗舰模型&#xff1a;Mistral Large 2Node.js 合并 TypeScript 文件执行提案&#xff1a;--experimental-strip-types Mistral AI 发布新一代旗舰模型&#xff1a;Mistral Large 2 Mistral AI 宣布推出新一代旗舰模型 Mistral Large 2&#xff0c;该…

2024新版 黑马程序员《C++零基础入门》笔记——第一章19 cin中文乱码的解决

1.cin中文乱码的解决 2.代码实践 # include "iostream" # include "windows.h" using namespace std;int main() {SetConsoleOutputCP(CP_UTF8);string str;cin >> str;cout << str << endl;return 0; } 注意&#xff0c;勾选之后以后也…

【echarts】中如何设置曲线展示最新值、最大值、最小值

需要用到的属性&#xff1a;图表标注 series-line. markPoint 默认可以通过 type直接标注&#xff1a;‘min’ 最小值、‘max’ 最大值、‘average’ 平均值。 markPoint: {data: [{type: max},{type: min}]}如何展示最新值 如果要展示最新值得话&#xff0c;需要设置 标注…

如何让C++程序自动生成dump文件?以及如何分析dump文件?

目录 1、API函数SetUnhandledExceptionFilter介绍 2、调用SetUnhandledExceptionFilter设置异常处理函数 3、调用MiniDumpWriteDump函数导出包含异常上下文的dump文件 4、dump文件的多种生成方式 5、使用Windbg分析dump文件 6、最后 C++软件异常排查从入门到精通系列教程…

数业智能心大陆:定制你的专属心理健康方案

在快速变化的社会中&#xff0c;随着人们对自我健康认识的不断加深&#xff0c;心理健康已成为影响生活质量的关键因素&#xff0c;许多成年人在其一生中会遇到心理健康问题。在探索人类心理奥秘的旅程中&#xff0c;我们发现&#xff0c;每个人的心理状态和需求都是独一无二的…

mmdetection训练后评估指标,验证Loss

项目场景&#xff1a; 对mmdetection框架下训练好的log.json文件进行评估。 问题描述 使用框架底下自带的评估文件&#xff0c;不能对loss进行评估。也就是文件&#xff1a;tools/analysis_tools/analyze_logs.py 解决方案&#xff1a; 自己做了评估loss的代码&#xff0c;目…

使用nginx解决本地环境访问线上接口跨域问题

前言 前端项目开发过程中&#xff0c;经常会遇到各种各样的跨域问题。 虽然大部分时候&#xff0c;由脚手架自带的proxy功能即可解决问题&#xff0c;如webpack&#xff0c;vite等&#xff1b;但是若没有通过脚手架搭建项目&#xff0c;或者必须使用某些特殊规则转发时&#…

C语言常见字符函数和字符串函数精讲

目录 引言 一、字符函数 1.字符分类函数 2.字符转换函数 二、字符串函数 1.gets、puts 2.strlen 3.strcpy 4.strncpy 5.strcat 6.strncat 7.strcmp 8.strncmp 9.strstr 10.strchr 11.strtok 12.strlwr 13.strupr 引言 在C语言编程中&#xff0c;字符函数…

Python小工具——监听某网站的数据变化并进行邮件通知

目录 一、需求描述 二、解析 三、实例代码 一、需求描述 监听自考网2024年广东省6月份的毕业生学历注册进度&#xff0c;这是网址&#xff1a;https://www.chsi.com.cn/xlcx/count_zk.jsp&#xff0c; 如上图所示&#xff0c;我们想知道这个红色的空格啥时候被填满&#xf…

Linux下使用gdb进行调试入门级

个人名片&#xff1a; &#x1f393;作者简介&#xff1a;嵌入式领域优质创作者&#x1f310;个人主页&#xff1a;妄北y &#x1f4de;个人QQ&#xff1a;2061314755 &#x1f48c;个人邮箱&#xff1a;[mailto:2061314755qq.com] &#x1f4f1;个人微信&#xff1a;Vir2025WB…

linux modetest常用命令

1 通过help有哪些参数 130|:/ # modetest -h usage: modetest [-acDdefMPpsCvrw]Query options:-c list connectors-e list encoders-f list framebuffers-p list CRTCs and planes (pipes)Test options:-P <plane_id><crtc_id>:<w>x&l…

主机加固|防勒索病毒|产线工控安全

在当今数字化转型的大潮中&#xff0c;工业控制系统&#xff08;ICS&#xff09;作为制造业的核心命脉&#xff0c;其安全性与稳定性直接关系到企业的生产效率和运营安全。然而&#xff0c;随着网络攻击手段的不断进化&#xff0c;尤其是勒索病毒的肆虐&#xff0c;工控安全已成…

ctfshow 框架复现 工具版

工具 首先下载工具PHPGGC GitHub地址 ./phpggc -lweb466 Laravel5.4 是这个版本的漏洞那么我们去看看那个poc链是这个版本的 Laravel/RCE2可以 命令 ./phpggc -i Laravel/RCE2 题目提示要base64编码提交 ./phpggc Laravel/RCE2 system ls /|base64成功RCE https://31…

Pytorch使用教学5-视图view与reshape的区别

有同学后台留言问为什么view有时可对张量进行形变操作&#xff0c;有时就会报错&#xff1f;另外它和reshape功能好像一致&#xff0c;有什么区别呢&#xff1f;本文就带你了解PyTorch中视图的概念。 在PyTorch中对张量进行形变操作时&#xff0c;很多同学也会使用view方法&am…

4.6 replicaset controller

想系统学习k8s源码&#xff0c;云原生的可以加&#xff1a;mkjnnm 介绍 简介 replicaset controller是kube-controller-manager组件中众多控制器中的一个&#xff0c;是 replicaset 资源对象的控制器&#xff0c;其通过对replicaset、pod 2种资源的监听&#xff0c;当这2种资…

ueditor跨域问题解决

ueditor解决跨域问题 问题&#xff1a;1.在引用vue-ueditor-wrap后&#xff0c;上传图片和附件出现跨域问题&#xff0c;前端引用了webpack去解决跨域问题&#xff0c;但仍然存在跨域问题&#xff1f; ueditor是百度的富文本&#xff0c;功能较多但资料不够全&#xff0c;因为…