流程引擎-自定义函数的应用

背景:

  • 某些业务需求比较特殊,需要在表单中校验或实现一些功能,泛微流程表单配置时实现的方式多种多样:JS脚本、SQL语句、公式以及其他一些标准化拖拽功能,本次给大家分享一下流程表单中的公式实现的一些需求场景。
  • 泛微流程表单中的公式后台实际引用的是一些定义好的函数,比如计算函数SUM、ABS、MIN等,字符数据处理函数SUBSTR、TRIM、ToString,日期函数CurrDate、MaxDate等这些都是系统内置的系统函数,当业务诉求功能实现时这些系统函数可能无法实现,就需要自己写一些自定义函数用来支撑这部分需求实现。
    1、实现自动获取当前日期1年后的日期;
/*** 获取一年后时间* @param */
function getAfterDateTime(timeStr) {let now = new Date(timeStr);let year = now.getFullYear()+1; //得到年份let month = (now.getMonth()+1).toString().padStart(2, "0"); //得到月份let day = (now.getDate()).toString().padStart(2, "0"); //得到日期//console.log(1+"___"+year+"_"+month+"_"+day);if (month == '01' && day == '00') {year = now.getFullYear(); //得到年份month = '12';day = '31'} else if ((month == '01' || month == '03' || month == '05' || month == '07' || month == '08' || month == '10' || month == '12')&& day=='31') {year = now.getFullYear() + 1; //得到年份month = (now.getMonth()+ 1).toString().padStart(2, "0"); //得到月份;day = '31' //console.log(2+"___"+year+"_"+month+"_"+day); } else if ((month == '04' || month == '06' || month == '09' || month == '11')&& day==30) {//小月year = now.getFullYear() + 1; //得到年份month = (now.getMonth()+ 1).toString().padStart(2, "0"); //得到月份;day = '30'//console.log(3+"___"+year+"_"+month+"_"+day);}else if ((year % 4 == 0 || year % 100 != 0 || year % 400 == 0)&& month=='02'&& day=='29') {//瑞年year = now.getFullYear() + 1; //得到年份month = (now.getMonth()+ 1).toString().padStart(2, "0"); //得到月份;day = '28'//console.log(4+"___"+year+"_"+month+"_"+day);} else if((year % 4 !=0)&& month=='02'&& day=='28'){//平年//console.log(5+"___"+year+"_"+month+"_"+day);year = now.getFullYear() + 1; //得到年份month = (now.getMonth()+ 1).toString().padStart(2, "0"); //得到月份;day = '28'}else {     year = now.getFullYear() + 1; //得到年份month = (now.getMonth() + 1).toString().padStart(2, "0"); //得到月份day = (now.getDate()).toString().padStart(2, "0"); //得到日期     }//console.log(6+"___"+year+"_"+month+"_"+day);return `${year}-${month}-${day}`;}

2、实现获取当前日期3个月后的日期;

/*** 获取3个月后的日期* @param */
function getThreeMonthsLaterDate(shao) {var currentDate = new Date(shao); // 获取当前日期var futureDate = new Date(currentDate.getFullYear(), currentDate.getMonth() + 3, currentDate.getDate()); // 获取三个月后的日期console.log(currentDate.getFullYear());console.log(currentDate.getMonth() + 1);console.log(currentDate.getDate());if((currentDate.getMonth() + 4 =='04' || currentDate.getMonth() + 4 =='06' || currentDate.getMonth() + 4 =='09') && currentDate.getDate()=='31'){console.log(1);return futureDate.getFullYear() + '-' + (futureDate.getMonth()) + '-' + '30';}else if(currentDate.getMonth() + 1 =='11' && currentDate.getDate()>='29'){console.log(2);return futureDate.getFullYear() + '-' + (futureDate.getMonth()) + '-' + '28';}// 返回三个月后的日期,格式为yyyy-mm-ddreturn futureDate.getFullYear() + '-' + (futureDate.getMonth() + 1) + '-' + futureDate.getDate();
}

实现过程:

  1. 添加自定义函数
    添加自定义函数
  2. 流程表单引用及功能实现
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/150957.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lunar-1.5.jar

公历农历转换包 https://mvnrepository.com/artifact/com.github.heqiao2010/lunar <!-- https://mvnrepository.com/artifact/com.github.heqiao2010/lunar --> <dependency> <groupId>com.github.heqiao2010</groupId> <artifactId>l…

【收藏】药物专利信息查询方法-经典实操案例!

生物医药领域在专利行业中&#xff0c;一直是独特的存在。药物专利在各国之间有不同的登记要求&#xff0c;如何在这种查询方式诸多局限的情况下&#xff0c;检索得更全更准呢&#xff1f; 作为一名医药行业的IPR&#xff0c;经常需要调研药物原研专利。 大家所熟知的最快捷的…

CSS 基础知识-02

CSS 基础知识-01 1. flex布局2.定位3.CSS精灵4.CSS修饰属性 1. flex布局 2.定位 3.CSS精灵 4.CSS修饰属性

哈希索引(PostgreSQL 14 Internals翻译版)

概览 哈希索引提供了根据特定索引键快速查找tuple ID (TID)的功能。粗略地说&#xff0c;它只是一个存储在磁盘上的哈希表。哈希索引唯一支持的操作是根据相等条件进行搜索。 当一个值插入到索引中时&#xff0c;将计算索引键的哈希函数。PostgreSQL哈希函数返回32位或64位整…

单位建数字档案室的意义和作用

单位建立数字档案室的意义和作用包括&#xff1a; 1.提高档案管理效率。数字档案室可以高效地收集、整理和存储电子文档&#xff0c;通过数字化处理&#xff0c;文档的查找和检索速度大幅提升。 2.降低管理成本。数字档案室可以通过节约空间和人力成本&#xff0c;降低管理成本…

3DMAX金属屋顶墙面铺设插件使用方法

3DMAX金属屋顶墙面铺设插件教程 3DMAX金属屋顶墙面铺设插件&#xff0c;一键生成金属板屋顶、金属外墙面板&#xff0c;是一款非常实用的建筑建模插件。 【适用版本】 3dMax7或更新版本 【使用方法】 1.启动3dMax软件&#xff0c;打开&#xff08;或创建&#xff09;场景文件…

CTF-Crypto学习记录-第三天 MD5加密算法(信息摘要算法)“ “

文章目录 0x1 MD5 基本介绍0x2 MD5 加密特点0x3 MD5 加密原理步骤0x01 对明文数据进行信息填充0x02 设置初始变量0x03 加密运算过程加密运算流程图&#xff1a;四个非线性函数&#xff1a;Mj表示消息的第j个子分组&#xff08;从0到15&#xff09;&#xff0c;<<&#xf…

计算机网络——理论知识总结(上)

开新番&#xff0c;因为博主备考的学校计网只考察1/6的分值&#xff0c;而且定位偏向于送分题&#xff0c;因此在备考时并没有很高强度的复习。本帖基于王道考研的教辅总结归纳&#xff0c;虽然是408的教材&#xff0c;但忽略其中有难度的部分&#xff0c;如计算题、画图题等&a…

基于SSM的点餐平台系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

python造测试数据存到excel

代码&#xff1a; from ExcelHandler import ExcelHandler from faker import Faker # 导入faker库的Faker方法 # ↓默认为en_US&#xff0c;只有使用了相关语言才能生成相对应的随机数据 fkFaker(locale"zh_CN")def create_date():m int(input(请输入要造的数据条…

《持续交付:发布可靠软件的系统方法》- 读书笔记(八)

持续交付&#xff1a;发布可靠软件的系统方法&#xff08;八&#xff09; 第 8 章 自动化验收测试8.1 引言8.2 为什么验收测试是至关重要的8.2.1 如何创建可维护的验收测试套件8.2.2 GUI 上的测试 8.3 创建验收测试8.3.1 分析人员和测试人员的角色8.3.2 迭代开发项目中的分析工…