苍穹工作流那些事 之 加签二开方案集锦
苍穹工作流中,流程在流转审批过程中,根据业务需要,可能会临时增加新的节点,指定人员进行审批,这种运行时临时增加的新审批环节,就是加签。
有了加签功能,审批人可以向前或向后动态添加审批节点。关于加签的详细介绍,可参考往期文章:一文掌握“流程加签”。
除了标准的加签功能,苍穹工作流还提供了多种二开方案,以满足不同客户的需求。本期小编就为大家介绍一下加签都有哪些二开方案~
1 应用场景
场景一:加签时,只允许选择一人加签。
场景二:加签时,按条件过滤加签人员。
场景三:加签时,指定加签节点的属性值,比如,决策项、转交、协办等待。
2 解决方案
步骤一:扩展加签页面(wf_addsignpage),路径为:【开发服务云】→【开发平台】→【流程服务云】→【工作流服务】应用→【任务中心】→【任务加签】,如下图所示:
扩展加签页面
步骤二:在扩展的页面注册相应的二开插件,如下图所示:
注册二开插件
场景一:只允许选择一人加签
针对场景一:加签时,只允许选择一人加签,对应的插件事例代码如下:
public class AddSignBeforePlugin extends AbstractFormPlugin{ @Override public void createNewData(BizDataEventArgs e) { this.getPageCache().put("onlyoneuser", "true"); } }
运行效果为:加签选人时为单选,已经选中一人后,隐藏加人入口,只有删除当前人员后,会显示加人入口,重新选人,如下图所示:
加签时,只允许选择一人加签
场景二:按条件过滤加签人员
针对场景二:加签时,按条件过滤加签人员,对应的插件事例代码如下:
public class ValidatorForSelectAddSignUserDemo extends AbstractWorkflowPlugin { @Override public void customEvent(CustomEventArgs e) { if(e != null && BeforeAddSignAddUserCustomEvent.SELECT_ADDSIGNUSER_ISOLATION.equals(e.getKey()) && e instanceof BeforeAddSignAddUserCustomEvent) { BeforeAddSignAddUserCustomEvent bac = (BeforeAddSignAddUserCustomEvent) e; ListqFilters = bac.getQFilters(); if(qFilters == null) { return; } QFilter qFilter = new QFilter("entryentity.dpt.id", QFilter.equals, RequestContext.get().getOrgId()); qFilters.add(qFilter); } } }
运行效果为:加签选人页面里的人员,与当前加签人隶属于同一个组织。
场景三:指定加签节点的属性值
加签时,加签节点的属性值是固定的,且不能修改,但可以通过二开,指定加签节点的属性值,比如,决策项、转交、协办等待,相应的插件事例代码如下:
public class ValidateAddSignConfirmPlugin extends AbstractWorkflowPlugin { @Override public void customEvent(CustomEventArgs e) { if(e != null && BeforeAddSignConfirmCustomEvent.SELECT_ADDSIGNCONFIRM_ISOLATION.equals(e.getKey()) && e instanceof BeforeAddSignConfirmCustomEvent) { BeforeAddSignConfirmCustomEvent bac = (BeforeAddSignConfirmCustomEvent) e; Map<String, Object> extProps = bac.getExtProps(); extProps.put("allowRejectAndGoBack", true); Map<String,Object> extendBtns = initBtnModel2(); extProps.put("btnModel", extendBtns); } } private Map<String,Object> initBtnModel2() { Map<String,Object> btnModel = new HashMap<>(); btnModel.put("extendBtnsWhenMatch", true); List<Map<String,Object>> extendBtns = new ArrayList<>(); Map<String,Object> extendBtn1 = new HashMap<>(); extendBtn1.put("btnName", "打印设置"); extendBtn1.put("displaytype", "all"); extendBtn1.put("btnImgUrl", "/****/zhanxianzhifangshi_100_100.webp"); extendBtn1.put("btnNumber", "printsetting"); extendBtn1.put("operationNumber", "printsetting"); extendBtn1.put("operationName", "打印设置"); extendBtns.add(extendBtn1); btnModel.put("extendBtns", extendBtns); return btnModel; } }
3 常见问题
Q1:上述的二开场景,是否支持移动端?
A1:支持,仅需要扩展移动端加签页面(wf_addsignmobile),注册相应的插件即可。
Q2:苍穹工作流的“加签”功能有哪些使用限制?
A2:特殊场景暂不支持加签,比如当前节点有多条入口线时,不支持前加签;当前节点有多条出口线时,不支持后加签。
4 相关链接
更多苍穹工作流加签相关资料,请参考如下链接:
5 划重点
1.苍穹工作流提供的加签功能,支持审批人向前或向后动态添加审批节点,同时提供多种二开方案,满足不同的业务场景需求,如:
1)加签时,只允许选择一人加签;
2)加签时,按条件过滤加签人员;
3)加签时,指定加签节点的属性值,比如,决策项、转交、协办等待。
2. 实现加签二开方案只需两步:第一步,扩展加签页面(wf_addsignpage);第二步,在扩展的页面注册相应的二开插件。
#往期推荐#
更多精彩内容,“码”上了解!↓
苍穹工作流那些事 之 加签二开方案集锦
本文2024-09-23 00:54:47发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-142550.html