Actions 对象
由 0x400 发布于
## 一、概述
`Actions` 对象用于在 O2OA 平台的前台脚本中调用 RESTful 服务。通过 `this.Actions` 访问,支持通过服务根(root)加载具体的服务方法,实现与后端的交互。
## 二、核心方法
### 1. getHost(root) → `String`
- **功能**:获取指定服务根对应的主机地址。
- **语法**:
```javascript
const host = this.Actions.getHost(root);
```
- **参数**:
- `root`(String,必填):服务根名称,如 `"x_processplatform_assemble_surface"`。
- **返回值**:服务根对应的主机地址(如 `http://127.0.0.1`)。
- **示例**:
```javascript
const processHost = this.Actions.getHost("x_processplatform_assemble_surface");
console.log("流程服务主机:", processHost);
```
### 2. load(root) → `Object`
- **功能**:加载指定服务根的所有可用方法,返回可调用的 action 对象。
- **语法**:
```javascript
const actions = this.Actions.load(root);
```
- **参数**:
- `root`(String,必填):服务根名称,如 `"x_processplatform_assemble_surface"`。
- **返回值**:包含服务方法的 action 对象。
- **调用方式**:
```javascript
const processAction = this.Actions.load("x_processplatform_assemble_surface");
const promise = processAction.TaskAction.V2ListPaging(page, size, body, success, failure, async);
```
- `actionName`:服务分类名称(如 `TaskAction`)。
- `methodName`:具体方法名称(如 `V2ListPaging`)。
- `arguements`:参数列表(按顺序传递)。
### 3. get(root) → `String`(已过时)
- **功能**:(不推荐使用)获取服务根对应的主机地址。
- **语法**:
```javascript
const host = this.Actions.get(root);
```
- **参数**:
- `root`(String,必填):服务根名称。
- **返回值**:主机地址(同 `getHost`)。
- **示例**:
```javascript
const host = this.Actions.get("x_processplatform_assemble_surface");
```
## 三、方法参数说明
### 1. 通用参数
| 参数名 | 类型 | 描述 |
|-------------|------------|----------------------------------------------------------------------|
| `uriParams` | 任意类型 | URI 路径参数,按顺序传递(如 `page`, `size`)。 |
| `body` | Object | POST/PUT 请求的请求体数据。 |
| `file` | FormData | 文件上传时的表单数据(仅 POST/PUT 有效)。 |
| `success` | Function | 成功回调函数,参数为响应数据 `json`。 |
| `failure` | Function | 失败回调函数,参数为 `xhr` 对象(可返回 `true` 阻止系统错误提示)。 |
| `async` | Boolean | 是否异步执行,默认 `true`。 |
| `urlEncode` | Boolean | 是否对 URL 编码,默认 `true`。 |
| `cache` | Boolean | 是否使用缓存,默认 `true`。 |
### 2. 调用示例
```javascript
// 获取待办列表(使用 Promise)
const processAction = this.Actions.load("x_processplatform_assemble_surface");
const promise = processAction.TaskAction.V2ListPaging(1, 20, { processList: [] });
promise.then((json) => {
console.log("待办列表:", json.data);
});
// 修改流程数据(使用回调)
const workid = "cce8bc22-225a-4f85-8132-7374d546886e";
processAction.DataAction.updateWithWork(
workid,
{ subject: "新标题" },
() => {
o2.xDesktop.notice("success", { y: "top", x: "right" }, "保存成功");
},
(xhr) => {
const error = JSON.parse(xhr.responseText);
console.error("保存失败:", error.message);
}
);
```
## 四、错误处理
服务调用失败时,`failure` 回调的 `xhr.responseText` 包含以下格式的错误信息:
```json
{
"type": "error",
"message": "错误描述",
"date": "2023-10-01 12:00:00",
"prompt": "异常类名"
}
```
## 五、服务列表查询
访问以下地址查看可用服务列表:
- **v7.2+**:`http://server/x_program_center/jest/list.html`
- **v7.2 之前**:`http://server:20030/x_program_center/jest/list.html`
## 六、注意事项
1. **服务根名称**:需准确填写服务根名称(如 `x_processplatform_assemble_surface`)。
2. **参数顺序**:URI 参数需按顺序传递,避免错位。
3. **异步操作**:建议使用 `Promise` 处理异步响应,提高代码可读性。
4. **过时方法**:优先使用 `load` 方法,`get` 方法已过时。
**提示**:更多服务细节和参数配置,请参考服务列表页面的具体说明。
评论