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

下載本文檔

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

文檔簡(jiǎn)介

1、 .慧正工作流引擎API說明V6.0(試用版)北京慧正通軟科技有限公司2012年5月目錄一、總體41.業(yè)務(wù)操作說明42.流程參數(shù)說明43.流程執(zhí)行操作說明84.流程實(shí)例流轉(zhuǎn)操作9二、啟動(dòng)實(shí)例91.啟動(dòng)流程實(shí)例整體說明92.啟動(dòng)流程實(shí)例參數(shù)說明103.啟動(dòng)流程初始化XMLWork額外屬性說明104.啟動(dòng)流程實(shí)例返回值init說明105.啟動(dòng)實(shí)例代碼樣例11三、打開實(shí)例121.打開流程實(shí)例整體說明122.打開流程實(shí)例參數(shù)說明133.打開流程初始化XMLWork額外屬性說明134.打開流程實(shí)例返回值init說明145.打開實(shí)例代碼樣例14四、執(zhí)行操作161.采用系統(tǒng)提供的默認(rèn)類處理162.自行編寫處

2、理類17五、流程實(shí)例具體功能操作191.提交19A.提交流程實(shí)例參數(shù)說明19B.提交流程實(shí)例返回值cp說明19C.提交流程實(shí)例代碼樣例202.退回23A.退回流程實(shí)例參數(shù)說明23B.退回流程實(shí)例返回值cp說明23C.退回代碼樣例243.拿回24A.拿回流程實(shí)例參數(shù)說明24B.拿回流程實(shí)例返回值cp說明25C.拿回代碼樣例254.閱知25A.流程實(shí)例閱知參數(shù)說明25B.流程實(shí)例閱知返回值cp說明26C.流程實(shí)例閱知代碼樣例265.撤銷26A.撤銷流程實(shí)例參數(shù)說明26B.撤銷流程實(shí)例返回值cp說明26C.撤銷流程實(shí)例代碼樣例276.跳轉(zhuǎn)27A.流程實(shí)例跳轉(zhuǎn)參數(shù)說明27B.流程實(shí)例跳轉(zhuǎn)返回值cp說明

3、27C.流程實(shí)例跳轉(zhuǎn)代碼樣例287.會(huì)簽29A.流程實(shí)例會(huì)簽參數(shù)說明29B.流程實(shí)例會(huì)簽返回值cp說明29C.流程實(shí)例會(huì)簽代碼樣例308.加簽30A.流程實(shí)例加簽參數(shù)說明30B.流程實(shí)例加簽返回值cp說明30C.流程實(shí)例加簽代碼樣例319.轉(zhuǎn)辦31A.轉(zhuǎn)辦流程實(shí)例參數(shù)說明31B.轉(zhuǎn)辦流程實(shí)例返回值cp說明31C.轉(zhuǎn)辦流程實(shí)例代碼樣例3210.暫停32A.暫停流程實(shí)例參數(shù)說明32B.暫停流程實(shí)例返回值cp說明32C.暫停流程實(shí)例代碼樣例3311.已閱33A.流程實(shí)例已閱參數(shù)說明33B.流程實(shí)例已閱返回值cp說明33C.流程實(shí)例已閱代碼樣例3312.催辦34A.催辦流程實(shí)例參數(shù)說明34B.催辦流程

4、實(shí)例返回值cp說明34C.催辦流程實(shí)例代碼樣例3413.替換辦理人35A.流程實(shí)例替換辦理人參數(shù)說明35B.流程實(shí)例替換辦理人返回值cp說明35C.流程實(shí)例替換辦理人代碼樣例3514.暫存36A.暫存流程實(shí)例參數(shù)說明36B.暫存流程實(shí)例返回值cp說明36C.暫存代碼樣例3615.終止流程36A.終止流程實(shí)例參數(shù)說明36B.終止流程實(shí)例返回值cp說明37C.終止流程代碼樣例3716.啟動(dòng)子流程37A.啟動(dòng)子流程實(shí)例參數(shù)說明37B.啟動(dòng)子流程實(shí)例返回值cp說明37C.啟動(dòng)子流程代碼樣例38附錄:XMLWork方法摘要40一、 總體1. 業(yè)務(wù)操作說明業(yè)務(wù)操作說明功能方法參數(shù)說明1.啟動(dòng)實(shí)例1.1 X

5、MLWork xWork = new XMLWork(String userid,String username,String deptname)設(shè)置XMLWork的基本屬性必要參數(shù):Userid:用戶IdUserName:用戶名稱DeptName:部門名稱1.2 int init = xWork.openWorkFlow(”,flowID,”);根據(jù)流程定義Id,啟動(dòng)流程實(shí)例必要參數(shù):flowID:流程定義Id2.打開實(shí)例2.1 XMLWork xWork = new XMLWork(String userid,String username,String deptname)設(shè)置XMLWor

6、k的基本屬性必要參數(shù):Userid:用戶IdUserName:用戶名稱DeptName:部門名稱2.2 int init = xWork.openWorkFlow(workid,”,”);根據(jù)流程實(shí)例Id,打開流程實(shí)例必要參數(shù):workid:流程實(shí)例Id2. 流程參數(shù)說明具體可參考/horizon/workflow/include2/xmlwork.index.hidden.jsp流程參數(shù)總體說明參數(shù)名含義格式要求必須賦值flowIdentifier流程數(shù)據(jù)源標(biāo)識(shí)configuration.xml或者workflow.xml配置,具體參考啟動(dòng)流程初始化XMLWork額外屬性說明dataIden

