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

news/2024/7/7 20:09:18

        在做流程定义时我们需要给相关的用户节点指派对应的处理人。在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 {
    // 提供对流程定义和部署的存储库的访问。
    @Autowired
    private RepositoryService repositoryService;

    @Test
    void 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、值表达式测试

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

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

    /**
     * 根据用户查询待办信息
     */
    @Test
    public 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通过审批查看效果。

    /**
     * 根据用户查询待办信息
     */
    @Test
    public 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://lihuaxi.xjx100.cn/news/2217797.html

相关文章

反向海淘代购系统集成功能详解:从商品对接到物流转运的一体化解决方案

随着全球化进程的加速&#xff0c;反向海淘&#xff08;即从国外购买商品至国内&#xff09;的需求日益增长。为满足这一市场趋势&#xff0c;反向海淘代购系统正不断进化&#xff0c;集成多种功能以提供更加便捷、高效的服务。本文将深入探讨反向海淘代购系统的核心集成功能&a…

xml与动态SQL

XML映射文件 规范 XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)。 ● XML映射文件的namespace属性为Mapper接口全限定名一致。 ● XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。 动态SQL &…

Zenity向Ubuntu系统发送通知

文章目录 前言 一、Zenity是什么&#xff1f; 二、使用步骤 1.确认是否已安装 2.使用 三. 结论 前言 大家都知道&#xff0c;久坐带来的后果有多么痛苦&#xff0c;但是每天上班&#xff0c;一坐一整天&#xff0c;想着起来活动一下&#xff0c;干起活来就又忘啦&#x…

《纪元 1800》好玩吗? 苹果电脑能玩《纪元 1800》吗?

《纪元1800》是一款不错的策略游戏&#xff0c;这款游戏因为画面和玩法独特深受玩家们的喜爱。下面我们来看看《纪元 1800》好玩吗&#xff0c;苹果电脑能玩《纪元 1800》吗的相关内容。 一、《纪元1800》好玩吗 《纪元1800》是一款备受瞩目的策略游戏。下面让我们来看看这款…

【踩坑】修复Ubuntu远程桌面忽然无法Ctrl C/V复制粘贴及黑屏

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 说在前面&#xff1a; 需要注意的是&#xff0c;我发现他应该是新开了一个窗口给我。我之前打开的东西&#xff0c;在这个新窗口里都没有了&#xff0c…

50etf期权交易规则杠杆怎么计算?

今天带你了解50etf期权交易规则杠杆怎么计算&#xff1f;近年来&#xff0c;期权交易在股票市场中变得愈发流行&#xff0c;其中50ETF期权备受关注。作为一种金融衍生品&#xff0c;50ETF期权为投资者提供了更灵活的投资方式和更多的策略选择。 50etf期权交易规则杠杆怎么计算&…

网络层只懂路由?这9个知识点被严重低估了

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 下午好&#xff0c;我的网工朋友。 网络层想必你已经耳熟能详&#xff0c;它的作用自然是不容小觑。 它负责将数据从源头准确地投递到目的地&am…

【AI绘画】文心一格

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…