MOMpro平台文档
云天梯测试导入说明
协同模块操作说明
消息配置模块文档
登录接口文档
发送登录验证码
扫一扫登录
第三方单点登录配置
系统图标接口文档
-
+
首页
协同模块操作说明
# 协同操作手册 ## 协同单据基本参数 | Key | 说明 | | ------------------- | ---------------------------------------------------------------------------------- | | detailsName | 单据名称 | | formObjectPrimaryId | 绑定的表单主键ID | | nodeId | 当前节点ID | | currentNodeName | 当前节点名称 | | createMember | 发起人ID | | createMemberName | 发起人名称 | | currentHandlerName | 当前处理人名称 | | createDate | 单据创建时间 | | modifyDate | 单据修改时间 | | documentNo | 单据编号 | | approvalStatus | 单据状态 1, "已创建" 2, "审批中" 11, "已完成" | | currentHandler | 当前处理人ID | | completeHandler | 已办人员ID | | isRead | 是否已读 0 未读 1 已读 | | nodeDuration | 节点历时 | | isOvertime | 是否已超时 | | isSubmit | 是否已提交 | | frozen | 是否被冻结 | | version | 当前流程版本 | | nodeName | 当前节点名称 | 这些参数可以在动态接口中使用,例如在审批节点中可以根据 `approvalStatus`来判断是否需要执行某些操作 在动态审批人中使用 `fieldWrapperList`中的 `detailData`来获取单据的详细信息 在执行事件中直接使用 `fieldWrapperList`来获取审批节点的相关信息 例如要获取该单据的编号可以使用 `fieldWrapperList.documentNo`来获取 ## 审批执行事件 注意:审批执行事件只有在审批节点中才会执行 若审批执行事件中发生错误为保证流程的正常执行,错误信息将会被忽略,因此在审批执行事件中不要执行会导致流程无法继续的操作 尽量不要同时在脚本中修改审批的表单数据,因为这样会导致审批节点的数据与表单数据不一致 ### 传入参数 `fieldWrapperList`中已经包含当前单据相关参数 `fieldWrapperList.formData`中包含当前单据所绑定表单中的值 ### 发起人节点设置 发起事件:提交单据后执行 结束事件:单据完成后执行 撤回事件:发生撤回动作时执行 ### 审批人节点设置 审批前事件:执行到当前审批节点时先执行 审批后事件:当前节点审批后执行 ### 例子 ```javascript /** * 此代码定义了一个名为 `dynApiObject` 的类,表示一个动态的 API 对象。 * 它有一个构造函数,接受一个 `fieldWrapperList` 参数,并初始化对象的各个属性。 * 该类还有一个名为 `approvalFlowExec` 的方法,根据传入的 `formData` 参数执行一些操作。 * 它将数据插入到数据库表 `mompro_req_pool` 中,并更新另一个表 `mompro_feedback`。 * 该方法返回一个包含数据库操作结果的对象。 */ var AggregateFunUtils = Java.type('com.orbit.modeling.utils.AggregateFunUtils'); class dynApiObject { constructor(fieldWrapperList){ this.userId = fieldWrapperList.userId; this.userName = fieldWrapperList.userName; this.loginIp = fieldWrapperList.loginIp; this.resourceId = fieldWrapperList.resourceId; this.resourceName = fieldWrapperList.resourceName; this.pkId = fieldWrapperList.pkId; this.parentPkId = fieldWrapperList.parentPkId; } approvalFlowExec(fieldWrapperList){ //获取表单数据,不用再去通过表单ID再次查询 var formData = fieldWrapperList.formData; //判断是否为需求 if (formData.fb_classification != '需求'){ return; } //需求池映射字段 var req_type = formData.fb_type; var req_source = formData.fb_source; var association_module = formData.association_module; var req_title = formData.fb_titile; var req_desc = formData.fb_desc; var req_attachments = formData.fb_attachments; var req_pool_principal = formData.req_pool_principal; var req_priority = formData.fb_priority; var create_member = this.userId; var create_date = formData.fb_datetime; var req_pool_status = '待处理'; //通过自动生成编号接口获取编号 //formObjectId:表单ID (此处为需求池表单ID) //fieldCode:字段编码 (此处为需求池编号字段) //type:是否需要自动生成编号(为false时只生成预览编号) var parms = { formObjectId: "433808375269031936", fieldCode: "req_pool_code", type: true } //这里调用了一个自定义的工具类方法,获取编号,其返回格式为:{code:200,message:"",data:"自动生成的编号"} var result = AggregateFunUtils.getIdentifierNumberApi(parms); //获取编号 var req_pool_code = result.data; //插入需求池数据,此处是从需求池表单的保存定义中复制过来的 var insertSql = `insert into mompro_req_pool(mompro_req_pool_id,req_pool_principal,req_attachments,req_desc,req_priority,req_title,req_pool_status,association_module,req_type,req_source,req_pool_code,create_member,create_date) values ('${AggregateFunUtils.getId()}','${req_pool_principal}','${req_attachments}','${req_desc}','${req_priority}','${req_title}','${req_pool_status}','${association_module}','${req_type}','${req_source}','${req_pool_code}','${create_member}','${create_date}')`; var sqlResult = AggregateFunUtils.executeSaveSql(insertSql); //回写反馈表需求池编号 var updateSql = `update mompro_feedback set req_pool_code = '${req_pool_code}' where mompro_feedback_id= '${formData.mompro_feedback_id}'`; var sqlResult = AggregateFunUtils.executeUpdateSql(updateSql); return { data: sqlResult, status: true, message: "" }; } } ``` ## 设置动态接口审核人 通过动态数据接口的返回动态设置审核节点的审核人 ### 何时会调用此接口 1. 查看流程图 在查看流程图时会调用该节点的动态接口以显示处理人,但在有些情况某些字段在前序节点尚未填写但后续节点又使用该字段数据进行人员处理,此时流程图上会显示异常 2. 流程实际执行到当前节点 当协同单据实际执行到当前节点时会再次调用动态接口确认最终的审批人,如果此时没有对应的审核人将会提示错误 ### 使用方法 1. 打开**对象建模**—**数据接口**菜单项 2. 点击添加按钮 3. 类型选择协同流流程事件,接口名称使用英语且不能与其他接口重复 4. 新建完成后点击编辑脚本 5. 编写脚本 ```javascript var AggregateFunUtils = Java.type('com.orbit.modeling.utils.AggregateFunUtils'); class dynApiObject { constructor(fieldWrapperList){ this.userId = fieldWrapperList.userId; this.userName = fieldWrapperList.userName; this.loginIp = fieldWrapperList.loginIp; this.resourceId = fieldWrapperList.resourceId; this.resourceName = fieldWrapperList.resourceName; this.pkId = fieldWrapperList.pkId; this.parentPkId = fieldWrapperList.parentPkId; } approvalFlowExec(fieldWrapperList){ print("=======formData======",fieldWrapperList.formData);//表单数据 print("=======details=======",fieldWrapperList.detailData);//单据数据 var sql = `select orbit_user_id from sys_user where user_name = '${fieldWrapperList.formData.req_pool_principal}'`;//根据表单数据中的req_pool_principal字段查询对应的orbit_user_id var sqlResult = AggregateFunUtils.executeQuerySql(sql); var data = { data:sqlResult }; return data; } } ``` ```javascript var AggregateFunUtils = Java.type('com.orbit.modeling.utils.AggregateFunUtils'); class dynApiObject { constructor(fieldWrapperList){ this.userId = fieldWrapperList.userId; this.userName = fieldWrapperList.userName; this.loginIp = fieldWrapperList.loginIp; this.resourceId = fieldWrapperList.resourceId; this.resourceName = fieldWrapperList.resourceName; this.pkId = fieldWrapperList.pkId; this.parentPkId = fieldWrapperList.parentPkId; } approvalFlowExec(fieldWrapperList){ var userData = fieldWrapperList.userData; var formData = fieldWrapperList.formData; var detailData = fieldWrapperList.details; //如果不使用sql查询可以直接返回一个数组,数组中的每个元素是一个map,map中的key为orbit_user_id var result = [{ orbit_user_id: formData.dev_member }] var data = { data:result }; return data; } } ``` 其中 `fieldWrapperList.formData`包含当前表单的数据,`fieldWrapperList.detailData`包含当前协同的单据信息 在这个例子中获取了表单数据中 `req_pool_principal`并根据该字段来查到 `orbit_user_id` 接口的返回需要是List<Map<String, String>格式,key值可以为 `orbit_user_id` 或 `userid` 以及 `id`。 使用 `executeQuerySql`方法只需要保证select出来的字段是合法key即可 返回的数据格式如下:(示例) ```json [ { "orbit_user_id":"1231231233" }, { "orbit_user_id":"1231231234" }, { "orbit_user_id":"1231231235" } ] ``` ```json [ { "userid":"1231231233" }, { "userid":"1231231234" }, { "userid":"1231231235" } ] ``` ```json [ { "id":"1231231233" }, { "id":"1231231234" }, { "id":"1231231235" } ] ``` 6. 验证脚本 最简单的方法是在流程图中查看当前节点的处理人是否正确 ![](/media//202402/2024-02-27_102041.png)
HL0457
2024年2月29日 10:36
分享
上一篇
下一篇
目录
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
下载Markdown文件