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

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);
    }
    }

网关(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);
        }
    }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值