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