并行会签/串行会签
会签的规则:
全部同意
不管有没有通过都需要审核完所有的,只要有一会签参与人没同意整个会签都不通过
并设置流程变量: confirm=2 ;会签不通过 confirm=3 会签通过同意人数
超过指定的人数就结束会签流程流转到下一个节点
并设置流程变量: confirm=2 ;会签不通过 confirm=3 会签通过同意占比
超过指定的人数的百分比就结束会签流程流转到下一个节点
并设置流程变量: confirm=2 ;会签不通过 confirm=3 会签通过一票否决
不管有多少人参与会签流程,只要有一个人”不同意”流程就会流转到下一个流程节点
并设置流程变量: confirm=2 ;会签不通过 confirm=3 会签通过自定义
可以在后台自定义会签的审核统计类,决定什么时候结束会签返回结果.一般是用于深度二开的项目场景.
继承自定义的统计基类 CounterSignVoteResultBase
“一票否决”会签结果统计源码如下:package com.kdayun.z1.core.workflow.service.impl; import com.kdayun.workflow.engine.impl.pvm.delegate.ActivityExecution; import com.kdayun.z1.core.workflow.util.WorkFlowConst.ConfirmResult; /** * 一票否决人数的会签统计类 * */ public class YipfjVoteResult extends CounterSignVoteResultBase { /** * 注意自定义的会签统计类必须实现以下两个参数的类 **/ public YipfjVoteResult(ActivityExecution execution, Object param) throws Exception { super(execution, param); this.signResult = ConfirmResult.cfTongy; } @Override public Boolean getIsComplete() throws Exception { if (instanceOfNumbers == 0) { return true; } //获取"不同意"的数量 Integer refuseCount = this.getRefuseVoteCount(execution); if (refuseCount.intValue() > 0) { //返回设置会审的结果: 不同意 this.signResult = ConfirmResult.cfButy; //返回true结束流程 return true; } else if (completeCounter.intValue() >= instanceOfNumbers.intValue()) { this.signResult = ConfirmResult.cfTongy; return true; } //返回false说明流程还可以继续,并没有结束 return false; } }
并在流程设计模式下填入: 类名,参数名
会签的结果变量 confirm
动态指定人参与会签
在流程设计时候设置参与会签的人员
发起/审核流程时候通过设置__assignee 来指定会签人员
以下是发起/审核流程时候的代码
function btnStart_onClickScript(cxt: ScriptContext, btn: Button) { let page = btn.getPage(); let auditMemo = page.components.txtAUDITMEMO.getValue(); var attachment=page.components.UploadCmp1.getValue() let nodes = page.components.Tree1.getSelectNodes() let wfParams={}; if (nodes.length > 0) { let assignList=[] nodes.forEach((node,index)=>{ //WFUSERID 格式: 机构ID_部门ID_角色ID_用户ID. //如: 7575860D9D21457ABF7162AF4DF177BA_26777BB29CBD4F2D89D240FF26D70F0C_7FCABE692E5E4E06AA42CAA67802644C_3D369D8414B34FD1B04AADDA18E47A32 assignList.push(node.WFUSERID); }) //设置会签的指定人参数 wfParams['__assignee']=assignList } btn.getPage().raiseEvent('startProcess', '1', null, auditMemo,attachment,wfParams) page.close(); }
注意: 指定assignee 参与会签人员的优先级别比流程设计时选的人员优先级高.通过assignee设置的参与会签人员必须在流程设计选择的人员范围内(如果流程设计时候未选择参与人就无此限制)
会签参与人的自定义筛选
- 自定义查询参与者的Where 语句’
如下图: 部门deptcode1 001角色 或者 部门deptcode2 010角色 参与会签ROLECODE in('003','002') //角色'003'或者 002 的人参与会签 DEPTID='yyyy'//部门id DEPTCODE ='xxx' //部门编号 ORGID='xxx' //机构id USERCODE ='xxx' //用户编号 USERNAME='xxx' //用户账户名 USERID ='xxx' //用户ID ROLEID ='xxx' //角色id ROLECODE='xxx' //角色编号 ROLENAME='xxx' //角色名
作者:texbox 创建时间:2023-04-07 11:23
最后编辑:texbox 更新时间:2024-10-17 08:28
最后编辑:texbox 更新时间:2024-10-17 08:28