提交 ea0fb5cb 编写于 作者: 蔡祥熠

Merge branch 'fix/xScript.add_background_script' into 'wrdp'

Merge of fix/xScript.add_background_script 增加后台脚本API to wrdp

See merge request o2oa/o2oa!4659
......@@ -42,8 +42,8 @@
}
},
"metadata": {
"title": "O2OA前台API", //最终生成的文档中标题
"title_prefix" : "O2OA WebAPI", //html title标题前缀
"title": "O2OA API", //最终生成的文档中标题
"title_prefix" : "O2OA API", //html title标题前缀
"title_suffix" : " | O2OA开发平台" //标题后缀
},
"o2" : {
......
# O2OA前台API {@o2version}
# O2OA API {@o2version}
## 简介
* O2OA 是一个高度可定制化的企业级办公平台,您可以通过脚本语言扩展平台功能。
* O2OA 前端脚本基于您使用的浏览器的Javascript引擎,使用Javascript语法。
* O2OA 前端脚本是运行在浏览器和移动端h5页面上的,基于您使用浏览器的Javascript引擎,使用Javascript语法。
* 本API是O2OA前台脚本的编写说明,您可以通过脚本访问和操作平台内的各种对象。
* O2OA 后端脚本运行在服务器上,基于JDK8标准的Nashorn,遵循ECMAScript 5.1规范。除本API的modules.server章节外,后端脚本还支持该文章的特性:[https://www.yuque.com/o2oa/course/vu3ll8](https://www.yuque.com/o2oa/course/vu3ll8)
* 本API是O2OA脚本的编写说明,您可以通过脚本访问和操作平台内的各种对象。
## API总览
### Modules
* 为脚本封装的对象、方法和类
* 为脚本封装的对象、方法和类
#### server
* 后台脚本(服务端)可以使用的对象、方法和类。
<table>
<tr>
<td><a href="server.module_data.html">业务数据 - data</a></td>
<td><a href="server.module_workContext.html">流程实例 - workContext</a></td>
<td><a href="server.module_org.html">组织查询 - org</a></td>
</tr>
<tr>
<td><a href="server.module_Dict.html">数据字典 - Dict</a></td>
<td><a href="server.module_Actions.html">服务调用 - Actions</a></td>
<td><a href="module-include_.html">脚本引用 - include</a></td>
</tr>
<tr>
<td><a href="module-define_.html">方法定义 - define</a></td>
<td></td>
<td></td>
</tr>
</table>
#### web
* 前台脚本(浏览器/移动端H5页面)可以使用的对象、方法和类。
<table>
<tr>
<td><a href="module-data.html">业务数据 - data</a></td>
......@@ -41,15 +66,23 @@
<td><a href="module-session.html">当前用户 - session</a></td>
</tr>
<tr>
<td><a href="module-o2m.html">平台移动APP API - o2m</a></td>
<td><a href="module-wait.html">表单等待 - wait</a></td>
<td><a href="module-importer.html">导入数据 - importer</a></td>
<td></td>
</tr>
</table>
#### mobile
* 移动端H5页面除了可以使用Modules.web章节描述的API,还可以使用下列API:
<table>
<tr>
<td><a href="module-o2m.html">平台移动APP API - o2m</a></td>
</tr>
</table>
### FormComponent
* FormComponent为表单组件,可以通过`this.form.get("fieldId")`获取。
* FormComponent为表单页面组件,在前台脚本中可以使用。可以通过`this.form.get("fieldId")`获取。
#### Process 流程表单组件
<table>
......@@ -323,41 +356,120 @@
## 使用范围
O2OA 可在多个位置嵌入脚本代码,用于扩展平台和实现自定义功能。嵌入脚本代码分为前端执行代码和服务端执行代码,两者语法一致,本文档指前台脚本。
O2OA 可在多个位置嵌入脚本代码,用于扩展平台和实现自定义功能。嵌入脚本代码分为前端执行代码和服务端执行代码,两者语法一致。
* 后端脚本使用范围:
<table>
<tr>
<td>脚本库</td>
<td>流程平台、门户平台和内容管理平台中,都有脚本设计元素,可以在此创建脚本库。</td>
</tr>
<tr>
<td>服务管理</td>
<td>服务管理的接口和定时代理。</td>
</tr>
<tr>
<td>流程设计</td>
<td>流程属性的所有脚本(流程事件、时效脚本等等);流程活动的所有脚本(处理人、待阅人、阅读人脚本,拆分依据、时效脚本,活动事件,参数脚本、响应脚本、执行脚本等等);流程路由的条件脚本。</td>
</tr>
<tr>
<td>查询配置</td>
<td>查询配置的查询语句和总数语句。</td>
</tr>
<tr>
<td>视图列</td>
<td>视图列的显示脚本。</td>
</tr>
</table>
* 前端脚本使用范围:
<table>
<tr>
<td>脚本库</td>
<td>流程平台、门户平台和内容管理平台中,都有脚本设计元素,可以在此创建脚本库。</td>
</tr>
<tr>
<td>表单、页面、视图、查询视图、导入模型及其组件事件</td>
<td>流程平台和内容平台的表单、门户平台的页面、数据平台的视图和查询视图中,每个设计组件包含多种事件,包括DOM对象原生事件和O2平台扩展事件。</td>
</tr>
<tr>
<td>表单、页面可编辑组件默认值</td>
<td>流程平台和内容平台的表单和门户平台的页面中,可编辑组件或文本组件的默认值可以通过脚本指定。</td>
</tr>
<tr>
<td>表单及可编辑组件校验</td>
<td>流程平台和内容管理的表单中,可编辑的字段可以通过脚本进行有效性校验,校验通过返回true,不通过返回提示信息。</td>
</tr>
<tr>
<td>流程设计</td>
<td>流程设计主要是后台脚本,但也有除外,流程路由属性的扩展附签和选择附签下的脚本使用的是前台脚本。</td>
</tr>
</table>
### 后端脚本使用范围详情
#### 脚本库
流程平台、门户平台和内容管理平台中,都有脚本设计元素,可以在此创建脚本库。
![脚本库](img/home/server_script.png)
<br/><br/>
#### 服务管理
服务管理的接口和定时代理。
![定时代理](img/home/server_agent.png)
![接口](img/home/server_interface.png)
<br/><br/>
#### 流程设计
流程属性的所有脚本(流程事件、时效脚本等等)。
![流程属性](img/home/server_process.png)
流程活动的所有脚本(处理人、待阅人、阅读人脚本,拆分依据、时效脚本,活动事件,参数脚本、响应脚本、执行脚本等等)
![流程活动](img/home/server_process_activity.png)
流程路由的条件脚本。
![流程路由](img/home/server_process_route.png)
#### 查询配置
查询配置的查询语句和总数语句。
![流程路由](img/home/server_statement.png)
#### 视图列
视图列的显示脚本,可以使用this.value获取本列的列值、this.entry.data获取本行的数据。
![视图列显示脚本](img/home/server_view_column.png)
### 前端脚本使用范围详情
### 脚本:
#### 脚本库
流程平台、门户平台和内容管理平台中,都有脚本设计元素,可以在此创建自己的脚本库。如下图:
![脚本](img/home/script.png)
![脚本](img/home/script.png)
<br/><br/>
### 表单、页面、视图、查询视图及其组件事件:
#### 表单、页面、视图、查询视图及其组件事件
流程平台和内容平台的表单、门户平台的页面、数据平台的视图和查询视图中,每个设计组件包含多种事件,包括DOM对象原生事件和O2平台扩展事件。如下图:
![事件中的脚本](img/home/script_event.png)
<br/><br/>
### 表单、页面可编辑组件默认值:
#### 表单、页面可编辑组件默认值
流程平台和内容平台的表单和门户平台的页面中,可编辑组件或文本组件的默认值可以通过脚本指定。如下图:
![事件中的脚本](img/home/script_defaultvalue.png)
<br/><br/>
### 表单、页面、视图、查询视图的部分属性:
#### 表单、页面、视图、查询视图的部分属性
流程平台和内容平台的表单、门户平台的页面、数据平台的视图和查询视图中,有许多组件的相关属性可以通过脚本来定义。<br/>
如:下拉框、单选多选按钮的可选值、人员字段的选择范围、区段依据等。如下图:<br/>
![属性中的脚本](img/home/script_attribute.png)
<br/><br/>
### 表单及可编辑组件校验:
#### 表单及可编辑组件校验
流程平台和内容管理的表单中,可编辑的字段可以通过脚本进行有效性校验,校验通过返回true,不通过返回提示信息。如下图:
![脚本](img/home/script_validation.png)
<br/><br/>
### 流程路由属性的扩展附签和选择附签下的脚本:
#### 流程路由属性的扩展附签和选择附签下的脚本
![扩展附签脚本](img/home/script_route_extend.png)
![选择附签脚本](img/home/script_route_select.png)
<br/><br/>
......
......@@ -49,12 +49,12 @@
"readline-sync": "^1.4.10",
"gulp-cli": "^2.3.0",
"jsdoc": "^3.6.6",
"tidy-jsdoc-o2": "0.0.8",
"tidy-jsdoc-o2": "latest",
"gulp-git": "^2.10.1"
},
"dependencies": {
"gulp-cli": "^2.3.0",
"jsdoc": "^3.6.6",
"tidy-jsdoc-o2": "0.0.8"
"tidy-jsdoc-o2": "latest"
}
}
......@@ -35,6 +35,7 @@ MWF.xScript.CMSEnvironment = function(ev){
/**
* 您可以通过documentContext获取内容管理实例相关的对象数据。
* @module documentContext
* @o2category web
* @o2range {CMS}
* @o2ordernumber 30
* @example
......
......@@ -31,6 +31,7 @@ MWF.xScript.Environment = function(ev){
* 这些数据一般情况下是通过您创建的表单收集而来的,也可以通过脚本进行创建和增删改查操作。<br/>
* data对象基本上是一个JSON对象,您可以用访问JSON对象的方法访问data对象的所有数据,但增加和删除数据时略有不同。
* @module data
* @o2category web
* @o2ordernumber 10
* @example
* //您可以在表单或流程的各个嵌入脚本中,通过this来获取当前实例的业务数据,如下:
......@@ -182,6 +183,7 @@ MWF.xScript.Environment = function(ev){
/**
* 您可以通过workContext获取和流程相关的流程实例对象数据。
* @module workContext
* @o2category web
* @o2range {Process}
* @o2ordernumber 20
* @o2syntax
......@@ -1881,6 +1883,7 @@ MWF.xScript.Environment = function(ev){
* this.include是一个方法,当您在流程、门户或者内容管理中创建了脚本配置,可以使用this.include()用来引用脚本配置。<br/>
* <b>(建议使用表单中的预加载脚本,需要判断加载的时候才使用本方法加载脚本,此时建议异步加载有助于表单加载速度。)</b><br/>
* @module include
* @o2category web
* @o2ordernumber 140
* @param {(String|Object|String[]|Object[])} optionsOrName 可以是脚本标识字符串(数组)或者是对象(数组)。
* <pre><code class='language-js'>
......@@ -2044,6 +2047,7 @@ MWF.xScript.Environment = function(ev){
* this.define是一个方法,您可以在流程、门户或者内容管理中创建脚本配置,在脚本配置中您可以通过this.define()来定义自己的方法。<br/>
* 通过这种方式定义方法,在不同的应用使用相同的方法名称也不会造成冲突。
* @module define
* @o2category web
* @o2ordernumber 150
* @param {(String)} name 定义的方法名称。
* @param {Function} fun 定义的方法
......@@ -2099,6 +2103,7 @@ MWF.xScript.Environment = function(ev){
* this.wait需和this.goon配合使用。<br/>
* <b>目前只有流程表单的queryload事件支持此方法。</b>
* @module wait
* @o2category web
* @o2range {Process}
* @o2syntax
* var resolve = this.wait(); //让表单停止加载页面
......@@ -2191,6 +2196,7 @@ MWF.xScript.Environment = function(ev){
/**
* form对象可在流程表单或内容管理表单中可用。(仅前端脚本可用)。
* @module form
* @o2category web
* @o2range {Process|CMS}
* @o2ordernumber 40
* @o2syntax
......
......@@ -1479,6 +1479,7 @@ MWF.xScript.PageEnvironment = function (ev) {
/**
* page对象可在门户页面中可用。它的很多方法与form类似。<b>(仅前端脚本可用)</b><br/>
* @module page
* @o2category web
* @o2range {Portal}
* @o2ordernumber 50
* @o2syntax
......
此差异已折叠。
......@@ -222,6 +222,7 @@ MWF.xScript.ViewEnvironment = function (ev) {
/**
* this.Dict是一个工具类,如果您在流程、门户中创建了数据字典,可以使用this.Dict类对数据字典进行增删改查操作。
* @module Dict
* @o2category web
* @o2ordernumber 120
* @param {(String|Object)} optionsOrName 数据字典标识字符串或者是对象。
* <div>如果对本应用的数据字典操作,将optionsOrName设置为string。</div>
......@@ -710,6 +711,7 @@ MWF.xScript.ViewEnvironment = function (ev) {
/**
* 您可以通过this.org获取组织中的人员、人员属性、组织、组织属性、身份、群组和角色。
* @module org
* @o2category web
* @o2ordernumber 100
* @o2syntax
* //您可以在流程表单、内容管理表单、门户页面、视图和查询视图中,通过this来获取当前实例的org对象,如下:
......@@ -2838,6 +2840,7 @@ MWF.xScript.ViewEnvironment = function (ev) {
/**
* 您可以通过view对象,获取视图数据或选择视图数据。<br/>
* @module view
* @o2category web
* @o2ordernumber 70
* @o2syntax
* //您可以在流程表单、内容管理表单或门户页面中,通过this来获取view对象,如下:
......@@ -3080,6 +3083,7 @@ MWF.xScript.ViewEnvironment = function (ev) {
/**
* 您可以通过statement对象,获取执行查询语句或者对查询结果进行选择。<br/>
* @module statement
* @o2category web
* @o2ordernumber 90
* @o2syntax
* //您可以在流程表单、内容管理表单、门户页面或视图中,通过this来获取statement对象,如下:
......@@ -3343,6 +3347,7 @@ MWF.xScript.ViewEnvironment = function (ev) {
/**
* 您可以通过importer对象,执行导入模型的Excel导入数据功能。<br/>
* @module importer
* @o2category web
* @o2ordernumber 93
* @o2syntax
* //您可以在流程表单、内容管理表单、门户页面或视图中,通过this来获取statement对象,如下:
......@@ -3523,6 +3528,7 @@ MWF.xScript.ViewEnvironment = function (ev) {
* 当查询设计中使用了select语句,并且配置了视图,可以在查询视图中使用本章API。<br/>
* queryStatement对象在查询视图中可用。它的很多方法与queryView类似。<b>(仅前端脚本可用)</b><br/>
* @module queryStatement
* @o2category web
* @o2range {QueryStatement}
* @o2ordernumber 80
* @borrows module:queryView.confirm as confirm
......@@ -3679,6 +3685,7 @@ MWF.xScript.ViewEnvironment = function (ev) {
/**
* queryView对象可在视图中可用。它的很多方法与form类似。<b>(仅前端脚本可用)</b><br/>
* @module queryView
* @o2category web
* @o2range {QueryView}
* @o2ordernumber 60
* @o2syntax
......@@ -4450,6 +4457,7 @@ MWF.xScript.ViewEnvironment = function (ev) {
/**
* 在前端脚本中,可以通过this.session.user来获取当前用户信息。<br/>
* @module session
* @o2category web
* @o2ordernumber 110
* @o2syntax
* var user = this.session.user;
......@@ -4520,12 +4528,11 @@ MWF.xScript.ViewEnvironment = function (ev) {
* 本文档说明如何在前台脚本中使用Actions调用平台的RESTful服务。<br/>
* 通过访问以下地址来查询服务列表:http://server:20030/x_program_center/jest/list.html
* @module Actions
* @o2category web
* @o2ordernumber 130
* @o2syntax
* //获取Actions
* this.Actions
* //或者
* o2.Actions
*/
/**
......@@ -4554,8 +4561,6 @@ MWF.xScript.ViewEnvironment = function (ev) {
* </code></pre>
* @return {Object} 返回action对象,用于后续服务调用
* @o2syntax
* var actions = o2.Actions.load( root );
* //或
* var actions = this.Actions.load( root );
* @o2syntax
* //获取流程平台服务对象。
......@@ -4696,7 +4701,7 @@ MWF.xScript.ViewEnvironment = function (ev) {
*/
/**
* <b>已过时。</b>平台预置了Action的调用方法,您可以使用o2.Actions.get来获取这些方法。RESTful配置文件在{服务器目录}/webServer/o2_core/o2/xAction/services下。
* <b>已过时。</b>平台预置了Action的调用方法,您可以使用this.Actions.get来获取这些方法。RESTful配置文件在{服务器目录}/webServer/o2_core/o2/xAction/services下。
* @method get
* @deprecated
* @methodOf module:Actions
......@@ -4707,12 +4712,12 @@ MWF.xScript.ViewEnvironment = function (ev) {
* </code></pre>
* @return {String} 对应服务根的host。如:http://127.0.0.1:20020
* @o2syntax
* var actions = o2.Actions.get( root );
* var actions = this.Actions.get( root );
* actions[ methodName ]( arguements );
*
* or
*
* o2.Actions.get( root )[methodName]( arguements );
* this.Actions.get( root )[methodName]( arguements );
* @o2syntax
* methodName :(string)方法名称。
* arguements : 见load方法的arguements说明
......@@ -4721,7 +4726,7 @@ MWF.xScript.ViewEnvironment = function (ev) {
* //现已知获取数据的方法名称是 getWorkData uri为: /jaxrs/data/work/{workid}
* //已知更新数据的方法名称是 saveData uri为: /jaxrs/data/work/{workid}
* var workid = "cce8bc22-225a-4f85-8132-7374d546886e";
* var action = o2.Actions.get("x_processplatform_assemble_surface");
* var action = this.Actions.get("x_processplatform_assemble_surface");
* var data;
* action.getWorkData( //平台封装好的方法
* workid, //uri的参数
......@@ -4745,7 +4750,7 @@ MWF.xScript.ViewEnvironment = function (ev) {
* var id = "(0)"; //如果是第一页id是(0),否则传上一页最后一个流程实例的id
* var count = 10;
* var applicationId = "dde8bc22-225a-4f85-8132-7374d546886e";
* o2.Actions.get("x_processplatform_assemble_surface").listWorkNext(
* this.Actions.get("x_processplatform_assemble_surface").listWorkNext(
* id, //listWorkNext服务有3个uri参数,要按先后顺序列出
* count,
* applicationId,
......
......@@ -32,6 +32,7 @@
* <br/>
* <b>o2m</b> 只有在O2OA移动端APP中才能提供能力
* @module o2m
* @o2category mobile
* @o2ordernumber 160
* @o2range {流程表单|门户}
* @o2syntax
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册