九游会官网登录入口网页-ag8九游会j9登录入口提供的服务管理中心可以让用户使用javascript语言自由编写脚本的处理逻辑来实现与第三方的数据交互,数据同步以及系统内的数据处理等工作,也可以编写系统内的定时任务脚本。本文主要介绍o2九游会官网登录入口网页-ag8九游会j9登录入口定时代理和接口的脚本编写。
九游会官网登录入口网页-ag8九游会j9登录入口中复杂的应用通常需要通过javascript来实现。根据运行环境的差异,分为前后端脚本。
前端脚本是运行在浏览器上的,本系统的前端脚本基于来构建,遵循ecmascript 5.1规范。
后端脚本运行在服务器上,基于jdk8标准的,遵循ecmascript 5.1规范。
前端脚本在本系统的webapi中有详细介绍,这里不再过多介绍。
后端脚本在视图列脚本、流程事件、接口和代理中都有使用,并且这些地方的上下文都有不同。
前端脚本 | 视图列 | 流程事件 | 接口和代理 | |
运行环境 | 浏览器 | 服务器端 | 服务器端 | 服务器端 |
访问dom对象 | 允许 | 不允许 | 不允许 | 不允许 |
使用java | 不允许 | 不允许 | 允许 | 允许 |
总结上表,我们在代理和接口的代码中可以使用的规则:
1、使用javascript语法来编写定时代理和接口的代码。
2、对o2oa的功能,可以调用后端api来进行调用。
3、另外,还可以调用java类处理一些功能。
我们通过下面的例子,可以看出这是典型的ecmascript 5写法。
var appid = "6e075ac7-3eb3-436f-8ba1-e98f9b64349e"; //流程应用id var process = "4cca966f-3682-45c8-bddc-f2980654dc5e"; //流程id var data = json.parse(this.requesttext); //通过api this.requesttext获取外部传入的初始数据 data.application = appid; data.process = process; //通过api this.actions加载流程服务根 var action = this.actions.load("x_processplatform_service_processing"); action.workaction.assigncreate(//发起流程 data,//body请求参数 function (json) { //服务调用成功的回调函数, json为服务传回的数据 print("流程启动返回的数据为=" json.stringify(json); //在服务器控制台输出 this.response.setbody("success!"); //通过api this.response来响应请求 }.bind(this), function (json) { //服务调用失败的回调函数, json为服务传回的数据 console.error("流程启动失败"); //在服务器控制台输出错误 this.response.setbody(json); }.bind(this) );
在6.3及以后版本,o2oa提供了后台api来编写脚本和代理。
打开地址:http://{hostname}/api,如:https://www.o2oa.net/api
我们在api中提供的功能如下:
//classstring 为类名字符串,比如 "java.util.calendar" var class = java.type( classstring ); var object = new class(); //object.method() 或者 var object = new class(); //比如 var simpledateformat = new java.text.simpledateformat("yyyy-mm-dd hh:mm:ss"); 样例: 获取当前日期后的第5天 function setdate(){ var date = java.util.date(); var calendar = java.type("java.util.calendar"); var gregoriancalendar = java.type("java.util.gregoriancalendar"); var now = new date(); var calendar = new gregoriancalendar(); calendar.settime(now); calendar.set(calendar.date, calendar.get(calendar.date) - config.waitday); return calendar.gettime(); }
在6.3版本之前的版本,我们还未提供后台api,可以通过以下方式进行脚本编写。
var text = "在服务器控制台输出的消息" print( text );
服务查看和调试需要打开 http://centerserver/x_program_center/jest/list.html
请注意,v7.2之前端口为20030:
http://centerserver:20030/x_program_center/jest/list.html
本小节中的“服务根(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,后台服务有getpostputdelet几种方法,可以在服务详情中找到,如下图:
本小节中的“路径(path)”,可以在服务详情中找到,如下图:
以上图的服务为例,最后拼接成下列两种路径均可使用
/jaxrs/work/workorworkcompleted/dcd8e168-2da0-4496-83ee-137dc976c7f6
或
work/workorworkcompleted/dcd8e168-2da0-4496-83ee-137dc976c7f6
var applications = resources.getcontext().applications(); //serviceroot 服务根 //path 路径 applications.getquery( serviceroot, path ); //样例: //已知work id为dcd8e168-2da0-4496-83ee-137dc976c7f6,获取work内容,并解析成json。 var applications = resources.getcontext().applications(); var serviceroot = "x_processplatform_assemble_surface"; var path = "work/workorworkcompleted/dcd8e168-2da0-4496-83ee-137dc976c7f6" var resp = applications.getquery( serviceroot, path ); var json = json.parse( resp.tostring() );
var applications = resources.getcontext().applications(); //serviceroot 服务根 //path 路径 //string 数据字符串,json转字符串可以用 json.stringify( json ) applications.postquery( serviceroot, path, string );
样例:
已知发文流程的id为“0b7c5c43-caa8-4789-a263-308508d44016”,发起人的dn是“张三@zhangsan@i”。需要发起一个流程。
查到发起流程的路径是“jaxrs/work/process/{processflag}”。
var applications = resources.getcontext().applications(); var serviceroot = "x_processplatform_assemble_surface"; var path = "work/process/0b7c5c43-caa8-4789-a263-308508d44016"; var string = json.stringify({ "latest" : false, "title" : "测试发文流程", "identity" : "张三@zhangsan@i", "data" : { //业务数据 "filenoprefix" : "xxx" //文号冠字 } }); var resp = applications.postquery( serviceroot, path, string ); var json = json.parse( resp.tostring() );
var applications = resources.getcontext().applications(); //serviceroot 服务根 //path 路径 //string 数据字符串,json转字符串可以用 json.stringify( json ) applications.putquery( serviceroot, path, string );
样例:
已知发文流程实例的work id为“0b7c5c43-caa8-4789-a263-308508d44016”,需要更新数据。
查到修改流程数据的路径是“jaxrs/data/work/{id}”。
var applications = resources.getcontext().applications(); var serviceroot = "x_processplatform_assemble_surface"; var path = "data/work/0b7c5c43-caa8-4789-a263-308508d44016"; var string = json.stringify({ "subject" : "测试流程11", "filenoprefix" : "xxx1" }); var resp = applications.putquery( serviceroot, path, string ); var json = json.parse( resp.tostring() );
var applications = resources.getcontext().applications(); //serviceroot 服务根 //path 路径 applications.deletequery( serviceroot, path );
样例:
已知发文流程实例的work id为“0b7c5c43-caa8-4789-a263-308508d44016”,需要删除改流程实例。
查到删除流程实例的路径是“jaxrs/work/{id}”。
var applications = resources.getcontext().applications(); var serviceroot = "x_processplatform_assemble_surface"; var path = "work/0b7c5c43-caa8-4789-a263-308508d44016"; var resp = applications.deletequery( serviceroot, path ); var json = json.parse( resp.tostring() );
样例:现有一个名称为“sendsms”的接口,接收的requesttext为 "{ mobile : mobile, content : content }"
var cipherconnectionaction = java.type('com.x.base.core.project.connection.cipherconnectionaction'); var config = java.type('com.x.base.core.project.config.config'); var path = "invoke/sendsms/execute"; var datastring = json.stringify({ "mobile" : "13500000000", "content" : "测试短信内容" }); var resp = cipherconnectionaction.post(false, config.url_x_program_center_jaxrs() path, datastring ); //var resp = cipherconnectionaction.post(false, config.x_program_centerurlroot() path, datastring ); var json = json.parse( resp.tostring() );
样例:现有一个外系统的服务,url为 'http://hostname/unifiedworkbench/processtaskservice',接收的content-type 为 'text/xml; charset=utf-8'
function sendrequest( xml ){ try{ print("发起请求:" xml); var url = 'http://hostname/unifiedworkbench/processtaskservice' var arraylist = java.type('java.util.arraylist'); var heads = new arraylist(); var namevaluepair = java.type('com.x.base.core.project.bean.namevaluepair'); var p1 = new namevaluepair('content-type', 'text/xml; charset=utf-8'); heads.add(p1); var httpconnectionclass = java.type('com.x.base.core.project.connection.httpconnection'); var resp = httpconnectionclass.postasstring(url, heads, xml); print( "统一待办返回:" resp.tostring()); }catch(e){ print("发送请求出错:"); print( e.printstacktrace() ); } }
组织管理中包括人员、人员属性、组织、组织属性、身份、群组和角色。有两种方法可以进行组织管理的操作:
1、通过调用后台组织查询服务“x_organization_assemble_express”进行组织管理的操作。具体服务请查看
http://{applicationserver}/x_organization_assemble_express/jest/index.html
其中:{applicationserver}为部署的服务器ip地址或者域名。
请注意,v7.2之前端口为20020:
http://{applicationserver}:20020/x_organization_assemble_express/jest/index.html
2、你可以通过 this.org 获取组织中的人员、人员属性、组织、组织属性、身份、群组和角色。
具体请查看api的章节
以上是对定时代理和接口脚本编写的描述,希望对您有帮助。如果您想进一步了解服务和接口,可以查看以下文章:
上一篇:服务管理-简介
下一篇:没有了!