1.概述
旨在针对低代码脚本做详细介绍,涵盖操作方式,使用路径等,同时汇总低代码常用场景及其写法,为使用低代码的用户提供对应的案例,便于低代码的上手,减少开发的时间。
2.功能介绍
低代码脚本为低代码重要组成部分,可搭配不同场景,弥补复杂需求无法通过配置直接实现的场景。针对脚本是有一定的入门门槛,首次接触的同学需针对性相关的基础模块进行了解,掌握。
2.1功能涵盖范围
低代码脚本覆盖到七巧低代码平台的业务模块内容,主要包含如下:
2.2功能限制说明
(1)执行顺序:在流程设计中的脚本执行,均为同步执行,即:脚本执行完毕后,才进去下一个节点进行流转
(2)区分执行前/执行后:
执行前:点击数据提交后,数据提交成功前,常用于数据校验,数据整合等
执行后:数据提交成功后,常用于复杂业务逻辑的处理,如:消息通知,业务数据生成
(3)若脚本引擎与触发事件同时使用,则执行顺序为:脚本引擎-触发事件
(4)执行顺序:事件拓展及页面操作中的触发事件的执行顺序
(5)脚本引擎为迁入业务模块的功能,为保障业务正常执行,针对脚本引擎做一定的限制,包含如下:
执行超1min:报错提醒,提醒后,脚本可正常执行
支持超20min:报错提醒,提醒后,脚本结束执行
3.使用教程
使用教程为教学如何初步针对脚本进行使用,涵盖脚本书写的全流程,从脚本编辑到脚本调试,再到日志查看,最后到脚本调优。
3.1使用流程
- 完成业务梳理:需明确业务,确认业务细节及对应的表单结构,明确脚本位置:执行前or之前后,同步or异步等
如:用户点击"提交"按钮后,可同步考勤数据,关联表单:“考勤结果表”。
- 明确代码逻辑:脚本逻辑梳理,需输出针对业务实现的脚本逻辑如何处理
如:针对"同步考勤数据",需区分步骤:
a.获取考勤数据-构建API
b.解析API返回数据–jason数据解析
c.存入"考勤结果表"表单中–将数据写入表单中
-
脚本书写:根据脚本逻辑,书写脚本,针对逻辑,可逐步去低代码函数库及场景库中寻找对应的demo。使用标准函数库,可减少外部API请求等,降低脚本性能问题的出现。
-
脚本调试:目前脚本调试建议使用三种方式进行调试
a.站内信输出调试
将每一步需要获取的数据可通过站内信的方式进行发送,验证逻辑是否正确。
//站内信标题
var subject = "站内信的标题";
//站内信正文
var context = "站内信的正文内容";
//接收用户id集合
var receiveUserIds = $.context.getCurrentUserId();
//发送站内信
$.message.sendGeneralStationMessage(subject, context, receiveUserIds);
b.脚本执行日志查看
通过管理端,查看脚本执行日志。
c.通过管理端在线监控+日志函数进行调试。
(2)ELK定位–需一定的学习成本,运行平台报错也适用该方式
操作步骤如下:
*点击左侧 Discover
- 点击application
- 点击 bpms-runtime 右侧的加号,添加过滤器
如果application下没看到 bpms-runtime ,先在application下随便添加一个过滤器,再手动编辑过滤条件,输入 bpms-runtime ,点击Save
- 点击level
-
l在level下随便添加一个过滤器,再手动编辑过滤条件,输入ERROR,点击Save
-
找到对应的报错信息,点击报错信息前面的箭头,再点击右边的 View Surrounding Documents,查看报错前后的日志
- 找到脚本运行出错的日志,点击展开详情,可以看到脚本报错原因,和报错脚本所在行
3.2入门案例
场景描述: 提交校验-报销金额字段必须小于1000元
分析:
a.完成业务梳理:
业务:用户填写报销单后,每次填写的报销金额不得高于1000元
表单:报销单-报销总金额
脚本位置:报表单-提交按钮-执行前
b. 明确代码逻辑:
(1)获取当前提交数据"报销总金额"
(2)判断"报销总金额"是否小于1000
(3)若小于则通过,大于则提醒不得大于1000
c.脚本书写:
(function(){
//获取当前提交表单
var doc = $.context.getCurrentDocument();
//获取总金额控件值
var count = doc.getElementByName("报销金额").getIntValue();
if(count > 1000){
//创建校验消息对象
var message = $.validate.create();
message.addError("金额大于1000,不允许提交;");
return message;
}
})()
d. 脚本调试:
在运行端发起报销进行调试
3.3入门语法说明
a.获取当前文档
(function(){
//获取当前文档
var currentDocument = $.context.getCurrentDocument();
//返回文档
return currentDocument; })()
b.获取当前文档某个字段值
(function(){
//获取当前提交表单
var doc = $.context.getCurrentDocument();
//获取总金额控件值,“报销金额”为字段名
var count = doc.getElementByName("报销金额").getIntValue();
})()
c.数据新增
(function(){
//获取当前应用ID
var appId =$.context.getCurrentApplicationId();
//写入哪张表单中
var doc = $.form.createEmptyDocument(appId,"学生表");
//针对每个字段进行赋值 “字段名”“赋值”
doc.addElement("姓名","steven");
doc.addElement("年龄",24);
//保存表单
$.form.saveFormDocument(doc,appId);
})()
d.数据编辑/更新
(function(){
//获取当前提交文档
var doc = $.context.getCurrentDocument();
//更新文档字段内容
doc.addElement("姓名","steven");
doc.addElement("手机号码","138****0000");
})()
e.数据删除
(function(){
//获取应用ID
var appId = $.context.getCurrentApplicationId();
//删除表单信息
$.form.deleteAllDocumentsByFormName(appId,"人力外勤信息");
})()
e.数据删除(指定数据)
(function(){
//获取应用ID
var appId = $.context.getCurrentApplicationId();
//构建表单对象
var fieldMap = new Packages.java.util.HashMap();
//构建筛选
fieldMap.put("数量", 100);
//删除指定数据
$.form.deleteFormDocumentsByFieldNameAndValue(appId, "采购材料", fieldMap );
})()
d.善用站内信, 验证/查看对象信息(用户对象、表单对象等)
(function(){
//获取当前用户
var user = $.context.getCurrentUser();
//如果需要操作用户相关属性, 可以通过发送站内信,查看对象属性信息
//站内信标题
var subject = "user对象获取";
//站内信正文
var context = "user对象"+$.json.objectToJsonString(user);
//接收用户id集合
var receiveUserIds = $.context.getCurrentUserId();
//发送站内信
$.message.sendGeneralStationMessage(subject, context, receiveUserIds);
//返回当前用户
return user;
})()
感谢阅读,觉得文章有用的话就点个赞吧
作者介绍:
道一云 ,成立于2004年,是中国低代码领域的领导厂商、腾讯战略投资企业、腾讯生态核心合作伙伴。拥有自主知识产权管理软件产品百余项,涵盖数字化应用构建低代码平台-七巧、全场景智能业务分析BI-七析、千人千面、数智化办公企业级门户-七星以及30多款开箱即用的场景应用。
欢迎关注:
公众号:道一云低代码(do1info)
官网: https://www.do1.com.cn/