首页 > 其他分享 >基于jeecgboot-vue3的Flowable流程-流程处理(一)

基于jeecgboot-vue3的Flowable流程-流程处理(一)

时间:2024-06-13 21:57:30浏览次数:20  
标签:Flowable res 流程 value customForm result jeecgboot taskFormData formData

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。

这部分修正一些流程处理中VForm3线上的一些bug问题

1、初始化流程提交与现实的前端页面代码

<!--初始化流程加载默认VForm3表单信息-->
      <el-col :span="16" :offset="4" v-if="formConfOpen">
        <div class="test-form">
          <!--<form-builder ref="formBuilder" v-model="formVal" :buildData="formCode" /> -->
          <v-form-render :form-json="formModel" :nbcioHeader="nbcioHeader" :form-data="formData" ref="vfRenderRef" />
          <div style="margin-bottom: 15px; text-align: center">
            <el-button type="primary" class="button" @click="submitForm">提交</el-button>
          </div>
        </div>
      </el-col>
      <!--初始化流程加载显示VForm3表单-->
      <el-col :span="16" :offset="4" v-if="formViewOpen">
        <div class="test-form">
          <v-form-render :form-json="formModel" :form-data="formData" ref="vFormRenderRef" />
        </div>
      </el-col>
    </el-card>

2、流程图的显示代码

<el-card class="box-card">
      <template #header class="clearfix">
        <span class="el-icon-picture-outline">流程图</span>
      </template>
      <!-- 流程图 -->
      <process-viewer
        :key="`designer-${loadIndex}`"
        :style="'height:' + height" 
        :xml="xmlData"
        :finishedInfo="taskList"
        :allCommentList="historyProcNodeList"
        ref="refNode"
      /> 
    </el-card>

3、读取表单的历史记录信息

// 流程过程中不存在初始化表单 直接读取的流程变量中存储的表单值
            else if (res.result.hasOwnProperty('formData')) {
              console.log('flowRecord res.result.formData', res.result.formData);
              formModel.value = res.result.formData;
              console.log('res.result.formData=', res.result.formData);
              nextTick(async () => {
                vfRenderRef.value?.setFormJson(formModel.value || { formConfig: {}, widgetList: [] });
              });
              if (res.result.hasOwnProperty('routeName')) {
                if (startUserForm.isStartUserNode) {
                  customForm.disabled = false;
                } else {
                  customForm.disabled = true;
                }
                customForm.visible = true;
                customForm.formComponent = getFormComponent(res.result.routeName).component;
                customForm.model = res.result.formData;
                customForm.customFormData = res.result.formData;
              }
              console.log('customForm=', customForm);
              console.log('model=', customForm.model);
              if (res.result.formData.hasOwnProperty('formConfig')) {
                formConfOpen.value = true;
              } else {
                formConfOpen.value = false;
              }
            } else if (res.result.hasOwnProperty('taskFormData')) {
              console.log("flowRecord res.result.taskFormData", res.result.taskFormData);
              taskFormData.value = res.result.taskFormData;
              console.log("flowRecord taskFormData.value", taskFormData.value);
              taskFormOpen.value = true;
              nextTick(async () => {
                taskFormBuilder.value?.setFormJson(taskFormData.value || { formConfig: {}, widgetList: [] });
              });
            }

4、获取流程变量

/** 获取流程变量内容 */
  const processVariables = (taskId, deployId) => {
    if (taskId) {
      // 提交流程申请时填写的表单存入了流程变量中后续任务处理时需要展示
      getProcessVariables(taskId, deployId).then((res) => {
        console.log('getProcessVariables res=', res);
        variables.value = res.result.variables;
        if (res.success) {
          if (res.result.hasOwnProperty('variables')) {
            formData.value = res.result.variables;
            variableOpen.value = true;
            formModel.value = res.result.formModel;
            taskForm.values = formData.value;
            taskForm.formData = formData.value; 
            taskForm.formModel = formModel.value;   
          }
          getNextFlowNodeInfo(taskForm.taskId);
        } else {
          createMessage.error(res.message);
        }
      });
    }
  };

5、效果图:

