Administrator
Administrator
发布于 2026-04-14 / 1 阅读
0
0

WRDP开发参考文档

本文档基于对 33,766个 平台文件的全面扫描分析编写,涵盖所有常用语法、接口调用、系统变量等开发资料

文档版本: v3.0
生成日期: 2026-04-14
扫描文件数: 33,766+ 个 (.jss/.jssp/.script/.port)


目录

  1. 平台概述
  2. 文件类型说明
  3. 核心全局对象
  4. wish对象API详解
  5. doc文档对象API
  6. db数据库对象API
  7. dcc文档集对象API
  8. uniflow工作流对象
  9. conf配置管理
  10. date日期时间
  11. str字符串工具
  12. ldap目录服务
  13. org组织架构
  14. sequence序列号
  15. server服务端
  16. wrdp前端模块
  17. REST服务调用
  18. HTTP与网络请求
  19. 流程端口配置
  20. 常用代码模板
  21. 开发规范与注意事项
  22. 附录:常见常量与SQL

一、平台概述

WRDP是一个JavaScript-based的Web应用开发平台,支持:

  • 服务端业务逻辑(.jss)
  • 页面脚本渲染(.jssp)
  • 客户端脚本组件(.script)
  • 流程节点配置(.port)

二、文件类型说明

文件类型 描述 用途
.jss Server JavaScript 服务端业务逻辑脚本,类似Java语法
.jssp JavaScript Page 页面脚本,可包含HTML和JavaScript混合代码
.script Client Script 客户端脚本,用于定义UI组件和行为
.port Port/Node Config 流程节点配置,JSON格式定义工作流

三、核心全局对象

对象名 类型 说明
wish Framework 主框架对象,核心API入口
doc Document 当前业务文档对象
docUrl Document URL参数文档
docUser Document 当前用户文档
docAppSystem Document 当前应用系统文档
docSystem Document 系统配置文档
docConfig Document 流程配置文档
db Database 当前数据库访问对象
uniflow Uniflow 工作流控制对象

四、wish对象API详解

wish是平台的核心框架对象,提供所有主要功能。

4.1 日志输出

wish.println("日志信息");           // 打印日志到控制台
wish.debug("调试信息");            // 调试日志输出
wish.throwsError("错误描述");      // 抛出异常错误

4.2 服务调用 dispatch

wish.dispatch("/module/path/service.jss");           // 调用JSS服务
wish.dispatch("/module/path.service.jss");            // 调用服务
wish.dispatch("/moduleName.page");                   // 页面模板渲染
wish.dispatch("xxx.bean");                           // Bean调用
wish.dispatch("xxx.form");                           // 表单模板渲染
wish.dispatch("xxx.subform");                       // 子表单模板
wish.dispatch("xxx.conf");                          // 配置获取
wish.dispatch("/system/port.db/proxy.port");        // 引入API代理(最常用)

4.3 变量存取

wish.put("变量名", 变量值);             // 设置变量
wish.get("变量名");                     // 获取变量
wish.get("_contentType");              // 获取系统变量
wish.put("_contentType", "text/json"); // 设置响应类型

4.4 文档创建

wish.doc.create();                                      // 创建空文档
wish.doc.create(jsonString);                            // 从JSON字符串创建
wish.doc.create(wish.doc.create(result).get("data"));   // 嵌套创建

4.5 HTTP请求

wish.get("http://api.example.com/data");               // GET请求
wish.post("http://api.example.com/submit", "data");      // POST请求
wish.getApi("uniflowClient");                          // 获取API客户端

4.6 数据库相关

wish.db.getCurrentDbSource();           // 获取当前数据源
wish.db.getDbSource("dbName");          // 获取命名数据源

4.7 API服务获取

wish.getApi("uniflowClient");          // 获取Uniflow客户端

4.8 表单相关

wish.getForm();                         // 获取当前表单
wish.getWish();                         // 获取Wish上下文

4.9 表达式解析

wish.parser(template);                  // 解析模板
wish.parser(template, doc);               // 带文档解析

4.10 其他工具方法

