跳转至

系统函数

方法清单

函数名 参数 说明
excuteForAsyn(excuteFun,applicationId,doc,webUser,paramsTable) excuteFun:执行的脚本applicationIdint:软件iddocint:文档对象webUserint:当前登陆用户paramsTableint:参数表 异步执行脚本方法
getApplication() 返回项目id号
getWebUser() 返回当前登录用户对象.
getDomainid() 返回当前登录用户所属企业域Id号
getParamsTable() 获取参数列表对象,可以对参数进行基本的增,删和格式化参数
getParameter(paramName) paramName:参数名 获取参数值,以字符串的形式返回
getParameterAsDouble(paramName) paramName:参数名 获取参数值,并以浮点型的形式返回
getParameterAsArray(paramName) paramName:参数名 获取参数值,并以字符数组的形式返回
getContextPath() 获取当前项目请求的URI部分。如:http://localhost/obpm,获取到的值"/obpm"
createAlert(content) content: 提示内容。如:"单据填写有误无法保存!"
createConfirm(content) content: 提示内容。如:"单据填写不完整,是否确认保存?" 返回true|false。true: 表示确认。false: 表示取消
createConfirmWithCallBack(content) content: 提示内容。如:"单据填写不完整,是否确认保存?" 返回true|false。true: 表示确认。false: 表示取消
createInfo(content) content: 提示内容。如:"单据填写有误无法保存!"
createSuccess(content) content: 提示内容。如:"单据填写有误无法保存!"
createWarning(content) content: 提示内容。如:"单据填写有误无法保存!"
getSession(sessionName) sessionName: session属性名称 获取当前浏览器session
getDepartmentByLevel(level) level:部门等级值 返回对应部门ID
getDeptIdByNameAndLevelAndDomainid(name, level, domainid) name:部门名称,level:部门等级值,domainid:企业域id 返回对应部门ID
getDeptIdByNameAndLevel(name,level) level:部门等级值name:部门名称 返回对应部门ID
getRoleIdByName(name) name:角色名称 返回对应角色ID
getDepartmentsByParent(parent) parent:部门ID 返回指定部门的下级部门对象的集合
getUsersByDptId(dptid) dptid:部门ID 返回指定部门下的所有用户对象的集合
getUsersByRoleId(roleid) roleid:角色ID 返回指定角色下的所有用户对象的集合
getUsersByDptIdAndRoleId(dptid, roleid) dptid:部门IDroleid:角色ID 返回指定部门、角色的所有用户对象的集合
getAllUsers() 返回当前域下面的所有用户对象的集合
getAllRoles() 返回当前软件下面的所有角色组别的集合
getRoleByRoleNo(roleno,applicationid) Roleno:角色idApplicationid:软件id 根据角色id和软件id获取角色
closeSessionAndConnection 关闭数据库连接、清理一级缓存等资源占用
queryByDSName(dsName,sql) dsName:数据源名称sql: SQL查询语句 根据数据源名称,执行SQL查询, 返回SQL查询语句执行的结果,以Collection方式返回(存储的是数据记录的Map对象)。
insertByDSName(dsName,sql) dsName:数据源名称sql: SQL查询语句 根据数据源名称,执行SQL插入操作(SQL语句为:insert into table ……)
updateByDSName(dsName,sql) dsName:数据源名称sql: SQL查询语句 根据数据源名称,执行SQL更新操作(SQL语句为:update table set……)
deleteByDSName(dsName,sql) dsName:数据源名称sql: SQL查询语句 根据数据源名称,执行SQL删除操作(SQL语句为:delete from table ……)
beginTransaction(dsName) dsName:数据源名称 根据数据源名称,执行开启事务操作
commitTransaction(dsName) dsName:数据源名称 根据数据源名称,执行提交事务操作
rollbackTransaction(dsName) dsName:数据源名称 根据数据源名称,执行回滚事务操作
getUserById(userid) userid:用户ID 根据用户ID获取用户对象
getUserByLoginno(loginno) loginno:用户登录名 根据用户登录名取用户对象
findRoleByName(name) name:角色名称 根据角色名取角色对象
doUpdateDocumentWithouVersions(doc) Doc:当前文档 更新文档但不更新版本号
println(text) text:要输出文本的内容 输出文本到控制台
setGlobalParameter(paramName, value) paramName:缓存变量名;value为变量值 将值设置到对应的缓存名中
getGlobalParameter(paramName) paramName:缓存变量名 通过缓存名获取对应的变量值

