轉帖|其它|編輯:郝浩|2011-09-26 14:03:24.000|閱讀 589 次
概述:本文主要介紹工作流如何第三方jsp表單集成,希望對大家有幫助。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
工作流系統集成表單的過程,其實就是一個調用流程引擎api函數的集成過程。
工作流引擎只負責抽象的流程的流轉,業務模塊的實現,是在業務表單中完成。在和工作流系統集成的時候,完成表單提交的同時,再調用流程引擎的api執行流程的流轉。
通常一套業務系統中,業務模塊的實現,體現在一套MVC的框架中,無論是struts,spring,jsf等等都是為實現分層管理的mvc的框架。
一個業務功能的實現,在m,v,c這三個層面都有體現,好的mvc框架,能通過簡單的配置來達到新增模塊,只需要實現v展現層,m層的和數據庫的交互。且需要維護的地方很少,集成度越高的框架越接近于自定義表單引擎,類似半自動化的表單系統。
無論用那種mvc的框架,在集成工作流系統的時候,流程只負責業務的流轉,業務千變萬化,業務模塊的實現還是不可避免的要自己實現。
當工作流系統集成自定義的表單系統時,自定義表單引擎也會包含一種mvc框架,達到自己的定制實現。只是有了表單引擎+表單設計器,能更快捷方便的實現業務模塊。
應用自定義表單時,會有很多的優勢,只需要通過可視化的編輯設置,就能完成業務模塊的實現,達到人機交互。當然也無需重新編譯打包,無需發布,就能直接運行了。和工作流引擎的集成也已經做好,只需要通過可視化的功能調用,就能完成了和工作流系統的集成。這些集成的代碼已經封裝好了,用戶只需可視化的設置。無需了解引擎的api功能。
工作流系統結合自定義表單系統,可以開放給終端的用戶去做可視化的設計流程,定義表單,完成新增業務流程的功能。
當流程引擎集成第三方的jsp表單時,程序員就需要調用流程引擎的api來完成流程的流轉功能。
流程引擎對外提供一系列的api,可以讀出流程定義文檔的整個定義串,得到任意節點信息。通過節點id也能獲得節點定義類對象。
下面是eworkflow工作流系統在集成jsp表單時的調用過程。
為了方便表述,沒有使用框架來實現業務模塊的提交,只在jsp頁面中嵌入java的代碼來說明如何調用流程引擎的api。
頁面表單中增加隱藏域,保存流程相關的參數。
<form id="frm" method="POST" action="leave_new_submit.jsp" onsubmit="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%>">
.........
流程名稱,版本,流程實例id,動作id,業務表主鍵id
在表單提交的時候
//獲得流程參數
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");
//獲得業務參數
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");
然后,再先做業務記錄的提交。
//先做業務記錄的保存
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());
再啟動流程引擎
執行流程的api,達到流程的流轉
Workflow wf = new BasicWorkflow(userid,env);
wf.doAction(Long.parseLong(wfId), Integer.parseInt(actionId), inputs);
這樣,就完成了一個流程節點的辦理,既提交了業務數據,又執行了流程的流轉。
在流程設計器中,節點上掛接jsp表單:
在流程實例運行時,執行到此節點,既打開掛接的jsp表單。
點擊提交后,執行上面的代碼過程,達到業務記錄的提交,又調用流程引擎的api達到流程的流轉。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載