springboot使用flowable(3)

22 篇文章 2 订阅

审批完成之后,领导说这个审批的流程有问题,不想要了,要撤回,那么我们来开发一个撤回的功能

package com.dmg.service;


public interface QjService {


    public void withdraw(Req req);
}
package com.dmg.service.impl;

@Service
public class QjServiceImpl implements QjService {


    @Autowired
    private QjMapper qjMapper;

    @Autowired
    private FlowService flowService;


    /**
     * 撤回
     * @param req
     */
    @Transactional
    @Override
    public void withdraw(Req req) {
        Qj qj=qjMapper.selectById(req.getId());
        if(!"3".equals(qj.getApprovalStatus())){
            throw new RuntimeException("当前状态,不是审批通过,不能撤回");
        }
        //状态改为未提交
        //流程实例id 清空 这样才能 启动新的流程实例 就和我们之前在提交请假单 启动流程实例的时候 结合上了
        UpdateWrapper<Qj>updateWrapper=new UpdateWrapper();
        updateWrapper.set("approval_status","1");
        updateWrapper.set("instance_id",null);
        updateWrapper.eq("id",qj.getId());
        qjMapper.update(qj,updateWrapper);
    }
}
package com.dmg.controller;

@RestController
@RequestMapping("/qj")
public class QjController {


    @Autowired
    private QjService qjService;



    /***
     * 撤回请假单
     * @param req
     * @return
     */
    @PostMapping("withdraw")
    public Result withdraw(@RequestBody Req req){
        qjService.withdraw(req);
        return Result.success();
    }
}

我们来看下结果

http://localhost:8080/qj/withdraw

{

    "id":"001"

}

 可以看到数据已经更改,这样我们就可以发起新的流程了

现在的流程,已经被撤回了一次,上一轮的审批过程也不知道在什么地方,所以这就是我们之前设计历史审批表的原因了,我们要看到他历史审批,不管他经历过多少轮,我们都能在历史审批表中查看到

package com.dmg.mapper;



public interface HisApprovalMapper extends BaseMapper<HisApproval> {


    /**
     * 查询历史审批
     * @param businessId 业务表主键
     * @return
     */
    List<HisApprovalVo> getList(@Param("businessId") String businessId);
}
<?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dmg.mapper.HisApprovalMapper">


<select id="getList" resultType="com.dmg.vo.HisApprovalVo">
    SELECT
    *
    FROM
    tb_his_approval
    WHERE business_id=#{businessId}
    ORDER BY approval_time desc
</select>
</mapper>
package com.dmg.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.util.Date;

@Data
public class HisApprovalVo {


    /**
     * 主键
     */
    private String id;

    /**
     * 业务表主键
     */
    private String businessId;

    /**
     * 审批人姓名
     */
    private String approvalName;

    /**
     * 审批时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date approvalTime;

    /**
     * 审批意见
     */
    private String approvalComments;

    /**
     * 审批附件的地址,可以看到当时上传的文件,这是属于你的扩展功能,可以在这里自己扩展
     */
    private String approvalAttachmentUrl;

    /**
     * 任务节点
     */
    private String taskName;

}
package com.dmg.service;

import com.dmg.vo.HisApprovalVo;

import java.util.List;

public interface HisApprovalService {

    public List<HisApprovalVo> getList(String businessId);
}
package com.dmg.service.impl;



@Service
public class HisApprovalServiceImpl implements HisApprovalService {


    @Autowired
    private HisApprovalMapper hisApprovalMapper;


    /**
     * 查询历史审批
     * @param businessId 业务表主键
     * @return
     */
    @Override
    public List<HisApprovalVo> getList(String businessId) {
       return hisApprovalMapper.getList(businessId);
    }

}
package com.dmg.controller;


@RestController
@RequestMapping("/hisApproval")
public class HisApprovalController {

    @Autowired
    private HisApprovalService hisApprovalService;


    /**
     *  查询历史审批信息
     */
    @PostMapping("getList")
    public Result getList(@RequestBody IdReq req){
        return Result.success(hisApprovalService.getList(req.getBusinessId()));
    }


}
package com.dmg.vo.req;

import lombok.Data;

@Data
public class IdReq {

    /**
     * 业务表主键
     */
    private String businessId;
}

我们来看下结果

http://localhost:8080/hisApproval/getList

{

    "businessKey":"001"

}

 可以看到 不管他撤回多少次,我们都能看到以前的审批信息,如果你之前上传了附件,也可以拿这个这个地址字段,在你的代码进行扩展。

springboot使用flowable(4)_我是一只代码狗的博客-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 是一个用于创建独立的、基于生产级别的 Spring 应用程序的框架,而 Flowable 是一个开源的业务流程管理 (BPM) 和工作流引擎。它允许您设计、执行和监控各种工作流程和业务流程。 要在 Spring Boot 中使用 Flowable,您可以通过以下步骤进行操作: 1. 添加 Maven 依赖:在 pom.xml 文件中添加 Flowable 的依赖项。例如: ```xml <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-spring-boot-starter</artifactId> <version>${flowable.version}</version> </dependency> ``` 2. 创建一个 Flowable 引擎:在您的应用程序中,您可以通过配置类或 XML 文件来创建 Flowable 引擎。以下是一个示例配置类: ```java @Configuration public class FlowableConfig { @Bean public ProcessEngineConfiguration processEngineConfiguration(DataSource dataSource) { StandaloneProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration(); configuration.setDataSource(dataSource); configuration.setDatabaseSchemaUpdate("true"); return configuration; } @Bean public ProcessEngine processEngine(ProcessEngineConfiguration processEngineConfiguration) { return processEngineConfiguration.buildProcessEngine(); } } ``` 3. 创建流程定义:使用 Flowable 的 API 或者 BPMN 2.0 建模工具(如 Flowable Modeler)创建您的流程定义,然后将其部署到 Flowable 引擎。 4. 执行流程:您可以使用 Flowable 的 API 来启动、执行和管理流程实例。例如: ```java @Autowired private RuntimeService runtimeService; public void startProcess(String processDefinitionKey) { runtimeService.startProcessInstanceByKey(processDefinitionKey); } ``` 5. 监控流程:Flowable 还提供了一些用于监控和管理流程实例的 API,您可以使用这些 API 来获取流程实例的状态、任务列表等信息。 以上是在 Spring Boot 中使用 Flowable 的基本步骤,您还可以根据具体需求使用 Flowable 的其他功能和扩展。希望对您有所帮助!如果您有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值