wish.getNow("yyyy-MM-dd HH:mm");        // 获取当前时间
wish.byView("viewName").reload();       // 视图刷新
net.wish.util.Tools.getUnId();         // 生成UUID

五、doc文档对象API

doc代表当前业务文档。

5.1 获取字段值

doc.get("fieldName");                           // 获取字符串值
doc.get("fieldName", "defaultValue");           // 获取带默认值
doc.getFieldArray();                             // 获取所有字段名数组
doc.getChildren("childName");                   // 获取子文档集合
doc.getChild("childName");                       // 获取子文档

5.2 设置字段值

doc.replace("fieldName", "value");               // 替换/设置字段值
doc.append("fieldName", "value");                // 追加字段值(逗号分隔)
doc.replaceDefault("fieldName", value);           // 设置默认值
doc.copyFromDocument(anotherDoc);                // 从另一文档复制
doc.setUnid();                                   // 设置UNID

5.3 文档操作

doc.getString();                                 // 获取文档字符串
doc.getStringDeeply();                           // 深度获取字符串
doc.toString();                                  // 转为字符串
doc.count();                                     // 文档数量
doc.getCount();                                  // 同count()

5.4 字符串方法

doc.equals("value");                             // 字符串比较
doc.trim();                                      // 去空格
doc.split(",");                                  // 分割字符串
doc.indexOf("substring");                         // 查找位置
doc.substring(start);                            // 截取
doc.length;                                      // 长度

六、db数据库对象API

db提供数据库访问能力。

6.1 查询操作

db.search(sql);                                 // 执行SQL搜索返回DCC
db.query(sql);                                  // 执行SQL查询
db.queryForDocuments(sql);                       // 查询返回文档集合
db.querySql(sql);                               // 执行SQL查询

6.2 保存操作

db.save(tableName, doc);                        // 保存文档
db.save(tableName, doc, primaryKey);             // 指定主键保存
db.insert(tableName, doc);                      // 插入文档
db.execute(sql);                                // 执行SQL(增删改)
db.saveOrUpdateRowItem(table, dcc, unid, category);  // 保存或更新行项目

6.3 获取文档

db.getDocumentByPiid(piid);                    // 通过PIID获取
db.getDocumentByUnid(unid);                     // 通过UNID获取
db.getDocumentByApplyId(applyId);               // 通过ApplyId获取
db.getCurrentDbSource();                        // 获取当前数据源

6.4 数据源名称常量

wish.db.getDbSource("Uniflow");                // Uniflow主数据库
wish.db.getDbSource("UniflowWebApp");           // Web应用数据库
wish.db.getDbSource("UniflowWebApp_log");       // 日志数据库
wish.db.getDbSource("zyContract");              // 合同数据库
wish.db.getDbSource("businessDb");              // 业务数据库
wish.db.getDbSource("test");                    // 测试数据库

七、dcc文档集对象API

dcc用于处理多条记录的文档集。

7.1 基础操作

dcc.count();                                    // 获取文档数量
dcc.getCount();                                 // 同count()
dcc.get(index);                                 // 获取第N个文档
dcc.add(doc);                                   // 添加文档
dcc.deleteDoc(doc);                            // 删除文档

7.2 转换输出

dcc.string();                                   // 转为字符串
dcc.getString();                               // 同string()
dcc.json;                                      // 获取JSON数组

7.3 搜索过滤

dcc.searchDocuments("field=value");             // 文档属性搜索
dcc.searchDocument("fieldName", value);        // 单条件搜索

八、uniflow工作流对象

8.1 获取流程信息

wish.uniflow.getFlowNodeId();                  // 获取当前节点ID
wish.uniflow.getFlowConfigDocument();          // 获取流程配置文档
wish.uniflow.isInst();                         // 是否为流程实例

九、conf配置管理

wish.conf.getFromCommon("configName", "fieldName");  // 从公共配置获取值
wish.conf.getConfDoc("/path/to/config.conf");        // 获取配置文档
wish.conf.getCategorys(parentNo);                     // 获取分类集合
wish.conf.gets();                                     // 获取资源集合

十、date日期时间