7、tifier業(yè)務(wù)數(shù)據(jù)源標(biāo)識(shí)UserID操作人用戶IdUserName操作人用戶名稱DeptName操作人部門名稱WorkID流程實(shí)例idNodeID流程實(shí)例當(dāng)前節(jié)點(diǎn)IdNodeName流程實(shí)例當(dāng)前節(jié)點(diǎn)名稱TrackID路徑Id/如果當(dāng)前人在多個(gè)分支節(jié)點(diǎn)都具有權(quán)限,還需要指定路徑ID/如果不指定,系統(tǒng)會(huì)自動(dòng)獲取所有分支,返回前臺(tái)供選擇actionFlag操作權(quán)限設(shè)置1:允許操作selectAuthor辦理人員的Id單個(gè)節(jié)點(diǎn)(或者不需要傳入節(jié)點(diǎn))時(shí)為user1|user2或者node=user1|user2多個(gè)節(jié)點(diǎn)時(shí)node1=user1|user2&node2=user3流程節(jié)點(diǎn)的辦理人

8、無值時(shí)為必填項(xiàng)selectAuthorCN辦理人員的中文名稱secondAuthor選擇的協(xié)辦人員格式同selectAuthornextNodeID下一個(gè)節(jié)點(diǎn)Id1.如果提交到下一點(diǎn),只有一個(gè)節(jié)點(diǎn)時(shí),請(qǐng)不要賦值,置為空;2.當(dāng)下一節(jié)點(diǎn)有多個(gè)節(jié)點(diǎn),根據(jù)路由條件無法確定時(shí),可以指定其中一個(gè)或者多個(gè)來確定流程走向。傳入格式:(必須從返回格式中獲取傳入數(shù)據(jù))rId1nId1|rId2nId2&rId3nId3路由ID節(jié)點(diǎn)ID。3. 如果從當(dāng)前節(jié)點(diǎn)(A)到目標(biāo)節(jié)點(diǎn)(C)之間有其他節(jié)點(diǎn)(B)被跳過時(shí)格式為:路由B節(jié)點(diǎn)B|路由C節(jié)點(diǎn)C 4. 多個(gè)節(jié)點(diǎn)被選擇時(shí),使用&連接msgSendFlag

9、發(fā)送消息方式ToDo|Mail|Msg|Note|RTF|Other|如果在workflow.xml中配置ReChgMsgFlag節(jié)點(diǎn)為true時(shí)需要傳入發(fā)送消息的方式ActionName操作類型Save等,具體參考總體中的流程執(zhí)行操作allowUnitNext合并節(jié)點(diǎn),是否允許執(zhí)行提交操作1:允許,其他不允許合并節(jié)點(diǎn)時(shí)為必填項(xiàng)cancelFlag撤銷時(shí)的標(biāo)志,默認(rèn)刪除1=刪除,2=回收站只有執(zhí)行撤銷操作時(shí)為必填項(xiàng)urlapp待辦鏈接地址如果為空則默認(rèn)使用流程框架頁面打開Comments意見內(nèi)容selectFlag當(dāng)前節(jié)點(diǎn)如果替換處理人和轉(zhuǎn)辦時(shí),是否允許選擇多人1:允許,其他不允許執(zhí)行替換和轉(zhuǎn)

10、辦時(shí)為必填項(xiàng)submitflag操作提交狀態(tài)(1)提交操作時(shí)的含義:1=獲取下一節(jié)點(diǎn)信息,返回是否選擇節(jié)點(diǎn),是否需要選擇人員,用于跟前臺(tái)交互,0=執(zhí)行提交到下一節(jié)點(diǎn)辦理人,如果處理中遇到節(jié)點(diǎn)不明確或者辦理人不明確時(shí),跟1效果一樣。當(dāng)需要跟前臺(tái)操作人進(jìn)行交互,比如獲取是否需要選擇節(jié)點(diǎn)或者選擇辦理人,是否需要操作人進(jìn)行確認(rèn)等,建議使用1,處理速度會(huì)快一點(diǎn)。(2)跳轉(zhuǎn)操作時(shí)的含義:1=獲取可以跳轉(zhuǎn)的節(jié)點(diǎn)列表,0=執(zhí)行跳轉(zhuǎn)到指定節(jié)點(diǎn)。(3)退回操作時(shí)的含義:1=獲取可以退回的節(jié)點(diǎn)列表,0=執(zhí)行退回到指定節(jié)點(diǎn)操作。(4)啟動(dòng)子流程時(shí)的含義:如果系統(tǒng)提供了啟動(dòng)子流程的ID(參數(shù)selectFlowID),

11、則忽略此參數(shù),不提供selectFlowID參數(shù)時(shí),如果當(dāng)前人沒有啟動(dòng)過子流程時(shí)忽略此參數(shù),直接根據(jù)定義判斷是否有多個(gè)子流程定義,如果只有一個(gè)子流程定義,則直接啟動(dòng),否則返回;如果當(dāng)前人已經(jīng)啟動(dòng)過子流程,1=獲取已經(jīng)啟動(dòng)的子流程列表,并返回,0=根據(jù)定義判斷是否有多個(gè)子流程定義,如果只有一個(gè)子流程定義,則直接啟動(dòng),否則返回。(5)催辦操作時(shí)的含義:1=催辦次數(shù)如果已經(jīng)達(dá)到上限則停止,0=催辦次數(shù)已經(jīng)達(dá)到上限也繼續(xù)催辦curNodeAuthorSendFlag當(dāng)前節(jié)點(diǎn)的作者消息發(fā)送方式,用于執(zhí)行會(huì)簽,加簽,替換,轉(zhuǎn)辦格式同msgSendFlagcurNodeReaderSendFlag當(dāng)前節(jié)點(diǎn)的

