springboot使用flowable(5)

22 篇文章 2 订阅

这个时候 如果我们来查看一下流程图的xml信息

package com.dmg.service;


public interface FlowService {


    String getXml(String processDefinitionKey);
}
package com.dmg.service.impl;


/**
 * 流程定义服务实现类
 */
@Service
public class FlowServiceImpl extends FlowServiceFactory implements FlowService {

    @Autowired
    private HisApprovalMapper hisApprovalMapper;
    @Autowired
    private QjMapper qjMapper;


    /**
     * 获取xml信息
     * @param processDefinitionKey 流程定义key
     * @return
     */
    @Override
    public String getXml(String processDefinitionKey) {
        //查询流程定义最新版本 一定要是最新的版本
        ProcessDefinition processDefinition=repositoryService.createProcessDefinitionQuery()
                .processDefinitionKey(processDefinitionKey)
                .latestVersion()
                .singleResult();
        //拿到xml 然后转换成流 放入字节数组中
        String deploymentId=processDefinition.getDeploymentId();
        //请假流程.bpmn20.xml
        String resourceName=processDefinition.getResourceName();
        InputStream inputStream=repositoryService.getResourceAsStream(deploymentId,resourceName);
        String str="";
        try {
            str=IOUtils.toString(inputStream, "utf-8");
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return str;
    }

   

}
package com.dmg.controller;



/**
 * 流程定义控制层
 */
@RestController
public class ProcessDefinitionController {

    @Autowired
    private FlowService flowService;



    /**
     * 查看xml
     * @param processDefinitionKey 流程定义key
     * @return
     */
    @GetMapping(value = "getXml")
    public String getXml(String processDefinitionKey){
        return flowService.getXml(processDefinitionKey);
    }

}

我们可以看下结果

http://localhost:8080/getXml?processDefinitionKey=qj

已经部署的流程 我们想要删除该怎么办呢?

package com.dmg.vo.req;

import lombok.Data;

@Data
public class FlowReq extends PageReq{

    /**
     * 流程定义名称
     */
    private String processDefinitionName;


    /**
     * 流程定义key
     */
    private String processDefinitionKey;


    /**
     * 任务id
     */
    private String taskId;


    /**
     *  当前人账号
     */
    private String account;


    /**
     * 流程定义id
     */
    private String processDefinitionId;

    /**
     * 流程实例id
     */
    private String processInstanceId;

    /**
     * 部署id
     */
    private String deploymentId;

    /**
     *  如果为true 已经启动的流程关联的数据也一并删除 历史流程也会删除
     *  如果为false 只删除运行 并且没有任务的流程信息
     */
    private Boolean cascade;
}
package com.dmg.controller;


/**
 * 流程定义控制层
 */
@RestController
public class ProcessDefinitionController {

    @Autowired
    private FlowService flowService;
    @Autowired
    private RepositoryService repositoryService;



    /**
     * 删除流程定义
     * @return
     */
    @PostMapping(value = "deleteProcessDefinition")
    public Result deleteProcessDefinition(@RequestBody FlowReq req){
        //删除流程定义
        repositoryService.deleteDeployment(req.getDeploymentId(),req.getCascade());
        return Result.success();
    }

}

我们可以看下结果

http://localhost:8080/deleteProcessDefinition

{

    "deploymentId":"6ea54972-6d3a-11ed-b21c-005056c00008",

    "cascade":true

}

 如果为true 已经启动的流程关联的数据也一并删除 历史流程也会删除

 如果为false 只删除运行 并且没有任务的流程信息

 如果设置false 删除有任务的数据,那么就会报错

之前我们做了认领任务,那么我不想去审批了,也可以吧任务归还

package com.dmg.controller;




/**
 * 流程定义控制层
 */
@RestController
public class ProcessDefinitionController {

    @Autowired
    private FlowService flowService;
    @Autowired
    private RepositoryService repositoryService;
    @Autowired
    private TaskService taskService;




    /**
     * 取消认领/归还任务
     * @return
     */
    @PostMapping(value = "unclaim")
    public Result unclaim(@RequestBody FlowReq req){
        Task task = taskService.createTaskQuery().taskId(req.getTaskId())
                .singleResult();
        if(task==null){
            throw new RuntimeException("任务不存在");
        }
        taskService.unclaim(task.getId());
        return Result.success();
    }


}

我们来看下结果

http://localhost:8080/unclaim

{

    "taskId":"5076d418-6d96-11ed-9e9c-005056c00008"

}

 可以看到审批人 已经设置为空了

如果当前人如果不想审批了,也可以吧任务重新交给一个新的人去审批

package com.dmg.controller;




/**
 * 流程定义控制层
 */
@RestController
public class ProcessDefinitionController {

    @Autowired
    private FlowService flowService;
    @Autowired
    private RepositoryService repositoryService;
    @Autowired
    private TaskService taskService;



   /**
     * 转办
     * @return
     */
    @PostMapping(value = "setAssignee")
    public Result setAssignee(@RequestBody FlowReq req){
        Task task = taskService.createTaskQuery().taskId(req.getTaskId())
                .singleResult();
        if(task==null){
            throw new RuntimeException("任务不存在");
        }
        //根据任务id 把审批人 设置为新的审批人
        taskService.setAssignee(task.getId(),req.getAccount());
        return Result.success();
    }
}

我们来看下结果

http://localhost:8080/setAssignee

{

    "taskId":"5076d418-6d96-11ed-9e9c-005056c00008",

    "account":"wangwu"

}

我们可以看到审批人已经变成了wangwu 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想在Spring Boot项目中使用Flowable,你可以通过引入相应的依赖来实现。根据引用的内容,你可以添加以下依赖到你的项目中: ```xml <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-spring-boot-starter</artifactId> <version>6.7.2</version> </dependency> <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-spring-boot-starter-actuator</artifactId> <version>6.7.2</version> </dependency> ``` 你也可以从引用和引用中提供的链接中下载Flowable的zip文件。这些文件包含了Flowable引擎的各个组件和执行器。下载并解压缩zip文件后,你可以将Flowable引擎部署到Tomcat服务器上,从而在Spring Boot项目中使用Flowable。 希望以上信息能帮助到你。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Spring Boot + Flowable 工作流引擎](https://blog.csdn.net/qq_39035773/article/details/125414301)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [SpringBoot + Flowable使用](https://blog.csdn.net/fajing_feiyue/article/details/116209534)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [SpringBoot + Flowable的基础使用](https://blog.csdn.net/S0001100/article/details/120042604)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值