應用 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);
}
%>
