工作流引擎API說明_第1頁
工作流引擎API說明_第2頁
工作流引擎API說明_第3頁
工作流引擎API說明_第4頁
工作流引擎API說明_第5頁
已閱讀5頁,還剩70頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

慧正工作流引擎API講明V6.0(試用版)北京慧正通軟科技有限公司2012年5月

目錄一、 總體 41. 業(yè)務(wù)操作講明 42. 流程參數(shù)講明 43. 流程執(zhí)行操作講明 84. 流程實例流轉(zhuǎn)操作 9二、 啟動實例 91. 啟動流程實例整體講明 92. 啟動流程實例參數(shù)講明 103. 啟動流程初始化XMLWork額外屬性講明 104. 啟動流程實例返回值[init]講明 105. 啟動實例代碼樣例 11三、 打開實例 121. 打開流程實例整體講明 122. 打開流程實例參數(shù)講明 133. 打開流程初始化XMLWork額外屬性講明 134. 打開流程實例返回值[init]講明 145. 打開實例代碼樣例 14四、 執(zhí)行操作 161. 采納系統(tǒng)提供的默認類處理 162. 自行編寫處理類 17五、 流程實例具體功能操作 191. 提交 19A. 提交流程實例參數(shù)講明 19B. 提交流程實例返回值[cp]講明 19C. 提交流程實例代碼樣例 202. 退回 23A. 退回流程實例參數(shù)講明 23B. 退回流程實例返回值[cp]講明 23C. 退回代碼樣例 243. 拿回 24A. 拿回流程實例參數(shù)講明 24B. 拿回流程實例返回值[cp]講明 25C. 拿回代碼樣例 254. 閱知 25A. 流程實例閱知參數(shù)講明 25B. 流程實例閱知返回值[cp]講明 26C. 流程實例閱知代碼樣例 265. 撤銷 26A. 撤銷流程實例參數(shù)講明 26B. 撤銷流程實例返回值[cp]講明 26C. 撤銷流程實例代碼樣例 276. 跳轉(zhuǎn) 27A. 流程實例跳轉(zhuǎn)參數(shù)講明 27B. 流程實例跳轉(zhuǎn)返回值[cp]講明 27C. 流程實例跳轉(zhuǎn)代碼樣例 287. 會簽 29A. 流程實例會簽參數(shù)講明 29B. 流程實例會簽返回值[cp]講明 29C. 流程實例會簽代碼樣例 308. 加簽 30A. 流程實例加簽參數(shù)講明 30B. 流程實例加簽返回值[cp]講明 30C. 流程實例加簽代碼樣例 319. 轉(zhuǎn)辦 31A. 轉(zhuǎn)辦流程實例參數(shù)講明 31B. 轉(zhuǎn)辦流程實例返回值[cp]講明 31C. 轉(zhuǎn)辦流程實例代碼樣例 3210. 暫停 32A. 暫停流程實例參數(shù)講明 32B. 暫停流程實例返回值[cp]講明 32C. 暫停流程實例代碼樣例 3311. 已閱 33A. 流程實例已閱參數(shù)講明 33B. 流程實例已閱返回值[cp]講明 33C. 流程實例已閱代碼樣例 3312. 催辦 34A. 催辦流程實例參數(shù)講明 34B. 催辦流程實例返回值[cp]講明 34C. 催辦流程實例代碼樣例 3413. 替換辦理人 35A. 流程實例替換辦理人參數(shù)講明 35B. 流程實例替換辦理人返回值[cp]講明 35C. 流程實例替換辦理人代碼樣例 3514. 暫存 36A. 暫存流程實例參數(shù)講明 36B. 暫存流程實例返回值[cp]講明 36C. 暫存代碼樣例 3615. 終止流程 36A. 終止流程實例參數(shù)講明 36B. 終止流程實例返回值[cp]講明 37C. 終止流程代碼樣例 3716. 啟動子流程 37A. 啟動子流程實例參數(shù)講明 37B. 啟動子流程實例返回值[cp]講明 37C. 啟動子流程代碼樣例 38附錄:XMLWork方法摘要 40總體業(yè)務(wù)操作講明業(yè)務(wù)操作講明功能方法參數(shù)講明1.HYPERLINK啟動實例1.1XMLWorkxWork=newXMLWork(Stringuserid,Stringusername,Stringdeptname)HYPERLINK設(shè)置XMLWork的差不多屬性必要參數(shù):Userid:用戶IdUserName:用戶名稱DeptName:部門名稱1.2intinit=xWork.openWorkFlow(””,flowID,””);依照流程定義Id,啟動流程實例必要參數(shù):flowID:流程定義Id2.HYPERLINK打開實例2.1XMLWorkxWork=newXMLWork(Stringuserid,Stringusername,Stringdeptname)設(shè)置XMLWork的差不多屬性必要參數(shù):Userid:用戶IdUserName:用戶名稱DeptName:部門名稱2.2intinit=xWork.openWorkFlow(workid,””,””);依照流程實例Id,打開流程實例必要參數(shù):workid:流程實例Id流程參數(shù)講明具體可參考/horizon/workflow/include2/xmlwork.index.hidden.jsp流程參數(shù)總體講明參數(shù)名含義格式要求必須賦值flowIdentifier流程數(shù)據(jù)源標(biāo)識configuration.xml或者workflow.xml配置,具體參考HYPERLINK啟動流程初始化XMLWork額外屬性講明dataIdentifier業(yè)務(wù)數(shù)據(jù)源標(biāo)識UserID操作人用戶Id■UserName操作人用戶名稱DeptName操作人部門名稱WorkID流程實例id■NodeID流程實例當(dāng)前節(jié)點Id■NodeName流程實例當(dāng)前節(jié)點名稱TrackID路徑Id//假如當(dāng)前人在多個分支節(jié)點都具有權(quán)限,還需要指定路徑ID//假如不指定,系統(tǒng)會自動獵取所有分支,返回前臺供選擇actionFlag操作權(quán)限設(shè)置1:同意操作selectAuthor辦理人員的Id單個節(jié)點(或者不需要傳入節(jié)點)時為[user1|user2或者node=user1|user2]多個節(jié)點時[node1=user1|user2&node2=user3]流程節(jié)點的辦理人無值時為必填項selectAuthorCN辦理人員的中文名稱secondAuthor選擇的協(xié)辦人員格式同selectAuthornextNodeID下一個節(jié)點Id1.假如提交到下一點,只有一個節(jié)點時,請不要賦值,置為空;2.當(dāng)下一節(jié)點有多個節(jié)點,依照路由條件無法確定時,能夠指定其中一個或者多個來確定流程走向。傳入格式:(必須從返回格式中獵取傳入數(shù)據(jù))rId1~nId1|rId2~nId2&rId3~nId3路由ID~節(jié)點ID。3.假如從當(dāng)前節(jié)點(A)到目標(biāo)節(jié)點(C)之間有其他節(jié)點(B)被躍過時格式為:路由B~節(jié)點B|路由C~節(jié)點C4.多個節(jié)點被選擇時,使用&連接■msgSendFlag發(fā)送消息方式ToDo|Mail|Msg|Note|RTF|Other|假如在workflow.xml中配置ReChgMsgFlag節(jié)點為true時需要傳入發(fā)送消息的方式ActionName操作類型Save等,具體參考總體中的流程執(zhí)行操作■allowUnitNext合并節(jié)點,是否同意執(zhí)行提交操作1:同意,其他不同意合并節(jié)點時為必填項cancelFlag撤銷時的標(biāo)志,默認刪除1=刪除,2=回收站只有執(zhí)行撤銷操作時為必填項urlapp待辦鏈接地址假如為空則默認使用流程框架頁面打開Comments意見內(nèi)容selectFlag當(dāng)前節(jié)點假如替換處理人和轉(zhuǎn)辦時,是否同意選擇多人1:同意,其他不同意執(zhí)行替換和轉(zhuǎn)辦時為必填項submitflag操作提交狀態(tài)(1)提交操作時的含義:1=獵取下一節(jié)點信息,返回是否選擇節(jié)點,是否需要選擇人員,用于跟前臺交互,0=執(zhí)行提交到下一節(jié)點辦理人,假如處理中遇到節(jié)點不明確或者辦理人不明確時,跟1效果一樣。當(dāng)需要跟前臺操作人進行交互,比如獵取是否需要選擇節(jié)點或者選擇辦理人,是否需要操作人進行確認等,建議使用1,處理速度會快一點。(2)跳轉(zhuǎn)操作時的含義:1=獵取能夠跳轉(zhuǎn)的節(jié)點列表,0=執(zhí)行跳轉(zhuǎn)到指定節(jié)點。(3)退回操作時的含義:1=獵取能夠退回的節(jié)點列表,0=執(zhí)行退回到指定節(jié)點操作。(4)啟動子流程時的含義:假如系統(tǒng)提供了啟動子流程的ID(參數(shù)selectFlowID),則忽略此參數(shù),不提供selectFlowID參數(shù)時,假如當(dāng)前人沒有啟動過子流程時忽略此參數(shù),直接依照定義推斷是否有多個子流程定義,假如只有一個子流程定義,則直接啟動,否則返回;假如當(dāng)前人差不多啟動過子流程,1=獵取差不多啟動的子流程列表,并返回,0=依照定義推斷是否有多個子流程定義,假如只有一個子流程定義,則直接啟動,否則返回。(5)催辦操作時的含義:1=催辦次數(shù)假如差不多達到上限則停止,0=催辦次數(shù)差不多達到上限也接著催辦■curNodeAuthorSendFlag當(dāng)前節(jié)點的作者消息發(fā)送方式,用于執(zhí)行會簽,加簽,替換,轉(zhuǎn)辦格式同msgSendFlagcurNodeReaderSendFlag當(dāng)前節(jié)點的讀者消息發(fā)送方式,用于執(zhí)行閱知操作時顯示在前臺供操作者選擇selectFlowID啟動子流程的Id啟動子流程時為必填項FormAction流程提交操作的URL■tmpAuthor選擇人員時,臨時獵取選擇范圍格式同SelectAuthorpreFlag假如有選擇節(jié)點頁面,在確認頁面上出現(xiàn)上一步按鈕1:顯示,其他不出現(xiàn)ActionClass執(zhí)行業(yè)務(wù)的action名稱默認com.horizon.workflow.flowengine.impl.entity.XMLApptmpSaveInfo臨時信息記錄(目前用于存儲當(dāng)前人填寫的意見信息)流程執(zhí)行操作講明流程執(zhí)行操作1.HYPERLINK系統(tǒng)默認處理過程(具體點擊上面鏈接)引入的包:com.horizon.workflow.flowengine.impl.entity.XMLAppcom.horizon.workflow.flowengine.pub.XMLWork從request中獵取的相關(guān)參數(shù)參考流程參數(shù)總體講明,以及要執(zhí)行下面具體操作的講明(1)傳入request對象,調(diào)用doActionXMLAppapp=newXMLApp();LinkedHashMapbackMap=app.doAction(request);//返回結(jié)果intcp=Integer.parseInt((String)backMap.get("iResult"));//獵取提交后的流程信息XMLWorkxWork=(XMLWork)backMap.get("xWork");(2)把參數(shù)放入的LinkedHashMap,調(diào)用doActionLinkedHashMapdataHashMap=newLinkedHashMap();XMLAppapp=newXMLApp();LinkedHashMapbackMap=app.doAction(dataHashMap);//返回結(jié)果intcp=Integer.parseInt((String)backMap.get("iResult"));//獵取提交后的流程信息XMLWorkxWork=(XMLWork)backMap.get("xWork");依照操作的類型,組織dataHashMap的數(shù)據(jù),具體參考流程參數(shù)總體講明,以及要執(zhí)行下面具體操作的講明2.HYPERLINK自行編寫處理過程(具體點擊上面鏈接)LinkedHashMaphashMap=newLinkedHashMap();2.在自定義的類中執(zhí)行intresult=doAction(null,hashMap);組織流程操作需要的參數(shù)具體依照流程參數(shù)總體講明以及對應(yīng)的操作設(shè)置相關(guān)參數(shù),放入到hashMap中。流程實例流轉(zhuǎn)操作操作名稱英文標(biāo)識講明提交Submit提交到下一節(jié)點退回reject退回到某個節(jié)點拿回getback拿回已提交的流程閱知addreader發(fā)送待閱撤銷cancel撤銷流程跳轉(zhuǎn)goto跳轉(zhuǎn)到某個節(jié)點會簽huiqian發(fā)送給相關(guān)人員會簽加簽jiaqian發(fā)送給相關(guān)人員加簽轉(zhuǎn)辦move轉(zhuǎn)交給其他人辦理暫停pause暫停流程已閱readed閱讀待閱的信息催辦remsg催辦流程實例替換辦理人replace替換流程的辦理人暫存save暫存流程實例終止流程stopflow終止流程實例啟動子流程subflow啟動子流程啟動實例啟動流程實例整體講明引入類:com.horizon.workflow.flowengine.pub.XMLWork執(zhí)行方法初始化XMLWork,設(shè)置相關(guān)屬性1.XMLWorkxWork=newXMLWork(userid,username,deptname);啟動具體的流程實例(返回值講明見下面)2.intinit=xWork.openWorkFlow(””,flowID,””);啟動流程實例參數(shù)講明參數(shù)名含義要求userid啟動實例的操作人的用戶Id不能為空username啟動實例的操作人的用戶名稱能夠為空deptname啟動實例的操作人的部門名稱能夠為空flowID流程定義Id不能為空啟動流程初始化XMLWork額外屬性講明初始化XMLWork,設(shè)置相關(guān)屬性(依照業(yè)務(wù),如有需要,能夠設(shè)置以下內(nèi)容)xWork.setFlowIdentifier()設(shè)置流程數(shù)據(jù)所使用的數(shù)據(jù)源標(biāo)識符。configuration.xml中設(shè)置的默認數(shù)據(jù)源和workflow.xml中的設(shè)置不一致時,設(shè)置為空和設(shè)置成null(或者不設(shè)置)是有區(qū)不的,設(shè)置為空時,系統(tǒng)使用configuration.xml中設(shè)置的默認數(shù)據(jù)源,設(shè)置成null(或者不設(shè)置)時,使用的是workflow.xml中的設(shè)置。數(shù)據(jù)源無效時,系統(tǒng)默認使用configuration.xml中設(shè)置的默認數(shù)據(jù)源。假如flowIdentifier跟dataIdentifier一樣能夠直接使用xWork.setIdentifier(“”)對兩個變量同時賦值xWork.setDataIdentifier()設(shè)置業(yè)務(wù)數(shù)據(jù)所使用的數(shù)據(jù)源標(biāo)識符。xWork.setUserAuthType()假如需要設(shè)置外部辦理人獵取方式。啟動流程實例返回值[init]講明返回值含義init=StaticVar.Init_Success初始化成功。init=StaticVar.Init_NoRole當(dāng)前人員無權(quán)啟動流程init=StaticVar.Init_ReadMsg鎖定當(dāng)前實例失敗,啟動流程時不阻礙,能夠等同成功init=StaticVar.Init_Failed其他緣故失敗從xWork.getBackMsg();能夠獵取錯誤信息啟動流程實例成功后,能夠從xWork對象中獵取相關(guān)的信息,具體參考HYPERLINKXMLWork方法摘要啟動實例代碼樣例/**啟動流程實例操作,從前臺獵取參數(shù),獵取流程定義Id等信息,具體可參考horizon/workflow/include2/xmlwork.index.head.jsp*///1.流程定義Id,必須有此值StringflowID=request.getParameter("flowid");//2.外部權(quán)限設(shè)置分類,XMLWork額外屬性,能夠不用設(shè)置StringuserAuthType=request.getParameter("userAuthType");//3.獲得數(shù)據(jù)源,XMLWork額外屬性,能夠不用設(shè)置StringdbIdentifier=request.getParameter("dbIdentifier");//4.當(dāng)前用戶信息,依照顧用系統(tǒng)的區(qū)不,靈活獵取。下面是產(chǎn)品中的自帶的用戶獵取方式Stringuserid=SessionUtil.getUserId(session);//用戶Id必須有值Stringusername=SessionUtil.getUserName(session);Stringdeptname=SessionUtil.getDeptName(session);//5.初始化XMLWork屬性XMLWorkxWork=newXMLWork(userid,username,deptname);//假如需要設(shè)置XMLWork額外屬性xWork.setIdentifier(dbIdentifier);xWork.setUserAuthType(userAuthType);//6.啟動流程實例,第一個參數(shù)是流程實例Id,第二個參數(shù)是流程定義Id,第三個參數(shù)是業(yè)務(wù)數(shù)據(jù)Id,假如三個都有值,獵取流程數(shù)據(jù)的優(yōu)先順序:workID>flowID>dataIDintinit=xWork.openWorkFlow(“”,flowID,””);//7.啟動流程實例成功后,對業(yè)務(wù)數(shù)據(jù)的處理//在啟動流程實例的界面中,假如提交流程操作時,同時保存業(yè)務(wù)數(shù)據(jù),使用自定義的編寫處理類方式流轉(zhuǎn),業(yè)務(wù)數(shù)據(jù)能夠在對應(yīng)的getAppSQL()方法中具體處理。具體可參考自行編寫處理類過程。//獵取當(dāng)前節(jié)點當(dāng)前人所具有的表單信息(包含表單域和操作信息),具體可參考horizon\workflow\include2\xmlwork.index.form.jspStringformId=“”;//業(yè)務(wù)的表單ID,依照業(yè)務(wù)隨機修改Stringdataid=xWork.getIDByFormID(formId,“DataID”);

