代理和接口的脚本编写
本节内容适用于流程设计中的脚本

输出调试信息

1
var text = "在服务器控制台输出的消息"
2
print( text );
Copied!

调用JAVA类

1
//classString 为类名字符串,比如 "java.util.Calendar"
2
var Class = Java.type( classString );
3
var object = new Class();
4
//object.method()
Copied!
或者
1
var object = new Class();
2
//比如 var simpleDateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Copied!
样例:
获取当前日期后的第5天
1
function setDate(){
2
var Date = java.util.Date();
3
var Calendar = Java.type("java.util.Calendar");
4
var GregorianCalendar = Java.type("java.util.GregorianCalendar");
5
var now = new Date();
6
var calendar = new GregorianCalendar();
7
calendar.setTime(now);
8
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - Config.waitDay);
9
return calendar.getTime();
10
}
11
Copied!

调用服务

调用O2OA后台服务

服务查看和调试
本小节中的“服务根(serviceRoot)”如下
x_processplatform_assemble_surface
流程平台相关服务
x_portal_assemble_surface
门户平台相关服务
x_cms_assemble_control
内容管理平台相关服务
x_query_assemble_surface
数据平台相关服务
x_organization_assemble_express
组织架构相关服务
x_file_assemble_control
云文件相关服务
x_meeting_assemble_control
会议管理相关服务
x_bbs_assemble_control
论坛相关服务
x_calendar_assemble_control
日程管理相关服务
x_hotpic_assemble_control
热点信息相关服务
x_mind_assemble_control
脑图模块相关服务
x_organization_assemble_personal
个人设置相关服务
x_attendance_assemble_control
考勤模块相关服务
查找method,后台服务有GET\POST\PUT\DELET几种方法,可以在服务详情中找到,如下图:
本小节中的“路径(path)”,可以在服务详情中找到,如下图:
以上图的服务为例,最后拼接成下列两种路径均可使用
/jaxrs/work/workorworkcompleted/dcd8e168-2da0-4496-83ee-137dc976c7f6
work/workorworkcompleted/dcd8e168-2da0-4496-83ee-137dc976c7f6

GET方法

1
var applications = resources.getContext().applications();
2
//serviceRoot 服务根
3
//path 路径
4
applications.getQuery( serviceRoot, path );
Copied!
样例:
已知work id为dcd8e168-2da0-4496-83ee-137dc976c7f6,获取work内容,并解析成JSON。
1
var applications = resources.getContext().applications();
2
var serviceRoot = "x_processplatform_assemble_surface";
3
var path = "work/workorworkcompleted/dcd8e168-2da0-4496-83ee-137dc976c7f6"
4
var resp = applications.getQuery( serviceRoot, path );
5
var json = JSON.parse( resp.toString() );
Copied!

POST方法

1
var applications = resources.getContext().applications();
2
//serviceRoot 服务根
3
//path 路径
4
//string 数据字符串,json转字符串可以用 JSON.stringify( json )
5
applications.postQuery( serviceRoot, path, string );
Copied!
样例:
已知发文流程的ID为“0b7c5c43-caa8-4789-a263-308508d44016”,发起人的dn是“张三@[email protected]”。需要发起一个流程。
查到发起流程的路径是“jaxrs/work/process/{processFlag}”。
1
var applications = resources.getContext().applications();
2
var serviceRoot = "x_processplatform_assemble_surface";
3
var path = "work/process/0b7c5c43-caa8-4789-a263-308508d44016";
4
var string = JSON.stringify({
5
"latest" : false,
6
"title" : "测试发文流程",
7
"identity" : "张三@[email protected]",
8
"data" : { //业务数据
9
"fileNoPrefix" : "xxx" //文号冠字
10
}
11
});
12
var resp = applications.postQuery( serviceRoot, path, string );
13
var json = JSON.parse( resp.toString() );
Copied!

PUT方法

