springboot与flowable(8):候选人

一、流程绘制和部署

        创建流程图

        绘制如下流程图

        给人事审批添加候选人

        给经理审批添加两个候选人

        保存导出流程图

        部署流程定义

 @Test
    void contextLoads() {
        DeploymentBuilder deployment = repositoryService.createDeployment();
        deployment.addClasspathResource("process01/HolidayDemo1.bpmn20.xml");
        deployment.name("候选人案例");
        Deployment deploy = deployment.deploy();
        System.out.println("deploy.getId() = " + deploy.getId());
    }

二、拾取操作

        发起流程

    /**
     * 发起流程
     */
    @Test
    public void startProcess() {
        String id = "HolidayDemo1:1:93caf684-2af9-11ef-910c-644ed7087863";
        // 给人事审批候选人进行赋值
        Map<String, Object> variables = new HashMap<>();
        variables.put("candidate1", "zhangsan");
        variables.put("candidate2", "lisi");
        variables.put("candidate3", "wangwu");
        // 根据流程定义ID启动流程
        ProcessInstance processInstance = runtimeService.startProcessInstanceById(id, variables);
    }

        查看act_ru_task表发现assignee字段中审批人是空的。

        根据候选人查询待办信息,并将候选人变更为审批人,进行审批。

    /**
     * 根据用户查询待办信息
     */
    @Test
    public void findFlow() {
        List<Task> list = taskService.createTaskQuery().taskCandidateUser("zhangsan").list();
        // 根据id进行审批
        for (Task task : list) {
            // 把zhangsan由候选人变更为审批人
            taskService.claim(task.getId(), "zhangsan");
            completeTask(task.getId());
        }
    }

    /**
     * 根据Id审批任务
     */
    public void completeTask(String taskId) {
        // 定义经理审批候选人
        Map<String, Object> variables = new HashMap<>();
        variables.put("candidate4", "youwangzi1");
        variables.put("candidate5", "youwangzi2");
        taskService.complete(taskId, variables);
    }

        查看运行时用户关系信息表。

三、归还与指派

        归还操作:审批人 -> 候选人

    /**
     * 根据用户查询待办信息
     */
    @Test
    public void findFlow() {
        List<Task> list = taskService.createTaskQuery().taskCandidateUser("zhangsan").list();
        // 根据id进行审批
        for (Task task : list) {
            // 把zhangsan由候选人变更为审批人
            taskService.claim(task.getId(), "zhangsan");
            // 可以通过unclaim()方法将审批人归还回候选人。
            taskService.unclaim(task.getId());
            // completeTask(task.getId());
        }
    }

        指派新的审批人

    /**
     * 根据用户查询待办信息
     */
    @Test
    public void findFlow() {
        List<Task> list = taskService.createTaskQuery().taskCandidateUser("zhangsan").list();
        // 根据id进行审批
        for (Task task : list) {
            // 将当前任务指派给youwangzi用户进行审批
            task.setAssignee("youwangzi");
        }
    }

相关推荐

  1. Flowable使用docker中MySQL8Springboot启动出错

    2024-06-18 22:34:04       35 阅读

最近更新

  1. Docker 的基本概念和优势

    2024-06-18 22:34:04       0 阅读
  2. Ubuntu 下 Docker安装 2024

    2024-06-18 22:34:04       1 阅读
  3. C#中序列化和反序列化

    2024-06-18 22:34:04       1 阅读
  4. 微服务节流阀:Eureka中服务限流策略的精妙实现

    2024-06-18 22:34:04       1 阅读
  5. LVS集群

    LVS集群

    2024-06-18 22:34:04      1 阅读

热门阅读

  1. 自动抓取服务器功耗

    2024-06-18 22:34:04       8 阅读
  2. MySQL触发器基本结构

    2024-06-18 22:34:04       8 阅读
  3. 通过摄像头检测步频

    2024-06-18 22:34:04       7 阅读
  4. 通用与垂直,难以预测的胜负之争。

    2024-06-18 22:34:04       6 阅读
  5. C#心跳机制的服务器(完整)

    2024-06-18 22:34:04       9 阅读
  6. 网络安全--安全设备(一)Dos

    2024-06-18 22:34:04       8 阅读
  7. ARP攻击和DNS攻击有什么区别

    2024-06-18 22:34:04       6 阅读
  8. 加密excel(Python)

    2024-06-18 22:34:04       8 阅读
  9. IPV6单播和多播地址

    2024-06-18 22:34:04       6 阅读
  10. ros1转ros2的注意事项

    2024-06-18 22:34:04       6 阅读