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

下載本文檔

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

文檔簡(jiǎn)介

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

2、用系統(tǒng)提供的默認(rèn)類處理 162. 自行編寫(xiě)處理類17五、流程實(shí)例具體功能操作 191. 提交19A. 提交流程實(shí)例參數(shù)說(shuō)明 19B. 提交流程實(shí)例返回值 cp說(shuō)明19C. 提交流程實(shí)例代碼樣例 202. 退回23A. 退回流程實(shí)例參數(shù)說(shuō)明 23B. 退回流程實(shí)例返回值cp說(shuō)明23C. 退回代碼樣例243. 拿回24A. 拿回流程實(shí)例參數(shù)說(shuō)明 24B. 拿回流程實(shí)例返回值cp說(shuō)明25C. 拿回代碼樣例254. 閱知25A. 流程實(shí)例閱知參數(shù)說(shuō)明 25B. 流程實(shí)例閱知返回值 cp說(shuō)明26C. 流程實(shí)例閱知代碼樣例 265. 撤銷26A. 撤銷流程實(shí)例參數(shù)說(shuō)明 26B. 撤銷流程實(shí)例返回值 cp說(shuō)

3、明 26C. 撤銷流程實(shí)例代碼樣例 276. 跳轉(zhuǎn)27A. 流程實(shí)例跳轉(zhuǎn)參數(shù)說(shuō)明 27B. 流程實(shí)例跳轉(zhuǎn)返回值cp說(shuō)明 27C. 流程實(shí)例跳轉(zhuǎn)代碼樣例 287. 會(huì)簽29A. 流程實(shí)例會(huì)簽參數(shù)說(shuō)明 29B. 流程實(shí)例會(huì)簽返回值 cp說(shuō)明 29C. 流程實(shí)例會(huì)簽代碼樣例 308. 加簽30A. 流程實(shí)例加簽參數(shù)說(shuō)明 30B. 流程實(shí)例加簽返回值 cp說(shuō)明30C. 流程實(shí)例加簽代碼樣例 319. 轉(zhuǎn)辦31A. 轉(zhuǎn)辦流程實(shí)例參數(shù)說(shuō)明 31B. 轉(zhuǎn)辦流程實(shí)例返回值 cp說(shuō)明31C. 轉(zhuǎn)辦流程實(shí)例代碼樣例 3210. 暫停32A. 暫停流程實(shí)例參數(shù)說(shuō)明 32B. 暫停流程實(shí)例返回值 cp說(shuō)明32C. 暫

4、停流程實(shí)例代碼樣例 3311. 已閱33A. 流程實(shí)例已閱參數(shù)說(shuō)明 33B. 流程實(shí)例已閱返回值cp說(shuō)明33C. 流程實(shí)例已閱代碼樣例 3312. 催辦34A. 催辦流程實(shí)例參數(shù)說(shuō)明 34B. 催辦流程實(shí)例返回值 cp說(shuō)明34C. 催辦流程實(shí)例代碼樣例 3413. 替換辦理人35A. 流程實(shí)例替換辦理人參數(shù)說(shuō)明 35B. 流程實(shí)例替換辦理人返回值 cp說(shuō)明35C. 流程實(shí)例替換辦理人代碼樣例 3514. 暫存36A. 暫存流程實(shí)例參數(shù)說(shuō)明 36B. 暫存流程實(shí)例返回值 cp說(shuō)明36C. 暫存代碼樣例3615. 終止流程36A. 終止流程實(shí)例參數(shù)說(shuō)明 36B. 終止流程實(shí)例返回值 cp說(shuō)明 37

5、C. 終止流程代碼樣例3716. 啟動(dòng)子流程37A. 啟動(dòng)子流程實(shí)例參數(shù)說(shuō)明 37B. 啟動(dòng)子流程實(shí)例返回值 cp說(shuō)明37C. 啟動(dòng)子流程代碼樣例 38附錄:XMLWork方法摘要40、 總體1. 業(yè)務(wù)操作說(shuō)明業(yè)務(wù)操作說(shuō)明功能方法參數(shù)說(shuō)明1.啟動(dòng)實(shí)例1.1XMLWorkxWork= newXMLWork(Stri nguserid,Stri nguser name,Stri ng dept name)設(shè)置XMLWor啲基本屬性必要參數(shù):Userid:用戶 IdUserName用戶名稱DeptName部門(mén)名稱1.2intin it=xWork.openWorkFlow( ”,flowlD, ”

6、);根據(jù)流程定義Id,啟動(dòng)流程 實(shí)例必要參數(shù):flowID:流程定義Id2.打開(kāi)實(shí)例2.1XMLWorkxWork= newXMLWork(Stri nguserid,Stri nguser name,Stri ng dept name)設(shè)置XMLWor的基本屬性 必要參數(shù):Userid:用戶 IdUserName用戶名稱DeptName部門(mén)名稱2.2intin it=xWork.openWorkFlow(workid , ” , ” );根據(jù)流程實(shí)例Id,打開(kāi)流程 實(shí)例必要參數(shù):workid :流程實(shí)例Id2. 流程參數(shù)說(shuō)明具體可參考 流程參數(shù)總體說(shuō)明參數(shù)名含義格式要求必須賦值flowIde