wish.date.getNow();                            // 获取当前时间
wish.date.getNow("yyyy-MM-dd HH:mm");          // 格式化时间
wish.date.addDay(date, days);                   // 日期加减
wish.date.compare(date1, date2);                // 比较日期
wish.date.getWeek(date);                       // 获取星期

十一、str字符串工具

wish.str.contains(string, substr);               // 字符串包含判断
wish.str.containWord(string, keyword);          // 包含词语(支持*通配)
wish.str.getFieldValue(string);                 // 获取字段值
wish.str.equals(str1, str2);                   // 字符串相等判断

十二、ldap目录服务

wish.ldap.getCompanyByDN(dn);                   // 根据DN获取公司
wish.ldap.getDepartmentByDN(dn);                // 根据DN获取部门
wish.ldap.getAllAttrs(baseDn, filter, attr);    // 获取LDAP属性
wish.ldap.getAttr(baseDn, filter, attrName);    // 获取指定属性
wish.ldap.getUserNamesByUserIds(userIds);       // 通过ID列表获取用户名

12.1 部门对象方法

department.getName();                           // 获取部门名称
department.getOrgNum();                         // 获取部门组织编码
department.getOptionalProps();                   // 获取可选属性

十三、org组织架构

wish.org.getFullUserNameByRole(roleName);      // 根据角色获取用户全名
wish.org.getUserDocument(userId);               // 获取用户文档

十四、sequence序列号

wish.sequence.getBillNumber(key, placeholderCount);  // 生成单据号

十五、server服务端

wish.server.getServerDoc();                    // 获取服务器文档
net.wishx.util.Server.clearDocPool();          // 清除文档缓存池
net.wishx.util.Server.docPool.put(key, doc);   // 放入文档缓存

十六、wrdp前端模块

16.1 模块加载

wrdp.require("wrdp.uniflow.Task");             // 加载Task模块
wrdp.require("wrdp.uniflow.Process");          // 加载Process模块
wrdp.require("wrdp.rest.Mcosm");               // 加载OSM服务
wrdp.require("wrdp.rest.Mcnumber");            // 加载编号服务
wrdp.require("wrdp.contractrest.xxx");          // 加载合同REST服务
wrdp.getModule("modulePath");                   // 获取模块实例
wrdp.getFile("filePath");                      // 获取文件内容
wrdp.create("className");                       // 创建类实例

16.2 task工作流任务对象

task.queryTasksByPage(parmDoc, page, pageSize);  // 分页查询任务
task.queryTaskCount(parmDoc);                   // 查询任务数量
task.queryReadsByPage(parmDoc, page, pageSize); // 分页查询已阅
task.queryReadCount(parmDoc);                   // 查询已阅数量
task.queryExtendData(piid, [field1, field2]);   // 查询扩展数据
task.transferTask(wiid, newHandlers);            // 转办任务
task.queryTasksByPos(parmDoc, pos1, pos2);     // 按位置查询
task.replaceDefault("field", value);              // 设置默认值
task.get("field");                              // 获取字段

16.3 process流程对象

proess.queryExtendData(piid, [fields]);         // 查询流程扩展数据
proess.queryAclByCat(category);                 // 按分类查询ACL

16.4 osm组织架构服务

osm.getUserBaseInfoByUserId(personId);           // 获取用户基础信息
osm.getUserIdentitiesByBaseIds(id, domainCode);  // 获取用户身份列表
osm.getCompanyByOrgId(orgId, domainCode);         // 获取公司信息
osm.getOrgPostByOrgId(orgId);                    // 获取组织岗位
osm.getUserNaturePageByDomainCode(domainCode);  // 分页获取用户属性
osm.getById(id);                                 // 通过ID获取
osm.getByIds(ids);                               // 批量获取
osm.getAllHeadShipList();                        // 获取所有职务列表
osm.getListByBaseId(baseId);                     // 按baseId获取列表
osm.getPageByOrgId(orgId);                       // 按组织分页
osm.getPageBySelective(params);                  // 按条件分页
osm.edit(params);                               // 编辑
osm.editStatusById(id);                         // 编辑状态
osm.add(params);                                // 添加
osm.removeByIds(ids);                           // 批量删除

