当前位置:   article > 正文

SpringBoot集成流程引擎实战,画流程图及流程启动篇(超详细)_流程引擎绘制流程

流程引擎绘制流程


前言:根据若依-流程引擎项目学习,需要完整代码请跳转至

https://gitee.com/shenzhanwang/RuoYi-activiti

用户任务(userTask) 代码和画图对应

流程启动的代码在下面,可以对照着画图好理解

leave为整个流程的标识,启动流程的时候就会传入流程标识

applyuserid为发起人的id,applyleave为流程节点的id,业务上可以通过该id查询处于该节点下的所有流程任务
applyuserid为发起人的id,applyleave

deptleader为部门领导的id,deptleaderaudit为流程节点的id,业务上可以通过该id查询处于该节点下的所有流程任务

hr为人事的id,hraudit为流程节点的id,业务上可以通过该id查询处于该节点下的所有流程任务

发起流程 代码

@Service
public class ActivitiServiceImpl implements ActivitiService
{

    @Resource
    private RuntimeService runtimeService;

    @Resource
    private TaskService taskService;

    @Resource
    IdentityService identityService;

    @Resource
    HistoryService historyService;

	/**
     * 发起流程
     * @param userId 流程发起人
     * @param key 业务表的唯一值
     * @param deptleader 部门领导的id
     * @param hr 人事的id
     */
    public void initiateProcess(String userId,String key,String deptleader,String hr)
    {
        //设置流程发起人
        identityService.setAuthenticatedUserId(userId);
        //创建流程变量
        HashMap<String, Object> variables = new HashMap<>();
        //发起人的id
        variables.put("applyuserid", userId);
        //部门领导的id
        variables.put("deptleader", deptleader);
        //人事的id
        variables.put("hr", hr);
        /**
         * 作用:启动 engineering 流程
         * 第一个参数为流程定义的key
         * 第二个参数为流程的唯一标识(一般和业务表的唯一标识一致,方便查询)
         * 第三个参数为流程变量(我这里只是用于存储审核人)
         */
        runtimeService.startProcessInstanceByKey("leave", key, variables);
    }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

网关(sequenceFlow) 代码和画图对应

流程启动的代码在下面,可以对照着画图好理解

网关 会根据流转条件走对应的用户任务 如带的false就会走调整申请的流程

网关 会根据流转条件走对应的用户任务 如带的true就会走调人事审批

用户审核 代码

	/**
     * 审核任务
     * @param taskId 任务id
     * @param userName 审核人名称
     * @param variables 请求参数{"approve": "false","comment": "不通过"}
     * @return
     */
    @Override
    public void auditingTask(String taskId, String userName, Map<String, Object> variables) {
		//设置代理(审核人)
        taskService.setAssignee(taskId, userName);
        // 通过任务id 查出流程实例id
        String processInstanceId = taskService.createTaskQuery().taskId(taskId).singleResult().getProcessInstanceId();
        if (variables == null) {
            taskService.complete(taskId);
        } else {
            // 添加审批意见
            if (variables.get("comment") != null) {
                taskService.addComment(taskId, processInstanceId, (String) variables.get("comment"));
                variables.remove("comment");
                variables.remove("taskId");
            }
            //提交任务
            taskService.complete(taskId, variables);
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

以上就是基础的画流程图及初步使用java执行流程引擎

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/57577
推荐阅读
相关标签
  

闽ICP备14008679号