7、 ntifier流程數(shù)據(jù)源標(biāo) 識(shí)configuration.xml或者workflow.xml 配置,具體參 考啟動(dòng)流程初始化 XMLWork額dataIde ntifier業(yè)務(wù)數(shù)據(jù)源標(biāo) 識(shí)外屬性說(shuō)明UserID操作人用戶IdUserName操作人用戶名 稱DeptName操作人部門(mén)名 稱WorkID流程實(shí)例idNodelD流程實(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)供 選擇actionF lag操作權(quán)限設(shè)置1:允許操作selectAuthor辦理人

8、員的Id單個(gè)節(jié)點(diǎn)(或者不需要傳入節(jié)點(diǎn))時(shí)為 user1|user2或者node=user1|user2多個(gè)節(jié)點(diǎn)時(shí)node1=user1|user2&n ode2=user3流程節(jié)點(diǎn)的 辦理人無(wú)值 時(shí)為必填項(xiàng)selectAuthorCN辦理人員的中 文名稱sec on dAuthor選擇的協(xié)辦人 員格式同 selectAuthorn extNodeID下一個(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ù)路由條件無(wú)法確定時(shí), 可以指定其中一個(gè)或者多 個(gè)來(lái)確定流程走向。傳入格式:(必須從返回格 式中獲取傳入數(shù)據(jù)) rld1 nld1

9、|rld2 nld2&rld 3 nld3路由ID節(jié)點(diǎn)ID。3. 如果從當(dāng)前節(jié)點(diǎn)(A)到 目標(biāo)節(jié)點(diǎn)(C)之間有其他節(jié) 點(diǎn)(B)被跳過(guò)時(shí)格式為:路 由B節(jié)點(diǎn)B|路由C節(jié)點(diǎn)C4.多個(gè)節(jié)點(diǎn)被選擇時(shí),使 用&連接msgSe ndFlag發(fā)送消息方式ToDo|Ma il|M sg|Note|RTF| Other|如果在workflow.xml中配置ReChgMsgFl ag節(jié)點(diǎn)為 true 時(shí)需 要傳入發(fā)送 消息的方式Actio nName操作類型Save等,具體參考總體中的 流程執(zhí)行操作allowU ni tNext合并節(jié)點(diǎn),是 否允許執(zhí)行提 交操作1:允許,其他不允許合并節(jié)點(diǎn)時(shí) 為必

10、填項(xiàng)can celFlag撤銷時(shí)的標(biāo) 志,默認(rèn)刪除仁刪除,2=回收站只有執(zhí)行撤 銷操作時(shí)為 必填項(xiàng)urlapp待辦鏈接地址如果為空則默認(rèn)使用流程 框架頁(yè)面打開(kāi)Comme nts意見(jiàn)內(nèi)容selectFlag當(dāng)前節(jié)點(diǎn)如果 替換處理人和 轉(zhuǎn)辦時(shí),是否 允許選擇多人1:允許,其他不允許執(zhí)行替換和 轉(zhuǎn)辦時(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) 或者

11、選擇辦理人,是否需要 操作人進(jìn)行確認(rèn)等,建議使 用1,處理速度會(huì)快一點(diǎn)。(2) 跳轉(zhuǎn)操作時(shí)的含義: 仁獲取可以跳轉(zhuǎn)的節(jié)點(diǎn)列 表,0=執(zhí)行跳轉(zhuǎn)到指定節(jié) 點(diǎn)。(3) 退回操作時(shí)的含義: 仁獲取可以退回的節(jié)點(diǎn)列表,0=執(zhí)行退回到指定節(jié)點(diǎn) 操作。(4) 啟動(dòng)子流程時(shí)的含義:如果系統(tǒng)提供了啟動(dòng)子流 程的ID (參數(shù)selectFlowID ),則忽略此 參數(shù),不提供selectFlowID 參數(shù)時(shí),如果當(dāng)前人沒(méi)有啟 動(dòng)過(guò)子流程時(shí)忽略此參數(shù), 直接根據(jù)定義判斷是否有 多個(gè)子流程定義,如果只有 一個(gè)子流程定義,則直接啟 動(dòng),否則返回;如果當(dāng)前人 已經(jīng)啟動(dòng)過(guò)子流程,1二獲取 已經(jīng)啟動(dòng)的子流程列表,并 返回,0