16.5 合同REST服务(srsrv)

srsrv.queryList(start, length, param1, ...);       // 分页查询列表
srsrv.docLineList(start, length, conId);          // 查询文档行列表
srsrv.getBaseInfo(param);                        // 获取基本信息
srsrv.saveBaseInfo(param);                       // 保存基本信息
srsrv.updateBaseInfo(param);                     // 更新基本信息
srsrv.delBaseInfo(param);                        // 删除基本信息
srsrv.getVendorInfo(param);                      // 获取供应商信息
srsrv.saveVendorInfo(param);                     // 保存供应商信息
srsrv.getContractType(param);                     // 获取合同类型
srsrv.queryContractByConId(conId);               // 按ID查询合同
srsrv.queryConConnectionList(start, length, name, connectionId); // 查询关联列表
srsrv.queryfinishContractList(start, length, conName); // 查询已完成合同
srsrv.saveContractForm(doc);                    // 保存合同表单
srsrv.saveChangeContract(doc);                  // 保存合同变更
srsrv.saveCancelContract(doc);                  // 保存合同注销
srsrv.getTemInfo(id);                             // 获取模板信息
srsrv.addTemInfo(param);                         // 添加模板信息
srsrv.updateTemInfo(param);                     // 更新模板信息
srsrv.batchDelTemInfo(ids);                      // 批量删除模板
srsrv.fileContract(conId);                       // 归档合同
srsrv.getFileContract(conId);                   // 获取归档合同
srsrv.reportFileInfo(param);                     // 上报文件信息
srsrv.queryHisList(start, length, temParentId, temEnableState); // 查询历史

十七、REST服务调用

17.1 内部服务调用

// 方式1:通过wish.dispatch调用
wish.dispatch("/module/service.jss");

// 方式2:引入API代理
wish.dispatch("/system/port.db/proxy.port");
var number = wish.require("wrdp.rest.Mcnumber");

// 方式3:REST客户端
wish.getApi("uniflowClient").createProcessServiceClient("system", "password");
wish.getApi("uniflowClient").createTaskServiceClient("system", "password");

17.2 wrdp模块示例

// 号码服务
var number = wrdp.require("wrdp.rest.Mcnumber");
number.saveTempNumberToNumberData(formulaCode, formulaData, showValue, deptId, operateType);
number.numberGetFreeze(formulaCode, formulaData, orgCode);

// 组织服务
var osmsv = wrdp.require("wrdp.rest.Mcosm");
osmsv.addUserNature(domainCode, userAttribute, type, status);
osmsv.queryOrgListPage(orgDoc, start, length);

17.3 返回数据格式

// 表格数据(分页)
var tableData = wish.doc.create();
tableData.set("total", totalCount);
tableData.set("rows", wish.dcc.create(listData));
tableData.string();

// JSON标准返回
{
  "result_code": 0,
  "error_msg": "",
  "result_data": {}
}

十八、HTTP与网络请求

18.1 wish内置HTTP

wish.get("http://api.example.com/data");
wish.post("http://api.example.com/submit", "data");

18.2 net工具类

net.wishx.util.HttpClientUtils.get(url);       // HTTP GET
net.wish.util.Http.post(url, data);            // HTTP POST
net.wish.util.Tools.getUnId();                 // 生成UUID

十九、流程端口配置

19.1 port文件结构

{
  "baseNode": {},
  "nodes": [
    {
      "_id": "唯一ID",
      "name": "节点名称",
      "title": "节点标题",
      "type": "jss|port|doc",
      "style": {"x": 数字, "y": 数字},
      "dispatch": "/调用的服务路径",
      "jss": "JavaScript脚本",
      "doc": "文档配置",
      "outType": "html|json|text",
      "actions": [
        {"_id": "A1", "from": "源节点", "to": "目标节点", "activateType": "0"}
      ]
    }
  ]
}

19.2 节点类型

type 说明
port 端口/服务调用节点(最常见)
jss JavaScript脚本节点
doc 文档/数据节点

19.3 常用dispatch路径