12、讀者消息發(fā)送方式,用于執(zhí)行閱知操作時(shí)顯示在前臺(tái)供操作者選擇selectFlowID啟動(dòng)子流程的Id啟動(dòng)子流程時(shí)為必填項(xiàng)FormAction流程提交操作的URLtmpAuthor選擇人員時(shí),臨時(shí)獲取選擇范圍格式同SelectAuthorpreFlag如果有選擇節(jié)點(diǎn)頁面,在確認(rèn)頁面上出現(xiàn)上一步按鈕1:顯示,其他不出現(xiàn)ActionClass執(zhí)行業(yè)務(wù)的action名稱默認(rèn)com.horizon.workflow.flowengine.impl.entity.XMLApptmpSaveInfo臨時(shí)信息記錄(目前用于存儲(chǔ)當(dāng)前人填寫的意見信息)3. 流程執(zhí)行操作說明流程執(zhí)行操作1.系統(tǒng)默認(rèn)處理過程(具體點(diǎn)擊

13、上面鏈接)引入的包:com.horizon.workflow.flowengine.impl.entity.XMLAppcom.horizon.workflow.flowengine.pub.XMLWork從request中獲取的相關(guān)參數(shù)參考流程參數(shù)總體說明,以及要執(zhí)行下面具體操作的說明(1)傳入request對(duì)象,調(diào)用doActionXMLApp app = new XMLApp();LinkedHashMap backMap = app.doAction(request);/返回結(jié)果int cp = Integer.parseInt(String)backMap.get("iRe

14、sult");/獲取提交后的流程信息XMLWork xWork = (XMLWork)backMap.get("xWork");(2)把參數(shù)放入的LinkedHashMap,調(diào)用doActionLinkedHashMap dataHashMap = new LinkedHashMap();XMLApp app = new XMLApp();LinkedHashMap backMap = app.doAction(dataHashMap);/返回結(jié)果int cp = Integer.parseInt(String)backMap.get("iResult&

15、quot;);/獲取提交后的流程信息XMLWork xWork = (XMLWork)backMap.get("xWork");根據(jù)操作的類型,組織dataHashMap的數(shù)據(jù),具體參考流程參數(shù)總體說明,以及要執(zhí)行下面具體操作的說明2.自行編寫處理過程(具體點(diǎn)擊上面鏈接)LinkedHashMap hashMap = new LinkedHashMap();2.在自定義的類中執(zhí)行int result = doAction(null,hashMap);組織流程操作需要的參數(shù)具體根據(jù)流程參數(shù)總體說明以及對(duì)應(yīng)的操作設(shè)置相關(guān)參數(shù),放入到hashMap中。4. 流程實(shí)例流轉(zhuǎn)操作操作名

16、稱英文標(biāo)識(shí)說明提交Submit提交到下一節(jié)點(diǎn)退回reject退回到某個(gè)節(jié)點(diǎn)拿回getback拿回已提交的流程閱知addreader發(fā)送待閱撤銷cancel撤銷流程跳轉(zhuǎn)goto跳轉(zhuǎn)到某個(gè)節(jié)點(diǎn)會(huì)簽huiqian發(fā)送給相關(guān)人員會(huì)簽加簽jiaqian發(fā)送給相關(guān)人員加簽轉(zhuǎn)辦move轉(zhuǎn)交給其他人辦理暫停pause暫停流程已閱readed閱讀待閱的信息催辦remsg催辦流程實(shí)例替換辦理人replace替換流程的辦理人暫存save暫存流程實(shí)例終止流程stopflow終止流程實(shí)例啟動(dòng)子流程subflow啟動(dòng)子流程二、 啟動(dòng)實(shí)例1. 啟動(dòng)流程實(shí)例整體說明引入類:com.horizon.workflow.flowe

17、ngine.pub.XMLWork執(zhí)行方法初始化XMLWork,設(shè)置相關(guān)屬性1. XMLWork xWork = new XMLWork(userid,username,deptname);啟動(dòng)具體的流程實(shí)例(返回值說明見下面)2.int init = xWork.openWorkFlow(”,flowID,”);2. 啟動(dòng)流程實(shí)例參數(shù)說明參數(shù)名含義要求userid啟動(dòng)實(shí)例的操作人的用戶Id不能為空username 啟動(dòng)實(shí)例的操作人的用戶名稱可以為空deptname啟動(dòng)實(shí)例的操作人的部門名稱可以為空flowID流程定義Id不能為空3. 啟動(dòng)流程初始化XMLWork額外屬性說明初始化XMLWor

18、k,設(shè)置相關(guān)屬性(根據(jù)業(yè)務(wù),如有需要,可以設(shè)置以下內(nèi)容)xWork.setFlowIdentifier()設(shè)置流程數(shù)據(jù)所使用的數(shù)據(jù)源標(biāo)識(shí)符。 configuration.xml中設(shè)置的默認(rèn)數(shù)據(jù)源和workflow.xml中的設(shè)置不一致時(shí),設(shè)置為空和設(shè)置成null(或者不設(shè)置)是有區(qū)別的,設(shè)置為空時(shí),系統(tǒng)使用configuration.xml中設(shè)置的默認(rèn)數(shù)據(jù)源,設(shè)置成null(或者不設(shè)置)時(shí),使用的是workflow.xml中的設(shè)置。數(shù)據(jù)源無效時(shí),系統(tǒng)默認(rèn)使用configuration.xml中設(shè)置的默認(rèn)數(shù)據(jù)源。如果flowIdentifier跟dataIdentifier一樣可以直接使用xWo