12、-根據(jù)定義判斷是否 有多個(gè)子流程定義,如果只 有一個(gè)子流程定義,則直接 啟動(dòng),否則返回。(5) 催辦操作時(shí)的含義: 仁催辦次數(shù)如果已經(jīng)達(dá)到 上限則停止,0二催辦次數(shù)已 經(jīng)達(dá)到上限也繼續(xù)催辦curNodeAuthorSe ndFlag當(dāng)前節(jié)點(diǎn)的作 者消息發(fā)送方 式,用于執(zhí)行 會(huì)簽,加簽,替 換,轉(zhuǎn)辦格式同 msgSendFlagcurNodeReaderSe ndFlag當(dāng)前節(jié)點(diǎn)的讀 者消息發(fā)送方 式,用于執(zhí)行 閱知操作時(shí)顯 示在前臺(tái)供操 作者選擇selectFlowID啟動(dòng)子流程的Id啟動(dòng)子流程 時(shí)為必填項(xiàng)FormActio n流程提交操作的URLtmpAuthor選擇人員時(shí), 臨時(shí)獲取選擇

13、范圍格式同 SelectAuthorpreFlag如果有選擇節(jié) 點(diǎn)頁(yè)面,在確 認(rèn)頁(yè)面上出現(xiàn)1:顯示,其他不出現(xiàn)上一步按鈕Acti on Class執(zhí)行業(yè)務(wù)的action 名稱默認(rèn)com.horizo n. workflow.flowe ngin e.impl.e ntity .XMLApptmpSavel nfo臨時(shí)信息記錄 (目前用于存 儲(chǔ)當(dāng)前人填寫(xiě) 的意見(jiàn)信息)3. 流程執(zhí)行操作說(shuō)明流程執(zhí)行操作1.引入的包:從request中獲系統(tǒng)com.horiz on .workflow.flowe ngi ne.impl.e ntity.XMLApp取的相關(guān)參數(shù)默認(rèn)參考流程參數(shù)處理(1)傳入 req

14、uest 對(duì)象,調(diào)用 doAction總體說(shuō)明,以及過(guò)程XMLApp app =new XMLApp();要執(zhí)行下面具Lin kedHashMap backMap = app.doAct ion( request);體操作的說(shuō)明(具/返回結(jié)果體點(diǎn)int cp = In teger.parse In t(Stri ng)backMap.get("iResult");擊上/獲取提交后的流程信息面鏈XMLWork xWork = (XMLWork)backMap.get("xWork");接)(2)把參數(shù)放入的 LinkedHashMap,調(diào)用 doActio

15、n根據(jù)操作的類Li nkedHashMap dataHashM ap = new Li nkedHashMap();型,組織XMLApp app =new XMLApp();dataHashM ap 的Lin kedHashMap backMap = app.doAct ion( dataHashMap);數(shù)據(jù),具體參考/返回結(jié)果流程參數(shù)總體int cp = In teger.parse In t(Stri ng)backMap.get("iResult");說(shuō)明,以及要執(zhí)/獲取提交后的流程信息行下面具體操XMLWork xWork = (XMLWork)backMap.g

16、et("xWork");作的說(shuō)明2.LinkedHashMap hashMap = new LinkedHashMap();組織流程操作自行2.在自定義的類中執(zhí)行需要的參數(shù)編寫(xiě)int result = doAct ion(n ull,hashMap);具體根據(jù)流程處理參數(shù)總體說(shuō)明過(guò)程以及對(duì)應(yīng)的操(具作設(shè)置相關(guān)參體點(diǎn)數(shù),放入到擊上 面鏈hashMap 中。接)4. 流程實(shí)例流轉(zhuǎn)操作操作名稱英文標(biāo)識(shí)說(shuō)明提交Submit提交到下一節(jié)點(diǎn)退回reject退回到某個(gè)節(jié)點(diǎn)拿回getback拿回已提交的流程閱知addreader發(fā)送待閱撤銷cancel撤銷流程跳轉(zhuǎn)goto跳轉(zhuǎn)到某個(gè)節(jié)點(diǎn)會(huì)簽

17、huiqia n發(fā)送給相關(guān)人員會(huì)簽加簽jiaqia n發(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í)例整體說(shuō)明引 入類:執(zhí)行方 法初始化XMLWork設(shè)置相關(guān)屬性1.XMLWorkxWork=newXMLWork(userid,user name,dept name);啟動(dòng)具體的流程實(shí)例 (返回值說(shuō)明見(jiàn)下面)2.i ntin it=xWork.openWorkF

