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

news2024/9/24 9:20:24

这里写目录标题

  • 一、分配任务负责人
    • 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 使用流程变量分配任务

@Test
    public 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 查询负责人待办

 @Test
    public void test2(){
        //1、创建ProcessEngine对象
        ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
        //任务负责人
        String assigness="zhangsan";

        //创建TaskService
        TaskService 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查询到请假天数等信息。

@Test
    public void test3(){
        //1、创建ProcessEngine对象
        ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
        //2、创建RuntimeService
        RuntimeService runtimeService=processEngine.getRuntimeService();
        TaskService taskService=processEngine.getTaskService();
        //3、通过TaskService查询到个人任务
        Task task=taskService.createTaskQuery().processDefinitionKey("holiday2")
                .taskAssignee("zhangsan").singleResult();
        //4、通过task对象,得到任务id
        String processInstanceId=task.getProcessInstanceId();
        //5、通过流程实例id,得到流程实例对象
        ProcessInstance processInstance=runtimeService.createProcessInstanceQuery()
                .processInstanceId(processInstanceId).singleResult();
        //6、processInstance对象,得到businessKey
        String 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://www.coloradmin.cn/o/1950167.html

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

相关文章

上传文件传参 pc端vue的formData

formData let formData new FormData(); formData.append("file", blob, ref ".png"); //添加参数并且重新命名文件名称 if(ref.toString().indexOf(qrcode) > 0) formData.append(noStbg, true)//添加参数 uploadType(formData, sour…

Ruoyi-WMS部署

所需软件 1、JDK&#xff1a;8 安装包&#xff1a;https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.htmlopen in new window 安装文档&#xff1a;https://cloud.tencent.com/developer/article/1698454open in new window 2、Redis 3.0 安装包&a…

算法日记day 20(中序后序遍历序列构造二叉树|最大、合并、搜索二叉树)

一、中序后序序列构造二叉树 题目&#xff1a; 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,…

Web动画(lottie篇)

一、Lottie简介 Lottie是一个库&#xff0c;可以解析使用AE制作的动画&#xff08;需要用bodymovin导出为json格式&#xff09;&#xff0c;支持web、ios、android和react native。在web侧&#xff0c;lottie-web库可以解析导出的动画json文件&#xff0c;并将其以svg或者canva…

近期代码报错解决笔记

1.TypeError: ‘bool’ object is not callable 想print("Type of head:", type(entity_emb[head]))&#xff0c;结果报如下错误&#xff1a; 源代码&#xff1a; 因为 print 仍然被当作一个布尔值处理&#xff0c;而不是作为函数调用。这个问题的根源在于 print …

iOS ------ Block的相关问题

Block的定义 Block可以截获局部变量的匿名函数&#xff0c; 是将函数及其执行上下文封装起来的对象。 Block的实现 通过Clang将以下的OC代码转化为C代码 // Clang xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m//main.m #import <Foundation/Foundation.…

7月26日贪心练习-摆动序列专题

前言 大家好&#xff0c;今天学习用贪心思想解决摆动序列问题&#xff0c;共三题&#xff0c;分享自己的思路&#xff0c;请大家多多支持 算法思想 大家可以先看看这道我们后面会讲的题看看怎么个事&#xff0c;. - 力扣&#xff08;LeetCode&#xff09; 由此题题解说明算…

uniapp手写滚动选择器

文章目录 效果展示HTML/Template部分&#xff1a;JavaScript部分&#xff1a;CSS部分&#xff1a;完整代码 没有符合项目要求的选择器 就手写了一个 效果展示 实现一个时间选择器的功能&#xff0c;可以选择小时和分钟&#xff1a; HTML/Template部分&#xff1a; <picker…

谷粒商城实战笔记-66-商品服务-API-品牌管理-JSR303数据校验

文章目录 一&#xff0c;引入JSR 303依赖二&#xff0c;接口参数启用校验功能三&#xff0c;给字段添加校验注解NotBlank 和 NotNull 的区别NotBlankNotNull比较 四&#xff0c;BindingResult获取校验结果五&#xff0c;自定义错误消息六&#xff0c;其他校验规则 在Web应用程序…

如何对视频文件加密_如何加密视频文件_视频文件如何加密

“嘿&#xff0c;小李&#xff0c;你知道咱们公司的新项目资料都是视频形式的吗&#xff1f;这些视频里有很多机密信息&#xff0c;我们需要好好保护起来。” “是啊&#xff0c;我也在想这个问题。你有没有什么好办法来加密这些视频文件呢&#xff1f;” “我听说有个叫域智盾…

html+css前端作业 王者荣耀官网1个页面(带报告)

htmlcss前端作业 王者荣耀官网1个页面&#xff08;带报告&#xff09; 下载地址 https://download.csdn.net/download/qq_42431718/89575045 目录1 目录2 项目视频 王者荣耀首页1个页面&#xff08;无js&#xff09; 页面1

推荐|政务网站部署哪种SSL证书?如何申请?

政务网站作为面向公众提供政务服务的官方平台&#xff0c;对信息安全和公信力有极高的要求。因此&#xff0c;在部署SSL证书时&#xff0c;应慎重选择。下面是关于政务网站SSL证书选择的一些建议&#xff1a; 一、推荐的SSL证书类型 1 选择数据不出境&#xff0c;国内验签的证…

多模态论文一:CLIP模型主要内容讲解【原理+代码】

一、CLIP模型主要内容讲解 CLIP&#xff08;Contrastive Language-Image Pre-training&#xff09;是OpenAI在2021年发布的一种用于图像和文本联合表示学习的模型。CLIP的核心思想是通过对比学习来预训练一个模型&#xff0c;使其能够理解图像和文本之间的关系。以下是CLIP的工…

Ruoyi-WMS本地运行

所需软件 1、JDK&#xff1a;8 安装包&#xff1a;https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.htmlopen in new window 安装文档&#xff1a;https://cloud.tencent.com/developer/article/1698454open in new window 2、Redis 3.0 安装包&a…

【STM32 FreeRTOS】FreeRTOS的移植

其实这篇文章不侧重移植&#xff0c;因为我们会使用CubeMX配置&#xff0c;那样会自动移植FreeRTOS。 关于FreeRTOS&#xff0c;可以参考官网&#xff1a;FreeRTOS - Quick start guide 当我们在CubeMX中配置了CMSIS_V2后尝试编译的时候会有一个弹窗。 第一个问题就是强烈建议…

ubuntu实践

目录 扩容 本机上ping不通新建立的虚拟机 ssh连接 装sshd ssh客户端版本较低&#xff0c;会报key exchange算法不匹配问题 ubuntun上装docker 将centos7下的安装包改造成适配 ubuntu的包 参考文章 扩容 Hyper-V 管理器安装的ubutun扩容磁盘空间说明_hype-v磁盘扩容-…

私域电商丨软件系统开发中,一定要避开的几个坑,看懂少很多弯路

文丨微三云胡佳东&#xff0c;点击上方“关注”&#xff0c;为你分享市场商业模式电商干货。 - 大家好&#xff0c;我是软件开发胡佳东&#xff0c;每天为大家分享互联网资讯干货&#xff01; 在数字化时代的今天&#xff0c;软件开发是已经成为推动科技进步和商业发展的重要…

【软件推荐】“聊崽”聊天机器人

不是广告&#xff01;不是广告&#xff01;不是广告&#xff01; 自己小团队开发的产品&#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 等领先的闭源模型…

python-绝对值排序(赛氪OJ)

[题目描述] 输入 n 个整数&#xff0c;按照绝对值从大到小排序后输出。保证所有整数的绝对值不同。输入格式&#xff1a; 输入数据有多组&#xff0c;每组占一行&#xff0c;每行的第一个数字为 n ,接着是 n 个整数&#xff0c; n0 表示输入数据的结束&#xff0c;不做处理。输…