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 {
    // 提供对流程定义和部署的存储库的访问。
    @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。

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

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-17 19:16:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-17 19:16:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-17 19:16:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-17 19:16:02       20 阅读

热门阅读

  1. MySQL用户权限管理详解

    2024-06-17 19:16:02       5 阅读
  2. 榆林通讯工程元宇宙:虚拟融合现实的信息桥梁

    2024-06-17 19:16:02       8 阅读
  3. C# 语言类型(三)—数组/枚举类型/结构体

    2024-06-17 19:16:02       9 阅读
  4. 3.5. 马氏链-平稳测度(1)

    2024-06-17 19:16:02       7 阅读
  5. Python程序设计 文件和异常 笔记整理

    2024-06-17 19:16:02       11 阅读
  6. 徐州BGP服务器租用的好处有哪些?

    2024-06-17 19:16:02       6 阅读