工作流集成第三方jsp表单
工作流系統集成表單的過程,其實就是一個調用流程引擎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" ο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%>">
.........
流程名稱,版本,流程實例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達到流程的流轉。
?
?
總結
以上是生活随笔為你收集整理的工作流集成第三方jsp表单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌Chrome 11对早期开发者开放使
- 下一篇: 纠结啊