标签:Flowable,res,流程,value,customForm,result,jeecgboot,taskFormData,formData
From: https://blog.csdn.net/qq_40032778/article/details/139663940

相关文章

  • MAX3160EAP 集成接口芯片 收发器 资料配置流程
    MAX3160EAP是一款集成电路(IC),它是一个全双工的RS-232/RS-485/422多协议收发器。这个器件可以通过编程来配置为不同的模式,包括两个RS-232接口或一个RS-485/422收发器。它具有许多高级特性,比如真正的安全接收器、保护传输和接收器不受线路故障的影响、低功耗待机模式以及能够在......
  • 【Test 68 】OSI 七层模型初识、网络传输的流程、IP地址和MAC地址! 面试高频考点!
    文章目录1.OSI七层模型2.TCP/IP五层(或四层)模型3.网络传输基本流程......
  • 基于C#开发web网页管理系统模板流程-总集篇
    第一篇基于C#开发web网页管理系统模板流程-登录界面和主界面_c#的网页编程-CSDN博客第二篇基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善_c#网页设计-CSDN博客第三篇基于C#开发web网页管理系统模板流程-主界面管理员入库和出库功能完善_c#web程序......
  • 【供应链管理】供应链管理降本增效图库,包括流程图、框架图、优化图、供应商管理
    **【供应链管理】供应链管理降本增效图库**一、降本增效流程图此流程图详细展示了供应链管理过程中的降本增效环节。从需求预测、采购计划制定、供应商选择、物料入库、生产排程、物流运输到最终的销售与售后服务,每个环节都通过优化流程、减少浪费、提高效率等措施实现成本......
  • Base64编码解码流程的初步学习
    目录什么是Base64编码?为什么要学习Base64编码?Base64编码基础原理介绍Base64编码组成Base64编码索引表Base64编码规则Base64编码过程简记编码流程实战Base64编码(不同情况举例说明)1.待编码字符数量为3的倍数2.待编码字符数量不为3的倍数Base64解码原理简单介绍Base64解码过程Base6......
  • 行业案例丨利用机器学习助力制造业加速挤压模具开发设计流程
    某铝业客户面临的挑战客户需要优化的产品断面的长度和宽度比较大,壁厚厚薄不均,表面质量要求很高,不能有条纹、面粗或划痕,决不允许有焊缝存在,并且尺寸的公差要求也非常严格。最重要的一点就是生产的时间非常短,几乎没有重复上机试模和修模的时间,模具要达到一次性上机合格程度。......
  • Windows 服务器Nginx 下载、部署、配置流程(图文教程)
    不定期更新目录一、下载Nginx安装包二、上传安装包三、启动Nginx四、Nginx常用命令五、Nginx(最小)配置详解 六、Nginx(基础)配置详解七、反向代理八、负载均衡九、动静分离十、报错 一、下载Nginx安装包四个网址,根据自己的情况选择,我是用Nginx开源版的。1、下载......
  • 【第三篇】SpringSecurity请求流程分析
    简介本篇文章主要分析一下SpringSecurity在系统启动的时候做了那些事情、第一次请求执行的流程是什么、以及SpringSecurity的认证流程是怎么样的,主要的过滤器有哪些?SpringSecurity初始化流程1.加载配置文件web.xml当Web服务启动的时候,会加载我们配置的web.xml文件web.xml......
  • 微信小游戏开发流程及上架步骤:微信小游戏定制开发源码搭建
    微信小游戏开发方案主要包括以下几个方面:    1.游戏设计:根据需求和目标用户群体,设计游戏玩法、关卡、角色、场景等元素,确保游戏具有吸引力和可玩性。    2.技术实现:根据游戏设计,选择合适的技术栈和开发工具,进行游戏代码编写、测试、优化等工作。    ......
  • 【CMake系列】03-cmake 注释、常用指令 message、set、file、for_each、流程控制if
    本文给出了cmake中的一些常用的指令,可以快速了解,为后面的内容深入打点基础。本专栏的详细实践代码全部放在github上,欢迎star!!!如有问题,欢迎留言、或加群【392784757】交流注释#行注释#[[多行注释]]message(""#[[这里也可以注释]]"")message在学习时......