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

springboot与flowable(5):任务分配(表达式)

        在做流程定义时我们需要给相关的用户节点指派对应的处理人。在flowable中提供了三种分配的方式。

一、固定分配

        在分配用户时选择固定值选项确认即可。

二、表达式

1、值表达式

2、方法表达式

三、表达式流程图测试

1、导出并部署

        导出流程图,复制到项目中

        部署流程

package org.example.flowabledemo2;import org.flowable.engine.RepositoryService;
import org.flowable.engine.repository.Deployment;
import org.flowable.engine.repository.DeploymentBuilder;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class FlowableDemo2ApplicationTests {// 提供对流程定义和部署的存储库的访问。@Autowiredprivate RepositoryService repositoryService;@Testvoid contextLoads() {DeploymentBuilder deployment = repositoryService.createDeployment();deployment.addClasspathResource("process01/Example01.bpmn20.xml");deployment.name("表达式流程图");Deployment deploy = deployment.deploy();System.out.println("deploy.getId() = " + deploy.getId());}
}

        在act_re_deployment流程定义表中查看部署的信息

2、值表达式测试

/*** 发起流程*/@Testpublic void startProcess() {String id = "Example01:1:099febed-2a3a-11ef-a0cf-644ed7087863";// 根据流程定义ID启动流程ProcessInstance processInstance = runtimeService.startProcessInstanceById(id);}

        获取zhangsan的待办事项,进行审批

    /*** 根据用户查询待办信息*/@Testpublic void findFlow() {List<Task> list = taskService.createTaskQuery().taskAssignee("zhangsan").list();// 根据id进行审批for (Task task : list) {completeTask(task.getId());}}/*** 根据Id审批任务*/public void completeTask(String taskId) {taskService.complete(taskId);}

        此时会报错,原因是没有给myAssign1赋值。

        需要个给myAssign1赋予一个值。

    /*** 根据Id审批任务*/public void completeTask(String taskId) {// 给表达式绑定一个值。Map<String, Object> variables = new HashMap<String, Object>();variables.put("myAssign1", "lisi");taskService.complete(taskId, variables);}

        查询任务进度,到达审批用户2,审批人lisi

3、方法表达式测试

        创建一个对应的java类。

package org.example.flowabledemo2.bean;import org.springframework.stereotype.Component;@Component
public class MyBean {public String getAssignee() {System.out.println("MyBean.getAssignee()");return "wangwu";}
}

        使lisi通过审批查看效果。

    /*** 根据用户查询待办信息*/@Testpublic void findFlow() {List<Task> list = taskService.createTaskQuery().taskAssignee("lisi").list();// 根据id进行审批for (Task task : list) {completeTask(task.getId());}}/*** 根据Id审批任务*/public void completeTask(String taskId) {taskService.complete(taskId);}

        查看任务进度,当前进度是审批用户3,审批人wangwu。

        在使用王五进行审批,当前任务结束。 

http://www.lryc.cn/news/372659.html

相关文章:

  • 如何使用CCS9.3打开CCS3.0工程
  • Stable Diffusion 3 Medium 模型
  • 数据分析------统计学知识点(五)
  • Superset二次开发之Git篇 git remote
  • 记录一下PHP使用微信小程序支付
  • 【数据结构初阶】 --- 单链表
  • 并发、多线程、HTTP连接数有何关系?
  • 鸿蒙轻内核Kconfig使用笔记
  • react 0至1 案例
  • 基于MCU平台的HMI开发的性能优化与实战(上)
  • 【Tkinter界面】Canvas 图形绘制(02/5)
  • 1_常见指令【Linux中常见30个指令的学习和使用】【万字长文】
  • 每日复盘-202406014
  • JavaScript 深拷贝和浅拷贝的实现、使用场景和存在的问题
  • 8个常用的辅助函数!!
  • 服务器数据恢复—OceanStor存储中NAS卷数据丢失如何恢复数据?
  • 54.Python-web框架-Django-免费模板django-datta-able
  • XP系统安装Node.js v8.6.0并搭建Vue2开发环境(项目兼容到Vista的IE9浏览器)
  • redis序列化
  • IOT-Tree 1.7.0实现了一个类似Node-Red的流程功能
  • nc网络收发测试-tcp客户端\TCP服务器\UDP\UDP广播
  • 程序员该有怎么样的职业素养
  • 51交通灯
  • 鸿蒙Arkts上传图片并获取接口返回信息
  • 超文本标记语言(HTML)简介
  • 使用thymeleaf直接渲染字符串
  • Spring Boot整合发送QQ邮箱功能
  • Milvus向量数据库
  • python cls的使用
  • idea中maven下载依赖缓慢解决方法