19、rk.setIdentifier(“”)對(duì)兩個(gè)變量同時(shí)賦值xWork .setDataIdentifier()設(shè)置業(yè)務(wù)數(shù)據(jù)所使用的數(shù)據(jù)源標(biāo)識(shí)符。xWork .setUserAuthType()如果需要設(shè)置外部辦理人獲取方式。4. 啟動(dòng)流程實(shí)例返回值init說明返回值含義init= StaticVar.Init_Success初始化成功。init = StaticVar.Init_NoRole當(dāng)前人員無權(quán)啟動(dòng)流程init = StaticVar.Init_ReadMsg鎖定當(dāng)前實(shí)例失敗,啟動(dòng)流程時(shí)不影響,可以等同成功init = StaticVar.Init_Failed其他原因失敗從xWork

20、.getBackMsg();可以獲取錯(cuò)誤信息啟動(dòng)流程實(shí)例成功后,可以從xWork對(duì)象中獲取相關(guān)的信息,具體參考XMLWork方法摘要5. 啟動(dòng)實(shí)例代碼樣例/*啟動(dòng)流程實(shí)例操作,從前臺(tái)獲取參數(shù),獲取流程定義Id等信息,具體可參考horizon/workflow/include2/xmlwork.index.head.jsp */1.流程定義Id,必須有此值String flowID = request.getParameter("flowid");/2.外部權(quán)限設(shè)置分類,XMLWork額外屬性,可以不用設(shè)置String userAuthType = request.getPa

21、rameter("userAuthType");/3.獲得數(shù)據(jù)源,XMLWork額外屬性,可以不用設(shè)置String dbIdentifier = request.getParameter("dbIdentifier");/4.當(dāng)前用戶信息,根據(jù)應(yīng)用系統(tǒng)的區(qū)別,靈活獲取。下面是產(chǎn)品中的自帶的用戶獲取方式String userid = SessionUtil.getUserId(session); /用戶Id必須有值String username = SessionUtil.getUserName(session);String deptname = Ses

22、sionUtil.getDeptName(session);/5.初始化XMLWork屬性XMLWork xWork = new XMLWork(userid,username,deptname);/如果需要設(shè)置XMLWork額外屬性xWork.setIdentifier(dbIdentifier);xWork.setUserAuthType(userAuthType);/6.啟動(dòng)流程實(shí)例,第一個(gè)參數(shù)是流程實(shí)例Id,第二個(gè)參數(shù)是流程定義Id,第三個(gè)參數(shù)是業(yè)務(wù)數(shù)據(jù)Id,如果三個(gè)都有值,獲取流程數(shù)據(jù)的優(yōu)先順序:workID > flowID > dataIDint init = xWo

