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执行流程引擎

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot可以与不同的流程引擎进行整合,最常用的流程引擎是Activiti。 下面是Spring Boot整合Activiti流程引擎的步骤: 1. 添加依赖:在pom.xml文件中添加Activiti和Spring Boot的依赖。 ```xml <dependencies> <!-- Activiti --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <version>6.0.0</version> </dependency> </dependencies> ``` 2. 配置数据源:在application.properties或application.yml文件中配置数据源信息。 ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC username: root password: password driver-class-name: com.mysql.cj.jdbc.Driver ``` 3. 配置Activiti引擎:创建一个配置类来配置Activiti引擎。 ```java @Configuration public class ActivitiConfig { @Autowired private DataSource dataSource; @Bean public ProcessEngineConfiguration processEngineConfiguration() { SpringProcessEngineConfiguration configuration = new SpringProcessEngineConfiguration(); configuration.setDataSource(dataSource); configuration.setDatabaseSchemaUpdate("true"); return configuration; } @Bean public ProcessEngine processEngine() { return processEngineConfiguration().buildProcessEngine(); } @Bean public RepositoryService repositoryService() { return processEngine().getRepositoryService(); } @Bean public RuntimeService runtimeService() { return processEngine().getRuntimeService(); } @Bean public TaskService taskService() { return processEngine().getTaskService(); } @Bean public HistoryService historyService() { return processEngine().getHistoryService(); } } ``` 4. 创建流程定义:在resources目录下创建一个activiti文件夹,将BPMN2.0格式的流程定义文件放入其中。 5. 编写业务代码:根据业务需求编写相关的Service类和Controller类,使用Activiti提供的API来管理和执行流程。 这些步骤可以帮助你在Spring Boot项目中整合Activiti流程引擎。当然,除了Activiti,你也可以考虑其他的流程引擎,如Camunda等,整合步骤可能会有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值