4.2 消息类型
1. 公告消息——可由任何人看到的消息,分为集团所有用户可见和公司所有用户可见两
种。显示在[公告栏]。
2. P2P对发消息——某人向另外一人直接发送的消息。显示在[公告栏]。 3. 审批流工作项——审批流平台产生的需要业务处理的工作项。同时包括审批通过、不通
过、驳回后给制单人发送的消息。显示在[待办事务栏]。
4. 业务流工作项——业务流平台产生的需要业务处理的推拉式消息。显示在[待办事务
栏]。
5. 通知消息——不需要业务处理的普通消息。审批流消息配置产生的消息以及业务代码产
生的一些消息。显示在[待办事务栏]。
6. 预警消息——预警平台产生的预警消息。显示在[预警消息栏]。
第 33 页
第三章 开发规范
1. 平台缓存数据
流程平台在前后台对一些频繁访问且不经常更新的数据都有缓存。详细可参考PfDataCache和PfUIDataCache类的Javadoc文档。 前台缓存:
基本档案表bd_bdinfo的缓存,获取方法:
/**返回基本档案VO*/
BasedocVO nc.ui.pf.pub.PfUIDataCache.getBdinfo( String strPk) //主键PK
单据类型对照信息表pub_billtobillrefer的缓存,获取方法:
/**返回单据类型相互参照VO*/
BilltobillreferVO nc.ui.pf.pub.PfUIDataCache.getBillInfo( String currentBillType, //目的单据类型PK String billType) //源单据类型PK
单据VO对照表pub_votable的缓存,获取方法:
/**返回该单据类型主表的PK字段名*/
String nc.ui.pf.pub.PfUIDataCache.getBillPK( String billType) //单据类型PK
单据类型表bd_billtype的缓存,获取方法:
/**返回单据类型VO*/
BilltypeVO nc.ui.pf.pub.PfUIDataCache.getBillType( String billType) //单据类型PK
币种信息表bd_currtype的缓存,获取方法:
/**返回币种VO*/
CurrtypeVO nc.ui.pf.pub.PfUIDataCache.getCurrType( String strPk) //币种的PK
后台缓存:
单据类型参照信息表pub_billtobillrefer的缓存,获取方法:
第 34 页
/**返回单据类型相互参照VO*/
BilltobillreferVO nc.bs.pf.pub.PfDataCache.getBilltoBillRefer( String billType, //目的单据类型PK String sourceBillType) //源单据类型PK
单据VO对照表pub_votable的缓存,获取方法:
/**返回单据类型对照VO*/
VotableVO nc.bs.pf.pub.PfDataCache.getBillTypeToVO( String pk_billType, //单据类型PK boolean isMain, //是否为主表VO String itemCode) //废弃参数
单据类型表bd_billtype的缓存,获取方法:
/**返回单据类型VO*/
BilltypeVO nc.bs.pf.pub.PfDataCache.getBillTypeInfo(
String dataSource, //数据源名称 String billType) //单据类型PK
2. 动作处理
动作处理时序图1:
第 35 页
PfUtilClient业务UIObject processAction()queryActionHint()非“APPROVE”非“UNAPPROVE”PfUtilBOEngineServiceApproveFlowManagerWorkflowQuery1.判断是否进行动作前提示IUIBeforeProcAction.runClass()2.获取动作执行前的处理类,并执行wfVo=checkOnSave()3.单据类型的类名以
图 34非审批类动作处理
动作处理时序图2:
第 36 页
PfUtilClient业务UIObject processActionFlow()queryActionHint()PfUtilBOPFBusiAction“APPROVE”或“UNAPPROVE”或其他1.判断是否进行动作前提示AbstractCompilerIUIBeforeProcAction.runClass()2.获取动作执行前的处理类,并执行3.动作为“APPROVE”,则弹出审批对话框.wfVo=checkWorkFlow()wfVo=checkWorkFlow()new WorkFlowCheckDlg(wfVo)WorkFlowCheckDlg如果制单即审批通过,或没有审批流定义,则直接审批通过execApprovePass(paraVo)3'.动作非“APPROVE”与用户交互:1.审批意见2.指派信息EngineServicePFBusiStateprocessWorkFlow(paraVo)procActionFlow(paraVo)intFlag=forwardCheckFlow(paraVo)execApproveState(paraVo,intFlag)getVariableValue()3a.用户取消了审批对话框return null;wfVo=null;retObj=processAction(wfVo)retObj=processAction(wfVo)actionBeforeWorkFlow()ActionConstrict()5.retObj实现了IProcActionRetObject,则获取动作执行后的处理类,并执行IUIAfterProcAction.runClass()6.上述过程的异常类型为IPfRetException且需要处理,则再次进行处理retObj=runAfterActionException()retObj=processActionFlowInner()流程仍处于审批进行中时直接返回return IWorkFlowRet动作为最后一个动作,执行动作驱动actiondrive()动作为”SAVE”,”EDIT”,则启动审批流执行动作脚本retObj=actionOnStep()处理弃审execApprovePass(paraVo,intFlag)PFActionConstrictexecApproveGoing(paraVo,intFlag)WorkflowQueryexecApproveNoPass(paraVo,intFlag)execUnApproveFree(paraVo,intFlag)动作约束检查intFlag=queryWorkflowStatus(billId)查询单据审批状态:-1 -自由态0 -审批不通过1 -审批通过2 -进行中3 -提交态TaskManager7.retObj实现了PfUtilActionVO,则前台显示loadDLG()BillQueryDLG.showModal()startApproveFlowAfterAction()sendWorkFlowOnSave()acceptTaskFromBusi(task)图 35审批类动作处理
2.1 UI端调用-PfUtilClient
1. 单据动作处理(非\)
Object nc.ui.pub.pf.PfUtilClient.processAction(Container parent,
String actionName, String billType, String currentDate, AggregatedValueObject vo, Object userObj,
String strBeforeUIClass, AggregatedValueObject checkVo ) throws Exception
功能:
第 37 页