修正flowable流程支持节点表单字段条件判断

简介: 修正flowable流程支持节点表单字段条件判断

   原先条件判断在主表单是可以正常的判断的,但用节点的表单就出现问题了。

出现下面错误:

      就起原因还是在complete里出现问题了。

     通过跟踪还是下面的代码出现报错

private void taskFormComplete(FlowTaskVo taskVo) {
      if(taskVo.getValues() !=null && taskVo.getValues().containsKey("taskformvalues")) {//有任务节点表单
        @SuppressWarnings("unchecked")
      Map<String , Object> taskformvalues = (Map<String, Object>) taskVo.getValues().get("taskformvalues");
        taskService.complete(taskVo.getTaskId(),taskformvalues,true);//保存taskformvalues到变量表里
      }
      else {
        taskService.complete(taskVo.getTaskId());
      }
    }

其中 taskService.complete(taskVo.getTaskId(),taskformvalues,true);//保存taskformvalues到变量表里  这里报错了,看官方说明就是

void org.flowable.engine.TaskService.complete(String taskId, Map<String, Object> variables, boolean localScope)

localScope If true, the provided variables will be stored task-local, instead of process instance wide (which is the default for complete(String, Map)).

这里true跟通常缺省的还是不一样,所以应该要去掉这个参数或变成false,同时增加下面一句

taskService.setVariableLocal(taskVo.getTaskId(), "taskformvalues", taskformvalues);

这样既保留原来的功能,又能正常运行。如下:

/**
     * 任务节点有表单的操作
     *
     * @param taskVo
     */
    private void taskFormComplete(FlowTaskVo taskVo) {
      if(taskVo.getValues() !=null && taskVo.getValues().containsKey("taskformvalues")) {//有任务节点表单
        @SuppressWarnings("unchecked")
      Map<String , Object> taskformvalues = (Map<String, Object>) taskVo.getValues().get("taskformvalues");
        taskService.setVariableLocal(taskVo.getTaskId(), "taskformvalues", taskformvalues);
        taskService.complete(taskVo.getTaskId(),taskformvalues);//保存taskformvalues到变量表里
      }
      else {
        taskService.complete(taskVo.getTaskId());
      }
    }

效果图如下:

利用节点表单里的表单内容money值来走不通的流程

 


相关文章
18activiti - 流程管理定义(删除key相同的所有不同版本的流程定义)
18activiti - 流程管理定义(删除key相同的所有不同版本的流程定义)
49 0
|
4天前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
4月前
|
SQL 前端开发 Java
若依修改03----利用若依代码生成器,生成课程管理的前后端代码,课程的条件搜索接口,一旦数据表创建好了,直接交给若依代码的生成器就好了,配置代码生成信息,包含基本信息,字段信息,生成信息。字段信息决
若依修改03----利用若依代码生成器,生成课程管理的前后端代码,课程的条件搜索接口,一旦数据表创建好了,直接交给若依代码的生成器就好了,配置代码生成信息,包含基本信息,字段信息,生成信息。字段信息决
|
4月前
|
Java 数据库连接 应用服务中间件
表单数据返回不到,HTTP状态 404 - 未找未找到,解决方法,针对这个问题,写一篇文章,理一下思路,仔细与原项目比对,犯错的原因是Mapper层的select查询表单数据写错,注意打开的路径对不对
表单数据返回不到,HTTP状态 404 - 未找未找到,解决方法,针对这个问题,写一篇文章,理一下思路,仔细与原项目比对,犯错的原因是Mapper层的select查询表单数据写错,注意打开的路径对不对
|
5月前
|
监控 Java
记录页面修改差异(java注解实现)
记录页面修改差异(java注解实现)
|
6月前
|
存储 Java 关系型数据库
定时任务配置技巧:将表达式配置在业务员代码之外的方法
该文档介绍了三种不同的方法来定义和管理Java中的定时任务。首先,通过在数据库中创建一个表来存储定时任务的执行周期,并在Spring Boot应用中使用`@Scheduled`注解配合数据库查询来动态执行定时任务。其次,将定时任务的配置移动到Apollo配置中心,利用Apollo的配置能力来控制定时任务的执行。最后,使用Quartz框架并结合Apollo配置文件,动态地管理定时任务的触发间隔和执行时间。此外,还提到了在多机器环境中,可以使用分布式锁来避免任务重复,并推荐了xxl-JOB和elastic-job作为更专业的定时任务解决方案。
97 2
|
6月前
|
存储 自然语言处理
平台设计-代码字段与标签
在平台里描述对象的属性可以使用代码和标签
27activiti - 流程变量(查询历史的流程变量)
27activiti - 流程变量(查询历史的流程变量)
57 0
|
SQL 存储 数据库
Flowable 设置流程变量的四种方式
Flowable 设置流程变量的四种方式
1184 0
“关联表单”组件文本数据筛选只支持包含条件的解决方案
在“关联表单”中使用数据筛选功能筛选文本时条件只有”包含“,此文章通过增加一个”下拉单选“组件,变相解决这个问题。
199 0