18、low( ” ,flowID, ” );2. 啟動(dòng)流程實(shí)例參數(shù)說(shuō)明參數(shù)名含義要求userid啟動(dòng)實(shí)例的操作人 的用戶Id不能為空user name啟動(dòng)實(shí)例的操作人 的用戶名稱可以為空dept name啟動(dòng)實(shí)例的操作人 的部門(mén)名稱可以為空f(shuō)lowID流程定義Id不能為空3. 啟動(dòng)流程初始化 XMLWork額外屬性說(shuō)明初始化XMLWork設(shè)置相關(guān)屬性(根據(jù)業(yè)務(wù),如有需要,可以設(shè)置以下內(nèi)容)xWork.setFlowlde ntifier( )設(shè)置流程數(shù)據(jù)所使 用的數(shù)據(jù)源標(biāo)識(shí)符。con figurati on. xml中設(shè)置的默認(rèn)數(shù)據(jù)源和workflow.xml中的設(shè)置不 一致時(shí),設(shè)置為空和設(shè)置成n

19、ull (或 者不設(shè)置)是有區(qū)別的,設(shè)置為空時(shí), 系統(tǒng)使用 con figurati on. xml中設(shè)置的默認(rèn)數(shù)據(jù)源,設(shè)置成 null (或 者不設(shè)置)時(shí),使用的是 workflow.xml中的設(shè)置。數(shù)據(jù)源無(wú) 效時(shí),系統(tǒng)默認(rèn)使用 con figurati on. xml中設(shè)置的默認(rèn)數(shù)據(jù)源。如果 flowIde ntifier跟dataIde ntifier樣可以直接使用xWork.setIdentifier()對(duì)兩個(gè)變量同時(shí)賦值xWork .setDataIde ntifier()設(shè)置業(yè)務(wù)數(shù)據(jù)所使 用的數(shù)據(jù)源標(biāo)識(shí)符。xWork .setUserAuthType()如果需要設(shè)置外部 辦理人獲取

20、方式。4. 啟動(dòng)流程實(shí)例返回值init說(shuō)明返回值含義in it= StaticVar.I ni t Success初始化成功。init = StaticVar.I nit NoRole當(dāng)前人員無(wú)權(quán)啟動(dòng)流程init = StaticVar.I nit_ReadMsg鎖定當(dāng)前實(shí)例失敗,啟動(dòng)流程時(shí)不影響,可以等 同成功init = StaticVar.In it_Failed其他原因失敗從xWork.getBackMsg();可以獲取 錯(cuò)誤信息啟動(dòng)流程實(shí)例成功后,可以從xWork對(duì)象中獲取相關(guān)的信息,具體參考 XMLWork 方法摘要5. 啟動(dòng)實(shí)例代碼樣例/*啟動(dòng)流程實(shí)例操作,從前臺(tái)獲取參數(shù),獲取流

21、程定義Id等信息,具體可參考horiz on/workflow/in clude2/xmlwork.i ndex.head.jsp */1.流程定義Id,必須有此值Stri ng flowID = request.getParameter("flowid");2.外部權(quán)限設(shè)置分類,XMLWork額外屬性,可以不用設(shè)置Str ing userAuthType = request.getParameter("userAuthType");3.獲得數(shù)據(jù)源,XMLWork額外屬性,可以不用設(shè)置Stri ng dbIde ntifier = request.get

