應用 JSP 範例:啟動流程後獲得其內容
以下是一個範例,說明如何在 JSP 中啟動流程並獲取其內容:
範例:啟動流程後獲得其內容
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %> <%-- 引入套件 --%> <%@ page session="true" %> <%@ page import="java.sql.*,java.util.*" %> <%@ page import="si.*" %> <%@ page import="si.wfinterface.*" %> <%@ page import="pe.pase.*" %> <%@ page import="com.everunion.services.WFCIService, org.apache.commons.beanutils.BeanUtils" %> <%@ page import="com.everunion.flow.order.*"%> <%@ page import="com.everunion.util.*,com.everunion.flow.order.Comm"%> <%@ page import="com.everunion.flow.quotation.IS8N" %> <% // 清除快取 response.setContentType("text/html;charset=UTF-8"); // 如果是需要回傳的 Ajax,則寫 response.setContentType("text/xml); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); %> <%! /** * 取得流程階段號碼 * @param processID 流程 ID * @return int 流程階段號碼 */ public int computeStepNo(String processID) { if ("PRO00011257319114890".equals(processID)) return 1; // 填寫請假單 if ("PRO00021257319208765".equals(processID)) return 2; // 代理人簽核 if ("PRO00031257334256625".equals(processID)) return 3; // 單位主管審核 if ("PRO00041257334258734".equals(processID)) return 4; // 一級主管審核 if ("PRO00051257334439531".equals(processID)) return 5; // 人事承辦簽核 if ("PRO00061257337437937".equals(processID)) return 6; // 人事二組組長簽核 if ("PRO00071257337440000".equals(processID)) return 7; // 人事主任簽核 if ("PRO00081257339613765".equals(processID)) return 8; // 校長簽核 if ("PRO00091257339616031".equals(processID)) return 9; // 會務組審核 if ("PRO00101257339618218".equals(processID)) return 10; // 會三組審核 if ("PRO00111257340818906".equals(processID)) return 11; // 人事承辦最終核定 return 0; } %> <% IS8N is8n = new IS8N(request, "com.everunion.resource.flow.order.order_fillForm"); // 資料庫連線 Connection conn = null; try { // 任務 ID String taskID = ""; if (request.getParameter("TaskID") != null) taskID = com.flowring.encode.UtilGlobals.Base64Decoding(request.getParameter("TaskID")); WFCI wfci = WFCIService.getWFCI(); // 任務對象 Task task = wfci.getTask(taskID); if (task == null) { throw new Exception("無此記錄: task is null!!"); } String taskName = ""; // 根 ID String rootId = ""; String InsID = ""; HashMap<String, String> hm = new HashMap<>(); // 窗體狀態名稱 String stateName = ""; // 窗體狀態編號 String stateID = ""; // 目前階段 id String processID = ""; String realExecutor = (String) session.getAttribute("cName"); // 現在的使用者 MemberRecord member = null; String loginName = (String) session.getAttribute("account"); String memberID = ""; // 數據集 Vector<MemberRecord> subStaff = new Vector<>(); // 取得現在的使用者 if (session.getAttribute("CurrentMember") != null) member = (MemberRecord) session.getAttribute("CurrentMember"); else { // 取得 MemberRecord member = wfci.getMemberByName(loginName); if (member != null) session.setAttribute("CurrentMember", member); // 設置 CurrentMember else return; } // 取得 id memberID = member.getID(); // 取得數據集 if (session.getAttribute("subStaff") != null) subStaff = (Vector<MemberRecord>) session.getAttribute("subStaff"); else subStaff = wfci.getSubMemListOfMember(memberID); // 登入帳號與真正執行者不同 if (!session.getAttribute("account").equals(member.getLoginID())) { %> <jsp:forward page="../taskDisabled.jsp" /> <% } // 是否完成 if ("complete".equals(task.getTaskState())) { // 跳轉 %> <jsp:forward page="../taskExist.jsp" /> <% } else { // 啟動 wfci.startTask(task); // 目前階段 id processID = task.getProcessID(); // 取得流程節點名稱 taskName = task.getName(); rootId = task.getRootID(); InsID = task.getInstanceID(); hm = task.getArtInstance().getAppDataMap(); artInstance = task.getArtInstance(); } %> <%= task.getTaskState() %><br> <% // 以下代碼是遍歷 hashMap、session 和 request;僅為方便調試 // 遍歷 hashMap out.println("hashMap:<br>"); Iterator<String> it = hm.keySet().iterator(); while (it.hasNext()) { String key = it.next(); String value = hm.get(key); out.println(key + " = " + value + "<br>"); } // 遍歷 session out.println("<br><br><br>session:<br>"); Enumeration<String> e = session.getAttributeNames(); while (e.hasMoreElements()) { String key = e.nextElement(); out.println(key + " = " + session.getAttribute(key) + "<br>"); } // 遍歷 request out.println("<br><br><br>request:<br>"); e = request.getParameterNames(); while (e.hasMoreElements()) { String key = e.nextElement(); out.println(key + " = " + request.getParameter(key) + "<br>"); } %> <jsp:useBean id="user" scope="session" type="com.flowring.struts.webapp.User"/> MemberID:<%= user.getMemberId() %><br> <!-- 印出使用者編號 --> User Name:<%= user.getCName() %><br> <!-- 印出使用者名稱 --> Role:<%= user.getRoleName() %><br> <!-- 印出使用者角色名稱 --> Dep:<%= user.getDepName() %><br> <!-- 印出使用者部門名稱 --> 員工號:<%= member.getMyID() %> <% } catch (Exception e) { // 打印錯誤 e.printStackTrace(); String[] path = this.getClass().toString().split("\\."); System.out.println(path[path.length - 1] + " error:/r/n" + e); } finally { DBConnect.freeConn(conn); } %>