工作流flowable实现撤回

这篇具有很好参考价值的文章主要介绍了工作流flowable实现撤回。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Flowable是一个开源的工作流引擎,可以实现工作流程的自动化管理,包括任务分配、流转、审批等。如果需要实现撤回功能,可以考虑以下方案:

在流程定义中添加一个撤回节点,允许任务的发起人在任务未被处理前撤回任务。当发起人选择撤回任务时,任务将被撤回至撤回节点,由发起人修改后再次提交任务。

在任务表中添加一个状态字段,记录任务的状态,例如待处理、已处理、已撤回等。当任务被撤回时,将任务状态改为已撤回,同时在任务历史表中记录撤回记录,方便后续查询。

在任务节点中添加一个监听器,监听任务状态的变化,当任务状态变为已撤回时,将任务撤回至上一个处理节点或撤回节点,由处理人重新处理任务。

需要注意的是,在实现撤回功能时需要考虑到安全性和合理性,例如撤回的时间限制、撤回次数限制等。

以下是一个简单的Java代码示例,演示如何实现流程任务的撤回功能:
1.添加撤回节点

<userTask id="cancelTask" name="撤回任务" flowable:assignee="${initiator}">
  <extensionElements>
    <flowable:formProperty id="reason" name="撤回原因" type="string" required="true" />
  </extensionElements>
</userTask>

其中 i n i t i a t o r 表示任务的发起人, {initiator}表示任务的发起人, initiator表示任务的发起人,{reason}表示撤回原因,可以根据需要修改。
2.更新任务状态
在任务表中添加一个状态字段,例如:

@Entity
@Table(name = "flowable_task")
public class FlowableTask {
    // 其他字段省略
    @Column(name = "status")
    private String status = "pending"; // 任务状态,默认为待处理

    // getter 和 setter 方法省略
}

3.监听任务状态变化
在任务节点中添加一个监听器,例如:

<userTask id="task1" name="任务1" flowable:assignee="${assignee}">
  <extensionElements>
    <flowable:executionListener event="end" class="com.example.TaskStatusListener" />
  </extensionElements>
</userTask>

其中com.example.TaskStatusListener是一个实现org.flowable.engine.delegate.ExecutionListener接口的监听器,例如:

@Component
public class TaskStatusListener implements ExecutionListener {
    @Autowired
    private TaskService taskService;

    @Override
    public void notify(DelegateExecution execution) {
        String taskId = execution.getVariable("taskId");
        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
        if (task != null) {
            String status = (String) execution.getVariable("status");
            if (status != null) {
                task.setStatus(status); // 更新任务状态
                taskService.saveTask(task); // 保存任务
            }
        }
    }
}

4.实现撤回操作
在业务代码中实现撤回操作,例如:

@Service
public class TaskService {
    @Autowired
    private RuntimeService runtimeService;
    @Autowired
    private TaskRepository taskRepository;

    public void cancelTask(String taskId, String reason) {
        // 获取当前任务
        FlowableTask task = taskRepository.findById(taskId).orElseThrow(() -> new RuntimeException("任务不存在"));
        if (!task.getStatus().equals("pending")) {
            throw new RuntimeException("任务已被处理,不能撤回");
        }
        // 创建撤回任务
        Map<String, Object> variables = new HashMap<>();
        variables.put("initiator", task.getAssignee());
        variables.put("reason", reason);
        runtimeService.createProcessInstanceModification(task.getProcessInstanceId())
                .cancelActivityInstanceId(task.getExecutionId())
                .startBeforeActivity("cancelTask")
                .setVariables(variables)
                .execute();
        // 更新任务状态
        task.setStatus("cancelled");
        taskRepository.save(task);
    }
}

其中taskId为需要撤回的任务ID,reason为撤回原因,具体实现可根据业务场景和需求进行调整。文章来源地址https://www.toymoban.com/news/detail-491508.html

