页面树结构
转至元数据结尾
转至元数据起始

正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史

« 前一个 版本 15 下一个 »

在后端脚本,可以直接与DWF进程中的java虚拟机交互,即:调用DWF内部JDK中的Java类和实现的Java类,利用Java.type()实现import的作用。

var HashMap = Java.type('java.util.HashMap');
var map = new HashMap();
map.put(1, "a");
map.get(1);

有关于Java交互的详细用法说明:https://www.graalvm.org/22.3/reference-manual/js/JavaInteroperability/#access-java-from-javascript


序号功能分类脚本名称/关键字功能描述适用范围/场景脚本示例说明备注
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.callServer(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四种关键字。

  • appConfig:application文件
  • serverIp:当前服务器ip
  • serverPort:获取当前服务器端口
  • serverURL:获取当前服务器URL


获取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) 


获取当前服务器ipthis.logger.info("获取当前服务器ip"+this.env.serverIp) 
获取当前服务器端口this.logger.info("获取当前服务器端口"+this.env.serverPort)
获取当前服务器URLthis.logger.info("获取当前服务器URL"+this.env.serverURL)
this.user

获取当前登录用户的信息。关键字包括token、oid、userId、userName、displayName、userGroups。

  • token:当前用户token
  • oid:当前用户userId(同oid)
  • userId:当前用户英文名userName
  • userName:当前用户显示名displayName
  • displayName:显示名
  • userGroups:用户组
