序号 | 功能分类 | 脚本名称/关键字 | 功能描述 | 适用范围/场景 | 脚本示例说明 | 备注 |
---|---|---|---|---|---|---|
1 | 关键字 | this.obj | 实体类.attrNames 关联类.attrNames 按钮中获取关联类对象的属性需要加左left右类right、管理类的前缀relation this.obj.relation_关联类属性名 this.obj.left_左类属性名 this.obj.right_右类属性名 关联类事件中只支持获取当前关联类对象 ,是从关联类对象返回结果中获取属性值 this.obj.oid this.obj.leftOid this.obj.rg=rightOid | 获取当前实体类对象的属性值 注:类事件和按钮均可用 | //打印获取WorKOrder的系统属性oid this.logger.info("当前对象的oid属性值为"+this.obj.oid) //打印获取WorKOrder的类属性属性woTitle this.logger.info("当前对象的woTitle属性值为"+this.obj.woTitle) | |
获取当前关联对象的属性值 注:类事件和按钮均可用 | //获取PartToPart的系统属性oid this.logger.info("当前关联类对象oid属性值为"+this.obj.relaiton_oid) //打印获取PartToPart的leftOid this.logger.info("当前关联类对象leftOid属性值为"+this.obj.left_oid) //打印获取PartToPart的rightOid this.logger.info("当前关联类对象rightOid属性值为"+this.obj.right_oid) | |||||
this.customData | 自定义内容 | this.logger.info("当前对象的oid属性值为"+this.customDataw) | ||||
this.selectedObj | 选中的对象 | this.logger.info("当前对象的oid属性值为"+this.selectedObj) | ||||
this.selectedObjs | 选中的多个对象 | this.logger.info("当前对象的oid属性值为"+this.selectedObjs) | ||||
this.oldObj | 实体类.attrNames 关联类.attrNames this.oldObj.relation_关联类属性名 this.oldObj.left_左类属性名 this.oldObj.right_右类属性名 | 获取当前更新前实体类对象的属性值 注:仅类事件上可用 | //打印WorkOrder对象更新前的系统属性oid this.logger.info("当前实体类对象更新前oid属性值为"+this.oldObj.oid) //打印WorkOrder对象更新/删除前的类属性oid this.logger.info("当前实体类对象更新前woTitle属性值为"+this.oldObj.woTitle) | |||
获取当前更新前关联对象的属性值 注:仅类事件可用 关联类属性:oid | //打印PartToPart对象更新前的系统属性leftOid this.logger.info("当前关联类对象更新前oid属性值为"+this.oldObj.leftOid) //获取PartToPart对象操作前的leftOid this.logger.info("当前关联类对象更新前leftOid属性值为"+this.oldObj.leftOid) this.logger.info("当前关联类对象更新前rightOid属性值为"+this.oldObj.rightOid) | |||||
this.objs | 实体类.attrNames 关联类.attrNames this.objs.relation_关联类属性名 this.objs.left_左类属性名 this.objs.right_右类属性名 | 获取当前对象集合中实体类对象的属性值 注:类事件和按钮均可用 | //打印获取对象集合中第x对象的系统属性oid this.logger.info("当前实体类对象集第x个对象的oid属性值为"+this.objs[x].oid) //获取对象集合中第x对象的类属性woTitle this.logger.info("当前实体类对象集第x个对象的rightOid属性值为"+this.objs[x].woTitle) | |||
获取当前对象集合中关联类对象的属性值 | //获取关联类对象集合中第x对象的系统属性oid this.logger.info("当前关联类对象集第x个对象的oid属性值为"+this.objs[x].relation_oid) //获取关联类对象集合中的第x对象的leftOid this.logger.info("当前关联类对象集第x个对象的leftOid属性值为"+this.objs[x].left_oid) //获取关联类对象集合中的第x对象的rightOid this.logger.info("当前关联类对象集第x个对象的rightOid属性值为"+this.objs[x].right_oid) | |||||
this.oldObjs | 实体类.attrNames 关联类.attrNames this.oldObjs.relation_关联类属性名 this.oldObjs.left_左类属性名 this.oldObjs.right_右类属性名 | 获取当前更新前实体类对象集合中对象的属性值 注:仅类事件上可用 | //获取更新前对象集合中第x对象的系统属性oid this.logger.info("当前实体类对象集第x个对更新前的oid属性值为"+this.oldObjs[x].oid) //获取操作前对象集合中第x对象的类属性woTitle this.logger.info("当前实体类对象集第x个对更新前的woTitle属性值为"+this.oldObjs[x].woTitle) | |||
获取当前更新前关联类类对象集合中对象的属性值 注:仅类事件可用 | this.logger.info("当前关联类对象集第x个对更新前的oid属性值为"+this.oldObjs[x].oid) this.logger.info("当前关联类对象集第x个对更新前的leftOid属性值为"+this.oldObjs[x].leftOid) this.logger.info("当前关联类对象集第x个对更新前的rightOid属性值为"+this.oldObjs[x].rightOid) | |||||
this.env | 获取当前环境的信息,关键字包括appConfig、serverIp、serverPort、serverURL四种关键字。
| 获取application文件中external属性 注意:在application文件中能获取到参数值需要以 external.appConfig开头,例如 external.appConfig.demoKey=demoValue | this.logger.info("获取application文件中的demKey"+this.env.appConfig.demoKey) this.logger.info("获取application文件中的demoKey.with.dots"+this.env.appConfig.demoKey.with.dots) this.logger.info("获取application文件中关于图片库上传单个文件的maxsize"+this.env.appConfig.maxFileSizeKb) this.logger.info("获取application文件中的roleGroup"+this.env.appConfig.roleGroup) | |||
获取当前服务器ip | this.logger.info("获取当前服务器ip"+this.env.serverIp) | |||||
获取当前服务器端口 | this.logger.info("获取当前服务器端口"+this.env.serverPort) | |||||
获取当前服务器URL | this.logger.info("获取当前服务器URL"+this.env.serverURL) | |||||
this.user | 获取当前登录用户的信息。关键字包括token、oid、userId、userName、displayName、userGroups。
| 获取当前用户token | this.logger.info("当前用户token"+this.user.token) | |||
获取当前用户oid | this.logger.info("获取当前用户oid"+this.user.oid) | |||||
获取当前用户userId(同oid) | this.logger.info("当前用户userId"+this.user.userId) | |||||
获取当前用户英文名userName | this.logger.info("当前用户英文名userName"+this.user.userName) | |||||
获取当前用户显示名displayName | this.logger.info("当前用户显示名displayName"+his.user.displayName) | |||||
获取用户所属用户组集,可以拿到userGroups的 comment:备注 displayName:显示名 order:序号 lastModifyTime:最近更新时间 creator:创建人 lastModifier:更新人 createTime:创建时间 name:英文名 oid:全局唯一标识 length:长度 | this.logger.info("用户所属用户组集第一个用户组的长度"+this.user.userGroups[0].length); this.logger.info("用户所属用户组集第一个用户组的备注"+this.user.userGroups[0].comment); this.logger.info("用户所属用户组集第一个用户组的 序号"+this.user.userGroups[0].order); this.logger.info("用户所属用户组集第一个用户组的 最近更新时间"+this.user.userGroups[0].lastModifyTime); this.logger.info("用户所属用户组集第一个用户组的 创建人"+this.user.userGroups[0].creator); this.logger.info("用户所属用户组集第一个用户组的 创建时间"+this.user.userGroups[0].createTime); this.logger.info("用户所属用户组集第一个用户组的 全局唯一标识"+this.user.userGroups[0].oid); this.logger.info("用户所属用户组集第一个用户组的 英文名"+this.user.userGroups[0].name); | |||||
this.className | 获取当前类名 | 获取当前类名 | this.logger.info("获取当前类名"+this.className) | |||
this.generateUUID | 生成uuid的函数 | this.logger.info("打印自动生成的uuid"+this.generateUUID) | ||||
2 | 数据访问 | this.omf | getByOid(oid,className) | (Integer oid, String className)--根据oid获取对象(主键为int) (String oid, String className)--根据oid获取对象(主键为string) @param oid:支持String或Integer的主键 @param className:类名 @retrun ProxyObject:返回一个对象 | //获取当前操作对象的oid var oid=this.obj.oid; //根据oid获取当前操作的实例对象 var obj=this.omf.getByOid(this.oid,this.className) //打印获取到的对象 this.logger.info("当前操作的对象为—"+obj) //示例2- | |
handleQueryData(condition,className) | 执行sql语句 @param condition:数据库的sql语句; @param className:查询对象的类名 @return List<ProxyObject>:返回对象集合 | var objs=this.omf.handleQueryData("select * from plt_cus_workorder limit 3",this.className) this.logger.info("objs的长度"+objs.length); this.logger.info("objs[0]的oid"+objs[0].oid); //示例2-
| ||||
create (Map<String, Object> obj, String className) | 创建对象 @param Map<String, Object> obj:对象 @param className:对应的类名 @return ProxyObject:返回一个对象 | //示例1 var obj={ "woTitle":"testScript", "woStatus":"已创建" } this.omf.create(obj,this.className); //示例2-创建实体类对象
//示例3-创建关联类对象
| ||||
create(Map<String, Object> obj, String className, boolean runScript) | 对象创建后是否调用创建前后事件 @param Map<String, Object> obj:对象 @param className:对应的类名 @param runScript:是否运行创建前后事件 @return ProxyObject:返回一个对象 | //需要在WorkOrder类创建后事件写入一个this.logger.info("执行了创建后事件") var obj={ "woTitle":"testScript", "woStatus":"已创建" } this.omf.create(obj,this.className,false) | ||||
create(Map<String, Object> obj, String className, List<String> attrNames) | 对象创建时,attrName值唯一 @param Map<String, Object> obj:对象 @param className:对应的类名 @param List<String> attrNames:需要哪些校验attrName值不允许重复 @return ProxyObject:返回一个对象 | var obj={ "woTitle":"testScript", "woStatus":"已创建" } try{ this.omf.create(obj,this.className,["woTitle"]);} catch(err){ this.ex.setFieldError("error",err.getMessage()) } | ||||
create(Map<String, Object> obj, String className, boolean runScript, List<String> attrNames) | 对象创建时,attrName值唯一, 是否调用创建前后事件 @param Map<String, Object> obj:对象 @param className:对应的类名 @param runScript:是否运行创建前后事件 @param List<String> attrNames:需要哪些校验attrName值不允许重复 @return ProxyObject:返回一个对象 | //需要在WorkOrder类创建后事件写入一个this.logger.info("执行了创建后事件") var obj={ "woTitle":"testScript", "woStatus":"已创建" } try{ this.omf.create(obj,this.className,false,["woTitle"]);} catch(err){ this.ex.setFieldError("error",err.getMessage()) } | ||||
delete(Map<String, Object> obj, String className) | 删除对象 @param Map<String, Object> obj:对象 @param className:对应的类名 @return boolean:返回一个删除是否成功 | //示例1 删除当前表单对象 var obj=this.omf.getByOid(this.obj.oid,this.className); try{ this.omf.delete(obj.this.className) catch(err){ this.ex.setFieldError("error",err.getMessage()) } //示例2
// 批量删除 deleteObjs | ||||
delete(Map<String, Object> obj, String className, boolean runScript) | 删除对象后是否调用删除前后事件 @param Map<String, Object> obj:对象 @param className:对应的类名 @param runScript:是否运行创建前后事件 @return boolean:返回一个删除是否成功 | //需要在WorkOrder类创建后事件写入一个this.logger.info("执行了删除后事件") var obj=this.omf.getByOid(this.obj.oid,this.className); try{ this.omf.delete(obj.this.className,false) catch(err){ this.ex.setFieldError("error",err.getMessage()) } | ||||
edit(Map<String, Object> obj, String className) | 编辑对象 @param Map<String, Object> obj:对象 @param className:对应的类名 @return ProxyObject返回对象 | var obj=this.omf.getByOid(this.obj.oid,this.className); let obj={ "woTitle":"testEditScript" } try{ this.omf.edit(obj.this.className) catch(err){ this.ex.setFieldError("error",err.getMessage()) } | ||||
edit(Map<String, Object> obj, String className, boolean runScript) | 编辑对象后是否调用更新前后事件 @param Map<String, Object> obj:对象 @param className:对应的类名 @paramboolean runScript:是否调用更新前后事件 @return ProxyObject返回对象 注:如果更新后事件还有this.omf.edit脚本,在执行按钮上的this.omf.edit时尽量不要设置为true,会出现循环调用数据库死锁的情况。 | //需要在WorkOrder类更新后事件写入一个this.logger.info("执行了更新后事件") var obj=this.omf.getByOid(this.obj.oid,this.className); let obj={ "woTitle":"testEditScript" } try{ this.omf.edit(obj.this.className,false) }catch(err){ this.ex.setFieldError("error",err.getMessage()) } | ||||
edit(Map<String, Object> obj, String className, boolean runScript,List<String> attrNames) | 编辑对象,attrName值唯一,是否调用更新前后事件 @param Map<String, Object> obj:对象 @param className:对应的类名 @paramboolean runScript:是否调用更新前后事件 @param List<String> attrNames:需要校验哪些属性值不允许重复 @return ProxyObject返回对象 | //需要在WorkOrder类更新后事件写入一个this.logger.info("执行了更新后事件") var obj=this.omf.getByOid(this.obj.oid,this.className); let obj={ "woTitle":"testEditScript" } try{ this.omf.edit(obj.this.className,false,["woTitle"]) catch(err){ this.ex.setFieldError("error",err.getMessage()) } | ||||
edit(Map<String, Object> obj, String className, List<String> attrNames) | 编辑对象,atrrName值唯一 @param Map<String, Object> obj:对象 @param className:对应的类名 @param List<String> attrNames:需要校验哪些属性值不允许重复 @return ProxyObject返回对象 | var obj=this.omf.getByOid(this.obj.oid,this.className); let obj={ "woTitle":"testScript" } try{ this.omf.edit(obj.this.className,false,["woTitle"]) }catch(err){ this.ex.setFieldError("error",err.getMessage()) } | ||||
duplicateValueCheck(Map<String, Object> obj, String className, List<String> attrNames) | 单纯判重,获得属性值出现重复值的数组 @param Map<String, Object> obj:对象 @param className:对应的类名 @param List<String> attrNames:需要校验哪些属性值不允许重复 @return List<String> :返回数组 | try{ var titles= this.omf.duplicateValueCheck(this.obj,this.className,["woTitle"]); catch(err){ this.ex.setFieldError("error",err.getMessage()) } | ||||
getString(Integer/String oid, String className, String attrName) | 返回base64字符串,主要为了配合上传文件使用 @param attrName:localfile类型的属性名,非localfile返回原值toString() @param oid:对象主键,支持integer和String @param className:类名 @return String :返回base64字符串 | //引用一个主键为integer的外部实体类 var attrs = this.omf.getString(this.obj.oid, this.className, "file00"); | ||||
getByteArray(Integer oid, String className, String attrName) | 主要为了配合上传文件使用 @param attrName:localfile类型的属性名,非localfile返回原值toString() @param oid:对象主键,支持integer和String @param className:对象类型 @return ProxyArray:返回byte[] | //引用一个主键为integer的外部实体类 var bytes = this.omf.getByteArray(this.obj.oid, this.className, "file00"); | ||||
//直接使用DWF内置的类 var bytes = this.omf.getByteArray(this.obj.oid, this.className, "file00"); | ||||||
getFilePath(String/Integer oid, String className, String attrName) | 获取对象的文件路径 @param oid:对象的主键,支持String或者integer @param className:类名 @return String:返回对象文件夹路径 | //返回本地文件夹,attrName是localfile var filePath = this.omf.getFilePath(this.obj.oid, this.className, "file00"); this.logger.info("filePath = " + filePath); | ||||
setLocalFile(Integer oid, String className, String attrName, String filePath) | 为对象上传附件 @param oid:对象的主键,支持String或者integer @param className:类名 @return boolean:返回对象文件是否上传成功 | this.logger.info("oid = " + this.obj.oid); this.logger.info("res = " + this.res); | ||||
新增后端脚本,支持拉平结构关联类对象的增删改
| ||||||
| ||||||
| ||||||
transferToStashFile | ||||||
deleteByCondition(condition,className,true/false) | var objs = this .selectedObjs[0]; var condition = `and obj.partName = '${objs.partName}' `; this .omf.deleteByCondition(condition, this .className, false ); | |||||
this.em | createNativeQuery(String sqlString) | 直接执行SQL | // 执行sql语句
| |||
3 | 订阅控件 | this.websokect | 支持sendMsg(msg)、getLastMsg(String sockId)getMsg、checkSockIdExists()四种函数 | 发送单个连接信息 @param msg:消息对象 | this.sendeMsg | |
4 | @return Object :根据socketid返回socket最后一次消息 | |||||
5 | @return Object :根据类名和操作名、socket返回socket最后一个消息 | |||||
6 | ||||||
7 | ||||||
8 | 执行服务器程序 | this.sh.exeCmd | exeCmd(String[] args) | 执行windows的命令 | // 在D:\建立mp3文件夹 this.exeCmd("md d:\mp3 ") | |
this.sh.execute | execute(String commandStr) | 执行Linux的命令(启动Shell命令) | //在/home/dwf目录中根据当前对象的oid和用户名创建一个文件 this .sh.execute( "cd /home/dwf && touch " + _obj.oid + "-" + _env.userName); | |||
9 | 打印后端日志 | this.logger.info | 打印info类型信息 | this.logger.info("this is a info message"); | ||
this.logger.warn | 打印error类型信息 | this.logger.error("this is a error message"); | ||||
this.logger.error | 打印warn类型信息 | this.logger.warn("this is a warn essage"); | ||||
10 | 后端脚本执行成功,设置表单提示 | this.ex.setFieldError | 当执行后端脚本需要在前端用message信息弹出报错信息时,使用this.ex抛出异常,可自定义设置报错信息 @param field:自定义,例如“报错信息是“; @param message:自定义,可以try catch异常后,将异常抛出,err.getMessage() | //设置异常报错信息 try{ this.omf.getByOid("1".this.className); }catch( err){ this.ex.setFieldError("报错消息是",err.getMessage()) } | ||
this.ex.setNotNullableError | 当执行后端脚本需要在前端用message信息弹出报错信息时,使用this.ex抛出不能为空的异常报错提示 @param field:自定义,例如可以设置某个字段不能为空this.obj.oid,也可以设置文字 | //根据oid获取实体类对象 var obj=thisomf.getByOid("s7w7b039300",this.className) //如果对象存在就设置woTitle属性为“工单1”,否则抛出不能为空的异常 if(!obj){ obj.woTitle="工单1" }else { this.setNotNullableError("s7w7b039300") } |
页面历史
概览
内容工具