基于jeecgboot的flowable流程增加节点表单的支持(三)

简介: 基于jeecgboot的flowable流程增加节点表单的支持(三)

在流程流转过程中增加节点表单的后端修改

8、complete的修改

      主要增加下面方法,就是有任务节点表单的时候,complete需要取出这个值来,之后要进行下面的complete,特别是需要true参数,否则会有问题,所以对原先多实例approval处理进行另外处理,不在这里进行处理了

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

9、flowrecord的修改,主要增加下面部分,就是历史表单参数与历史表单数据

// 获取历史任务节点表单数据值
                    List<HistoricVariableInstance> listHistoricVariableInstance = historyService.createHistoricVariableInstanceQuery()
                    .processInstanceId(procInsId)
                    .taskId(histIns.getTaskId())
                    .list();
                    
                    Map<String, Object> variables = new HashedMap<String, Object>();
                    Map<String, Object> formconf = new HashedMap<String, Object>();
                    
                    for(HistoricVariableInstance historicVariableInstance:listHistoricVariableInstance) {
                      variables.put(historicVariableInstance.getVariableName(), historicVariableInstance.getValue());
                    }
                    formconf.put("formValue", variables);
                     // 获取历史任务节点表单参数
                    if(Objects.nonNull(histIns.getTaskId())) {
                  HistoricTaskInstance taskIns = historyService.createHistoricTaskInstanceQuery()
                          .taskId(histIns.getTaskId())
                          .includeIdentityLinks()
                          .includeProcessVariables()
                          .includeTaskLocalVariables()
                          .finished()
                          .singleResult();
                      if (Objects.nonNull(taskIns)) {
                      {
                        String formId = taskIns.getFormKey();
                        SysForm sysForm = sysDeployFormService.selectCurSysDeployForm(formId, deployId, taskIns.getTaskDefinitionKey());
                        if (Objects.nonNull(sysForm)) {
                          formconf.put("config", JSONObject.parseObject(sysForm.getFormContent()).get("config"));
                          formconf.put("list", JSONObject.parseObject(sysForm.getFormContent()).get("list"));
                      }
                      }
                  }
                    }    
                    flowTask.setTaskFormValues(formconf);
                    
                    hisFlowList.add(flowTask);
                }
            }
            map.put("flowList", hisFlowList);
        }
        
        
        // 获取初始化自定义表单
        if(StringUtils.isNotBlank(businessKey)) {
          FlowMyBusiness business = flowMyBusinessService.getByDataId(businessKey);
          String serviceImplName = business.getServiceImplName();
          FlowCallBackServiceI flowCallBackService = (FlowCallBackServiceI) SpringContextUtils.getBean(serviceImplName);
          // 流程处理完后,进行回调业务层
          if (flowCallBackService!=null){
            Object businessDataById = flowCallBackService.getBusinessDataById(businessKey);
            map.put("formData",businessDataById);
            map.put("routeName", business.getRouteName());
          }
        }
        else {
           if (StringUtils.isNotBlank(deployId)) {
            //获取当前节点的初始化表单
            if(Objects.nonNull(taskId)) {
              HistoricTaskInstance taskIns = historyService.createHistoricTaskInstanceQuery()
                      .taskId(taskId)
                      .includeIdentityLinks()
                      .includeProcessVariables()
                      .includeTaskLocalVariables()
                      .singleResult();
                  if (Objects.nonNull(taskIns)) {
                    String formId = taskIns.getFormKey();
                    SysForm sysForm = sysDeployFormService.selectCurSysDeployForm(formId, deployId, taskIns.getTaskDefinitionKey());
                    if (Objects.nonNull(sysForm)) {
                      map.put("taskFormData", JSONObject.parseObject(sysForm.getFormContent()));
                  }
                  }
              }
            else {
              SysForm sysForm = sysDeployFormService.selectSysDeployFormByDeployId(deployId);
                if (Objects.isNull(sysForm)) {
                    return Result.error("请先配置流程表单");
                }
                map.put("formData", JSONObject.parseObject(sysForm.getFormContent()));
            }
          }


相关文章
|
9月前
|
前端开发
基于jeecgboot的flowable流程支持退回到发起人节点表单修改功能
基于jeecgboot的flowable流程支持退回到发起人节点表单修改功能
692 0
|
8月前
|
前端开发 数据库 JavaScript
基于Flowable的流程挂接自定义业务表单的设计与实践
文章讨论了如何在Flowable流程引擎中挂接自定义业务表单,以及相关设计和实践的步骤。文章中包含了一些前后端代码示例,如Vue组件的模板和脚本部分,这些代码用于实现与Flowable流程引擎交互的界面。例如,有一个按钮组件用于提交申请,点击后会触发applySubmit方法,该方法会与后端API进行交互,处理流程启动、查询关联流程等逻辑。
50186 11
|
9月前
|
前端开发
基于jeecgboot的flowable流程增加节点表单的支持(四)
基于jeecgboot的flowable流程增加节点表单的支持(四)
103 1
|
9月前
|
前端开发
基于jeecgboot的flowable流程增加节点自动跳过功能
基于jeecgboot的flowable流程增加节点自动跳过功能
577 2
|
9月前
|
前端开发
基于jeecgboot的flowable流程设计器的用户选择问题修复
基于jeecgboot的flowable流程设计器的用户选择问题修复
119 1
|
9月前
|
监控 前端开发 NoSQL
基于jeecgboot的flowable复杂会签加用户选择流程实现
基于jeecgboot的flowable复杂会签加用户选择流程实现
195 2
|
9月前
基于jeecgboot的flowable流程支持online表单审批线上发布
基于jeecgboot的flowable流程支持online表单审批线上发布
90 1
|
9月前
|
前端开发
基于jeecgboot的flowable流程任务excel导出功能
基于jeecgboot的flowable流程任务excel导出功能
106 1
|
9月前
基于jeecgboot的flowable流程增加节点表单的支持(一)
基于jeecgboot的flowable流程增加节点表单的支持(一)
116 0
|
9月前
基于jeecgboot的flowable流程增加节点表单的支持(二)
基于jeecgboot的flowable流程增加节点表单的支持(二)
134 0