跳转至

创建JAVA类实例函数

方法清单

函数名 参数 说明
createProcess(pathText) pathText:类的名字空间,如"cn.MyApps®.core.department.ejb.DepartmentProcess" 生成系统类对象
createObject(pathText) pathText:类的名字空间,如"cn.MyApps®.util.DateUtil" 生成系统类对象
getDocProcess(applicationid) Applicationid:项目id号 获取软件Id号对应数据文档操作类对象
getUploadProcess(applicationid) Applicationid:软件id号 根据软件id号获取对应的文件上传对象
createOptions() 生成选项对象
getUserProcess() 创建用户操作对象
getDepartmentProcess() 创建部门操作对象
getRoleProcess() 创建角色操作对象
getFormProcess() 创建表单业务对象
getDocumentProcess() 创建文档业务对象
getDataSourceProcess() 创建数据源操作对象。注:数据源操作对象应用需要,软件->高级工具->数据源的支持。首先需要开发者在软件的数据源模块创建数据源。
getDomainProcess() 创建企业域业务对象
getViewProcess() 创建视图业务对象
getLastRelationHis(docid, flowid) docid:文档IDflowid:流程ID 根据文档ID与流程ID获取文档最后审批记录对象
doUpdateDocumentWithoutVersions(doc) Doc:文档对象 更新文档但不更新版本号
createParamsTable() 生成参数对象

方法示例

1.createProcess(pathText)

作用:实现createProcess(pathText)函数的应用,创建系统操作类对象(写在下拉框选项脚本中)

脚本示例:

// 表单A字段选项脚本:加载当前企业域下的所有部门作为下拉选项
(() => {
    const opts = $TOOLS.createOptions();

    try {
        const DEPT_PROCESS_CLASS = "cn.myapps.core.department.ejb.DepartmentProcess";
        const domainId = getDomainid(); // 获取当前企业域ID

        if (!domainId || domainId.trim().length === 0) {
            println("部门查询失败:未获取到有效企业域ID!");
            return opts;
        }

        const deptProcess = createProcess(DEPT_PROCESS_CLASS);
        const depts = deptProcess?.queryByDomain(domainId) || [];

        if (depts && depts.iterator) {
            const iterator = depts.iterator();
            while (iterator.hasNext()) {
                const dept = iterator.next();
                if (dept && dept.getName && dept.getName().trim()) {
                    const deptName = dept.getName().trim();
                    opts.add(deptName, deptName); // 选项值=选项显示文本
                }
            }
        }

        println(`当前域(${domainId})下加载的部门数量:${opts.size() || 0}`);
    } catch (e) {
        println(`加载部门选项异常:${e.message || e}`);
    }
    return opts;
})();

2.createObject(pathText)

作用:实现createObject(pathText)函数的应用,创建指定类对象(写在下拉框选项脚本中)

脚本示例:

// 表单字段选项脚本:创建包含A/B/C固定选项的下拉选项对象
(() => {
    let options = null;

    try {
        const OPTIONS_CLASS = "cn.myapps.runtime.dynaform.form.ejb.Options";
        const FIXED_OPTIONS = [
            { value: "A", label: "A" },
            { value: "B", label: "B" },
            { value: "C", label: "C" }
        ];

        options = createObject(OPTIONS_CLASS);

        FIXED_OPTIONS.forEach((item) => {
            if (item.value && item.label) {
                options.add(item.value, item.label);
            }
        });
        println(`创建的固定选项数量:${options.size() || 0}`);
    } catch (e) {
        println(`创建固定选项异常:${e.message || e}`);
        options = createObject("cn.myapps.runtime.dynaform.form.ejb.Options");
    }
    return options;
})();

3.getDocProcess(applicationid)

作用:实现getDocProcess(applicationid)函数的应用,创建文档操作类对象

脚本示例:

