工作流集成第三方jsp表单
工作流系統(tǒng)集成表單的過(guò)程,其實(shí)就是一個(gè)調(diào)用流程引擎api函數(shù)的集成過(guò)程。
工作流引擎只負(fù)責(zé)抽象的流程的流轉(zhuǎn),業(yè)務(wù)模塊的實(shí)現(xiàn),是在業(yè)務(wù)表單中完成。在和工作流系統(tǒng)集成的時(shí)候,完成表單提交的同時(shí),再調(diào)用流程引擎的api執(zhí)行流程的流轉(zhuǎn)。
通常一套業(yè)務(wù)系統(tǒng)中,業(yè)務(wù)模塊的實(shí)現(xiàn),體現(xiàn)在一套MVC的框架中,無(wú)論是struts,spring,jsf等等都是為實(shí)現(xiàn)分層管理的mvc的框架。
一個(gè)業(yè)務(wù)功能的實(shí)現(xiàn),在m,v,c這三個(gè)層面都有體現(xiàn),好的mvc框架,能通過(guò)簡(jiǎn)單的配置來(lái)達(dá)到新增模塊,只需要實(shí)現(xiàn)v展現(xiàn)層,m層的和數(shù)據(jù)庫(kù)的交互。且需要維護(hù)的地方很少,集成度越高的框架越接近于自定義表單引擎,類似半自動(dòng)化的表單系統(tǒng)。
無(wú)論用那種mvc的框架,在集成工作流系統(tǒng)的時(shí)候,流程只負(fù)責(zé)業(yè)務(wù)的流轉(zhuǎn),業(yè)務(wù)千變?nèi)f化,業(yè)務(wù)模塊的實(shí)現(xiàn)還是不可避免的要自己實(shí)現(xiàn)。
當(dāng)工作流系統(tǒng)集成自定義的表單系統(tǒng)時(shí),自定義表單引擎也會(huì)包含一種mvc框架,達(dá)到自己的定制實(shí)現(xiàn)。只是有了表單引擎+表單設(shè)計(jì)器,能更快捷方便的實(shí)現(xiàn)業(yè)務(wù)模塊。
應(yīng)用自定義表單時(shí),會(huì)有很多的優(yōu)勢(shì),只需要通過(guò)可視化的編輯設(shè)置,就能完成業(yè)務(wù)模塊的實(shí)現(xiàn),達(dá)到人機(jī)交互。當(dāng)然也無(wú)需重新編譯打包,無(wú)需發(fā)布,就能直接運(yùn)行了。和工作流引擎的集成也已經(jīng)做好,只需要通過(guò)可視化的功能調(diào)用,就能完成了和工作流系統(tǒng)的集成。這些集成的代碼已經(jīng)封裝好了,用戶只需可視化的設(shè)置。無(wú)需了解引擎的api功能。
工作流系統(tǒng)結(jié)合自定義表單系統(tǒng),可以開(kāi)放給終端的用戶去做可視化的設(shè)計(jì)流程,定義表單,完成新增業(yè)務(wù)流程的功能。
當(dāng)流程引擎集成第三方的jsp表單時(shí),程序員就需要調(diào)用流程引擎的api來(lái)完成流程的流轉(zhuǎn)功能。
流程引擎對(duì)外提供一系列的api,可以讀出流程定義文檔的整個(gè)定義串,得到任意節(jié)點(diǎn)信息。通過(guò)節(jié)點(diǎn)id也能獲得節(jié)點(diǎn)定義類對(duì)象。
下面是eworkflow工作流系統(tǒng)在集成jsp表單時(shí)的調(diào)用過(guò)程。
為了方便表述,沒(méi)有使用框架來(lái)實(shí)現(xiàn)業(yè)務(wù)模塊的提交,只在jsp頁(yè)面中嵌入java的代碼來(lái)說(shuō)明如何調(diào)用流程引擎的api。
頁(yè)面表單中增加隱藏域,保存流程相關(guān)的參數(shù)。
<form id="frm" method="POST" action="leave_new_submit.jsp" οnsubmit="return checkInput()">
<input type="hidden" name="wfName" value="<%=wfName%>">
<input type="hidden" name="wfVersion" value="<%=wfVersion%>">
<input type="hidden" name="wfId" value="<%=wfId%>">
<input type="hidden" name="actionId" value="<%=actionId%>">
<input type="hidden" name="leaveId" value="<%=leaveId%>">
.........
流程名稱,版本,流程實(shí)例id,動(dòng)作id,業(yè)務(wù)表主鍵id
在表單提交的時(shí)候
?//獲得流程參數(shù)
?String wfName = request.getParameter("wfName");
?String wfVersion = request.getParameter("wfVersion");?
?String wfId = request.getParameter("wfId");
?String actionId = request.getParameter("actionId");?
?String dynamicId = request.getParameter("dynamicInstanceId");
?
?
??//獲得業(yè)務(wù)參數(shù)
?String leaveType = request.getParameter("leaveType");
?String leaveDays = request.getParameter("leaveDays");
?String startDate = request.getParameter("startDate");
?String endDate = request.getParameter("endDate");
?String applyDate = request.getParameter("applyDate");
?String remark = request.getParameter("remark");?
?
?然后,再先做業(yè)務(wù)記錄的提交。?
???? //先做業(yè)務(wù)記錄的保存
???? StringBuffer sql = new StringBuffer();
???? sql.append("insert into ex_leave_apply");
???? sql.append("????? (LEAVE_ID");
???? sql.append("????? ,START_DATE");
???? sql.append("????? ,REMARK");
???? sql.append("????? ,END_DATE");
???? sql.append("????? ,LEAVE_DAYS");
???? sql.append("????? ,APPLY_DATE");
???? sql.append("????? ,LEAVE_TYPE");
???? sql.append("????? ,APPLY_USER");
???? sql.append("????? ,WF_ID )");
???? sql.append(" values ( '" + IDUtils.getEformRecNumNo(env.getCon(),"BBB") + "'");
???? sql.append(",'" + startDate + "'");
???? sql.append(",'" + remark + "'");
???? sql.append(",'" + endDate + "'");
???? sql.append("," + leaveDays);
???? sql.append(",'" + applyDate + "'");
???? sql.append(",'" + leaveType + "'");
???? sql.append(",'" + userid + "'");
???? sql.append("," + wfId );
???? sql.append(")");
???? DBUtils.go(env.getCon(),sql.toString());
????
????
再啟動(dòng)流程引擎
執(zhí)行流程的api,達(dá)到流程的流轉(zhuǎn)
???? Workflow wf = new BasicWorkflow(userid,env);
???? wf.doAction(Long.parseLong(wfId), Integer.parseInt(actionId), inputs);????
???
這樣,就完成了一個(gè)流程節(jié)點(diǎn)的辦理,既提交了業(yè)務(wù)數(shù)據(jù),又執(zhí)行了流程的流轉(zhuǎn)。
在流程設(shè)計(jì)器中,節(jié)點(diǎn)上掛接jsp表單:
?
在流程實(shí)例運(yùn)行時(shí),執(zhí)行到此節(jié)點(diǎn),既打開(kāi)掛接的jsp表單。
?
點(diǎn)擊提交后,執(zhí)行上面的代碼過(guò)程,達(dá)到業(yè)務(wù)記錄的提交,又調(diào)用流程引擎的api達(dá)到流程的流轉(zhuǎn)。
?
?
總結(jié)
以上是生活随笔為你收集整理的工作流集成第三方jsp表单的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 谷歌Chrome 11对早期开发者开放使
- 下一篇: 纠结啊