版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
此文件受到UFIDA的保護(hù),并已在保護(hù)中心,外泄必糾NC-UAPUAP 第一 工作流與 信息系統(tǒng)的演 企業(yè)業(yè)務(wù)流 工作 第二 流程平 單據(jù)元模 單據(jù)類 單據(jù)動(dòng)作及單據(jù)函 單據(jù) 單據(jù)項(xiàng) 單據(jù)VO對(duì) 業(yè)務(wù)流平 業(yè)務(wù)類 流程配 單據(jù)VO交 流平 流程定 工作 流程結(jié)果與單據(jù)狀 反向流 流程第三 開(kāi)發(fā)規(guī) 平臺(tái)緩存數(shù) 動(dòng)作處 UI端調(diào)用- BS端調(diào) 返回 動(dòng)作............................................................................................執(zhí)行編 返回 流平 狀態(tài)回寫(xiě)與查 送 棄 刪 流相關(guān)接 業(yè)務(wù)流平 動(dòng)作驅(qū) 單據(jù)VO交 單據(jù)UI菜單填充與響 業(yè)務(wù)流相關(guān)接 第四 開(kāi)發(fā)流 附 NC5.0服 應(yīng)用模 發(fā) 接 第一章工作流與OperatingOperatingOperating11975-19851985-19951995-20021998-2005企業(yè)業(yè)務(wù)流2工作Theautomationofabusinessprocess,inwholeorpart,duringwhichs,informationortasksarepassedfromoneparticipanttoanotherforaction,accordingtoasetofproceduralrules(WFMC).工作流管理系統(tǒng)(WorkflowManagementSystem,WFMS)的主要功能是通過(guò)計(jì)算機(jī)技業(yè)務(wù)過(guò)程管理(Businessprocessmanagement),非企業(yè)績(jī)效管理(BusinessPerformanceManagement)。包括了過(guò)程建模、過(guò)程自動(dòng)化、企業(yè)應(yīng)用集成、業(yè)務(wù)活動(dòng)監(jiān)第二章流程平(EPC、Petri網(wǎng)、語(yǔ)義-行為模型等)比較,活動(dòng)網(wǎng)絡(luò)圖具有直觀自然、可讀性好的特性。BusinessFlowApprovalFlowInvokedBusinessFlowApprovalFlowInvokedProcessAdministration&ExchangeDataWorkRuleWorkflowWeb3整個(gè)業(yè)務(wù)流程框架的是工作流引擎。它負(fù)責(zé)解釋執(zhí)行由業(yè)務(wù)流設(shè)計(jì)器和流設(shè)計(jì)器設(shè)計(jì)的流程定義。流程定義可以NC系統(tǒng)建立的功能模型、組織模型以及各種元數(shù)交、、棄審、駁回等)來(lái)處理工作項(xiàng),從而驅(qū)動(dòng)流程流轉(zhuǎn)。工作流引擎在流轉(zhuǎn)過(guò)程中 NCVOUI、單據(jù)動(dòng)單據(jù)函單據(jù)VO對(duì)單據(jù)單據(jù)項(xiàng)單據(jù)VO模單據(jù)物理模(數(shù)據(jù)庫(kù)表4單據(jù)類時(shí),單據(jù)類型必須屬于某個(gè)系統(tǒng)類型。單據(jù)類型的信息比較多,由功能點(diǎn)[客戶化]-[二5節(jié)參照查詢對(duì)應(yīng)的DMO類:用于查詢單據(jù)VO數(shù)據(jù)的業(yè)務(wù)邏輯類。必須實(shí)現(xiàn)接口流檢查類:通過(guò)編寫(xiě)流檢查類,并在該類中實(shí)現(xiàn)流相關(guān)接口,來(lái)達(dá)到使用還需要實(shí)現(xiàn)節(jié)點(diǎn)查找接口(4.6節(jié)。系統(tǒng)類開(kāi)發(fā)工具]-[會(huì)計(jì)平臺(tái)]-[系統(tǒng)類型定義],如圖6所示。6模塊名:標(biāo)識(shí)該系統(tǒng)所屬的產(chǎn)品模塊。對(duì)應(yīng)于NC_HOME/modules/下 名主子關(guān)系系統(tǒng)類 F1F1F2F27單據(jù)動(dòng)作及[客戶化]-[二次開(kāi)發(fā)工具]-[單據(jù)管理]-[單據(jù)動(dòng)作管理],如圖8所示。820個(gè)英文字符。的框,如:是否保存?91.2.1單據(jù)動(dòng)作10單據(jù)函 11單據(jù)函數(shù)(組件)它不可應(yīng)用于條件、動(dòng)作約束、工作項(xiàng)配置中。1.3.1參數(shù)格單據(jù)單據(jù)的界面展現(xiàn)模型,包括四大模板以及UI工廠等。每個(gè)單據(jù)還與一個(gè)它的功能單據(jù)項(xiàng)12多語(yǔ)資源IDID單據(jù)VO對(duì)應(yīng)關(guān)系。由功能點(diǎn)[客戶化]-[二次開(kāi)發(fā)工具]-[單據(jù)管理]-[單據(jù)VO對(duì)照管理],如圖6所13VOVOVOVOVOVOID:?jiǎn)螕?jù)VOIDNC業(yè)務(wù)流平臺(tái)進(jìn)行了簡(jiǎn)化,其設(shè)計(jì)思想是基于以下認(rèn)識(shí):業(yè)務(wù)流程是由單據(jù)組成的,實(shí)現(xiàn)。NC業(yè)務(wù)流提供一種平臺(tái)機(jī)制,在此可以根據(jù)用戶的實(shí)際業(yè)務(wù)重新組織這些單據(jù)、動(dòng)14業(yè)務(wù)類對(duì)業(yè)務(wù)流程的分類。各個(gè)公司可定義自己的業(yè)務(wù)流程,5.0支持業(yè)務(wù)類型,即在集1515流程配16成(VO交換。勾選此項(xiàng),在流程配置中才可配置該單據(jù)的來(lái)源單據(jù),否單據(jù)權(quán)限配17單據(jù)來(lái)源配據(jù),可以在業(yè)務(wù)流程中為當(dāng)前單據(jù)提供業(yè)務(wù)數(shù)據(jù)(VO交換,以保持業(yè)務(wù)數(shù)據(jù)的18動(dòng)作約束配19圖20動(dòng)作定動(dòng)作驅(qū)動(dòng)配21(1.2節(jié)。單據(jù)VO交存,比如“nc.ui.pf.changedirCHG21TO30”、“nc.bs.pf.changedir.CHG21TO30”等。單據(jù)VO交換可發(fā)生后或,并在交換后可進(jìn)行特殊的業(yè)務(wù)處理。詳細(xì)見(jiàn)第三章5.222用于顯示來(lái)源單據(jù)的UI類:參照來(lái)源單據(jù)時(shí),使用的來(lái)源單據(jù)顯示UI。默認(rèn)為“nc.ui.pub.pf.BillSourceDLG<c.ui.po.pb.ooiQeDG>用于查詢來(lái)源單據(jù)的節(jié)點(diǎn)標(biāo)識(shí):被參照的來(lái)源單據(jù)的Nodekey23Join(Priority(Subflow流程定NC5.0的流定義模型遵循WfMC的XPDL1.0過(guò)程定義規(guī)范,具有嚴(yán)格的語(yǔ)義和豐圖24流定義-瀏圖25流定義-設(shè)流定義按照單據(jù)類型(+業(yè)務(wù)類型)進(jìn)行了分類。用戶可以基于單據(jù)類型定義流程模過(guò)程活動(dòng)流程中的一個(gè)個(gè)步驟統(tǒng)稱為活動(dòng)(或任務(wù),包括制單活動(dòng)、活動(dòng)、虛活動(dòng)、參與者展機(jī)制可參考附錄)。第一個(gè)拖放到流設(shè)計(jì)器中的組織元素為制單活動(dòng)的參與者。在轉(zhuǎn)移節(jié))動(dòng)才能結(jié)束。搶占:只要活動(dòng)的參與者中任何一人完成后,該活動(dòng)即結(jié)束。活動(dòng)的一個(gè)屬性。如果活動(dòng)定義了可指派屬性,則該活動(dòng)的實(shí)際執(zhí)行者人活動(dòng)的一個(gè)屬性。制單活動(dòng)不可設(shè)置人;只可為參與者為『操作員』類型的活動(dòng)設(shè)置多級(jí)人;人只可為『操作員。消息配置(Message活動(dòng)的一個(gè)屬性。可為每個(gè)活動(dòng)配置額外的消息通知機(jī)制。即在滿足觸發(fā)條件。對(duì)于活動(dòng),發(fā)送條件可為“無(wú)條件“審核通過(guò)”和“審核不通過(guò)”三種(注:“paravo==當(dāng)前單據(jù)的流參數(shù)參數(shù)VO可直接的變量列表支持Java語(yǔ)法。比如:當(dāng)前單據(jù)VO當(dāng)前步驟的批增刪據(jù)類型(+業(yè)務(wù)類型就可為其新增一個(gè)流程。一個(gè)單據(jù)類型(+業(yè)務(wù)類型)下不能存在兩個(gè)同制單人的流程。導(dǎo)入/導(dǎo)在流定義-瀏覽界面,選中某個(gè)流程,可導(dǎo)出為本地XPDL文本文件XPDL時(shí),提示“導(dǎo)入的XPDL文件中含有對(duì)N?流程定義的選工作分配策務(wù)。參與者出差后,工作項(xiàng)將會(huì)分配到人。動(dòng)態(tài)人設(shè)置。圖26用戶出差和動(dòng)態(tài)人管標(biāo)題定27流程結(jié)果與單據(jù)狀對(duì)于流程來(lái)說(shuō),流程實(shí)例正常結(jié)束后,必然會(huì)有一個(gè)結(jié)果。而單據(jù)的狀工作項(xiàng)的結(jié)即登錄到NC系統(tǒng)的操作員對(duì)流程平臺(tái)分配給他的工作項(xiàng)的處理意見(jiàn)。包括“批活動(dòng)的結(jié)對(duì)于角色/崗位類的參與者執(zhí)行的活動(dòng),如果是會(huì)簽屬性,則只有所有會(huì)簽操作員 流程的結(jié)的結(jié)果。5種:表1單據(jù)狀- 32105種狀態(tài)相。比如UI模式化開(kāi)發(fā)包中就定義了的單據(jù)狀態(tài)。2832104567。如果流程實(shí)例正常運(yùn)行完成,該單據(jù)的過(guò)程即完成流程結(jié)束后具有最終結(jié)果:通過(guò)或不通過(guò),這也是單據(jù)的最終結(jié)果。。11提交278自由進(jìn)行564完成3提交即通第一個(gè)人棄不通過(guò),則給參與流程的所有人員發(fā)送“不通過(guò)”消息。反向流會(huì)重新產(chǎn)生工作項(xiàng);若是其他人修單(更改了制單人),如果找到流定義,則新啟實(shí)棄審 棄審會(huì)將單據(jù)置為自由態(tài)。修單后再提交,會(huì)新啟實(shí)例,舊實(shí)例被刪除。必須在單據(jù)流程對(duì)于系統(tǒng)中運(yùn)行的流程實(shí)例,可它們現(xiàn)在所處的狀態(tài),并強(qiáng)制終止。同時(shí)還可查詢到某單據(jù)的狀態(tài)。當(dāng)前操作員可查詢的記錄受查詢權(quán)限(由[流用圖28單據(jù)情況查圖29流程圖與情式直接對(duì)單據(jù)進(jìn)行,以及其他的業(yè)務(wù)處理。流運(yùn)轉(zhuǎn)過(guò)程中會(huì)為流程中的不同用戶產(chǎn)生工作項(xiàng)這些任務(wù)項(xiàng)可以通過(guò)方式發(fā)(可配置是否需要這樣發(fā)送回復(fù)-pN或“N不同意,金額過(guò)大”的指令,NC系統(tǒng)會(huì)調(diào)用插件進(jìn)行的處理。消息中展 消息欄30UITable展現(xiàn)。除了UITable內(nèi)置的定位功能和雙擊表頭排序功能,還3132按照模糊匹配33消息類公告消息——可由任何人看到的消息分為所有用戶可見(jiàn)和用戶可見(jiàn)兩種。通知消息——不需要業(yè)務(wù)處理的普通消息流消息配置產(chǎn)生的消息以及業(yè)務(wù)代碼產(chǎn)第三章開(kāi)發(fā)規(guī)平臺(tái)緩存數(shù)和 ache類的Javadoc文檔前臺(tái)緩存基本表bd_bdinfo的緩存,獲取方法BasedocVOStringstrPk)//單據(jù)類型對(duì)照信息表pub_billtobillrefer的緩存,獲取方法BilltobillreferVOStringcurrentBillType,//String 單據(jù)VO對(duì)照表pub_votable的緩存,獲取方法Stringnc.ui.pf.pub.PfUID StringbillType)//PK單據(jù)類型表bd_billtype的緩存,獲取方法BilltypeVOnc.ui.pf.pub.PfUID StringbillType)//PK幣種信息表bd_currtype的緩存,獲取方法CurrtypeVOStringstrPk)//緩存單據(jù)類型參照信息表pub_billtobillrefer的緩存,獲取方法BilltobillreferVOString StringsourceBillType//單據(jù)VO對(duì)照表pub_votable的緩存,獲取方法VotableVOStringpk_billType,//booleanisMain, StringitemCode) //廢棄參數(shù)單據(jù)類型表bd_billtype的緩存,獲取方法BilltypeVOStringdataSource//String 動(dòng)作處業(yè)務(wù)
Object
判斷是否進(jìn)行動(dòng)作前
非SAVE執(zhí)行動(dòng)
SAVE
retObj實(shí)現(xiàn)了則獲取動(dòng)作執(zhí)行后的處理類,并執(zhí)
上述過(guò)程的異常類型為且需要處理,則再次進(jìn)行處retObj實(shí)現(xiàn)了則前臺(tái)顯圖34非類動(dòng)作處圖35類動(dòng)作處UI端調(diào)用-單據(jù)動(dòng)作處理(非ObjectObjectnc.ui.pub.pf.PfUtilCcessAction(Containerparent,StringactionName,StringbillType,StringcurrentDate,AggregatedValueObjectvo,ObjectuserObj,StringstrBeforeUIClass,AggregatedValueObjectcheckVo)throwsSVE)執(zhí)行動(dòng)作處理-PfUtilBO.processAction(…)IPfRetException,則判斷異常是否需要進(jìn)行SAVE單據(jù)動(dòng)作處理,但不啟動(dòng)ObjectObjectnc.ui.pub.pf.PfUtilCcessActionNoSendMessage(Containerparent,StringactionName,StringbillType,StringcurrentDate,AggregatedValueObjectvo,ObjectuserObj,StringstrBeforeUIClass,AggregatedValueObjectcheckVo)throwsIPfRetException,則判斷異常是否需要進(jìn)行SAVEEDIT單據(jù)動(dòng)作處理ObjectObjectnc.ui.pub.pf.PfUtilCcessActionFlow(Containerparent,StringactionName,StringbillType,StringcurrentDate,AggregatedValueObjectvo,ObjectuserObj,String)throws如果單據(jù)動(dòng)作以"APPROVE"開(kāi)頭,檢查該單據(jù)是否處于流中并打開(kāi)執(zhí)行動(dòng)作處理-PfUtilBO.processAction(…)IPfRetException,則判斷異常是否需要進(jìn)行APPROVE單據(jù)動(dòng)作批處理(非Object[]Object[]nc.ui.pub.pf.PfUtilCcessBatch(Containerparent,StringactionName,StringbillType,StringcurrentDate,AggregatedValueObject[]voAry,Object[]userObjAry,String)throws執(zhí)行動(dòng)作處理-PfUtilBO.processBatch(…)IPfRetException,則判斷是否需要進(jìn)行業(yè)務(wù)SAVE單據(jù)動(dòng)作批處理StringactionName,StringbillType,StringcurrentDate,AggregatedValueObject[]Object[]如果單據(jù)動(dòng)作以"APPROVE"開(kāi)頭,檢查第一張單據(jù)是否可被當(dāng)前操作員并打執(zhí)行批動(dòng)作處理-PfUtilBO.processBatch(…)IPfRetException,則判斷異常是否需要進(jìn)行SAVEBS端調(diào)PfUtilBO5.0IPFBusiAction。開(kāi)發(fā)人PfUtilBOIPFBusiAction組件后調(diào)用。ObjectObjectnc.bs.pub.pf.PfUtilBO.processAction(StringactionName,StringbillType,StringcurrentDate,PfUtilWorkFlowVOworkFlow,AggregatedValueObjectvo,ObjectuserObj)throwsSAVESAVEObject[]Object[]nc.bs.pub.pf.PfUtilBO.processBatch(StringactionName,StringbillType,StringcurrentDate,AggregatedValueObject[]vos,Object[]userObjAry,PfUtilWorkFlowVOworkflow)throwsVO數(shù)組,進(jìn)行動(dòng)作執(zhí)行前的工作流處理(棄審或刪除)以及動(dòng)作約束進(jìn)行動(dòng)作執(zhí)行后的工作流處理(依次啟動(dòng)流。SAVE返回BSPfUtilBO.processAction(…)PfUtilBO.processBatch(…)的返回值受動(dòng)作返回值(參見(jiàn)3.2節(jié))的影響。動(dòng)作動(dòng)作是單據(jù)動(dòng)作的執(zhí)行體。在流程配置中還可對(duì)某業(yè)務(wù)類型下的單據(jù)動(dòng)作腳本進(jìn)行再次定制(參見(jiàn)第二章2.2.4節(jié)。保存時(shí)會(huì)自動(dòng)生成class文件。注意:如果NC中間件管理了多個(gè)帳套,則它們共享統(tǒng)一的動(dòng)作執(zhí)行編在里可以對(duì)從UI端傳遞過(guò)來(lái)的單據(jù)聚合VO進(jìn)行業(yè)務(wù)處理,這其中就包含有對(duì)審批流的處理[單據(jù)動(dòng)作執(zhí)行]功能點(diǎn)為方便執(zhí)行的編寫(xiě),提供了單據(jù)類型的件導(dǎo)入到項(xiàng)目中進(jìn)行開(kāi)發(fā)。但如果直接對(duì)源文件進(jìn)行修改,記得要修改相應(yīng)的述的語(yǔ)法宏而直接使用Java標(biāo)準(zhǔn)語(yǔ)法來(lái)編寫(xiě)動(dòng)作執(zhí)行。動(dòng)作類圖&PFVO:nc.vo.pub.AggregatedValueObject,&PFUSEROBJ:Object"@;if(retObj!=null){}單據(jù)動(dòng)作批處 if(retObj!=null){m_methodReturnHas.put("processBatch",retObj);}審批處Objectm_sysflowObj理//###返回值:流程仍處于 進(jìn)行中時(shí)直接返回IWorkFlowRetif(m_sysflowObj!=null){returnm_sysflowObj;批Hashtablem_sysHasNoPassAndGonging審批Hashtablem_sysHasNoPassAndGonging=procFlowBacth(vo處理?xiàng)墝徧巄ooleanisFinishToGoing理//###返回值 批棄審for(inti0igetVos().lengthi++ booleanisFinishToGoing= }返回一般用于的動(dòng)作,且在流第一個(gè)元素SAVEEDIT的動(dòng)作t 狀態(tài)回寫(xiě)與查狀態(tài)回4.6.1節(jié)。狀態(tài)查API:intintnc.bs.pub.pf.PfUtilBO.queryWorkFlowStatus(StringbusiType,//PKStringbillType//String 送“EDIT碼以兩者結(jié)尾即可。送審后,流程平臺(tái)會(huì)根據(jù)單據(jù)類型和制單人ID查找符合條件的流程定義并實(shí)例化然后啟動(dòng)它。如果找不到流程定義,則不啟動(dòng)流。送審分為兩種情形,一種是前臺(tái)送審,即業(yè)務(wù)UI新增單據(jù)后保存并提交;另一種是后臺(tái)送審,即某張單據(jù)在推式生成另一張單據(jù)時(shí)。動(dòng)作處ObjectObjectretObj=“SAVE”,“D1”,“2005-05-3012:23:44”,billVo,userObj,null,nullObjectretObj=userObj,null,nullObjectretObj=userObj,null,null ObjectObjectretObj=new“SAVE”,“D1”,“2005-05-3012:23:44”,null,billVo,userObj前臺(tái)送審與送審的區(qū)別在于前臺(tái)送審會(huì)先向服務(wù)器獲取流程定義中第一個(gè)人的可比較常見(jiàn)VO數(shù)組中傳遞的就是一張單據(jù)。動(dòng)作retObj=runClass("nc.bs.trade.business.HYPubBO","commitBill",送審的動(dòng)作沒(méi)有特殊的要求,可以在中進(jìn)行單據(jù)VO的保存,也可以對(duì)單據(jù)VO進(jìn)行更新。但如果單據(jù)UI的開(kāi)發(fā)使用了UI工廠,為了單據(jù)數(shù)據(jù)的一致性,可在腳VO。retObj=runClass("nc.bs.trade.business.HYPubBO","commitBill",SuperVOSuperVOheadVO(SuperVObillVo.getParentVO()//SuperVOSuperDMOdmo=newSuperDMO();//tsVO注意:NC30要求送審的動(dòng)作必須返回ArrayList或String類型的對(duì)象,在NC31中并沒(méi)有這種限制了,但前提是單據(jù)聚合VO中包含有完整的單據(jù)號(hào)和單據(jù)ID信息。批量處ObjectObjectretObj=“SAVE”,“D1”,“2005-05-3012:23:44”,billVoAry,userObjAry,ObjectObjectretObj=new“SAVE”,“D1”,“2005-05-3012:23:44”,billVoAry,userObjAry,特殊應(yīng);對(duì)于保存/提交分離的應(yīng)用,制單人保存后,由業(yè)務(wù)組控制非制單人可否提交單據(jù)流會(huì)根據(jù)單據(jù)VO中的制單人信息來(lái)獲取流定義并啟動(dòng)流。;如果業(yè)務(wù)組沒(méi)有控制單據(jù)進(jìn)行中的不可編輯那么單據(jù)在過(guò)程中可被修改,然后再次提交,這時(shí)執(zhí)行完動(dòng)作后,單據(jù)完成后(即流程結(jié)束后再次修改該單據(jù)并提交,這時(shí)會(huì)重新啟動(dòng)一個(gè)流程,同時(shí)保留了原已結(jié)束流程所產(chǎn)生的工作項(xiàng)記錄。工作項(xiàng)的結(jié)果與流程結(jié)果的異同,參見(jiàn)第二章3.3節(jié)。個(gè)尚未提交的單據(jù)進(jìn)行,會(huì)提示“單據(jù)尚未提交,無(wú)法”的錯(cuò)誤。工作項(xiàng),并不屬于真正意義上的流程,的是進(jìn)行業(yè)務(wù)處理。。根據(jù)業(yè)務(wù)需求,還分為兩種情形,一種是前臺(tái),即業(yè)務(wù)UI查詢到單據(jù)后進(jìn)行或者通過(guò)待辦事務(wù)來(lái);另一種是,會(huì)將單據(jù)直接通過(guò)只適。動(dòng)作處前臺(tái)調(diào)用示例ObjectObjectretObj=“APPROVE”,“D1”,“2005-05-3012:23:44”,billVo,userObj,ObjectObjectretObj=“APPROVE”+checkUserId,“D1”,“2005-05-3012:23:44”,billVo,ObjectObjectretObj=new“APPROVE”,“D1”,“2005-05-3012:23:44”,null,billVo,userObj”比較常見(jiàn)VO數(shù)組中傳遞的就是一張單據(jù)。動(dòng)作兩種:每個(gè)工作項(xiàng)的通過(guò)和整個(gè)流程的通過(guò))后進(jìn)行業(yè)務(wù)處理。單張單據(jù)動(dòng)作示例ObjectObjectm_sysflowObj=/**流程仍處于 進(jìn)行中時(shí)直接返回IWorkFlowRet*/if(m_sysflowObj!=null){returnm_sysflowObj;doBusi(getVo 如果單據(jù)UI的開(kāi)發(fā)使用了UI工廠,為了單據(jù)數(shù)據(jù)的一致性,需要在中調(diào)用如下VO。SuperVOSuperVOheadVO(SuperVObillVo.getParentVO()//SuperVOSuperDMOdmo=newSuperDMO();//NC5.0BaseDAO?//tsVO批量處證當(dāng)前操作員對(duì)這些單據(jù)都具有權(quán)限(即都輪到他。=ObjectObjectretObj=new“APPROVE”,“D1”,“2005-05-3012:23:44”,billVoAry,userObjAry, HashtableHashtablem_sysHasNoPassAndGonging=procFlowBacth(vo);for(inti=0;i<getVos().length;i++){Objectobj=m_sysHasNoPassAndGonging.get(String.valueOf(i));if(obj==null)doBusi(getVos()[i]) }BatchWorkflowRetbwr=newBatchWorkflowRet();returnnewObject[]{bwr};//動(dòng) 返回返回值BatchWorkflowRet實(shí)現(xiàn)了接口 參見(jiàn)3.2節(jié)。特殊應(yīng)對(duì)于無(wú)流程實(shí)例的,由于沒(méi)有流程實(shí)例和工作項(xiàng),直接將單據(jù)通過(guò)駁回是NC31流支持的兩種流程反向流轉(zhuǎn)模式之一,它不受流程定義的局限,直接棄棄審是流支持的兩種流程反向流轉(zhuǎn)模式之一是指當(dāng)前人通過(guò)或不通過(guò))完成之后,在下一個(gè)人尚未之前,可以主動(dòng)棄審,讓自己重新。當(dāng)前操作員只有擁有該單據(jù)的棄審權(quán)限才可進(jìn)行棄審,這由流平臺(tái)控制。nc.vo.pub.pf.IPfBackCheck2的棄審模式。只有流程結(jié)束后,才可一棄到底,即不允許進(jìn)行中的一棄到底。動(dòng)作處ObjectObjectretObj=“UNAPPROVE”,“D1”,“2005-05-3012:23:44”,billVo,userObj,ObjectObjectretObj=“UNAPPROVE”,“D1”,“2005-05-3012:23:44”,billVo,userObj,ObjectObjectretObj=“UNAPPROVE”+unCheckUserId,“D1”,“2005-05-3012:23:44”,billVo,ObjectObjectretObj=new“UNAPPROVE”,“D1”,“2005-05-3012:23:44”,null,billVo,userObj比較常見(jiàn)VO數(shù)組中傳遞的就是一張單據(jù)。動(dòng)作在棄審中可對(duì)單據(jù)VO進(jìn)行更新操作也可在流程從完成態(tài)回到運(yùn)行態(tài)時(shí)進(jìn)行業(yè)務(wù)booleanbooleanisFinishToGoing= if(isFinishToGoing)doBusi(getVo//}; doBusi(getVo//如果單據(jù)UI的開(kāi)發(fā)使用了UI工廠,為了單據(jù)數(shù)據(jù)的一致性,需要在中調(diào)用如下VO。SuperVOSuperVOheadVO(SuperVObillVo.getParentVO()//SuperVOSuperDMOdmo=newSuperDMO();//tsVO批量處forfor(inti=0;i<getVos().length;i++)booleanisFinishToGoing= ifdoBusi(getVo//}for(inti=0;i<for(inti=0;i<getVos().length;i++){setVo(getVos()[i]);//VOprocUnApproveFlow(paravo)//只是回寫(xiě)單據(jù)狀態(tài)為自由態(tài) doBusi(getVo//}刪對(duì)于不走流的單據(jù)刪除操作完全由業(yè)務(wù)組控制——既可以調(diào)用流程平臺(tái)的動(dòng)作處用刪除動(dòng)作處理,以便于刪除流相關(guān)數(shù)據(jù)。目前支持的動(dòng)作編碼包括以“DELETE動(dòng)作處動(dòng)作據(jù)在進(jìn)行中不可刪除所以在刪除動(dòng)作中只需對(duì)單據(jù)數(shù)據(jù)庫(kù)表進(jìn)行刪除處理,并批量處流相關(guān)接publicinterfaceICheckState booleancheckGoing(StringbillId,StringStringApproveDate,StringcheckNote)throws 不通過(guò)booleancheckNoPasspublicinterfaceICheckState booleancheckGoing(StringbillId,StringStringApproveDate,StringcheckNote)throws 不通過(guò)booleancheckNoPass(StringbillId,StringApproveId,StringApproveDate,StringcheckNote)throwsException; 通過(guò)booleancheckPass(StringbillId,StringStringApproveDate,StringcheckNote)throws}單據(jù)狀態(tài)回寫(xiě)接口2,用于操作,由流檢查類實(shí)現(xiàn)publicpublicinterfaceICheckState2 booleancheckGoing(StringtableName,StringpkFieldName,StringbillId,StringApproveId,StringApproveDate,StringcheckNote)throws 不通過(guò)booleancheckNoPass(StringtableName,StringpkFieldName,StringbillId,StringApproveId,StringApproveDate,StringcheckNote)throwsException; 通過(guò)booleancheckPass(StringtableName,StringpkFieldName,StringbillId,StringApproveId,StringApproveDate,StringcheckNote)throwsException;}單據(jù)狀態(tài)回寫(xiě)接口3,用于操作,由流檢查類實(shí)現(xiàn)publicpublicinterfaceICheckState3 booleancheckGoing(AggregatedValueObjectvo,StringApproveId,StringApproveDate,StringcheckNote)throwsException; 不通過(guò)booleancheckNoPass(AggregatedValueObjectvo,StringApproveId,StringApproveDate,StringcheckNote)throwsException; 通過(guò)booleancheckPass(AggregatedValueObjectvo,StringApproveId,StringApproveDate,StringcheckNote)throwsException;}publicinterfaceIBackCheckState/**棄審為單 進(jìn)行中voidbackGoing(StringbillId,StringapproveId,StringapproveDate,StringbackNote)throwsException;voidbackNoState(StringbillId,StringapproveId,StringapproveDate,StringbackNote)throwsException;}publicinterfaceIBackCheckState/**棄審為單 進(jìn)行中voidbackGoing(StringbillId,StringapproveId,StringapproveDate,StringbackNote)throwsException;voidbackNoState(StringbillId,StringapproveId,StringapproveDate,StringbackNote)throwsException;}單據(jù)狀態(tài)回寫(xiě)接口5,用于棄審操作,由流檢查類實(shí)現(xiàn)publicpublicinterfaceIBackCheckState2/**棄審為單 進(jìn)行中voidbackGoing(StringtableName,String /**voidbackNoState(StringtableName,StringpkFieldName,billId,StringapproveId,StringapproveDate,StringbackNote)單據(jù)狀態(tài)回寫(xiě)接口6,用于棄審操作,由流檢查類實(shí)現(xiàn)publicpublicinterfaceIBackCheckState3/**棄審為單 voidbackGoing(AggregatedValueObjectvo,StringapproveId,StringapproveDate,StringbackNote)throwsException;voidbackNoState(AggregatedValueObjectvo,StringapproveId,StringapproveDate,StringbackNote)throwsException;}publicinterfaceIPfRetCheckInfovoidsetCheckNote(StringstrCheckNote);//回寫(xiě)批語(yǔ)voidsetCheckState(inticheckState);//回 }單據(jù)狀態(tài)回寫(xiě)接口7,用于向單據(jù)VO中回寫(xiě)信息。被單據(jù)的publicinterfaceIPfRetCheckInfovoidsetCheckNote(StringstrCheckNote);//回寫(xiě)批語(yǔ)voidsetCheckState(inticheckState);//回 }單據(jù)狀態(tài)回寫(xiě)接口8,用于向單據(jù)VO中回寫(xiě)信息。被單據(jù)的棄審動(dòng)作調(diào)用,由單據(jù)聚合VO實(shí)現(xiàn)。如果需要向單據(jù)數(shù)據(jù)庫(kù)表中回寫(xiě)這些信息,需要使用流檢查類來(lái)nc.bs.pub.pf.IBackCheckState等接口。publicpublicinterfaceIPfRetBackCheckInfovoidsetCheckMan(Stringapproveid);//設(shè)置棄審后的前一 voidsetCheckNote(StringstrCheckNote);//voidsetCheckState(inticheckState);//設(shè)置棄審后的狀態(tài)(進(jìn)行中或自由態(tài)}publicinterfaceIGetBusiDataForFlow{UFDoublegetPfAssMoney();//返回輔幣金額StringgetPfCurrency();//原幣幣種publicinterfaceIGetBusiDataForFlow{UFDoublegetPfAssMoney();//返回輔幣金額StringgetPfCurrency();//原幣幣種UFDoublegetPfLocalMoney();//返回本幣金額UFDoublegetPfMoney();//返回原幣金額}棄審模式接publicinterfaceIPfBackCheck2publicinterfaceIPfBackCheck2}UI關(guān)聯(lián)接每個(gè)單據(jù)類型都可與具體的功能節(jié)點(diǎn)關(guān)聯(lián)起來(lái),這在bd_billtype.nodecode和UI關(guān)聯(lián)接口ILinkApprove和ILinkMaintain。publicpublicinterfacevoiddoApproveAction(ILinkApproveDataapprovedata);//初始化單據(jù)關(guān)聯(lián)的功能節(jié)點(diǎn)UI}publicpublicinterfacetainAction(ILinkMaintainDatamaintaindata);//}publicpublicinterfaceIUINodecodeSearcherStringfindNodecode(ILinkQueryDatalqd)//}流用戶管理中增加查詢權(quán)限處理——如果勾選了查詢權(quán)限,則能隨意查看任何人的情況數(shù)據(jù);如果未勾選,則只能查看自己提交和的單據(jù)。publicinterfaceISpecFlowQuery{int[]getAssMnyColAry();String[]getChinaName();int[]getChinaNameType();int[]getChinaNameWidth();intgetCurrencyCol();int[]publicinterfaceISpecFlowQuery{int[]getAssMnyColAry();String[]getChinaName();int[]getChinaNameType();int[]getChinaNameWidth();intgetCurrencyCol();int[]getLocalMnyColAry();int[]getMnyColAry();UIPanelgetSpecCondPanel(Stringpk_corp,Stringoperator);StringgetSqlStr();}參與者過(guò)濾接nc.bs.pub.pf.IPfpublicinterfaceFilterpublicArrayListfilterUsers(StringorgPK,StringArrayListalDistilledUserPKs,AggregatedValueObject}publicinterfaceFilterpublicArrayListfilterUsers(StringorgPK,StringArrayListalDistilledUserPKs,AggregatedValueObject}orgPKalDistilledUserPKsPKbillvo publicinterfaceFilter2publicpublicinterfaceFilter2publicHashSetfilterUsers(StringsrcBilltype,StringAggregatedValueObjectbillvo,RoleVO[]由批動(dòng)作處理的動(dòng)作返回。被BS動(dòng)作處理類PfUtilBO用來(lái)控制是否繼續(xù)進(jìn)行動(dòng)publicpublicinterfaceIWorkflowBatch/**返回未通過(guò)或進(jìn)行中的單據(jù)索引號(hào)(0...N)*/HashtablegetNoPassAndGoing();/**獲得用戶對(duì)象*/ObjectgetUserObj();}動(dòng)作驅(qū)在BS端動(dòng)作處理的過(guò)程中,在執(zhí)行完動(dòng)作后,根據(jù)其返回值的不同可能會(huì)進(jìn)行動(dòng)結(jié)尾,還嘗試啟動(dòng)流。比如動(dòng)作驅(qū)動(dòng):30_APPROVE-執(zhí)行完7D_PUSHSAVE之后,如果啟動(dòng)了流,仍然遍歷被驅(qū)動(dòng)的動(dòng)作,但不會(huì)執(zhí)行同單據(jù)類型的動(dòng)作。也就是說(shuō),仍然會(huì)執(zhí)行4F_SAVE和5G_NIKE動(dòng)作,但不會(huì)執(zhí)行動(dòng)作返回值為IWorkFlowRet動(dòng)作返回值為Object[],且Object[0]類型為IWorkflowBatch,并指明了不進(jìn)行動(dòng)作單據(jù)VO交業(yè)務(wù)單據(jù)VO之間存在著相互轉(zhuǎn)換的需求,可臺(tái)或進(jìn)行。VO交換前后可執(zhí)行單張單據(jù)VOAggregatedValueObjectnc.ui.pf.change.PfUtilUITools.runChangeData(StringsourceBillType,//PKString AggregatedValueObjectvo///**/**VOVO數(shù)組*/AggregatedValueObject[PfUtilUITools.runChangeDataAry(StringsourceBillType,//源單據(jù)類型PKStringdestBillType, AggregatedValueObject[vos)//VO單張單據(jù)VOAggregatedValueObjectnc.bs.pub.pf.PfUtilTools.runChangeData(StringsourceBillType,//PKString AggregatedValueObjectvo//AggregatedValueObject[nc.bs.pub.pf.PfUtilTools.runChangeDataAry(StringsourceBillType,//源單據(jù)類型PKString AggregatedValueObject[vos)//VO單據(jù)UI菜單填充與業(yè)務(wù)類voidvoidnc.ui.pub.pf.PfUtilClient.retBusinessBtn(ButtonObjectinoutBoBusiness,StringcorpId,StringbillType)tagPK參照制voidvoidnc.ui.pub.pf.PfUtilClient.retAddBtn(ButtonObjectboAdd,StringcorpId,StringbillType,ButtonObjecttagPK:PK,voidvoidnc.ui.pub.pf.PfUtilClient.childButtonClicked(ButtonObjectbo,StringpkCorp,StringFunNode,StringpkOperator,StringcurrentBillType,Containerparent,ObjectuserObj)1、查詢來(lái)源單據(jù);2、顯示來(lái)源單據(jù),并進(jìn)行選擇;3、獲取選擇的來(lái)源單據(jù);4VO交換。publicvoidonButtonClicked(nc.ui.pub.ButtonObjectbo//UIif(bo.getParent()==m_boBusi) PfUtilClient.retAddBtn(m_boAdd"2011"30"bo);}elseif(bo.getParent()==m_boAdd){if(nc.ui.pub.pf.PfUtilClient.makeFlag){ getBillUI().setBillOperate(IBillOperate.OP_ADD)//新增}elseIfAggregatedValueObjectvo=//PfUtilClient.getRetVos();}}}需要在pub_billtobillrefer中的querytemplateId查詢模版,同時(shí)用<>括起來(lái)如果一個(gè)單據(jù)參照另一單據(jù)生成單據(jù)時(shí)必須在平臺(tái)的單據(jù)信息對(duì)照表中進(jìn)行否對(duì)于自定義參照(需要繼承自 RefGridTreeModelwhere子句。動(dòng)作voidnc.ui.pub.pf.PfUtilClient.re voidnc.ui.pub.pf.PfUtilClient.re ButtonObjectboElse,StringbillType,StringactionStyle)業(yè)務(wù)流相關(guān)接動(dòng)作處理前后UI接臺(tái)通過(guò)PfUtilClient調(diào)用單據(jù)動(dòng)作時(shí)會(huì)先進(jìn)行事前的額外處理。執(zhí)行完動(dòng)nc.vo.pub.pf.IprocActionRetObject接口(參見(jiàn)?節(jié)2.1節(jié),額外處理類必須實(shí)現(xiàn)下述接口。動(dòng)作執(zhí)行前的UI端處理該實(shí)現(xiàn)類通過(guò)方法傳遞或是在單據(jù)類型表bd_billtypedef3字段publicpublicinterfaceIUIBeforeProcAction//UIvoidrunBatchClass(Containerparent,StringStringactionName,AggregatedValueObject[]vos,Object[]voidrunClass(Containerparent,StringbillType,StringactionName,AggregatedValueObjectvo,Objectobj);}publicpublicinterfaceIUIAfterProcAction//UIvoidrunClass(Containerparent,Objectobj)throws}臺(tái)通過(guò)PfUtilClient調(diào)用單據(jù)動(dòng)作,動(dòng)作執(zhí)行完成后,如果返回值為nc.vo.pub.pf.PfUtilActionVOUI界面。并根據(jù)該返回值中的信息進(jìn)publicpublicinterfaceIinitDatavoidinitData(String}publicpublicinterfaceIinitData2voidinitData(Object}UI該接口為實(shí)現(xiàn)自定義查詢條件(DLG)的類必須實(shí)現(xiàn)該接口的類必須在單據(jù)參照表pub_billtobillrefer的字段queryTemplateId中,并且必publicpublicinterfaceIinitQueryDatavoidinitData(StringpkCorp,Stringoperator,StringStringbusinessType,StringcurrentBillType,StringsourceBilltype,ObjectuserObj)throwsException;}publicpublicinterfaceIinitQueryData2voidinitData(StringpkCorp,Stringoperator,StringStringbusinessType,StringcurrentBillType,StringsourceBilltype,StringnodeKey,ObjectuserObj)throwsException;}臺(tái)通過(guò)PfUtilClient調(diào)用單據(jù)動(dòng)作時(shí),如果執(zhí)行動(dòng)作的返回值實(shí)現(xiàn)了該接publicpublicinterfaceIProcActionRetObject/**返回動(dòng)作執(zhí)行完的前臺(tái)執(zhí)行類,必須實(shí)現(xiàn)IUIAfterProcAction*/StringgetClassStr();Object }業(yè)務(wù)處理類。該類在單據(jù)類型表bd_billtype的def1字段。publicpublicinterfaceISaveAfterBusi/**調(diào)用影響產(chǎn)品業(yè)務(wù)類型處理的業(yè)務(wù),VO*/voidaffectBusi(nc.vo.pub.pf.PfPOArriveVOvo);/**返回相關(guān)單據(jù)類型,格式如:"'30','20'*/StringgetRelaBillType();}VO查詢接流程平臺(tái)提供查詢單據(jù)主表VOCircularlyAccessibleValueObject[CircularlyAccessibleValueObject[IPFConfig.queryHeadAllData(StringbillType, //PKStringbusinessType//StringwhereString)//CircularlyAccessibleValueObject[CircularlyAccessibleValueObject[IPFConfig.queryBodyAllData(StringbillType, //PKString StringbodyCondition)//DMO實(shí)現(xiàn),且必須實(shí)現(xiàn)下面的兩個(gè)接口。publicpublicinterfaceIQueryData/**根據(jù)主表的關(guān)鍵字段查詢子表數(shù)據(jù)*/CircularlyAc
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《收入分配差距》課件
- 慢性創(chuàng)傷性滑膜炎的健康宣教
- 急性蜂窩織炎的臨床護(hù)理
- 化膿性甲溝炎的臨床護(hù)理
- 文稿校對(duì)的五法
- 日光角化病的臨床護(hù)理
- 黑棘皮癥的臨床護(hù)理
- 黏多糖貯積癥Ⅲ型的臨床護(hù)理
- JJF(陜) 100-2022 曲撓試驗(yàn)機(jī)校準(zhǔn)規(guī)范
- JJF(陜) 009-2019 雷氏夾膨脹測(cè)定儀校準(zhǔn)規(guī)范
- 2024年度供應(yīng)商管理培訓(xùn)課件
- Grid Coffee品牌介紹模版
- 國(guó)家開(kāi)放大學(xué)《酒店餐飲服務(wù)與管理》形考任務(wù)1-4參考答案
- 江蘇省南京市秦淮區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末語(yǔ)文試題(解析版)
- 期末模擬測(cè)試卷(試題)-2024-2025學(xué)年統(tǒng)編版語(yǔ)文二年級(jí)上冊(cè)
- 2024年下半年廣東省廣州越秀區(qū)總工會(huì)招聘工會(huì)組織員7人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 11260軟件工程-國(guó)家開(kāi)放大學(xué)2023年1月至7月期末考試真題及答案(共2套)
- 大模型技術(shù)深度賦能保險(xiǎn)行業(yè)白皮書(shū)2024
- GB/T 22924-2024復(fù)合肥料中縮二脲含量的測(cè)定
- 2024年1月遼寧省普通高中學(xué)業(yè)水平合格性考試物理試題(含答案解析)
- 酒廠融資方案
評(píng)論
0/150
提交評(píng)論