// 动作执行后脚本:更新勾选记录的「state」字段值为1(仅非1状态时更新)
(() => {
    try {
        const selectParams = getParameter("_selects") || "";
        const docIds = splitString(selectParams, ";") || [];
        const validDocIds = docIds.filter(id => id && id.trim().length > 0);

        if (validDocIds.length === 0) {
            createAlert("未勾选任何记录,无需更新!");
            return;
        }

        const app = getApplication();
        if (!app) {
            createAlert("获取应用上下文失败,无法执行更新!");
            return;
        }
        const docProcess = getDocProcess(app);

        validDocIds.forEach((docId) => {
            try {
                const doc = docProcess.doView(docId.trim());
                if (!doc) {
                    println(`记录ID[${docId}]:未查询到对应文档,跳过更新`);
                    return;
                }

                const stateItem = doc.findItem("state");
                if (!stateItem) {
                    println(`记录ID[${docId}]:未找到state字段,跳过更新`);
                    return;
                }
                const currentState = stateItem.getValue() || "";

                if (currentState === "1") {
                    createAlert(`记录ID[${docId}]:该记录已经是公开状态`);
                } else {
                    stateItem.setValue("1");
                    docProcess.doUpdate(doc);
                    println(`记录ID[${docId}]:state字段已更新为1(公开状态)`);
                }
            } catch (singleErr) {
                println(`记录ID[${docId}]更新失败:${singleErr.message || singleErr}`);
                createAlert(`记录ID[${docId}]更新失败,请检查!`);
            }
        });

        createAlert(`已处理${validDocIds.length}条勾选记录,完成状态更新!`);
    } catch (globalErr) {
        println(`批量更新记录异常(全局):${globalErr.message || globalErr}`);
        createAlert("批量更新记录失败,请联系管理员!");
    }
})();

4.getUploadProcess(applicationid)

作用:实现getUploadProcess(applicationid)函数的应用,创建文件上传对象

脚本示例:

// 脚本功能:通过文件上传流程类,根据指定列名和列值查询文件上传对象(UploadVO)
//使用文件上传对象根据列名和列值获取文件对象
(() => {
    const process = getUploadProcess(getApplication());
    let UploadVO = process.findByColumnName1("path", "/uploads/item/Testing25.xls");
    // println(UploadVO + "======UploadVO======");
    return UploadVO;
})()

5.createOptions()

作用:实现createOptions()函数的应用,创建指定类对象(写在下拉框选项脚本中)

脚本示例:

//给表单有选项脚本的控件创建选项  (选项脚本)
(() => {
    let opts = $TOOLS.createOptions(); //创建指定类对象
    opts.add("A", "A");
    opts.add("B", "B");
    opts.add("C", "C");
    return opts;
})()

6.getUserProcess()

作用:实现getUserProcess()函数的应用,创建指定类对象

脚本示例:

//根据用户账号获取用户对象
(() => {
    const process = getUserProcess(); //创建指定类对象
    const userAccount = getWebUser().getLoginno();
    let user = process.getUserByLoginno(userAccount, getDomainid());
    println(user);
    return user;
})()

7.getDepartmentProcess()

作用:实现getDepartmentProcess()函数的应用,创建指定类对象(写在下拉框选项脚本中)

脚本示例:

//表单中某控件选项为当前企业域下的部门
(() => {
    let opts = createOptions();
    opts.add("", "");
    const process = getDepartmentProcess();
    let depts = process.queryByDomain(getDomainid());
    for (let it = depts.iterator(); depts != null && it.hasNext();) {
        const dept = it.next();
        opts.add(dept.getName(), dept.getId());
    }
    return opts;
})()

8.getRoleProcess()

作用:实现getRoleProcess()函数的应用,创建指定类对象

脚本示例:

//表单中某控件选项为当前软件下的角色
(() => {
    let opts = createOptions();
    opts.add("", "");
    const process = getRoleProcess();//创建指定类对象
    let roles = process.getRolesByApplication(getApplication());//根据applicationid取得角色
    for (let it = roles.iterator(); roles != null && it.hasNext();) {
        const role = it.next();
        opts.add(role.getName(), role.getId());
    }
    return opts;
})()

9.getFormProcess()

作用:实现getFormProcess()函数的应用,创建指定类对象

脚本示例:

(() => {
    const formService = getFormProcess();
    const form = formService.doViewByFormName("创建表单业务对象", getApplication()); //根据表单名取得这个表单bean
    println(form);
    return form;
})()

10.getDocumentProcess()

作用:实现getDocumentProcess()函数的应用,创建指定类对象

脚本示例:

//在保存的动作执行脚本中,实现更新或新建记录
(() => {
    const guest = getItemValueAsString("YAOPBM");
    const tool = getItemValueAsString("YAOPNAME");
    const tool3 = getItemValueAsString("YAOPGG");
    const tool4 = getItemValueAsInt("SHULIANG");
    const process = getDocumentProcess();
    const formService = getFormProcess();
    const subform = formService.doView("11e0-d373-74e37b9e-8555-b3287b9d9b7d");
    const doc = process.doNew(subform, getWebUser(), createParamsTable());
    const sql = "select * from  tlk_kucunxx where YAOPNAME='" + tool + "'";
    const datas = queryBySQL(sql);
    const value;
    if (datas.size() > 0) {
        for (const iter = datas.iterator(); iter.hasNext();) {
            const data = iter.next();
            value = data.getItemValueAsInt("KUCUNSHULIANG");
        }
        tool4 += value;
        data.findItem("KUCUNSHULIANG").setValue(tool4);
        data.doUpdate(doc);
    } else {
        doc.addIntItem("KUCUNSHULIANG", tool4);
        doc.addStringItem("YAOPBIANMA", guest);
        doc.addStringItem("YAOPNAME", tool);
        doc.addStringItem("KUCUNGUIGE", tool3);
        process.doCreate(doc);
    }
})()

11.getDataSourceProcess()

作用:实现getDataSourceProcess()函数的应用,创建指定类对象

脚本示例:

//通过数据源操作对象获取系统库下面的当前软件下面的角色
(function () {
    const opts = createOptions();
    opts.add("", "");
    try {
        const process = getDataSourceProcess(); //创建指定类对象
        const appid = getApplication();
        const sql = "select * from t_role where applicationid='" + appid + "'";
        const datas = process.queryDataSourceSQL("kd", sql, appid);
        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;
})()

12.getDomainProcess()

作用:实现getDomainProcess()函数的应用,创建指定类对象

脚本示例:

//通过创建企业域业务对象,然后根据名称获取企业域对象
(() => {
    const process = getDomainProcess(); //创建指定类对象
    const domainName = "testdemo";
    const domain = process.getDomainByName(domainName);
    println(domain);
    return domain;
})()

13.getViewProcess()

作用:实现getViewProcess()函数的应用,创建视图业务对象

脚本示例:

//通过创建视图业务对象,然后根据名称获取视图对象
(() => {
    const process = getViewProcess(); //视图业务对象
    const applicationId = getApplication();
    const view = process.getViewByName("表单控件测试单行文本框", applicationId);
    println(view);
    return view;
})()

14.getLastRelationHis(docid, flowid)

作用:实现getLastRelationHis(docid,flowid)函数的应用,根据文档ID与流程ID获取文档最后审批记录对象

脚本示例:

(() => {
    const doc = getCurrentDocument();
    const docid = doc.getId();
    const flowid = doc.getFlowid();
    const process = "";
    if (flowid != null && flowid.trim().length > 0) {
        process = FLOW.getLastRelationHis(docid, flowid);
    }
    return process;
})()

15.doUpdateDocumentWithoutVersions(doc)

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

脚本示例:

(() => {
    const doc = getCurrentDocument();
    DOC.doUpdateDocumentWithoutVersions(doc);
})()

16.createParamsTable()

作用:实现createParamsTable()函数的应用,创建指定类对象

脚本示例:

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

//A表单字段值放到参数表
(() => {
    const params = CONTEXT.createParamsTable(); //创建指定类对象
    params.setParameter("starttime", getCurDate("yyyy-MM-dd HH:mm:ss"));   //存值
})()

//B表单字段从参数表单获取
(() => {
    const params = CONTEXT.createParamsTable(); //创建指定类对象
    var rtn = params.getParameter("starttime");  //取值
    println(params.getParameter("starttime"));
    return rtn;
})()