方法示例

1.excuteForAsyn(excuteFun,applicationId,doc,webUser,paramsTable)

作用:实现excuteForAsyn(excuteFun,applicationId,doc,webUser,paramsTable)函数的应用,无返回

脚本示例:

//异步执行循环计数
(() => {
    const excuteFun = "println(\"异步方法=======================\");";
    excuteFun += "var i = 0;";
    excuteFun += "while(true){i++;println(\"i=\"+i);if(i == 10000){break;}}";
    //调用异步执行方法
    SCRIPT.excuteForAsyn(excuteFun, getApplication(), getCurrentDocument(), getWebUser(), getParamsTable());
})()

2.getApplication()

作用:实现getApplication()函数的应用,返回应用软件标识ID

脚本示例:

//表单某字段值为当前软件Id (值脚本)
(() => {
    const applicationId = CURUSER.getApplication();
    return applicationId;
})()

3.getWebUser()

作用:实现getWebUser()函数的应用,返回当前登录用户对象

脚本示例:

//表单某字段值为当前登录用户的名称
(() => {
    const userName = CURUSER.getWebUser().getName();
    return userName;
})()

4.getDomainid()

作用:实现getDomainid()函数的应用,返回当前登录用户所属的企业域ID

脚本示例:

//表单某字段选项为当前企业域下的部门
(() => {
    const dprocess = getDepartmentProcess();
    const domainid = CURUSER.getDomainid();//获取当前登录用户所属的企业域ID 
    const depts = dprocess.queryByDomain(domainid); //根据企业域ID获取域下面的部门
    let opts = $TOOLS.createOptions();
    for (var it = depts.iterator(); it.hasNext();) {
        const dept = it.next();
        opts.add(dept.getName(), dept.getId());
    }
    return opts;
})()

5.getParamsTable()

作用:实现getParamsTable()函数的应用,获取参数列表对象

场景:表单A、B,B表单某字段值为A表单某字段值,可以把A表单字段值放到参数表中,然后B表单字段从参数表单获取 脚本示例:

(() => {
    //存值
    const params = CONTEXT.createParamsTable(); //创建指定类对象
    setParameter("user", getWebUser().getName());   
})()

(() => {
    //取值
    const params = params.createParamsTable(); //创建指定类对象
    const rtn = params.getParameter("user");  
    println(params.getParameter("user"));
    return rtn;
})()

6.getParameter(paramName)

作用:实现getParameter(paramName)函数的应用,获取参数值以字符型返回

脚本示例:

//表单中某字段值为参数表对象中的软件Id
(() => {
    const value = getItemValueAsString("参数值");
    if (value == null || value.trim().length <= 0) {
        value = CONTEXT.getParameter("application"); //获取参数值以字符型返回
    }
    return value;
})()

7.getParameterAsDouble(paramName)

作用:实现getParameterAsDouble(paramName)函数的应用,获取参数值,以浮点型的形式返回

脚本示例:

//表单中某字段值为参数表中某参数值以浮点型式返回
(() => {
    let params = getParamsTable();
    params.setParameter("p1", '10.25');  //设置参数
    let value = getItemValueAsString("获取参数");
    if (value == null || value.trim().length <= 0) {
        value = CONTEXT.getParameterAsDouble("p1");  //获取参数值
    }
    return value;
})()

8.getParameterAsArray(paramName)

作用:实现getParameterAsArray(paramName)函数的应用,获取参数值,并以字符数组的形式返回

脚本示例:

//在视图操作按钮的动作执行前脚本中获取视图勾选的记录去更新数据
(() => {
    const array = createObject("java.util.ArrayList");
    array = CONTEXT.getParameterAsArray("_selects");
    const process = getDocProcess(getApplication());
    if (array.length > 0 & array[0] != null) {
        for (let i = 0; i < array.length; i++) {
            const doc = process.doView(array[i]); <br />
            doc.findItem("内容").setValue("kimi and test");
            process.doUpdate(doc);
        }
    } else {
        "请选择要更新的数据";
    }
})()

9.getContextPath()

作用:实现getContextPath()函数的应用,获取当前项目请求的URI部分

脚本示例:

//在计算脚本中获取当前项目请求的URL
(() => {
    const doc = $CURRDOC.getCurrDoc();
    let rtn = "";
    const value = doc.getItemValueAsDouble("字段一");
    const value2 = doc.getItemValueAsDouble("字段二");
    const value3 = doc.getItemValueAsDouble("字段三");
    if (value3 != "") {
        if (value + value2 == value3) {
            return rtn = "<img src='"+CONTEXT.getContextPath()+" / resource / image / backstatelabel.gif'> <a href='http://www.teemlink.com'>欢迎登录</a>";
         }
        else
            return rtn = "不会吧,这也算错?!";
    } else {
        return rtn = "";
    }
})()

10.createAlert(content)

作用:实现createAlert(content)函数的应用,创建警告对话框

脚本示例:

//表单保存单据前,对字段进行校验 (保存动作执行前脚本)
(() => {
    const name = getItemValueAsString("姓名");
    if (name != null && name.trim().length <= 0) {
        return MSGBOX.createAlert("姓名字段未填写,不能保存,请输入!");
    }
})()

11.createConfirm(content)

作用:实现createConfirm(content)函数的应用,创建提示对话框

脚本示例:

//表单提交流程前,进行确实是否要提交流程 (流程处理动作执行前脚本)
(() => {
    return MSGBOX.createConfirm("确认要提交流程?");
})()

12.createConfirmWithCallBack(content)

作用:createConfirmWithCallBack(content)函数的应用,创建确认对话框且会回调

脚本示例:

//表单提交流程前,进行确实是否要提交流程 (流程处理动作执行前脚本)
(() => {
    return MSGBOX.createConfirmWithCallBack("确认要提交流程?");
})()

13.createInfo(content)

作用:createInfo(content)函数的应用,创建操作成功灰色消息框

脚本示例:

//保存或提交执行前触发校验脚本
(() => {
    return MSGBOX.createInfo("操作成功");
})()

14.createSuccess(content)

作用:createSuccess(content)函数的应用,创建操作成功绿色消息框

脚本示例:

//保存或提交执行前触发校验脚本
(() => {
    return MSGBOX.createSuccess("操作成功");
})()

15.createWarning(content)

作用:createWarning(content)函数的应用,创建操作成功黄色消息框

脚本示例:

//保存或提交执行前触发校验脚本
(() => {
    return MSGBOX.createWarning("操作成功");
})()

16.createConfirmWithCallBack(content)

作用:createConfirmWithCallBack(content)函数的应用,创建确认对话框且会回调

脚本示例:

//表单提交流程前,进行确实是否要提交流程 (流程处理动作执行前脚本)
(() => {
    return MSGBOX.createConfirmWithCallBack("确认要提交流程?");
})()

17.getSession(sessionName)

作用:实现getSession(sessionName)函数的应用,获取Session属性值

脚本示例:

//设置session值
(() => {
    let request = $WEB.getParamsTable().getHttpRequest();
    request.getSession().setAttribute("applicationid", getApplication()); 
})()

//获取session值
(() => {
    getSession("applicationid");
})()

18.getDepartmentByLevel(level)

作用:实现getDepartmentByLevel(level)函数的应用,获取指定部门的下级部门,并返回该部门的下级部门集合

脚本示例:

//表单某控件选项为指定等级的所有部门 (选项脚本)
(() => {
    const opts = createOptions();
    const deptUnderList = USERCENTER.getDepartmentByLevel(1);
    opts.add("", "");
    for (var iter = deptUnderList.iterator(); iter.hasNext();) {
        const deptUnder = iter.next();
        const deptName = deptUnder.getName();
        const deptId = deptUnder.getId();
        opts.add(deptName, deptId);
    }
    return opts;
})()

19.getDeptIdByNameAndLevel(name,level)

作用:实现getDeptIdByNameAndLevel(name,level)函数的应用,获取指定部门的下级部门,并返回该部门的下级部门集合

脚本示例:

//表单某控件值为指定等级部门对象的Id (值脚本)
(() => {
    const deptid = getDeptIdByNameAndLevel("行政部", 1);
    return deptid;
})()

20.getDeptIdByNameAndLevelAndDomainid(name,level, domainid)

作用:实现getDeptIdByNameAndLevelAndDomainid(name,level, domainid)函数的应用,获取指定部门的下级部门,并返回该部门ID

脚本示例:

//表单某控件值为指定名称,指定等级,指定企业域下面的部门对象的Id (值脚本)
(() => {
    const deptid = UC.getDeptIdByNameAndLevelAndDomainid("测试组", 3, getDomainid());
    return deptid;
})();

21.getRoleIdByName(name)

作用:实现getRoleIdByName(name)函数的应用,根据角色名获取角色ID

脚本示例:

//表单某控件值为指定角色的Id  (值脚本)
(() => {
    const roleid = getRoleIdByName("a角色");
    return roleid;
})()

22.getDepartmentsByParent(parent)

作用:实现getDepartmentsByParent(parent)函数的应用,获取指定部门的下级部门,并返回该部门的下级部门集合

脚本示例:

//表单A、B两字段,B字段的选项是根据A字段值动态获取指定部门的所有下一级部门
(() => {
    const deptId = getItemValue("部门选择框");//部门选择框名:部门(部门选择框勾选刷新,下拉框勾选重计算)
    const opts = $TOOLS.createOptions();
    const deptUnderList = USERCENTER.getDepartmentsByParent(deptId);
    opts.add("", "");
    for (const iter = deptUnderList.iterator(); iter.hasNext();) {
        const deptUnder = iter.next();
        const deptName = deptUnder.getName();
        opts.add(deptName, deptName);
    }
    return opts;
})()

23.getUsersByDptId(dptid)

作用:实现getUsersByDptId(dptid)函数的应用,返回指定部门下的所有用户对象的集合

脚本示例:

//表单A、B两字段,B字段的选项是根据A字段值动态获取指定部门的所有用户对象
((() => {
    const deptId = getItemValue("部门选择框");//部门选择框名:部门(部门选择框勾选刷新,下拉框勾选重计算)
    let opts = createOptions();
    const deptUnderUserList = USERCENTER.getUsersByDptId(deptId);
    opts.add("", "");
    for (let iter = deptUnderUserList.iterator(); iter.hasNext();) {
        const UserInfo = iter.next();
        const name = UserInfo.getName();
        const uid = UserInfo.getId();
        opts.add(name, uid);
    }
    return opts;
})()

24.getUsersByRoleId(roleid)

作用:实现getUsersByRoleId(roleid)函数的应用,返回指定角色下的所有用户对象的集合

脚本示例:

//表单A字段的选项为获取指定角色的所有用户对象
(() => {
    const roleid = getRoleIdByName("a角色");
    const users = USERCENTER.getUsersByRoleId(roleid);
    let opts = createOptions();
    opts.add("", "");
    for (let iter = users.iterator(); users != null && iter.hasNext();) {
        const user = iter.next();
        opts.add(user.getName(), user.getId());
    }
    return opts;
})()

25.getUsersByDptIdAndRoleId(dptid, roleid)

作用:实现getUsersByDptIdAndRoleId(dptid,roleid)函数的应用,返回指定部门、角色的所有用户对象的集合

脚本示例:

//表单A字段的选项为获取指定部门、角色下的所有用户对象
(() => {
    const rolename = getItemValueAsString("角色");
    const roleid = getRoleIdByName(rolename);
    const dptid = getItemValueAsString("部门");
    const users = USERCENTER.getUsersByDptIdAndRoleId(dptid, roleid);
    let opts = createOptions();
    opts.add("", "");
    if (users != null)
        for (let iter = users.iterator(); iter.hasNext();) {
            const user = iter.next();
            opts.add(user.getName(), user.getId());
        }
    return opts;
})()

26.getAllUsers()

作用:实现getAllUsers()函数的应用,返回当前域下面的所有用户对象的集合

脚本示例:

//表单A字段的选项为当前企业域下的所有用户对象
(() => {
    const users = USERCENTER.getAllUsers();
    let opts = createOptions();
    opts.add("", "");
    for (let iter = users.iterator(); users != null && iter.hasNext();) {
        const user = iter.next();
        opts.add(user.getName(), user.getId());
    }
    return opts;
})()

27.getAllRoles()

作用:实现getAllRoles()函数的应用,返回当前软件下面的所有角色对象的集合

脚本示例:

//表单A字段的选项为当前软件下的所有角色对象的集合
(() => {
    const roles = USERCENTER.getAllRoles();
    let opts = createOptions();
    opts.add("", "");
    for (let iter = roles.iterator(); roles != null && iter.hasNext();) {
        const role = iter.next();
        opts.add(role.getName(), role.getId());
    }
    return opts;
})()

28.getRoleByRoleNo(roleno,applicationid)

作用:实现getRoleByRoleNo(roleno,applicationid)函数的应用,返回当前角色编号和软件id下的角色

脚本示例:

//表单A字段值为指定角色编号和软件id下的角色
(() => {
    const role = USERCENTER.getRoleByRoleNo("2", getApplication());
    return role;
})()

29.closeSessionAndConnection()

作用:关闭数据库连接、清理一级缓存等资源占用

脚本示例:

//配置到自定义按钮执行脚本或其他按钮执行前后脚本
(() => {
    closeSessionAndConnection();
})();

30.queryByDSName(dsName,sql)

作用:实现queryByDSName(dsName,sql)函数的应用

脚本示例:

//表单A字段的选项为默认软件为当前软件的用户对象 (kd为数据源名称)
(() => {
    let opts = createOptions();
    opts.add("", "");
    try {
        const sql = "select * from t_user where defaultapplication='" + getApplication() + "'";
        const datas = DB.queryByDSName("kd", sql);
        if (datas != null) {
            for (let iterator = datas.iterator(); iterator.hasNext();) {
                const map1 = iterator.next();//取值
                const name = map1.get("name");
                const value = map1.get("id");
                opts.add(name, value);
            }
        }
    } catch (e) { }
    return opts;
})()

31.insertByDSName(dsName,sql)

作用:实现insertByDSName(dsName,sql)函数的应用

脚本示例:

//表单"无"操作按钮动作执行前脚本中写插入语句来新增数据
(() => {
    const doc = getCurrentDocument();
    const v1 = doc.getItemValueAsString("编号");
    const v2 = doc.getItemValueAsString("内容")
    const uuid = new Packages.cn.myapps.util.sequence.Sequence();
    const sql = "insert into tlk_执行插入操作 (id,item_编号, item_内容) values('" + uuid.getSequence() + "','" + v1 + "','" + v2 + "')";
    println(sql);
    DB.insertByDSName("mysqltest", sql);
})()

//在定时任务中,插入表单内容的脚本如下
var process = Packages.cn.myapps.designtime.common.service.DesignTimeServiceFactory.resolve("cn.myapps.designtime.datasource.service.DataSourceDesignTimeService");
process.queryInsert(dsName, sql, getApplication());

32.updateByDSName(dsName,sql)

作用:实现updateByDSName(dsName,sql)函数的应用

脚本示例:

//在视图操作按钮的执行前脚本设置更新表单的内容
(() => {
    const sql = "update tlk_test set item_b='updateTest'";
    DB.updateByDSName("数据源名称", sql);
})()

//在定时任务中,更新表单内容的脚本如下
const DataSourceDesignTimeServiceImpl = new Packages.cn.myapps.designtime.datasource.service.DataSourceDesignTimeServiceImpl();
DataSourceDesignTimeServiceImpl.createOrUpdate(String dataSourceName, String sql, String applicationId);

33.deleteByDSName(dsName,sql)

作用:实现deleteByDSName(dsName,sql)函数的应用

脚本示例:

//删除表单的内容
(() => {
    const sql = "delete from tlk_执行SQL删除操作";
    DB.deleteByDSName("mysqltest", sql);
})()

34.beginTransaction(dsName)

作用:beginTransaction(dsName)函数的应用

脚本示例:

//开启事务
(() => {
    DB.beginTransaction("mysqltest");
})()

35.commitTransaction(dsName)

作用:commitTransaction(dsName)函数的应用

脚本示例:

//提交事务
(() => {
    DB.commitTransaction("mysqltest");
})()

36.rollbackTransaction(dsName)

作用:rollbackTransaction(dsName)函数的应用

脚本示例:

//回滚事务
(() => {
    DB.rollbackTransaction("mysqltest");
})()

37.getUserById(userid)

作用:实现getUserById(userid)函数的应用

脚本示例:

//根据用户编号返回用户对象,并获取当前用户所属角色
(() => {
    const userid = getItemValueAsString("用户");   //用户选择框(单选)
    const userVO = USERCENTER.getUserById(userid);  //根据用户编号获取用户对象
    const roles = userVO.getRoles()  //获取指定用户的所属角色集合
    let opts = createOptions();
    opts.add("", "");
    for (let iter = roles.iterator(); roles != null && iter.hasNext();) {
        const role = iter.next();
        opts.add(role.getName(), role.getId());
    }
    return opts;
})()

38.getUserByLoginno(loginno)

作用:实现getUserByLoginno(loginno)函数的应用

脚本示例:

//根据账号返回用户对象,并获取当前用户所属角色
(() => {
    const userVO = USERCENTER.getUserByLoginno("bbbb");
    const roles = userVO.getRoles()
    let opts = createOptions();
    opts.add("", "");
    for (let iter = roles.iterator(); roles != null && iter.hasNext();) {
        const role = iter.next();
        opts.add(role.getName(), role.getId());
    }
    return opts;
})()

39.findRoleByName(name)

作用:实现findRoleByName(name)函数的应用

脚本示例:

//根据角色名称获取角色对象
(() => {
    const roleVO = findRoleByName("a角色");
    return roleVO;
})()

40.doUpdateDocumentWithouVersions(doc)

作用:实现doUpdateDocumentWithouVersions(doc)函数的应用,更新文档但不更新版本号

脚本示例:

//一个表单中有更新的值脚本,操作点击保存后出现如:"您此前编辑的文档不是最新版本,
//无法进行保存操作, 现系统已为您加载到最新版本!"此时在动作执行前调用此方法可以把这个提示给去掉
(() => {
    const doc = getCurrentDocument();
    doUpdateDocumentWithoutVersions(doc);
})()

41.println(text)

作用:实现println(text)函数的应用

脚本示例:

//输出文本到控制台,可以在应用服务器的后台和前台调试模式下的控制查看打印内容
(() => {
    const doc = getCurrentDocument();
    println("当前审批人: " + doc.getAuditorNames());
})()

42.setGlobalParameter(paramName, value)

作用:实现setGlobalParameter(paramName, value)函数的应用设置全局的参数,该参数可在全局保留,跨线程使用

脚本示例:

(() => {
    return CONTEXT.setGlobalParameter("value","测试文本")
})()

43.getGlobalParameter(paramName)

作用:实现getGlobalParameter(paramName)函数的应用设置全局的参数,获取全局的参数,该参数可在全局保留,跨线程使用

脚本示例:

//输出文本到控制台,可以在应用服务器的后台和前台调试模式下的控制查看打印内容
(() => {
    const value = CONTEXT.实现getGlobalParameter("value")
    return value;
})()