当前位置: 首页 > news >正文

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://www.xdnf.cn/news/848773.html

相关文章:

  • 后台-husky提交代码规范使用
  • 青柠起始页——一言接口调用
  • ELF文件格式的详解
  • Hue概述,核心功能,架构说明
  • 什么是MVC模式
  • 保姆级教程,龙蜥操作系统安装使用一步到位!
  • Netty框架基本介绍
  • Python Spyder开发的应用项目_pyscada应用
  • 终于有人把华为认证全部说清楚了
  • 广告召回率是什么意思_图解机器学习的准确率、精准率、召回率、F1、ROC曲线、AUC曲线...
  • Linux---项目自动化构建工具-make/Makefile
  • ViT (Visual Transformer)
  • 阿里云域名搭建DNSLOG
  • 深度学习AI编译器-LLVM简介
  • 枚举概念与特性
  • 【Java开发环境配置】7-Apache Tomcat安装教程环境变量配置IDEA配置(27)
  • base64编码简介
  • 频率与补偿(下)
  • 一文带你了解MindSpore的知识及安装入手
  • 我收集的搜索引擎
  • 带你深入了解Android Handler的用法
  • Java HashMap 详解
  • 2024热门专业详细解读:信息安全专业及其就业前景(1)
  • UE4动态修改物体材质
  • B 站疯传,堪称最强,10 大免费的白嫖网站
  • 浏览器输入127.0.0.1显示拒绝访问
  • 网络安全入门,渗透测试详细介绍和流程方法
  • Linux---cp和mv命令选项
  • 23种模式——策略模式
  • JavaScript(JS)的indexOf和lastIndexOf函数全解析