22、Parameter("dblde ntifier");4.當(dāng)前用戶信息,根據(jù)應(yīng)用系統(tǒng)的區(qū)別,靈活獲取。下面是產(chǎn)品中的自帶的用戶獲取方式String userid = SessionUtil.getUserld(session); /用戶 Id 必須有值Stri ng user name = Sessio nU til.getUserName(sessio n);Stri ng dept name = Sessio nU til.getDeptName(sessio n);/5. 初始化XMLWork屬性XMLWork xWork = new XMLWork(userid,u

23、ser name,dept name);/如果需要設(shè)置XMLWork額外屬性xWork.setIde ntifier(dblde ntifier);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 in it = xWork.ope nWorkFlow( "”,flowlD, ” );7.啟動(dòng)流程實(shí)例成功后,對(duì)業(yè)務(wù)數(shù)據(jù)的處理在啟動(dòng)流程實(shí)例的界面中,如果提交流程操

24、作時(shí),同時(shí)保存業(yè)務(wù)數(shù)據(jù),使用自定義的編寫(xiě)處理類方式流轉(zhuǎn),業(yè)務(wù)數(shù)據(jù)可以在對(duì)應(yīng)的getAppSQL()方法中具體處理。具體可參考自行編寫(xiě)處理類過(guò)程。/獲取當(dāng)前節(jié)點(diǎn)當(dāng)前人所具有的表單信息(包含表單域和操作信息),具體可參考 String formId =“”;/業(yè)務(wù)的表單ID,根據(jù)業(yè)務(wù)隨機(jī)修改String dataid=xWork.getlDByFormlD(formId, “ DataID ”);com.horizo n. workflow.flowe ngin e.xmldb.XMLFormxmlForms=xWork .getCurForm(dataid);for(i nt i=0;i<

25、form .len gth;i+) String formid = formi.getlD();/流程跟蹤表單if(formid.equalslg noreCase("FlowTrack")/如果是流程跟蹤表單,可以執(zhí)行鏈接到流程跟蹤界面else if(formi.getFormtype().equals("HTML")/靜態(tài)Html頁(yè)面else if(formi.getFormtype().equals("JSP")/自定義的JSP頁(yè)面/獲取表單信息Li nkedHashMap formFieldMap = xWork.getFie

26、ldsTypeByFormlD(i);/業(yè)務(wù)數(shù)據(jù)IdString dataID = formi.getDataID()/表單IdString formid=formi.getlD();/庫(kù)表名稱Stri ng table name=formi.getTablelD();/該節(jié)點(diǎn)的只讀字段列表Stri ng mpread=formFieldMap.get("read").toStr in g();/該節(jié)點(diǎn)的編輯字段列表String mpedit=formFieldMap.get("edit").toString();/該節(jié)點(diǎn)的必填字段列表Str ing m

27、pmust=formFieldMap.get("check").toStri ng();/該節(jié)點(diǎn)的隱藏字段列表Stri ng mphide=formFieldMap.get("hidde n").toStr in g();/該節(jié)點(diǎn)的其他標(biāo)識(shí)(比如表單自己的按鈕之類的標(biāo)識(shí))列表Stri ng mpother=formFieldMap.get("other").toStri ng();else/其他使用整體框架功能、 打開(kāi)實(shí)例1. 打開(kāi)流程實(shí)例整體說(shuō)明引 入類:執(zhí)行方初始化XMLWork設(shè)置相關(guān)屬性1.XMLWorkxWork=new法X

28、MLWork(userid,user name,dept name);打開(kāi)具體的流程實(shí)例 (返回值說(shuō)明見(jiàn)下面)2.i ntin it=xWork.openWorkFlow(workid, ” , ” );2. 打開(kāi)流程實(shí)例參數(shù)說(shuō)明參數(shù)名含義要求userid啟動(dòng)實(shí)例的操作人 的用戶Id不能為空user name啟動(dòng)實(shí)例的操作人 的用戶名稱可以為空dept name啟動(dòng)實(shí)例的操作人 的部門(mén)名稱可以為空workid流程實(shí)例Id不能為空3. 打開(kāi)流程初始化XMLWork額外屬性說(shuō)明初始化XMLWork設(shè)置相關(guān)屬性(根據(jù)業(yè)務(wù),如有需要,可以設(shè)置以下內(nèi)容)xWork.setFlowIde ntifier(

29、 )設(shè)置流程數(shù)據(jù)所使 用的數(shù)據(jù)源標(biāo)識(shí)符。(1)co nfigurati on .xml中設(shè)置的默認(rèn)數(shù)據(jù)源和workflow.xml 中的 設(shè)置不一致時(shí),設(shè)置為空和設(shè)置 成null (或者不設(shè)置)是有區(qū)別 的,設(shè)置為空時(shí),系統(tǒng)使用 con figurati on. xml中設(shè)置的默認(rèn)數(shù)據(jù)源,設(shè)置成null (或者不 設(shè)置)時(shí),使用的是 workflow.xml中的設(shè)置。數(shù)據(jù)源 無(wú)效時(shí),系統(tǒng)默認(rèn)使用 con figurati on. xml中設(shè)置的默認(rèn)數(shù)據(jù)源。如果 flowIdentifier跟dataIde ntifier樣可以直接使用xWork.setIdentifier(“” )對(duì)兩個(gè)變量同

30、時(shí)賦值xWork.setDataIde ntifier( )設(shè)置業(yè)務(wù)數(shù)據(jù)所使 用的數(shù)據(jù)源標(biāo)識(shí)符。xWork.setOpe nTracklD()設(shè)置指定路徑Id打開(kāi)流程實(shí)例時(shí)可以設(shè)置此值(1) 如果當(dāng)前人在多個(gè)分支節(jié)點(diǎn)都具 有權(quán)限,還需要指定路徑ID(2) 如果不指定,系統(tǒng)會(huì)自動(dòng)獲取所有分支,返回前臺(tái)供選擇4. 打開(kāi)流程實(shí)例返回值init說(shuō)明返回值含義init= StaticVar.I nit_SelectNode選擇需要打開(kāi)的節(jié)點(diǎn)Stri ng all nodes = xWork.getBackMsg();Stri ng nodes = all no des.split("|&quo

31、t;);選擇后的結(jié)果賦值給 xWork.setOpe nTracklD(“”;return;init = StaticVarni t Success打開(kāi)實(shí)例成功init = StaticVar.I nit_NoRole當(dāng)前人員無(wú)權(quán)查看此流程實(shí)例init = StaticVar.I nit_ReadMsg當(dāng)前人只能以只讀權(quán)限打開(kāi)(此時(shí)不能執(zhí)行任何 操作)init = StaticVar.I nit_Locked當(dāng)前實(shí)例被其他人鎖定(此時(shí)不能執(zhí)行任何操 作)init = StaticVar.I nit_LockFailed鎖定當(dāng)前實(shí)例失敗,此時(shí)其他人仍然可以打開(kāi)實(shí) 例進(jìn)行操作,可能會(huì)出現(xiàn)數(shù)據(jù)沖突問(wèn)

32、題,建議退 出重新打開(kāi)init = StaticVar.In it_Failed其他原因失敗從xWork.getBackMsg();可以獲取 錯(cuò)誤信息打開(kāi)流程實(shí)例成功后,可以從xWork對(duì)象中獲取相關(guān)的信息,具體參考 XMLWork 方法摘要5. 打開(kāi)實(shí)例代碼樣例/*打開(kāi)流程實(shí)例操作,從前臺(tái)獲取參數(shù),獲取流程實(shí)例Id等信息,具體可參考horiz on/workflow/in clude2/xmlwork.i ndex.head.jsp */1.流程實(shí)例Id,必須有此值Stri ng workid = request.getParameter("workid");2.外部權(quán)限

33、設(shè)置分類,XMLWork額外屬性,可以不用設(shè)置Str ing userAuthType = request.getParameter("userAuthType");3.獲得數(shù)據(jù)源,XMLWork額外屬性,可以不用設(shè)置Stri ng dbIde ntifier = request.getParameter("dblde ntifier");4.設(shè)置指定路徑Id ,XMLWork額外屬性,如果沒(méi)有分支,可以不用設(shè)置Stri ng ope nTrackID = request.getParameter("ope nTrackID ");1

34、15.當(dāng)前用戶信息,根據(jù)應(yīng)用系統(tǒng)的區(qū)別,靈活獲取。下面是產(chǎn)品中的自帶的用戶獲取方式String userid = SessionUtil.getUserld(session); /用戶 Id 必須有值Stri ng user name = Sessio nU til.getUserName(sessio n);Stri ng dept name = Sessio nU til.getDeptName(sessio n);5.初始化XMLWork屬性XMLWork xWork = new XMLWork(userid,user name,dept name);/如果需要設(shè)置XMLWork額外屬性

35、xWork.setIde ntifier(dblde ntifier);xWork.setUserAuthType(userAuthType);xWork. setOpe nTracklD(ope nTrackID);6.打開(kāi)流程實(shí)例int init = xWork.openWorkFlow(workid,” , ” );7.打開(kāi)流程實(shí)例成功后,對(duì)業(yè)務(wù)數(shù)據(jù)的處理在打開(kāi)流程實(shí)例的界面中,如果提交流程操作時(shí),同時(shí)保存業(yè)務(wù)數(shù)據(jù),使用自定義的編寫(xiě)處理類方式流轉(zhuǎn),業(yè)務(wù)數(shù)據(jù)可以在對(duì)應(yīng)的getAppSQL()方法中具體處理。具體可參考自行編寫(xiě)處理類過(guò)程。獲取當(dāng)前節(jié)點(diǎn)當(dāng)前人所具有的表單信息(包含表單域和操作信

36、息),具體可參考String formId =“”;/業(yè)務(wù)的表單ID,根據(jù)業(yè)務(wù)隨機(jī)修改String dataid=xWork.getlDByFormlD(formId, “ DataID ”);com.horizo n. workflow.flowe ngin e.xmldb.XMLFormxmlForms =xWork .getCurForm(dataid);for(i nt i=0;i<form .len gth;i+) Stri ng formid = formi.getID();/流程跟蹤表單if(formid.equalslg noreCase("FlowTrack&

37、quot;)/如果是流程跟蹤表單,可以執(zhí)行鏈接到流程跟蹤界面else if(formi.getFormtype().equals("HTML")/靜態(tài)Html頁(yè)面else if(formi.getFormtype().equals("JSP")/自定義的JSP頁(yè)面/獲取表單信息Li nkedHashMap formFieldMap = xWork.getFieldsTypeByFormlD(i);/業(yè)務(wù)數(shù)據(jù)IdString datalD = formi.getDataID()/表單IdString formid=formi.getID();/庫(kù)表名稱St

38、ri ng table name=formi.getTablelD();/該節(jié)點(diǎn)的只讀字段列表Stri ng mpread=formFieldMap.get("read").toStr in g();/該節(jié)點(diǎn)的編輯字段列表String mpedit=formFieldMap.get("edit").toString();/該節(jié)點(diǎn)的必填字段列表Str ing mpmust=formFieldMap.get("check").toStri ng();/該節(jié)點(diǎn)的隱藏字段列表Stri ng mphide=formFieldMap.get(&q

39、uot;hidde n").toStr in g();/該節(jié)點(diǎn)的/該節(jié)點(diǎn)的其他標(biāo)識(shí)(比如表單自己的按鈕之類的標(biāo)識(shí))列表Stri ng mpother=formFieldMap.get("other").toStri ng();else/其他使用整體框架功能四、執(zhí)行操作此步必須在執(zhí)行過(guò)實(shí)例打開(kāi)或者啟動(dòng)流程成功后方可執(zhí)行(否則會(huì)出現(xiàn)操作失敗)1. 采用系統(tǒng)提供的默認(rèn)類處理如果流程需要的信息都在request里,可以使用系統(tǒng)默認(rèn)提供的方法com.horizo n.workflow.flowe ngi ne.impl.e ntity.XMLApp類中提供默認(rèn)處理方法,此類

40、可以自行編寫(xiě)。操作名稱從request中的Actio nN ame自動(dòng)獲取 當(dāng)前人id從request中的userid自動(dòng)獲取 當(dāng)前實(shí)例id從request中的workid自動(dòng)獲取 其他參數(shù)參考方法二中的說(shuō)明下面的XMLApp實(shí)例化過(guò)程是系統(tǒng)默認(rèn)的處理方式,可以根據(jù)業(yè)務(wù)需要參考自行編寫(xiě) 處理類過(guò)程,實(shí)現(xiàn)自己的業(yè)務(wù)。XMLApp app = new XMLApp();/ 也可以使用 XMLAppInterface app = StaticFun.getXMLApp();來(lái)獲取在workflow.xml中配置的類Lin kedHashMap backMap = app.doActi on( req

41、uest);根據(jù)返回結(jié)果進(jìn)行后續(xù)處理系統(tǒng)默認(rèn)Map中存放三個(gè)值,如果是自行編寫(xiě)的類可能跟下面的描述不一致,請(qǐng)自行 處理。下面對(duì)系統(tǒng)默認(rèn)提供的方法進(jìn)行說(shuō)明。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)。具體各種情況說(shuō)明見(jiàn)下面描述。2. 自行編寫(xiě)處理類XMLWorkApp可以直接返回ture可以直接返回true自行編寫(xiě)類,必須繼承 com.hori

42、zo n. workflow.flowe ngi ne.fu n.此類需要實(shí)現(xiàn)三個(gè)接口方法,getAppSQL用來(lái)獲取業(yè)務(wù)數(shù)據(jù)保存的 sql和參數(shù),如果已經(jīng)自行處理, getAppDelSQL用來(lái)在撤辦時(shí)刪除業(yè)務(wù)數(shù)據(jù), 如果業(yè)務(wù)數(shù)據(jù)自行處理, setFlowVarValue用來(lái)對(duì)流程變量進(jìn)行賦值,如果沒(méi)有可以為空在類中創(chuàng)建一個(gè)方法(比如 doAction),在方法中包含下面的代碼 定義一個(gè)LinkedHashMap,在此map中放入流程需要的參數(shù)如下Lin kedHashM ap hashMap = new Lin kedHashMap();根據(jù)需要往hashMap中放入以下信息。/填寫(xiě)的意見(jiàn)

43、信息,存放到流程hashMap.put("Comme nts".toUpperCase(),""); 跟蹤中。如果不需要記錄則忽略此參數(shù)傳入/如果下一節(jié)點(diǎn)沒(méi)有設(shè)置辦理hashMap.put("selectAuthor".toUpperCase(),"");人或者根據(jù)設(shè)置獲取辦理人為空時(shí),且不允許跳過(guò),可以在此傳入下一節(jié)點(diǎn)辦理人。傳入格式:?jiǎn)蝹€(gè)節(jié)點(diǎn)(或者不需要傳入節(jié)點(diǎn))時(shí)為user1|user2 或者node=user1|user2 多個(gè)節(jié)點(diǎn)時(shí)node1=user1|user2&node2=user3hash

44、Map.put( "n extNodelD".toUpperCase(),"");/ 如果下一點(diǎn)只有一個(gè)時(shí),請(qǐng)不要賦值;當(dāng)下一節(jié)點(diǎn)有多個(gè)節(jié)點(diǎn),根據(jù)路由條件無(wú)法確定時(shí),可以指定其中一個(gè)或者多個(gè)來(lái) 確定流程走向。傳入格式:(必須從返回格式中獲取傳入數(shù)據(jù))rId1 nId1|rId2 n Id2&rId3 nId3路由ID節(jié)點(diǎn)ID。如果從當(dāng)前節(jié)點(diǎn)(A )到目標(biāo)節(jié)點(diǎn)(C)之間有其他節(jié)點(diǎn)(B)被 跳過(guò)時(shí)格式為:路由B節(jié)點(diǎn)B|路由C節(jié)點(diǎn)C多個(gè)節(jié)點(diǎn)被選擇時(shí),使用&連接hashMap.put("submitflag".toUpperC

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

46、如果只有一個(gè)子流程定義,則直接啟動(dòng),否則返回;如0=根據(jù)定義判斷是此參數(shù),不提供selectFlowID參數(shù)時(shí),如果當(dāng)前人 沒(méi)有啟動(dòng)過(guò) 子流程時(shí)忽略此參數(shù), 據(jù)定義判斷是否有多個(gè)子流程定義, 果當(dāng)前人已經(jīng)啟動(dòng)過(guò)子流程,仁獲取已經(jīng)啟動(dòng)的子流程列表,并返回, 否有多個(gè)子流程定義,如果只有一個(gè)子流程定義,則直接啟動(dòng),否則返回。催辦操作時(shí)的含義:1=催辦次數(shù)如果已經(jīng)達(dá)到上限則停止,0=催辦次數(shù)已經(jīng)達(dá)到上限也繼續(xù)催辦啟動(dòng)子流程時(shí)可能需要的參數(shù),指定子流程IDhashMap.put("selectFlowlD".toUpperCase(),"");合并節(jié)點(diǎn)提交時(shí)需要

47、傳入的參數(shù)仁可以提交下一節(jié)點(diǎn),0=程序自行確定hashMap.put("setAllowUnitNext".toUpperCase(),"");操作名稱hashMap.put("Actio nN ame".toUpperCase(), "Submit");/ 當(dāng)前執(zhí)行的操作Submit,Save,Reject,JiaQia n, HuiQia n,Replace,StopFlow,Pause,AddRead er,GetBack,ReMsg,Move,Goto,Ca ncel,Readed,SubFlow提交,暫存

48、,退回,加簽,會(huì)簽,替換辦理人,終止,暫停,閱知,拿回,催辦,轉(zhuǎn)辦,跳轉(zhuǎn),撤辦, 已閱,啟動(dòng)子流程hashMap.put("worklD".toUpperCase(), workID);/當(dāng)前實(shí)例 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ù)對(duì)應(yīng)的表單id ,多個(gè)表單使用分號(hào)分隔hashMap.put("32 位formid_ID",&quo

49、t;");把業(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)的庫(kù)表名稱其它非必需的信息hashMap.put("flowIde ntifier".toUpperCase(),"");/ 流程數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)源標(biāo)識(shí)符,如果不提供,則使用打開(kāi)實(shí)例時(shí)指定的數(shù)據(jù)源。如果指定的數(shù)據(jù)源跟打開(kāi)時(shí)不一致,系統(tǒng)會(huì)保存數(shù)據(jù)到當(dāng)前指定的數(shù)據(jù)源,而打開(kāi)時(shí)數(shù)據(jù)源中的數(shù)據(jù)不會(huì)

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

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

52、,必須為submitn extNodeID提交到某個(gè)節(jié)點(diǎn)的Id要求同整體說(shuō)明selectAuthor節(jié)點(diǎn)辦理人要求同整體說(shuō)明submitflag提交方式1.Submitflag=1時(shí),從xWork.getBackMsg()獲取可以提交 的節(jié)點(diǎn)列表2.Submitflag=0 時(shí),提交到指定的 節(jié)點(diǎn)B. 提交流程實(shí)例返回值cp說(shuō)明返回值含義cp=StaticVar.F_STATUS_Success提交成功:1.submitflag=1 時(shí)xWork.getNextNodeName()獲取下一節(jié)點(diǎn)名稱,用于 顯示xWork.getNextAuthor("<br>")

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

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

55、,根據(jù)tpRouter.getResult()獲取當(dāng)前節(jié)點(diǎn)初始化結(jié)果/獲取節(jié)點(diǎn)在列表中的位置intpos=xWork.getNextNodePosByNodelD(tpRouteri.getNodelD();仲Router.getResult()=StaticVar.F_STATUS_Success),獲取當(dāng)前節(jié)點(diǎn)已經(jīng)選擇的辦理人,用于賦值給selectAuthorxWork.getNextSelectAuhorlD(pos)/需要選擇辦理人時(shí)仲Router.getResult()=StaticVar.F_STATUS_SelectAuthor), xWork.getManualSelectUser(pos

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論