23、rk.openWorkFlow(“”,flowID,”);/7.啟動(dòng)流程實(shí)例成功后,對(duì)業(yè)務(wù)數(shù)據(jù)的處理/在啟動(dòng)流程實(shí)例的界面中,如果提交流程操作時(shí),同時(shí)保存業(yè)務(wù)數(shù)據(jù),使用自定義的編寫處理類方式流轉(zhuǎn),業(yè)務(wù)數(shù)據(jù)可以在對(duì)應(yīng)的getAppSQL()方法中具體處理。具體可參考自行編寫處理類過程。/獲取當(dāng)前節(jié)點(diǎn)當(dāng)前人所具有的表單信息(包含表單域和操作信息),具體可參考horizonworkflowinclude2xmlwork.index.form.jspString formId = “”;/業(yè)務(wù)的表單ID,根據(jù)業(yè)務(wù)隨機(jī)修改String dataid=xWork.getIDByFormID(formId,

24、 “DataID”);com.horizon.workflow.flowengine.xmldb.XMLForm xmlForms = xWork .getCurForm(dataid);for(int i=0;i<form.length;i+) String formid = formi.getID();/流程跟蹤表單if(formid.equalsIgnoreCase("FlowTrack") /如果是流程跟蹤表單,可以執(zhí)行鏈接到流程跟蹤界面else if(formi.getFormtype().equals("HTML") /靜態(tài)Html頁面

25、else if(formi.getFormtype().equals("JSP") /自定義的JSP頁面/獲取表單信息LinkedHashMap formFieldMap = xWork.getFieldsTypeByFormID(i);/業(yè)務(wù)數(shù)據(jù)IdString dataID = formi.getDataID()/表單IdString formid=formi.getID();/庫表名稱String tablename=formi.getTableID();/該節(jié)點(diǎn)的只讀字段列表String mpread=formFieldMap.get("read"

26、;).toString();/該節(jié)點(diǎn)的編輯字段列表String mpedit=formFieldMap.get("edit").toString();/該節(jié)點(diǎn)的必填字段列表String mpmust=formFieldMap.get("check").toString();/該節(jié)點(diǎn)的隱藏字段列表String mphide=formFieldMap.get("hidden").toString();/該節(jié)點(diǎn)的其他標(biāo)識(shí)(比如表單自己的按鈕之類的標(biāo)識(shí))列表String mpother=formFieldMap.get("other

27、").toString();else /其他使用整體框架功能三、 打開實(shí)例1. 打開流程實(shí)例整體說明引入類:com.horizon.workflow.flowengine.pub.XMLWork執(zhí)行方法初始化XMLWork,設(shè)置相關(guān)屬性1. XMLWork xWork = new XMLWork(userid,username,deptname);打開具體的流程實(shí)例(返回值說明見下面)2.int init = xWork.openWorkFlow(workid,”,”);2. 打開流程實(shí)例參數(shù)說明參數(shù)名含義要求userid啟動(dòng)實(shí)例的操作人的用戶Id不能為空username啟動(dòng)實(shí)例的操

28、作人的用戶名稱可以為空deptname啟動(dòng)實(shí)例的操作人的部門名稱可以為空workid流程實(shí)例Id不能為空3. 打開流程初始化XMLWork額外屬性說明初始化XMLWork,設(shè)置相關(guān)屬性(根據(jù)業(yè)務(wù),如有需要,可以設(shè)置以下內(nèi)容)xWork.setFlowIdentifier()設(shè)置流程數(shù)據(jù)所使用的數(shù)據(jù)源標(biāo)識(shí)符。 (1) configuration.xml中設(shè)置的默認(rèn)數(shù)據(jù)源和workflow.xml中的設(shè)置不一致時(shí),設(shè)置為空和設(shè)置成null(或者不設(shè)置)是有區(qū)別的,設(shè)置為空時(shí),系統(tǒng)使用configuration.xml中設(shè)置的默認(rèn)數(shù)據(jù)源,設(shè)置成null(或者不設(shè)置)時(shí),使用的是workflow.xm

29、l中的設(shè)置。數(shù)據(jù)源無效時(shí),系統(tǒng)默認(rèn)使用configuration.xml中設(shè)置的默認(rèn)數(shù)據(jù)源。(2) 如果flowIdentifier跟dataIdentifier一樣可以直接使用xWork.setIdentifier(“”)對(duì)兩個(gè)變量同時(shí)賦值xWork.setDataIdentifier()設(shè)置業(yè)務(wù)數(shù)據(jù)所使用的數(shù)據(jù)源標(biāo)識(shí)符。xWork.setOpenTrackID()設(shè)置指定路徑Id打開流程實(shí)例時(shí)可以設(shè)置此值(1)如果當(dāng)前人在多個(gè)分支節(jié)點(diǎn)都具有權(quán)限,還需要指定路徑ID(2)如果不指定,系統(tǒng)會(huì)自動(dòng)獲取所有分支,返回前臺(tái)供選擇4. 打開流程實(shí)例返回值init說明返回值含義init= StaticV

30、ar.Init_SelectNode選擇需要打開的節(jié)點(diǎn)String allnodes = xWork.getBackMsg();String nodes = allnodes.split("|");選擇后的結(jié)果賦值給xWork.setOpenTrackID(“”);return;init = StaticVar.Init_Success打開實(shí)例成功init = StaticVar.Init_NoRole當(dāng)前人員無權(quán)查看此流程實(shí)例init = StaticVar.Init_ReadMsg當(dāng)前人只能以只讀權(quán)限打開(此時(shí)不能執(zhí)行任何操作)init = StaticVar.Init

31、_Locked當(dāng)前實(shí)例被其他人鎖定(此時(shí)不能執(zhí)行任何操作)init = StaticVar.Init_LockFailed鎖定當(dāng)前實(shí)例失敗,此時(shí)其他人仍然可以打開實(shí)例進(jìn)行操作,可能會(huì)出現(xiàn)數(shù)據(jù)沖突問題,建議退出重新打開init = StaticVar.Init_Failed其他原因失敗從xWork.getBackMsg();可以獲取錯(cuò)誤信息打開流程實(shí)例成功后,可以從xWork對(duì)象中獲取相關(guān)的信息,具體參考XMLWork方法摘要5. 打開實(shí)例代碼樣例/*打開流程實(shí)例操作,從前臺(tái)獲取參數(shù),獲取流程實(shí)例Id等信息,具體可參考horizon/workflow/include2/xmlwork.index

32、.head.jsp */1.流程實(shí)例Id,必須有此值String workid = request.getParameter("workid");/2.外部權(quán)限設(shè)置分類,XMLWork額外屬性,可以不用設(shè)置String userAuthType = request.getParameter("userAuthType");/3.獲得數(shù)據(jù)源,XMLWork額外屬性,可以不用設(shè)置String dbIdentifier = request.getParameter("dbIdentifier");/4. 設(shè)置指定路徑Id,XMLWork額外

33、屬性,如果沒有分支,可以不用設(shè)置String openTrackID = request.getParameter("openTrackID ");/5.當(dāng)前用戶信息,根據(jù)應(yīng)用系統(tǒng)的區(qū)別,靈活獲取。下面是產(chǎn)品中的自帶的用戶獲取方式String userid = SessionUtil.getUserId(session); /用戶Id必須有值String username = SessionUtil.getUserName(session);String deptname = SessionUtil.getDeptName(session);/5.初始化XMLWork屬性X

34、MLWork xWork = new XMLWork(userid,username,deptname);/如果需要設(shè)置XMLWork額外屬性xWork.setIdentifier(dbIdentifier);xWork.setUserAuthType(userAuthType);xWork. setOpenTrackID(openTrackID);/6.打開流程實(shí)例int init = xWork.openWorkFlow(workid,”,”);/7.打開流程實(shí)例成功后,對(duì)業(yè)務(wù)數(shù)據(jù)的處理/在打開流程實(shí)例的界面中,如果提交流程操作時(shí),同時(shí)保存業(yè)務(wù)數(shù)據(jù),使用自定義的編寫處理類方式流轉(zhuǎn),業(yè)務(wù)數(shù)據(jù)

35、可以在對(duì)應(yīng)的getAppSQL()方法中具體處理。具體可參考自行編寫處理類過程。/獲取當(dāng)前節(jié)點(diǎn)當(dāng)前人所具有的表單信息(包含表單域和操作信息),具體可參考horizonworkflowinclude2xmlwork.index.form.jspString formId = “”;/業(yè)務(wù)的表單ID,根據(jù)業(yè)務(wù)隨機(jī)修改String dataid=xWork.getIDByFormID(formId, “DataID”);com.horizon.workflow.flowengine.xmldb.XMLForm xmlForms = xWork .getCurForm(dataid);for(int

36、i=0;i<form.length;i+) String formid = formi.getID();/流程跟蹤表單if(formid.equalsIgnoreCase("FlowTrack") /如果是流程跟蹤表單,可以執(zhí)行鏈接到流程跟蹤界面else if(formi.getFormtype().equals("HTML") /靜態(tài)Html頁面else if(formi.getFormtype().equals("JSP") /自定義的JSP頁面 /獲取表單信息LinkedHashMap formFieldMap = xWo

37、rk.getFieldsTypeByFormID(i);/業(yè)務(wù)數(shù)據(jù)IdString dataID = formi.getDataID()/表單IdString formid=formi.getID();/庫表名稱String tablename=formi.getTableID();/該節(jié)點(diǎn)的只讀字段列表String mpread=formFieldMap.get("read").toString();/該節(jié)點(diǎn)的編輯字段列表String mpedit=formFieldMap.get("edit").toString();/該節(jié)點(diǎn)的必填字段列表Strin

38、g mpmust=formFieldMap.get("check").toString();/該節(jié)點(diǎn)的隱藏字段列表String mphide=formFieldMap.get("hidden").toString();/該節(jié)點(diǎn)的/該節(jié)點(diǎn)的其他標(biāo)識(shí)(比如表單自己的按鈕之類的標(biāo)識(shí))列表String mpother=formFieldMap.get("other").toString();else /其他使用整體框架功能四、 執(zhí)行操作此步必須在執(zhí)行過實(shí)例打開或者啟動(dòng)流程成功后方可執(zhí)行(否則會(huì)出現(xiàn)操作失敗)1. 采用系統(tǒng)提供的默認(rèn)類處理如果流

39、程需要的信息都在request里,可以使用系統(tǒng)默認(rèn)提供的方法com.horizon.workflow.flowengine.impl.entity.XMLApp類中提供默認(rèn)處理方法,此類可以自行編寫。操作名稱從request中的ActionName自動(dòng)獲取當(dāng)前人id從request中的userid自動(dòng)獲取當(dāng)前實(shí)例id從request中的workid自動(dòng)獲取其他參數(shù)參考方法二中的說明下面的XMLApp實(shí)例化過程是系統(tǒng)默認(rèn)的處理方式,可以根據(jù)業(yè)務(wù)需要參考自行編寫處理類過程,實(shí)現(xiàn)自己的業(yè)務(wù)。XMLApp app = new XMLApp(); /也可以使用XMLAppInterface app =

40、StaticFun.getXMLApp();來獲取在workflow.xml中配置的類LinkedHashMap backMap = app.doAction(request);根據(jù)返回結(jié)果進(jìn)行后續(xù)處理系統(tǒng)默認(rèn)Map中存放三個(gè)值,如果是自行編寫的類可能跟下面的描述不一致,請(qǐng)自行處理。下面對(duì)系統(tǒng)默認(rèn)提供的方法進(jìn)行說明。request:success和error標(biāo)識(shí)成功和失敗/iResult=0時(shí)為SuccessiResult:執(zhí)行結(jié)果編號(hào),需要轉(zhuǎn)換為數(shù)字后進(jìn)行判斷backMsg:執(zhí)行處理的信息xWork:本次處理中的XMLWork對(duì)象,可以從中獲取一些信息,比如選擇節(jié)點(diǎn)時(shí),獲取所有可能的節(jié)點(diǎn)。具

41、體各種情況說明見下面描述。2. 自行編寫處理類自行編寫類,必須繼承com.horizon.workflow.flowengine.fun.XMLWorkApp此類需要實(shí)現(xiàn)三個(gè)接口方法,getAppSQL用來獲取業(yè)務(wù)數(shù)據(jù)保存的sql和參數(shù),如果已經(jīng)自行處理,可以直接返回turegetAppDelSQL用來在撤辦時(shí)刪除業(yè)務(wù)數(shù)據(jù),如果業(yè)務(wù)數(shù)據(jù)自行處理,可以直接返回truesetFlowVarValue用來對(duì)流程變量進(jìn)行賦值,如果沒有可以為空在類中創(chuàng)建一個(gè)方法(比如doAction),在方法中包含下面的代碼定義一個(gè)LinkedHashMap,在此map中放入流程需要的參數(shù)如下LinkedHashMap

42、 hashMap = new LinkedHashMap(); /根據(jù)需要往hashMap中放入以下信息。 hashMap.put("Comments".toUpperCase(),""); /填寫的意見信息,存放到流程跟蹤中。如果不需要記錄則忽略此參數(shù)傳入hashMap.put("selectAuthor".toUpperCase(),"");/如果下一節(jié)點(diǎn)沒有設(shè)置辦理人或者根據(jù)設(shè)置獲取辦理人為空時(shí),且不允許跳過,可以在此傳入下一節(jié)點(diǎn)辦理人。傳入格式:?jiǎn)蝹€(gè)節(jié)點(diǎn)(或者不需要傳入節(jié)點(diǎn))時(shí)為user1|user2或者n

43、ode=user1|user2多個(gè)節(jié)點(diǎn)時(shí)node1=user1|user2&node2=user3hashMap.put("nextNodeID".toUpperCase(),""); /如果下一點(diǎn)只有一個(gè)時(shí),請(qǐng)不要賦值;當(dāng)下一節(jié)點(diǎn)有多個(gè)節(jié)點(diǎn),根據(jù)路由條件無法確定時(shí),可以指定其中一個(gè)或者多個(gè)來確定流程走向。傳入格式:(必須從返回格式中獲取傳入數(shù)據(jù))rId1nId1|rId2nId2&rId3nId3路由ID節(jié)點(diǎn)ID。如果從當(dāng)前節(jié)點(diǎn)(A)到目標(biāo)節(jié)點(diǎn)(C)之間有其他節(jié)點(diǎn)(B)被跳過時(shí)格式為:路由B節(jié)點(diǎn)B|路由C節(jié)點(diǎn)C 多個(gè)節(jié)點(diǎn)被選擇時(shí),使用&

44、amp;連接hashMap.put("submitflag".toUpperCase(), "0"); 提交操作時(shí)的含義,1=獲取下一節(jié)點(diǎn)信息,返回是否選擇節(jié)點(diǎn),是否需要選擇人員,用于跟前臺(tái)交互,0=執(zhí)行提交到下一節(jié)點(diǎn)辦理人,如果處理中遇到節(jié)點(diǎn)不明確或者辦理人不明確時(shí),跟1效果一樣。當(dāng)需要跟前臺(tái)操作人進(jìn)行交互,比如獲取是否需要選擇節(jié)點(diǎn)或者選擇辦理人,是否需要操作人進(jìn)行確認(rèn)等,建議使用1,處理速度會(huì)快一點(diǎn)。跳轉(zhuǎn)操作時(shí)的含義:1=獲取可以跳轉(zhuǎn)的節(jié)點(diǎn)列表,0=執(zhí)行跳轉(zhuǎn)到指定節(jié)點(diǎn)。退回操作時(shí)的含義:1=獲取可以退回的節(jié)點(diǎn)列表,0=執(zhí)行退回到指定節(jié)點(diǎn)操作。啟動(dòng)子流

45、程時(shí)的含義:如果系統(tǒng)提供了啟動(dòng)子流程的ID(參數(shù)selectFlowID),則忽略此參數(shù),不提供selectFlowID參數(shù)時(shí),如果當(dāng)前人沒有啟動(dòng)過子流程時(shí)忽略此參數(shù),直接根據(jù)定義判斷是否有多個(gè)子流程定義,如果只有一個(gè)子流程定義,則直接啟動(dòng),否則返回;如果當(dāng)前人已經(jīng)啟動(dòng)過子流程,1=獲取已經(jīng)啟動(dòng)的子流程列表,并返回,0=根據(jù)定義判斷是否有多個(gè)子流程定義,如果只有一個(gè)子流程定義,則直接啟動(dòng),否則返回。催辦操作時(shí)的含義:1=催辦次數(shù)如果已經(jīng)達(dá)到上限則停止,0=催辦次數(shù)已經(jīng)達(dá)到上限也繼續(xù)催辦啟動(dòng)子流程時(shí)可能需要的參數(shù), 指定子流程IDhashMap.put("selectFlowID&qu

46、ot;.toUpperCase(), "");/合并節(jié)點(diǎn)提交時(shí)需要傳入的參數(shù)1=可以提交下一節(jié)點(diǎn),0=程序自行確定hashMap.put("setAllowUnitNext".toUpperCase(), "");/操作名稱hashMap.put("ActionName".toUpperCase(), "Submit");/當(dāng)前執(zhí)行的操作 Submit,Save,Reject,JiaQian,HuiQian,Replace,StopFlow,Pause,AddReader,GetBack,ReM

47、sg,Move,Goto,Cancel,Readed,SubFlow 提交,暫存,退回,加簽,會(huì)簽,替換辦理人,終止,暫停,閱知,拿回,催辦,轉(zhuǎn)辦,跳轉(zhuǎn),撤辦,已閱,啟動(dòng)子流程 hashMap.put("workID".toUpperCase(), workID);/當(dāng)前實(shí)例id hashMap.put("userid".toUpperCase(), userid);/當(dāng)前操作者id /業(yè)務(wù)數(shù)據(jù)跟流程關(guān)聯(lián)字段 hashMap.put("FORMID","");所有需要關(guān)聯(lián)數(shù)據(jù)對(duì)應(yīng)的表單id,多個(gè)表單使用分號(hào)分隔 h

48、ashMap.put("32位formid_ID","");/把業(yè)務(wù)數(shù)據(jù)id放入此字段中,如果為空,系統(tǒng)會(huì)默認(rèn)生成一個(gè),但是不會(huì)自動(dòng)插入一條數(shù)據(jù),業(yè)務(wù)數(shù)據(jù)處理時(shí)自行判斷是否需要插入 hashMap.put("32位formid_TABLENAME","");/業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的庫表名稱 /其它非必需的信息 hashMap.put("flowIdentifier".toUpperCase(),"");/流程數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)源標(biāo)識(shí)符,如果不提供,則使用打開實(shí)例時(shí)指定的數(shù)據(jù)源。如果指定的

49、數(shù)據(jù)源跟打開時(shí)不一致,系統(tǒng)會(huì)保存數(shù)據(jù)到當(dāng)前指定的數(shù)據(jù)源,而打開時(shí)數(shù)據(jù)源中的數(shù)據(jù)不會(huì)被改變。一般不建議設(shè)置此參數(shù)。hashMap.put("dataIdentifier".toUpperCase(),"");/業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)源標(biāo)識(shí)符,如果不提供,則使用打開時(shí)指定的數(shù)據(jù)源。如果指定的數(shù)據(jù)源跟打開時(shí)不一致,系統(tǒng)會(huì)保存數(shù)據(jù)到當(dāng)前指定的數(shù)據(jù)源,而打開時(shí)數(shù)據(jù)源中的數(shù)據(jù)不會(huì)被改變。一般不建議設(shè)置此參數(shù)。數(shù)據(jù)源獲取順序:優(yōu)先使用指定數(shù)據(jù)源,如果沒有設(shè)置參數(shù)或者傳入null,系統(tǒng)從實(shí)例XML中查找打開時(shí)指定的數(shù)據(jù)源。 hashMap.put("msgSend

50、Flag".toUpperCase(), "");/如果在workflow.xml中配置ReChgMsgFlag節(jié)點(diǎn)為true時(shí)需要傳入發(fā)送消息的方式。/其他參數(shù)設(shè)置cancelFlag =1 指定撤辦時(shí)系統(tǒng)刪除流程實(shí)例,否則不刪除僅做標(biāo)記撤辦參數(shù)設(shè)置完畢后,請(qǐng)執(zhí)行父類方法doAction傳入?yún)?shù)hashMapint result = doAction(null,hashMap);最后根據(jù)result和ActionName進(jìn)行不同情況的處理,比如選擇節(jié)點(diǎn)、或者選擇人員五、 流程實(shí)例具體功能操作1. 提交A. 提交流程實(shí)例參數(shù)說明除了整體參數(shù)值必有之外,下面是補(bǔ)充的

51、參數(shù)說明:參數(shù)名/Key值含義要求actionname操作名稱不能為空,必須為submitnextNodeID提交到某個(gè)節(jié)點(diǎn)的Id要求同整體說明selectAuthor節(jié)點(diǎn)辦理人要求同整體說明submitflag提交方式1.Submitflag=1時(shí),從xWork.getBackMsg()獲取可以提交的節(jié)點(diǎn)列表2.Submitflag=0時(shí),提交到指定的節(jié)點(diǎn)B. 提交流程實(shí)例返回值cp說明返回值含義cp=StaticVar.F_STATUS_Success提交成功:1.submitflag=1時(shí)xWork.getNextNodeName()獲取下一節(jié)點(diǎn)名稱,用于顯示xWork.getNextA

52、uthor("<br>")獲取下一節(jié)點(diǎn)辦理人,用于顯示xWork.getSelectedNodesIds ()獲取到下一節(jié)點(diǎn)的路徑,用于給nextNodeID賦值xWork.getSelectedNodesAuthors ()獲取下一節(jié)點(diǎn)辦理人,用于給selectAuthor賦值xWork.getSelectedNodesSecondAuthors()獲取下一節(jié)點(diǎn)的協(xié)辦人用于給secondAuthor賦值2.Submitflag=0時(shí),系統(tǒng)提交并保存數(shù)據(jù)cp=StaticVar.F_STATUS_ SelectAuthor需要設(shè)置下一節(jié)點(diǎn)的辦理人:xWork.g

53、etManualSelectUser()獲取節(jié)點(diǎn)設(shè)置的辦理人xWork.getSelectNextUserFlag (),根據(jù)節(jié)點(diǎn)辦理類型確定是單選1還是多選2xWork.isFreeSelectUser(),是否允許自由選擇cp=StaticVar.F_STATUS_ SelectNode需要選擇提交的路由:XMLRouter tpRouter = xWork.getSelectRouter();獲取所有路由列表tpRouter.getSelectID()獲取選擇的節(jié)點(diǎn)路徑,用于賦值給nextNodeIDtpRouter.isDone=true當(dāng)前節(jié)點(diǎn)是否已經(jīng)走過tpRouter.isSel

54、ected=true當(dāng)前節(jié)點(diǎn)已經(jīng)被選中,根據(jù)tpRouter.getResult()獲取當(dāng)前節(jié)點(diǎn)初始化結(jié)果/獲取節(jié)點(diǎn)在列表中的位置int pos = xWork.getNextNodePosByNodeID(tpRouteri.getNodeID();(tpRouter.getResult()=StaticVar.F_STATUS_Success),獲取當(dāng)前節(jié)點(diǎn)已經(jīng)選擇的辦理人, 用于賦值給selectAuthorxWork.getNextSelectAuhorID(pos)/需要選擇辦理人時(shí)(tpRouter.getResult()=StaticVar.F_STATUS_SelectAuthor), xWork.getManualSelectUser(pos)獲取節(jié)點(diǎn)設(shè)置的辦理人xWork.getSelectUserFlag(pos),根據(jù)節(jié)點(diǎn)辦理類型確定是單選1還是多選2xWork.isFreeSelectUser(pos),是否允許自由選擇其他狀態(tài)參考:xmlwork.submit.selectnode.jspcp=StaticVar.F_STATUS_OtherError不確定失敗原因,從xWork.get BackMsg()獲取具體信息cp=S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論