本文档说明如何在后台脚本中使用actions调用平台的restful服务。
通过访问以下地址来查询服务列表:http://server/x_program_center/jest/list.html (v7.2之前版本需要加端口20030)
syntax
//获取actions
this.actions
methods
load(root) → {object}
平台预置了actions对象用于调用平台提供的服务,您可以使用this.actions.load来获取这些方法。由于是运行在服务器端,服务都是同步调用。
syntax
var actions = this.actions.load( root );
//获取流程平台服务对象。
var processaction = this.actions.load("x_processplatform_assemble_surface");
通过this.actions.load(root)方法得到action对象,就可以访问此服务下的方法了。
访问方法的规则如下:
var requeststring = this.actions.load( root )[actionname][methodname]( arguements );
requeststring : 服务返回的响应数据,字符串格式,可以通过 requestobjest = json.parse(requeststring);解析成对象
root : 平台服务根名称,如果 x_processplatform_assemble_surface
actionname : 服务下的action分类名称,如 taskaction
methodname : action分类下的方法名称,如 get
arguements : 需调用的restful服务的相关参数。这些参数需要按照先后顺序传入。根据实际情况可以省略某些参数。参数序列分别是:
uri的参数, data(post, put方法), success, failure, async。
uri参数:如果有uri有多个参数,需要按先后顺序传入。
data参数:要提交到后台的数据。post 和 put 方法需要传入,get方法和delete方法省略。
success参数:服务执行成功时的回调方法,形如 function(json){
json为后台服务传回的数据
}。
failure 参数:服务执行失败时的回调方法,形如 function(xhr){
xhr xmlhttprequest对象,服务器请求失败时有值
}
此参数可以省略,如果省略,系统会自动弹出错误信息。
处理返回的数据有两种方式,二选一即可:
1、该方法返回的结果是响应数据字符串,通过json.parse(responsestring)获取对象。
2、通过success方法作为第一个参数来处理结果,建议此方法处理请求结果
//success:arguements中的第一个function对象
function(json){
//json为后台服务传回的数据
}
parameters
-
root
string
平台restful服务根,具体服务列表参见:http://server/x_program_center/jest/list.html。(v7.2之前版本需要加端口20030) 如:
"x_processplatform_assemble_surface" //流程平台相关服务根
returns
-
object
返回action对象,用于后续服务调用
examples
样例1:
根据x_processplatform_assemble_surface服务获取当前用户的待办列表:
可以通过对应服务的查询页面,http://server/x_processplatform_assemble_surface/jest/index.html (v7.2之前版本需要加端口20020)
可以看到以下界面:
我们可以找到taskaction的v2listpaging服务是列式当前用户待办的服务。
该服务有以下信息:
1、actionname是:taskaction
2、methodname是:v2listpaging
3、有两个url参数,分别是 page(分页), size(每页数量)
4、有一系列的body参数
5、该服务方法类型是post
根据这些信息我们可以组织出下面的方法:
var processaction = this.actions.load("x_processplatform_assemble_surface"); //获取action
var method = processaction.taskaction.v2listpaging; //获取列式方法
//执行方法1
method(
1, //uri 第1个参数,如果无uri参数,可以省略
20, //uri 第2个参数,如果无uri参数,可以省略,如果还有其他uri参数,可以用逗号, 分隔
{ //body 参数,对post和put请求,该参数必须传,可以为空对象
processlist : [xxx] //具体参数
},
function(json){ //正确调用的回调
//json.data得到服务返回数据
},
function(responsejson){ //可选,错误信息, json格式
print( json.stringify(responsejson) )
}
);
//执行方法2
var responsestring = method( 1, 20, {processlist : [xxx]} )
var responseobject = json.parse(responseobject);
出错信息responsejson的格式
{
"type": "error", //类型为错误
"message": "标识为:343434 的 task 对象不存在.", //提示文本
"date": "2020-12-29 17:02:13", //出错时间
"prompt": "com.x.base.core.project.exception.exceptionentitynotexist" //后台错误类
}
样例2: 已知流程实例的workid,在脚本中获取数据,修改后进行保存。
//查询服务列表找到获取data数据服务为dataaction的getwithwork方法
//查询服务列表找到更新data数据服务为dataaction的updatewithwork方法
var workid = "cce8bc22-225a-4f85-8132-7374d546886e";
var data;
this.actions.load("x_processplatform_assemble_surface").dataaction.getwithwork( //平台封装好的方法
workid, //uri的参数
function( json ){ //服务调用成功的回调函数, json为服务传回的数据
data = json.data; //为变量data赋值
}.bind(this)
)
data.subject = "新标题"; //修改数据
this.actions.load("x_processplatform_assemble_surface").dataaction.updatewithwork(
workid, //uri的参数
data, //保存的数据
function(){ //服务调用成功的回调函数
}.bind(this)
);