應用 JSP 範例:獲取主管和最高領導
範例:獲取主管和最高領導
// 普通職員 String memberID = "MEM00300455304127"; MemberRecord member = wfci.getMember(memberID); // 獲取主管 String managerDepartment = wfci.getManager(memberID)[0]; String managerRole = wfci.getManager(memberID)[1]; String managerID = wfci.getManager(memberID)[2]; // 獲取最高領導(有時可能無法獲取) Role resultCompany = wfci.getManagerRole("company"); Vector v = resultCompany.getMemberList(); String headID = (String) v.elementAt(0); out.println("最高領導:" + wfci.getMember(headID).getName() + "<br>");
範例:遍歷全公司
<%@ 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" %> <%! /** * 遍歷部門、職務下的所有子元素 * 由於部門和職務的遍歷方法很類似,故整合在一起 * @param wfci * @param vector 保存 Department、Role 的 ID 集合 * @param parentID 此節點的 ID * @param number 第幾層子元素 * @return String 頁面顯示的內容 */ public String getChild(WFCI wfci, Vector<String> vector, String parentID, int number) { StringBuilder child = new StringBuilder(); for (int index = 0; index < vector.size(); index++) { String childID = vector.elementAt(index); Object childElement = null; Vector<String> roleVector = null; Vector<String> depVector = null; String getParentID = ""; String treeImg = ""; String childName = ""; // 如果是職務 if (wfci.getRole(childID) instanceof Role) { Role roleChild = wfci.getRole(childID); getParentID = roleChild.getParentID(); childName = roleChild.getName(); childElement = roleChild; roleVector = roleChild.getSubRoleList(); depVector = roleChild.getSubDepartmentList(); treeImg = "<IMG SRC='./image/tree_role.gif' ALT='職務'>"; } // 如果是部門 else if (wfci.getDepartment(childID) instanceof Department) { Department depChild = wfci.getDepartment(childID); getParentID = depChild.getParentID(); childName = depChild.getName(); roleVector = depChild.getRoleList(); depVector = depChild.getSubDepartmentList(); treeImg = "<IMG SRC='./image/tree_department.gif' ALT='部門'>"; } else { return ""; } if (!parentID.equals(getParentID)) continue; child.append(addSpace(number)); child.append("<span onClick=\"viewChild('").append(childID).append("')\">"); child.append("<IMG id='img_").append(childID).append("' src='./image/closeView.gif'>").append(treeImg); child.append(childName).append("</span><br/>/r/n"); child.append("<div id='").append(childID).append("' style='display:none'>"); // 如果是職務,則還需遍歷它的直屬員工。部門下不能有直屬員工 if (childElement instanceof Role) { child.append(getChildMember(wfci, (Role) childElement, number + 1)); } child.append(getChild(wfci, roleVector, childID, number + 1)); child.append(getChild(wfci, depVector, childID, number + 1)); child.append("</div>"); } return child.toString(); } /** * 遍歷此職務下的直屬員工 * @param wfci * @param role 需遍歷的職務 * @param number 第幾層子元素 * @return String 頁面顯示的內容 */ public String getChildMember(WFCI wfci, Role role, int number) { StringBuilder members = new StringBuilder(); // 獲取此 role 職務下的所有員工 (包括非直屬),還沒有獲取職務下的直屬員工的方法 Vector<String> memberIDs = role.getMemberList(); for (int index = 0; index < memberIDs.size(); index++) { String memberID = memberIDs.elementAt(index); MemberRecord member = wfci.getMember(memberID); // 獲取此員工的所有職務 Vector<memberDR> memberRoles = member.getRoleList(); for (int i = 0; i < memberRoles.size(); i++) { memberDR mDR = memberRoles.elementAt(i); // 如果不是 role 的直屬職務,則跳過 if (!role.getID().equals(mDR.getRoleID())) continue; members.append(addSpace(number)); members.append("<IMG SRC='image/tree_member.gif' ALT='職員'>"); members.append("<a HREF='#' onClick=\"set('").append(member.getIdentityID()); members.append("', '").append(member.getName()).append("', '").append(mDR.getRoleName()); members.append("', '").append(mDR.getDepartmentName()).append("', '").append(member.getLoginID()).append("')\">"); members.append(member.getName()).append("</a><br/>/r/n"); } } return members.toString(); } /** * 增加空格,以表明層次 * @param number 第幾層子元素 * @return String 頁面顯示的內容 */ public String addSpace(int number) { StringBuilder space = new StringBuilder(); for (int j = 0; j < number; j++) { space.append(" "); } return space.toString(); } %> <% try { WFCI wfci = WFCIService.getWFCI(); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>遍歷公司</TITLE> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript"> function viewChild(dataID) { var data = document.getElementById(dataID); var method = data.getAttribute("kk"); // kk 是個隨意起的名稱 var dataImg = document.getElementById("img_" + dataID); if ("block" === method) { data.style.cssText = "display:none"; dataImg.setAttribute("src", "image/closeView.gif"); data.setAttribute("kk", "none"); } // 此節點下沒內容時 else if ("" === data.innerHTML || data.innerHTML === null) { dataImg.setAttribute("src", "image/none.gif"); } // method == "none" 以及 method == null 時 else { data.style.cssText = "display:block"; dataImg.setAttribute("src", "image/openView.gif"); data.setAttribute("kk", "block"); } } </script> </HEAD> <BODY> <% Company com = wfci.getCompany(); out.println("<IMG SRC='./image/tree_company.gif' ALT='公司'>"); out.println(com.getName() + "<br>"); // 遍歷 company // 先遍歷 company 下的職務 Vector<String> roles = wfci.getAllRoleIDOfCompany(); out.println(getChild(wfci, roles, com.getID(), 1)); // 再遍歷 company 下的部門 Vector<String> departments = wfci.getAllDepIDOfCompany(); out.println(getChild(wfci, departments, com.getID(), 1)); // 顯示未任職人員 Vector<MemberRecord> members = wfci.getAllMember(); out.print(addSpace(1)); out.print("<span onClick=\"viewChild('noRoleMem')\">"); out.print("<IMG id='img_noRoleMem' src='./image/move_right.gif'>"); out.print("<IMG SRC='./image/norole.gif' ALT='未任職'>未任職</span><br/>/r/n"); out.print("<div id='noRoleMem' style='display:none'>"); for (int index = 0; index < members.size(); index++) { MemberRecord member = members.elementAt(index); // 獲取此員工的主職務 String memberRole = member.getMainRoleID(); // 如果此員工沒有主職務,則說明他是未任職人員。只對未任職人員作如下顯示 if (!"".equals(memberRole) && memberRole != null) continue; out.print(addSpace(2)); out.print("<IMG SRC='image/tree_member.gif' ALT='職員'>"); out.print(member.getName() + "<br/>/r/n"); } %> </BODY> </HTML> <% } catch (Exception e) { // 打印錯誤 e.printStackTrace(); String[] path = this.getClass().toString().split("\\."); System.out.println(path[path.length - 1] + " error" + e); } %>