com.horizon.workflow.flowengine.xmldb.XMLForm[] xmlForms=xWork.getCurForm(dataid);for(inti=0;i<form.length;i++){{Stringformid=form[i].getID();//流程跟蹤表單if(formid.equalsIgnoreCase("FlowTrack")){//假如是流程跟蹤表單,能夠執(zhí)行鏈接到流程跟蹤界面}elseif(form[i].getFormtype().equals("HTML")){//靜態(tài)Html頁面}elseif(form[i].getFormtype().equals("JSP")){//自定義的JSP頁面//獵取表單信息LinkedHashMapformFieldMap=xWork.getFieldsTypeByFormID(i);//業(yè)務(wù)數(shù)據(jù)IdStringdataID=form[i].getDataID()//表單IdStringformid=form[i].getID();//庫表名稱Stringtablename=form[i].getTableID();//該節(jié)點的只讀字段列表Stringmpread=formFieldMap.get("read").toString();//該節(jié)點的編輯字段列表Stringmpedit=formFieldMap.get("edit").toString();//該節(jié)點的必填字段列表Stringmpmust=formFieldMap.get("check").toString();//該節(jié)點的隱藏字段列表Stringmphide=formFieldMap.get("hidden").toString();//該節(jié)點的其他標(biāo)識(比如表單自己的按鈕之類的標(biāo)識)列表Stringmpother=formFieldMap.get("other").toString();}else{//其他使用整體框架功能}}打開實例打開流程實例整體講明引入類:com.horizon.workflow.flowengine.pub.XMLWork執(zhí)行方法初始化XMLWork,設(shè)置相關(guān)屬性1.XMLWorkxWork=newXMLWork(userid,username,deptname);打開具體的流程實例(返回值講明見下面)2.intinit=xWork.openWorkFlow(workid,””,””);打開流程實例參數(shù)講明參數(shù)名含義要求userid啟動實例的操作人的用戶Id不能為空username啟動實例的操作人的用戶名稱能夠為空deptname啟動實例的操作人的部門名稱能夠為空workid流程實例Id不能為空打開流程初始化XMLWork額外屬性講明初始化XMLWork,設(shè)置相關(guān)屬性(依照業(yè)務(wù),如有需要,能夠設(shè)置以下內(nèi)容)xWork.setFlowIdentifier()設(shè)置流程數(shù)據(jù)所使用的數(shù)據(jù)源標(biāo)識符。configuration.xml中設(shè)置的默認數(shù)據(jù)源和workflow.xml中的設(shè)置不一致時,設(shè)置為空和設(shè)置成null(或者不設(shè)置)是有區(qū)不的,設(shè)置為空時,系統(tǒng)使用configuration.xml中設(shè)置的默認數(shù)據(jù)源,設(shè)置成null(或者不設(shè)置)時,使用的是workflow.xml中的設(shè)置。數(shù)據(jù)源無效時,系統(tǒng)默認使用configuration.xml中設(shè)置的默認數(shù)據(jù)源。假如flowIdentifier跟dataIdentifier一樣能夠直接使用xWork.setIdentifier(“”)對兩個變量同時賦值xWork.setDataIdentifier()設(shè)置業(yè)務(wù)數(shù)據(jù)所使用的數(shù)據(jù)源標(biāo)識符。xWork.setOpenTrackID()設(shè)置指定路徑Id打開流程實例時能夠設(shè)置此值(1)假如當(dāng)前人在多個分支節(jié)點都具有權(quán)限,還需要指定路徑ID(2)假如不指定,系統(tǒng)會自動獵取所有分支,返回前臺供選擇打開流程實例返回值[init]講明返回值含義init=StaticVar.Init_SelectNode選擇需要打開的節(jié)點Stringallnodes=xWork.getBackMsg();String[]nodes=allnodes.split("\\|");選擇后的結(jié)果賦值給xWork.setOpenTrackID(“”);return;init=StaticVar.Init_Success打開實例成功init=StaticVar.Init_NoRole當(dāng)前人員無權(quán)查看此流程實例init=StaticVar.Init_ReadMsg當(dāng)前人只能以只讀權(quán)限打開(現(xiàn)在不能執(zhí)行任何操作)init=StaticVar.Init_Locked當(dāng)前實例被其他人鎖定(現(xiàn)在不能執(zhí)行任何操作)init=StaticVar.Init_LockFailed鎖定當(dāng)前實例失敗,現(xiàn)在其他人仍然能夠打開實例進行操作,可能會出現(xiàn)數(shù)據(jù)沖突問題,建議退出重新打開init=StaticVar.Init_Failed其他緣故失敗從xWork.getBackMsg();能夠獵取錯誤信息打開流程實例成功后,能夠從xWork對象中獵取相關(guān)的信息,具體參考HYPERLINKXMLWork方法摘要打開實例代碼樣例/**打開流程實例操作,從前臺獵取參數(shù),獵取流程實例Id等信息,具體可參考horizon/workflow/include2/xmlwork.index.head.jsp*///1.流程實例Id,必須有此值Stringworkid=request.getParameter("workid");//2.外部權(quán)限設(shè)置分類,XMLWork額外屬性,能夠不用設(shè)置StringuserAuthType=request.getParameter("userAuthType");//3.獲得數(shù)據(jù)源,XMLWork額外屬性,能夠不用設(shè)置StringdbIdentifier=request.getParameter("dbIdentifier");//4.設(shè)置指定路徑Id,XMLWork額外屬性,假如沒有分支,能夠不用設(shè)置StringopenTrackID=request.getParameter("openTrackID");//5.當(dāng)前用戶信息,依照顧用系統(tǒng)的區(qū)不,靈活獵取。下面是產(chǎn)品中的自帶的用戶獵取方式Stringuserid=SessionUtil.getUserId(session);//用戶Id必須有值Stringusername=SessionUtil.getUserName(session);Stringdeptname=SessionUtil.getDeptName(session);//5.初始化XMLWork屬性XMLWorkxWork=newXMLWork(userid,username,deptname);//假如需要設(shè)置XMLWork額外屬性xWork.setIdentifier(dbIdentifier);xWork.setUserAuthType(userAuthType);xWork.setOpenTrackID(openTrackID);//6.打開流程實例intinit=xWork.openWorkFlow(workid,””,””);//7.打開流程實例成功后,對業(yè)務(wù)數(shù)據(jù)的處理//在打開流程實例的界面中,假如提交流程操作時,同時保存業(yè)務(wù)數(shù)據(jù),使用自定義的編寫處理類方式流轉(zhuǎn),業(yè)務(wù)數(shù)據(jù)能夠在對應(yīng)的getAppSQL()方法中具體處理。具體可參考自行編寫處理類過程。//獵取當(dāng)前節(jié)點當(dāng)前人所具有的表單信息(包含表單域和操作信息),具體可參考horizon\workflow\include2\xmlwork.index.form.jspStringformId=“”;//業(yè)務(wù)的表單ID,依照業(yè)務(wù)隨機修改Stringdataid=xWork.getIDByFormID(formId,“DataID”);

com.horizon.workflow.flowengine.xmldb.XMLForm[] xmlForms=xWork.getCurForm(dataid);for(inti=0;i<form.length;i++){{Stringformid=form[i].getID();//流程跟蹤表單if(formid.equalsIgnoreCase("FlowTrack")){//假如是流程跟蹤表單,能夠執(zhí)行鏈接到流程跟蹤界面}elseif(form[i].getFormtype().equals("HTML")){//靜態(tài)Html頁面}elseif(form[i].getFormtype().equals("JSP")){//自定義的JSP頁面//獵取表單信息LinkedHashMapformFieldMap=xWork.getFieldsTypeByFormID(i);//業(yè)務(wù)數(shù)據(jù)IdStringdataID=form[i].getDataID()//表單IdStringformid=form[i].getID();//庫表名稱Stringtablename=form[i].getTableID();//該節(jié)點的只讀字段列表Stringmpread=formFieldMap.get("read").toString();//該節(jié)點的編輯字段列表Stringmpedit=formFieldMap.get("edit").toString();//該節(jié)點的必填字段列表Stringmpmust=formFieldMap.get("check").toString();//該節(jié)點的隱藏字段列表Stringmphide=formFieldMap.get("hidden").toString();//該節(jié)點的//該節(jié)點的其他標(biāo)識(比如表單自己的按鈕之類的標(biāo)識)列表Stringmpother=formFieldMap.get("other").toString();}else{//其他使用整體框架功能}}執(zhí)行操作此步必須在執(zhí)行過實例打開或者啟動流程成功后方可執(zhí)行(否則會出現(xiàn)操作失?。┎杉{系統(tǒng)提供的默認類處理假如流程需要的信息都在request里,能夠使用系統(tǒng)默認提供的方法com.horizon.workflow.flowengine.impl.entity.XMLApp類中提供默認處理方法,此類能夠自行編寫。操作名稱從request中的ActionName自動獵取當(dāng)前人id從request中的userid自動獵取當(dāng)前實例id從request中的workid自動獵取其他參數(shù)參考方法二中的講明下面的XMLApp實例化過程是系統(tǒng)默認的處理方式,能夠依照業(yè)務(wù)需要參考自行編寫處理類過程,實現(xiàn)自己的業(yè)務(wù)。XMLAppapp=newXMLApp();//也能夠使用XMLAppInterfaceapp=StaticFun.getXMLApp();來獵取在workflow.xml中配置的類LinkedHashMapbackMap=app.doAction(request); 依照返回結(jié)果進行后續(xù)處理 系統(tǒng)默認Map中存放三個值,假如是自行編寫的類可能跟下面的描述不一致,請自行處理。下面對系統(tǒng)默認提供的方法進行講明。request:success和error標(biāo)識成功和失敗//iResult=0時為SuccessiResult:執(zhí)行結(jié)果編號,需要轉(zhuǎn)換為數(shù)字后進行推斷backMsg:執(zhí)行處理的信息xWork:本次處理中的XMLWork對象,能夠從中獵取一些信息,比如選擇節(jié)點時,獵取所有可能的節(jié)點。具體各種情況講明見下面描述。自行編寫處理類自行編寫類,必須繼承com.horizon.workflow.flowengine.fun.XMLWorkApp 此類需要實現(xiàn)三個接口方法, getAppSQL用來獵取業(yè)務(wù)數(shù)據(jù)保存的sql和參數(shù),假如差不多自行處理,能夠直接返回ture getAppDelSQL用來在撤辦時刪除業(yè)務(wù)數(shù)據(jù),假如業(yè)務(wù)數(shù)據(jù)自行處理,能夠直接返回true setFlowVarValue用來對流程變量進行賦值,假如沒有能夠為空 在類中創(chuàng)建一個方法(比如doAction),在方法中包含下面的代碼 定義一個LinkedHashMap,在此map中放入流程需要的參數(shù)如下 LinkedHashMaphashMap=newLinkedHashMap();//依照需要往hashMap中放入以下信息。hashMap.put("Comments".toUpperCase(),"");//填寫的意見信息,存放到流程跟蹤中。假如不需要記錄則忽略此參數(shù)傳入hashMap.put("selectAuthor".toUpperCase(),""); //假如下一節(jié)點沒有設(shè)置辦理人或者依照設(shè)置獵取辦理人為空時,且不同意躍過,能夠在此傳入下一節(jié)點辦理人。傳入格式:單個節(jié)點(或者不需要傳入節(jié)點)時為[user1|user2或者node=user1|user2]多個節(jié)點時[node1=user1|user2&node2=user3]hashMap.put("nextNodeID".toUpperCase(),"");//假如下一點只有一個時,請不要賦值;當(dāng)下一節(jié)點有多個節(jié)點,依照路由條件無法確定時,能夠指定其中一個或者多個來確定流程走向。傳入格式:(必須從返回格式中獵取傳入數(shù)據(jù))rId1~nId1|rId2~nId2&rId3~nId3路由ID~節(jié)點ID。假如從當(dāng)前節(jié)點(A)到目標(biāo)節(jié)點(C)之間有其他節(jié)點(B)被躍過時格式為:路由B~節(jié)點B|路由C~節(jié)點C多個節(jié)點被選擇時,使用&連接hashMap.put("submitflag".toUpperCase(),"0");提交操作時的含義,1=獵取下一節(jié)點信息,返回是否選擇節(jié)點,是否需要選擇人員,用于跟前臺交互,0=執(zhí)行提交到下一節(jié)點辦理人,假如處理中遇到節(jié)點不明確或者辦理人不明確時,跟1效果一樣。當(dāng)需要跟前臺操作人進行交互,比如獵取是否需要選擇節(jié)點或者選擇辦理人,是否需要操作人進行確認等,建議使用1,處理速度會快一點。跳轉(zhuǎn)操作時的含義:1=獵取能夠跳轉(zhuǎn)的節(jié)點列表,0=執(zhí)行跳轉(zhuǎn)到指定節(jié)點。退回操作時的含義:1=獵取能夠退回的節(jié)點列表,0=執(zhí)行退回到指定節(jié)點操作。啟動子流程時的含義:假如系統(tǒng)提供了啟動子流程的ID(參數(shù)selectFlowID),則忽略此參數(shù),不提供selectFlowID參數(shù)時,假如當(dāng)前人沒有啟動過子流程時忽略此參數(shù),直接依照定義推斷是否有多個子流程定義,假如只有一個子流程定義,則直接啟動,否則返回;假如當(dāng)前人差不多啟動過子流程,1=獵取差不多啟動的子流程列表,并返回,0=依照定義推斷是否有多個子流程定義,假如只有一個子流程定義,則直接啟動,否則返回。催辦操作時的含義:1=催辦次數(shù)假如差不多達到上限則停止,0=催辦次數(shù)差不多達到上限也接著催辦啟動子流程時可能需要的參數(shù),指定子流程IDhashMap.put("selectFlowID".toUpperCase(),"");//合并節(jié)點提交時需要傳入的參數(shù)1=能夠提交下一節(jié)點,0=程序自行確定hashMap.put("setAllowUnitNext".toUpperCase(),"");//操作名稱hashMap.put("ActionName".toUpperCase(),"Submit");//當(dāng)前執(zhí)行的操作Submit,Save,Reject,JiaQian,HuiQian,Replace,StopFlow,Pause,AddReader,GetBack,ReMsg,Move,Goto,Cancel,Readed,SubFlow提交,暫存,退回,加簽,會簽,替換辦理人,終止,暫停,閱知,拿回,催辦,轉(zhuǎn)辦,跳轉(zhuǎn),撤辦,已閱,啟動子流程hashMap.put("workID".toUpperCase(),workID);//當(dāng)前實例idhashMap.put("userid".toUpperCase(),userid);//當(dāng)前操作者id//業(yè)務(wù)數(shù)據(jù)跟流程關(guān)聯(lián)字段hashMap.put("FORMID","");所有需要關(guān)聯(lián)數(shù)據(jù)對應(yīng)的表單id,多個表單使用分號分隔hashMap.put("32位formid_ID","");//把業(yè)務(wù)數(shù)據(jù)id放入此字段中,假如為空,系統(tǒng)會默認生成一個,然而可不能自動插入一條數(shù)據(jù),業(yè)務(wù)數(shù)據(jù)處理時自行推斷是否需要插入hashMap.put("32位formid_TABLENAME","");//業(yè)務(wù)數(shù)據(jù)對應(yīng)的庫表名稱//其它非必需的信息hashMap.put("flowIdentifier".toUpperCase(),"");//流程數(shù)據(jù)對應(yīng)的數(shù)據(jù)源標(biāo)識符,假如不提供,則使用打開實例時指定的數(shù)據(jù)源。假如指定的數(shù)據(jù)源跟打開時不一致,系統(tǒng)會保存數(shù)據(jù)到當(dāng)前指定的數(shù)據(jù)源,而打開時數(shù)據(jù)源中的數(shù)據(jù)可不能被改變。一般不建議設(shè)置此參數(shù)。hashMap.put("dataIdentifier".toUpperCase(),"");//業(yè)務(wù)數(shù)據(jù)對應(yīng)的數(shù)據(jù)源標(biāo)識符,假如不提供,則使用打開時指定的數(shù)據(jù)源。假如指定的數(shù)據(jù)源跟打開時不一致,系統(tǒng)會保存數(shù)據(jù)到當(dāng)前指定的數(shù)據(jù)源,而打開時數(shù)據(jù)源中的數(shù)據(jù)可不能被改變。一般不建議設(shè)置此參數(shù)。數(shù)據(jù)源獵取順序:優(yōu)先使用指定數(shù)據(jù)源,假如沒有設(shè)置參數(shù)或者傳入null,系統(tǒng)從實例XML中查找打開時指定的數(shù)據(jù)源。hashMap.put("msgSendFlag".toUpperCase(),"");//假如在workflow.xml中配置ReChgMsgFlag節(jié)點為true時需要傳入發(fā)送消息的方式。 //其他參數(shù)設(shè)置 cancelFlag=1指定撤辦時系統(tǒng)刪除流程實例,否則不刪除僅做標(biāo)記撤辦 參數(shù)設(shè)置完畢后,請執(zhí)行父類方法doAction傳入?yún)?shù)hashMap intresult=doAction(null,hashMap); 最后依照result和ActionName進行不同情況的處理,比如選擇節(jié)點、或者選擇人員流程實例具體功能操作提交提交流程實例參數(shù)講明除了HYPERLINK整體參數(shù)值必有之外,下面是補充的參數(shù)講明:參數(shù)名/Key值含義要求actionname操作名稱不能為空,必須為submitnextNodeID提交到某個節(jié)點的Id要求同整體講明selectAuthor節(jié)點辦理人要求同整體講明submitflag提交方式1.Submitflag=1時,從xWork.getBackMsg()獵取能夠提交的節(jié)點列表2.Submitflag=0時,提交到指定的節(jié)點提交流程實例返回值[cp]講明返回值含義cp=StaticVar.F_STATUS_Success提交成功:1.submitflag=1時xWork.getNextNodeName()獵取下一節(jié)點名稱,用于顯示xWork.getNextAuthor("<br>")獵取下一節(jié)點辦理人,用于顯示 xWork.getSelectedNodesIds()獵取到下一節(jié)點的路徑,用于給nextNodeID賦值xWork.getSelectedNodesAuthors()獵取下一節(jié)點辦理人,用于給selectAuthor賦值xWork.getSelectedNodesSecondAuthors()獵取下一節(jié)點的協(xié)辦人用于給secondAuthor賦值2.Submitflag=0時,系統(tǒng)提交并保存數(shù)據(jù)cp=StaticVar.F_STATUS_SelectAuthor需要設(shè)置下一節(jié)點的辦理人:xWork.getManualSelectUser()獵取節(jié)點設(shè)置的辦理人xWork.getSelectNextUserFlag(),依照節(jié)點辦理類型確定是單選1依舊多選2xWork.isFreeSelectUser(),是否同意自由選擇cp=StaticVar.F_STATUS_SelectNode需要選擇提交的路由:XMLRouter[]tpRouter=xWork.getSelectRouter();獵取所有路由列表tpRouter.getSelectID()獵取選擇的節(jié)點路徑,用于賦值給nextNodeIDtpRouter.isDone=true當(dāng)前節(jié)點是否差不多走過tpRouter.isSelected=true當(dāng)前節(jié)點差不多被選中,依照tpRouter.getResult()獵取當(dāng)前節(jié)點初始化結(jié)果//獵取節(jié)點在列表中的位置intpos=xWork.getNextNodePosByNodeID(tpRouter[i].getNodeID());(tpRouter.getResult()==StaticVar.F_STATUS_Success),獵取當(dāng)前節(jié)點差不多選擇的辦理人,用于賦值給selectAuthorxWork.getNextSelectAuhorID(pos)//需要選擇辦理人時(tpRouter.getResult()==StaticVar.F_STATUS_SelectAuthor),xWork.getManualSelectUser(pos)獵取節(jié)點設(shè)置的辦理人xWork.getSelectUserFlag(pos),依照節(jié)點辦理類型確定是單選1依舊多選2xWork.isFreeSelectUser(pos),是否同意自由選擇其他狀態(tài)參考:xmlwork.submit.selectnode.jspcp=StaticVar.F_STATUS_OtherError不確定失敗緣故,從xWork.getBackMsg()獵取具體信息cp=StaticVar.F_STATUS_NoFound沒有找到節(jié)點cp=StaticVar.F_STATUS_SubFlowNoEnd子流程沒有結(jié)束cp=StaticVar.F_STATUS_FlowPause流程處于暫停cp=StaticVar.F_STATUS_FlowErrorEnd流程異常結(jié)束其他異常從xWork.getBackMsg();能夠獵取錯誤信息提交流程實例代碼樣例//從request中獲得參數(shù),并設(shè)置相關(guān)的屬性LinkedHashMapdataHashMap=newLinkedHashMap();Enumerationenumeration=request.getParameterNames();while(enumeration.hasMoreElements()){ Stringname=(String)enumeration.nextElement(); if(name.equals("XML")||name.equals("MapXML"))continue; StaticFun.setValueToHashMap(dataHashMap,name,request.getParameterValues(name));}//設(shè)置提交的相關(guān)參數(shù)dataHashMap.put(“ActionName”,”Submit”);dataHashMap.put(“submitflag”,”1”XMLAppapp=newXMLApp();LinkedHashMapbackMap=app.doAction(dataHashMap);//返回結(jié)果intcp=Integer.parseInt((String)backMap.get("iResult"));//獵取提交后的流程信息XMLWorkxWork=(XMLWork)backMap.get("xWork");//以上內(nèi)容是流程執(zhí)行操作的整體過程,其他下面的退回,拿回,閱知,撤銷等功能都需要執(zhí)行以上的代碼。返回值統(tǒng)一為cp。在操作的界面分不對cp進行推斷。/**以下提交流程后依照返回值處理相關(guān)信息,具體能夠參考框架中的horizon/workflow/action/xmlwork.submit.jsp*///1.獵取系統(tǒng)全部的發(fā)送消息方式String[]msgCN=StaticVar.getInstance().MsgFlagCN();StringmsgFlag="";Stringother=""; if(xWork!=null){ //獵取提交節(jié)點的發(fā)送消息方式msgFlag=xWork.getAuthorMsgFlag(); other=StaticFun.getOtherMsg(msgFlag); }switch(cp){ //執(zhí)行成功caseStaticVar.F_STATUS_Success: //獵取所有路由通過的節(jié)點名稱,節(jié)點用戶StringmsgSendFlag=msgFlag;//消息方式StringnextNodeID=xWork.getSelectedNodesIds();//下一節(jié)點IdStringselectAuthor=xWork.getSelectedNodesAuthors();//辦理人idStringsecondAuthor=xWork.getSelectedNodesSecondAuthors();//協(xié)辦人id//獵取以上信息后,能夠依照顧用框架,將參數(shù)重新賦值。booleanhaveNormal=false; for(inti=0,n=xWork.getMaySelectNodeNumber();i<n;i++){ intnodetype=xWork.getNextNodeType(i); Stringnodename=xWork.getNextNodeName(i);//提交到引擎交互節(jié)點時if(nodetype==StaticVar.Node_Cluster){//獵取引擎服務(wù)器名稱StringclusterServerName=xWork.getClusterServerName(i);}//提交到結(jié)束節(jié)點elseif(nodetype==StaticVar.Node_End){//提示用戶差不多提交到結(jié)束節(jié)點}else{ haveNormal=true;//獵取下一辦理人中文名稱,用于前臺顯示,讓操作人最后確認。StringnextAuthorName=xWork.getNextAuthorName("<br>",i)}}//endfor//需要選擇發(fā)送消息方式if(haveNormal&&StaticVar.ReChgMsgFlag){}break;//需要選擇協(xié)辦人員caseStaticVar.F_STATUS_SecondSubmit:break;//需要選擇辦理人員,參考xmlwork.submit.selectauthor.jspcaseStaticVar.F_STATUS_SelectAuthor:break;//需要選擇下一結(jié)點的路由,參考xmlwork.submit.selectnode.jspcaseStaticVar.F_STATUS_SelectNode:break;//合并節(jié)點提交時,用于提示前臺是否能夠接著流轉(zhuǎn),參考xmlwork.submit.unitsubmit.jspcaseStaticVar.F_STATUS_UnitSubmit:break;default: inttmpSwitch=cp;switch(tmpSwitch){//無法獵取下一節(jié)點caseStaticVar.F_STATUS_NoFound://提示辦理人為空caseStaticVar.F_STATUS_NoAuthor://流程結(jié)束caseStaticVar.F_STATUS_FlowEnd://子流程沒有結(jié)束caseStaticVar.F_STATUS_SubFlowNoEnd://流程暫停caseStaticVar.F_STATUS_FlowPause://流程異常結(jié)束caseStaticVar.F_STATUS_FlowErrorEnd:default://獵取xWork.getBackMsg();統(tǒng)一返回的錯誤信息}//endswitchtmpSwitch}//endswitchcp退回退回流程實例參數(shù)講明除了HYPERLINK整體參數(shù)值必有之外,下面是補充的參數(shù)講明:參數(shù)名/Key值含義要求actionname操作名稱不能為空,必須為rejectnextNodeID退回到某個節(jié)點的Idsubmitflag提交方式1.Submitflag=1時,從xWork.getBackMsg()獵取能夠退回的節(jié)點列表2.Submitflag=0時,退回到指定的節(jié)點退回流程實例返回值[cp]講明返回值含義cp>StaticVar.Init_Success執(zhí)行異常從xWork.getBackMsg();能夠獵取錯誤信息其他值1.Submitflag=1時,從xWork.getBackMsg()獵取能夠退回的節(jié)點列表格式:nodeid1~節(jié)點1名稱|nodeid2~節(jié)點2名稱|2.Submitflag=0時, (1)cp==StaticVar.F_STATUS_Success退回指定節(jié)點成功, (2)cp=其他值,依照xWork.getBackMsg()獵取失敗信息退回代碼樣例/**退回操作,從前臺獵取參數(shù),以及放到dataHashMap的操作同提交的代碼樣例,可參考此功能,框架的頁面能夠參考horizon\workflow\action\xmlwork.reject.jsp*///1.需要將dataHashMap.put(“ActionName”,”reject”);if(cp>StaticVar.Init_Success){//從xWork.getBackMsg()中獵取錯誤信息}else{if(submitflag.equals(“1”)StringrejectNodes=xWork.getBackMsg(); if(rejectNodes.length()==0){ //沒有退回節(jié)點可選。}else{String[]nodes=rejectNodes.split("\\|"); for(inti=0,n=nodes.length;i<n;i++){//可選擇的節(jié)點idStringnodeid=nodes[i].substring(nodes[i].indexOf("~")+1);//可選擇的節(jié)點名稱Stringnodename=nodes[i].substring(0,nodes[i].indexOf("~"));}}}else{//submitflag!=1的情況//成功操作if(cp==StaticVar.F_STATUS_Success){//從xWork.getNextNodeID()中獲得選擇的節(jié)點,賦值給nextNodeID,接著執(zhí)行操作}elseif(cp==StaticVar.F_STATUS_NoAuthor){//沒有指定辦理人}else{//從xWork.getBackMsg()中獵取錯誤信息}}拿回拿回流程實例參數(shù)講明除了HYPERLINK整體參數(shù)值必有之外,下面是補充的參數(shù)講明:參數(shù)名/Key值含義要求actionname操作名稱不能為空,必須為getback拿回流程實例返回值[cp]講明返回值含義cp=StaticVar.F_STATUS_Success執(zhí)行成功除了上述成功之外,統(tǒng)一返回錯誤信息其他緣故失敗從xWork.getBackMsg();能夠獵取錯誤信息拿回代碼樣例/**拿回操作,從前臺獵取參數(shù),以及放到dataHashMap的操作同提交的代碼樣例,可參考此功能,框架的頁面能夠參考horizon\workflow\action\xmlwork.getback.jsp*///1.需要將dataHashMap.put(“ActionName”,”getback”);if(cp==StaticVar.F_STATUS_Success){ //從xWork.getNextNodeID()中獲得選擇的節(jié)點,賦值給nextNodeID,接著執(zhí)行操作}else{//從xWork.getBackMsg()中獵取錯誤信息}閱知流程實例閱知參數(shù)講明除了HYPERLINK整體參數(shù)值必有之外,下面是補充的參數(shù)講明:參數(shù)名/Key值含義要求actionname操作名稱不能為空,必須為addreaderselectAuthor辦理人員IdcurNodeReaderSendFlag當(dāng)前操作發(fā)送消息方式流程實例閱知返回值[cp]講明返回值含義cp=StaticVar.F_STATUS_Success執(zhí)行成功除了上述成功之外,統(tǒng)一返回錯誤信息其他緣故失敗從xWork.getBackMsg();能夠獵取錯誤信息流程實例閱知代碼樣例/**流程實例閱知操作,從前臺獵取參數(shù),以及放到dataHashMap的操作同提交的代碼樣例,可參考此功能,框架的頁面能夠參考horizon\workflow\action\xmlwork.addreader.jsp*///1.需要將dataHashMap.put(“ActionName”,”addreader”);//2.需要把selectAuthor變量賦值,此值是閱知人員Idif(cp==StaticVar.F_STATUS_Success){//從xWork.getNextNodeID()中獲得選擇的節(jié)點,賦值給nextNodeID,接著執(zhí)行操作}else{//從xWork.getBackMsg()中獵取錯誤信息}撤銷撤銷流程實例參數(shù)講明除了HYPERLINK整體參數(shù)值必有之外,下面是補充的參數(shù)講明:參數(shù)名/Key值含義要求actionname操作名稱不能為空,必須為cancel撤銷流程實例返回值[cp]講明返回值含義cp=StaticVar.F_STATUS_Success撤銷流程實例成功除了上述成功之外,統(tǒng)一返回錯誤信息其他緣故失敗從xWork.getBackMsg();能夠獵取錯誤信息撤銷流程實例代碼樣例/**撤銷操作,從前臺獵取參數(shù),以

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論