NC31审批流程开发文档_v1.2(10)
时间:2026-01-19
时间:2026-01-19
NC31审批流程开发文档_v1.2
Object retObj = new PfUtilBO().processAction(parentUI,
“APPROVE”, “D1”, “2005-05-30 12:23:44”, null, billVo, userObj )
对于单张单据的审批,也可以按照批量(参见4.5.3节)的方式来处理(这种应用在NC财务和供应链产品中比较常见),这时VO数组中传递的就是一张单据。
4.5.2动作脚本
审批的动作脚本具有特殊的要求。可对单据VO进行更新操作,也可在审批通过(分为两种,每个工作项的审批通过和整个流程的审批通过)后进行业务处理。 单张单据审批动作脚本示例:
Object m_sysflowObj = procActionFlow(vo); /** 流程仍处于审批进行中时直接返回IWorkFlowRet */ if (m_sysflowObj != null) { return m_sysflowObj; }
doBusi(getVo()); //审批流程结束(通过)后的业务处理
如果单据UI的开发使用了UI工厂,为了维护单据数据的一致性,需要在脚本中调用如下方法来更新聚合VO。
SuperVO headVO = (SuperVO) billVo.getParentVO(); //主表必须为SuperVO SuperDMO dmo = new SuperDMO();
//从数据库获取到更新了ts的VO
billVo.setParentVO(dmo.queryByPrimaryKey(headVO.getClass(), headVO.getPrimaryKey()));
4.5.3批量处理
批量审批是指当前操作员对查询到的多张(包括单张)单据一起进行审批处理。必须保证当前操作员对这些单据都具有审批权限(即都轮到他审批)。
批审批的动作脚本具有特殊的要求,可参考如下示例。
Hashtable m_sysHasNoPassAndGonging = procFlowBacth(vo) ; for (int i = 0; i < getVos().length; i++) {
Object obj = m_sysHasNoPassAndGonging.get(String.valueOf(i)); if (obj == null)
doBusi(getVos()[i]); //审批流程结束(通过)后的业务处理
}
//控制可否进行动作驱动
BatchWorkflowRet bwr = new BatchWorkflowRet(); bwr.setNoPassAndGoing(m_sysHasNoPassAndGonging); bwr.setUserObj(getVos());
return new Object[]{bwr}; //动作脚本返回值
上一篇:高三生物选修微生物类群 人教版
下一篇:电器及PLC控制技术A卷答案