获取当前用户tokenthis.logger.info("当前用户token"+this.user.token)
获取当前用户oidthis.logger.info("获取当前用户oid"+this.user.oid)
获取当前用户userId(同oid)this.logger.info("当前用户userId"+this.user.userId)
获取当前用户英文名userNamethis.logger.info("当前用户英文名userName"+this.user.userName)
获取当前用户显示名displayNamethis.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.omfgetByOid(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-使用oid进行查询
var obj = this.omf.getByOid("021C686BD26F594F9CA8AE56489BBEE7", "yzqrelation");



handleQueryData(condition,className)

执行sql语句

@param condition:数据库的sql语句;

@param className:查询对象的类名

@return List<ProxyObject>:返回对象集合

var objs=this.omf.handleQueryData("nativequery: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-使用查询条件进行查询

var objs = this.omf.handleQueryData("and obj.version > 100 order by obj.version limit 5", "yzqrelation");
this.logger.info(JSON.stringify(objs));



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-创建实体类对象

var newobj = this.omf.create({
      "creator": "9C92E891E9AE534DB685737DE467A9D0",
      "createTime": 1574322941000,
      "lastModifyTime": 1574322941000,
      "lastModifier": "9C92E891E9AE534DB685737DE467A9D0",
      "yzqplainref": "new_obj_3",
      "oid": "D883978E62398F4FB35F30A669B0E113",
      "id": "YZ20191121155541204",
      "currentProcess": "test_script_create"
    }, "yzqright");
// 返回值是最终的存储到数据库的对象

//示例3-创建关联类对象

var newRelation = this.omf.create(
    {
      "creator": "9C92E891E9AE534DB685737DE467A9D0",
      "rightClass": "yzqright",
      "rightOid": "D883978E62398F4FB35F30A669B0E113",
      "version": 1024,
      "leftOid": "2A47A5892C3C5746B0C063C72617E90F",
      "createTime": "1574322941000",
      "leftClass": "yzqleft",
      "multiFile": "[{\"name\":\"canlendar.png\",\"size\":\"4.863KB\",\"file_id\":\"ff8081816e8cc9d6016e8cf5a7cb0047\"}]"
    },   "yzqrelation");



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

this.omf.delete({oid: "5b68802859fc8da24c8da28be1640444c"}, "carrel");

//示例3

// 批量删除 deleteObjs
this.omf.deleteObjs(
    [
        {oid: "F1213F4447A3AF4EBC0719191A0D21AD"},
        {oid: "008C05026B27AA4F92F79773063E213A"}
    ], "className"
    );



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"]);
       this.logger.info("--------"+titles) ;
}

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");
this.logger.info("str = " + attrs);



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");
this.logger.info("bytes = " + bytes.length);
this.logger.info("bytes = " + bytes);



//直接使用DWF内置的类

var bytes = this.omf.getByteArray(this.obj.oid, this.className, "file00");
this.logger.info("bytes = " + bytes.length);
this.logger.info("bytes = " + bytes);



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.res = this.omf.setLocalFile(this.obj.oid, this.className, "file2", "/home/dwf/fileTest/2.png");

this.logger.info("res = " + this.res);



新增后端脚本,支持拉平结构关联类对象的增删改
  • relCreate(Map<String, Object> obj, String className, boolean runScript, List<String> attrNames)




  • relEdit(Map<String, Object> obj, String className, boolean runScript, List<String> attrNames)




  • relDelete(Map<String, Object> obj, String className, boolean runScript)




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.emcreateNativeQuery(String sqlString)

直接执行SQL

// 执行sql语句

//先定义一个函数,产生UUID
function id() {
      return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
//利用hibernate的em对象执行SQL
this.em.createNativeQuery("insert into public.plt_org_user(plt_oid, plt_creator, plt_lastmodifier, plt_name, plt_displayname) values ('" + id() + "', '9C92E891E9AE534DB685737DE467A9D0', '9C92E891E9AE534DB685737DE467A9D0', 'testServerScript', '测试服务端脚本')").executeUpdate();



//2执行存储函数
/* 假设库中已经存在一个名为 test_procedure 的函数:
 
CREATE OR REPLACE FUNCTION public.test_procedure()
  RETURNS void AS
$BODY$
BEGIN
   insert into test_procedure_table (id, create_time) values (1, now());
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION public.test_procedure()
  OWNER TO postgres;
 
即,这个存储过程是向一个名为 test_procudure_table 的表中插入一条新数据
 
表 test_procudure_table 的定义:
CREATE TABLE public.test_procedure_table
(
  id integer NOT NULL,
  create_time timestamp without time zone
)
*/
 
// 执行存储过程
this.em.createNativeQuery("select cast(test_procedure() as text)").getResultList();


this.restTemplategetForEntity(String url, Class<T> responseType,Object.../Map<String, ?> uriVariables)

get方法请求第三方服务接口

三个重载方法

(String url, Class<T> responseType,Object... uriVariables)

(String url, Class<T> responseType,Map<String, ?> uriVariables)

注:“/”代表同时支持

(URI url, Class<T> responseType)

@param url:第一参数表示要调用的服务的地址 

@param responseType :第二个参数表示返回的消息体的数据类型

@param Object.../Map<String, ?> :第三个参数表示上传的参数 

@return <T> ResponseEntity<T> :包括

响应码、contentType、contentLength、响应消息体等

/*1-Get请求,获取Json响应*/
this.logger.info("Get请求,获取Json响应");
var get_response = this.restTemplate.getForEntity("http://192.168.31.53:6060/test/get-admin-token"
, java.util.Map.class);   // 如果返回结果是json,response建议反序列化为Map,从而可以用.直接访问属性
var get_response_body = get_response.getBody();
this.logger.info("body: "+ get_response_body);
// 访问Json中的属性
this.logger.info("body.message: " + get_response_body.get("message"));


/*2-Get请求,获取String响应*/
this.logger.info("Get请求,获取String响应");
get_response = this.restTemplate.getForEntity("http://www.baidu.com"
, java.lang.String.class);   // 如果返回结果不是json,response建议反序列化为String
get_response_body = get_response.getBody();
this.logger.info("body: "+ get_response_body);


this.restTemplatepostForEntity(String url, Class<T> responseType,Object.../Map<String, ?> uriVariables)

post方法请求第三方服务接口

(String url, @Nullable Object request,
Class<T> responseType, Object... /Map<String, ?> uriVariables)

注:“/”代表同时支持

(URI url, @Nullable Object request, Class<T> responseType)

@param url:第一参数表示要调用的服务的地址 

@param responseType:第二个参数表示返回的消息体的数据类型

@param Object... /Map<String, ?> uriVariables:第三个参数表示上传的参数 

@retrun 返回值是一个ResponseEntity<T>,包括响应码、contentType、contentLength、响应消息体等


/*1-Post请求,传递request body,获取json响应*/
var Map = Java.type('java.util.Map');
this.logger.info("Post请求,传递request body,获取json响应");
var request_body = {"name" : "hahahaname"};
var post_response = this.restTemplate.postForEntity("http://127.0.0.1:6060/dwf/v1/testPost", request_body, Map.class);
var post_response_body = post_response.getBody();
this.logger.info("body: "+ post_response_body);


/*2-Post请求,传递request body和http header,获取json响应*/
this.logger.info("Post请求,传递request body和http header,获取json响应");
// 引入Java中的相关类型
var HttpHeaders = Java.type("org.springframework.http.HttpHeaders");
var HttpEntity = Java.type('org.springframework.http.HttpEntity');
headers = new HttpHeaders();
headers.set("Authorization", "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTU2ODAzNTcxOX0.5dfoAvd1SFQ7V_CnmzKMNbB7qR_k9Y1BK5zJXUuzc_BkhMFu9oEAVT3EUky1qhBlpihyPd7hV6136I1dnMX-GA");
request_body = {
  "appName": "test_json_engine",
  "extConfig": "string",
};
request = new HttpEntity(request_body,headers);
var Map = Java.type('java.util.Map');
post_response = this.restTemplate.postForEntity("http://127.0.0.1:6060/dwf/v1/apps-create", request, Map.class);
post_response_body = post_response.getBody();
this.logger.info("body: "+ post_response_body);


/*3 请求体[]

var HttpHeaders = Java.type('org.springframework.http.HttpHeaders');
var HttpMethod = Java.type('org.springframework.http.HttpMethod');
var HttpEntity = Java.type('org.springframework.http.HttpEntity');
var ArrayList = Java.type('java.util.ArrayList');
var JSONArray = Java.type('com.alibaba.fastjson.JSONArray');
var JSONObject = Java.type('com.alibaba.fastjson.JSONObject');

// 请求头
headers = new HttpHeaders();
headers.add("Authorization", this.env.token);
// 请求体
var request_body = new ArrayList();
request_body.add({"tstring": "restTemplate测试用"});
request = new HttpEntity(request_body, headers);
this.logger.info("request body - " + request_body);

// 发送请求
var url = "http://" + this.env.serverIp + ":9090/dwf/v1/omf/entities/" + this.className + "/objects-create";
this.logger.info("url - " + url);
// var post_response = this.restTemplate.exchange(url, HttpMethod.POST, request, JSONObject.class);
var post_response = this.restTemplate.postForEntity(url, request, JSONObject.class);
var body = post_response.getBody();
this.logger.info("body - " + body);







3订阅控件this.websokect支持sendMsg(msg)、getLastMsg(String sockId)getMsg、checkSockIdExists()四种函数

发送单个连接信息

@param msg:消息对象

this.sendeMsg
@return Object :根据socketid返回socket最后一次消息

@return Object :根据类名和操作名、socket返回socket最后一个消息







4执行服务器程序this.sh.exeCmdexeCmd(String[] args)执行windows的命令

// 在D:\建立mp3文件夹

this.exeCmd("md d:\mp3 ")


this.sh.executeexecute(String commandStr)执行Linux的命令(

启动Shell命令)

//在/home/dwf目录中根据当前对象的oid和用户名创建一个文件
this.sh.execute("cd /home/dwf && touch " + _obj.oid + "-" + _env.userName);

5打印后端日志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");
6后端脚本执行成功,设置表单提示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")

}


  • 无标签