到了这里,关于工作流flowable实现撤回的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot集成Flowable工作流

    官方文档: https://tkjohn.github.io/flowable-userguide/#_introduction Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据,等等

    2024年02月15日
    浏览(47)
  • Flowable工作流入门&完整SpringBoot案例

    工作流(Workflow),是指对于一项业务,按照规定的流程,逐级传递、申请、执行等,并且受到了严格控制的一种业务过程。 BPM(Business Process Management)是指对于某项业务的整个生命周期进行全面管理的一种模式,最核心的内容包括了工作流、决策、交互等。在这些管理过程

    2024年02月12日
    浏览(44)
  • 【学习笔记】Flowable - 01 - 工作流 快速上手

    JDK8 Flowable6 (6.3 or 6.7.2) Postgresql (MySQL同样支持) 波哥:2023年Flowable详细讲解 波哥:2022年Flowable教程-基础篇 Flowable BPMN 用户手册 中文 官方网站 官方github源码 IDEA低版本提供一个BPMN解析插件: 但是并没有很好的支持流程的绘制。 存在几个工具: 古老的Eclipse(太老的不推荐 官

    2024年01月19日
    浏览(44)
  • Spring Boot 中动态创建 Flowable 工作流

    在 Spring Boot 中动态创建 Flowable 工作流可以通过以下步骤实现: 1. 创建 Flowable 配置:首先,您需要在 Spring Boot 应用程序中配置 Flowable。您可以使用 Spring Boot 的配置文件或注解来配置 Flowable。 2. 创建工作流定义:接下来,您需要创建工作流定义。您可以使用 Flowable 的 API 来

    2024年02月10日
    浏览(41)
  • 若依(RuoYi-Vue)+Flowable工作流前后端整合教程

    此教程适合若依前后端分离项目,其他项目可以在扩展列表中进行查找。 近期公司里需要对很久以前的RuoYi-Vue前后端分离项目扩展出flowable的功能,当然这个重任也是落在了我的身上(不然也不会有这篇文章),然后我在官网看到了RuoYi-Vue-Flowable这个项目,按照文档提供的迁

    2023年04月21日
    浏览(58)
  • 工作流Flowable入门教程:flowableUI的安装使用,RepositoryService、RuntimeService、TaskService、HistoryService的使用

    Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据,等等。这个章节将用一个可以在你自己的开发环境中使用的例

    2024年01月18日
    浏览(58)
  • 一个开源的汽修rbac后台管理系统项目,基于若依框架,实现了activiti工作流,附源码

    为了更加熟悉activiti工作流的使用和实战而改造的项目,欢迎大家参考和提出问题建议一起学习~ 源码gitee仓库地址:Yuzaki-NASA / Activiti7_test_car_rbac master分支是稳定版,dev分支是后来加了个新的并行审核流程和客户管理,个人测了多遍没啥问题,建议拉dev的代码。 sql文件在car

    2024年03月23日
    浏览(47)
  • Camunda 7工作流引擎 API 以及与Springboot集成实现工作流配置全纪录

    项目中需要用到工作流引擎来设计部分业务流程,框架选型最终选择了 Camunda7,关于 Camunda以及 Activity 等其他工作流 引擎的介绍及对比不再介绍,这里只介绍与现有Springboot项目的集成以及具体使用及配置 流程(PROCESS): 通过工具建模最终生成的BPMN文件,里面有整个流程的定

    2024年02月10日
    浏览(57)
  • Spring Boot 整合 Camunda 实现工作流

    工作流是我们开发企业应用几乎必备的一项功能,工作流引擎发展至今已经有非常多的产品。最近正好在接触 Camunda ,所以来做个简单的入门整合介绍。如果您也刚好在调研或者刚开始计划接入,希望本文对您有所帮助。如果您是一名Java开发或Spring框架爱好者,欢迎关注我程

    2024年01月18日
    浏览(68)
  • Spring Boot + Activiti 结合,实现工作流

    Activiti是一个工作流引擎,Activiti可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0进行定义,业务流程按照预先定义的流程进行执行,实现了系统的流程由Activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,Activiti流程就是数据库表

    2023年04月13日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包