1
var applications = resources.getContext().applications();
2
//serviceRoot 服务根
3
//path 路径
4
//string 数据字符串,json转字符串可以用 JSON.stringify( json )
5
applications.putQuery( serviceRoot, path, string );
Copied!
样例:
已知发文流程实例的work id为“0b7c5c43-caa8-4789-a263-308508d44016”,需要更新数据。
查到修改流程数据的路径是“jaxrs/data/work/{id}”。
1
var applications = resources.getContext().applications();
2
var serviceRoot = "x_processplatform_assemble_surface";
3
var path = "data/work/0b7c5c43-caa8-4789-a263-308508d44016";
4
var string = JSON.stringify({
5
"subject" : "测试流程11",
6
"fileNoPrefix" : "xxx1"
7
});
8
var resp = applications.putQuery( serviceRoot, path, string );
9
var json = JSON.parse( resp.toString() );
Copied!

DELETE方法

1
var applications = resources.getContext().applications();
2
//serviceRoot 服务根
3
//path 路径
4
applications.deleteQuery( serviceRoot, path );
Copied!
样例:
已知发文流程实例的work id为“0b7c5c43-caa8-4789-a263-308508d44016”,需要删除改流程实例。
查到删除流程实例的路径是“jaxrs/work/{id}”。
1
var applications = resources.getContext().applications();
2
var serviceRoot = "x_processplatform_assemble_surface";
3
var path = "work/0b7c5c43-caa8-4789-a263-308508d44016";
4
var resp = applications.deleteQuery( serviceRoot, path );
5
var json = JSON.parse( resp.toString() );
Copied!

调用本系统服务管理中的接口

样例:现有一个名称为“sendSMS”的接口,接收的requestText为 "{ mobile : mobile, content : content }"
1
var CipherConnectionAction = Java.type('com.x.base.core.project.connection.CipherConnectionAction');
2
var Config = Java.type('com.x.base.core.project.config.Config');
3
var path = "invoke/sendSMS/execute";
4
var dataString = JSON.stringify({
5
"mobile" : "13500000000",
6
"content" : "测试短信内容"
7
});
8
var resp = CipherConnectionAction.post(false, Config.url_x_program_center_jaxrs() + path, dataString );
9
//var resp = CipherConnectionAction.post(false, Config.x_program_centerUrlRoot() + path, dataString );
10
var json = JSON.parse( resp.toString() );
Copied!

调用外系统的服务

样例:现有一个外系统的服务,url为 'http://hostname/UnifiedWorkbench/ProcessTaskService',接收的Content-type 为 'text/xml; charset=utf-8'
1
function sendRequest( xml ){
2
try{
3
print("发起请求:"+xml);
4
var url = 'http://hostname/UnifiedWorkbench/ProcessTaskService'
5
var ArrayList = Java.type('java.util.ArrayList');
6
var heads = new ArrayList();
7
var NameValuePair = Java.type('com.x.base.core.project.bean.NameValuePair');
8
var p1 = new NameValuePair('Content-Type', 'text/xml; charset=utf-8');
9
heads.add(p1);
10
var HttpConnectionClass = Java.type('com.x.base.core.project.connection.HttpConnection');
11
var resp = HttpConnectionClass.postAsString(url, heads, xml);
12
print( "统一待办返回:"+ resp.toString());
13
}catch(e){
14
print("发送请求出错:");
15
print( e.printStackTrace() );
16
}
17
}
Copied!

人员组织操作

组织管理中包括人员、人员属性、组织、组织属性、身份、群组和角色。有两种方法可以进行组织管理的操作:
1、通过调用后台组织查询服务“x_organization_assemble_express”进行组织管理的操作。具体服务请查看
“http://applicationServer:20020/x_organization_assemble_express/jest/index.html”
2、你可以通过 this.org 获取组织中的人员、人员属性、组织、组织属性、身份、群组和角色。
具体请查看API的org章节