/uniflowService/UniflowCenter.db/startProcess.port
/uniflowService/UniflowCenter.db/callFlow.port
/uniflowService/UniflowCenter.db/displayTask.port
/uniflowService/UniflowCenter.db/queryNextDecisionNodes.port
/uniflowService/UniflowCenter.db/mobile.port
/uniflowService/UniflowCenter.db/dbNavi.page
/_platform/_app/uniflow.app/v3/impl/uniflowEasyui.db/displayTask.port

二十、常用代码模板

20.1 服务类模板

/**
 * 服务类说明
 * @author 作者名
 * @since 版本/日期
 */
var _WrdpClassName = function () {
    this.init = function () {
        // 初始化
    };
    this.myMethod = function (param1, param2) {
        var result = "";
        // 业务逻辑
        return result;
    };
};

20.2 查询并返回

var sql = "SELECT * FROM table WHERE field = '" + value + "'";
var dcc = db.query(sql);
var n = dcc.count();
if (n > 0) {
    for (var i = 0; i < n; i++) {
        var docItem = dcc.get(i);
        var fieldValue = docItem.get("fieldName");
    }
}
dcc.getStringDeeply();

20.3 创建并保存

var newDoc = wish.doc.create();
newDoc.replace("unid", newDoc.setUnid());
newDoc.replace("field1", value1);
db.save("TABLE_NAME", newDoc, "unid");

20.4 分页查询

var result = osmsv.queryOrgListPage(orgDoc, start, length);
var pageDoc = wish.doc.create(wish.doc.create(result).get("data"));
var tableData = wish.doc.create();
tableData.set("total", pageDoc.get("total"));
tableData.set("rows", wish.dcc.create(pageDoc.get("list")));
tableData.string();

20.5 日期处理

var currentTime = wish.date.getNow("yyyy-MM-dd HH:mm");
var week = wish.date.getWeek(t);
var nextDay = wish.date.addDay(t, i + o);
var dateStr = wish.date.getNow("yyyyMMdd");

20.6 LDAP查询

var departmentDn = docUser.get("departmentDn");
var department = wish.ldap.getDepartmentByDN(departmentDn);
var map = department.getOptionalProps();
var orgNum = department.getOrgNum();

二十一、开发规范与注意事项

21.1 字符串比较

// 正确
if (doc.get("status").equals("1")) { }

// 错误
if (doc.get("status") == "1") { }

21.2 空值判断

if (doc.get("field").equals("")) { }
if (!doc.get("field").equals("")) { }
var value = doc.get("field", "default");

21.3 SQL注入防护

var sql = "SELECT * FROM table WHERE field = '" + value + "'";

21.4 代码块规范

if (condition) {
    doSomething();
} else {
    doOther();
}

二十二、附录:常见常量与SQL

22.1 系统字段常量

常量 说明
sys_created 创建时间
sys_readers 读者字段
sys_deptId 部门ID
sys_deptName 部门名称
sys_category 分类
sys_flowNo 流程编号
sys_tpNodeId 当前节点ID
sys_file 附件字段
applyId 申请单ID
subject 标题
piid 流程实例ID
unid 文档唯一标识

22.2 流程状态常量

常量 说明
$$tpState 流程状态(1=待办,2=已办)
$$isEditMode 编辑模式
$$sys_nextOwner 下步处理人
$$sys_note 处理备注
_EOF 流程结束

22.3 布尔值常量

常量 说明
yes / no 是/否
true / false 真/假
1 / 0 数字标记

22.4 常用SQL示例

SELECT * FROM table WHERE status = '1'
SELECT * FROM table WHERE unid = 'xxx'
SELECT COUNT(*) FROM table
SELECT xmlField("fieldName") FROM table
UPDATE table SET field = 'value' WHERE unid = 'xxx'
SELECT * FROM table ORDER BY createTime DESC
SELECT * FROM table WHERE a = '1' AND b = '2'

22.5 数据库表名

表名 说明
UNIFLOW_WEBAPP_INST 流程实例表
UNIBUILDER_SOURCE 资源表
UNIWEB_FAVORITE 收藏表

文档版本: v3.0
生成日期: 2026-04-14


评论