package com.vci.server.workflow.server.interfaceImpl; import java.util.ArrayList; import java.util.List; import org.apache.axis.utils.StringUtils; import com.vci.common.log.ServerWithLog4j; import com.vci.corba.framework.data.DeptInfo; import com.vci.corba.framework.data.RoleInfo; import com.vci.corba.framework.data.UserInfo; import com.vci.corba.framework.FrameworkServicePrx; import com.vci.server.base.utility.ServerServiceProvider; import com.vci.server.workflow.server.interfaces.IWorkflowUserService; /** * 根据规则解析人员 规则:user:成员,role:角色,department:部门 * * @author liudi * */ public class WorkFlowUserParserImpl implements IWorkflowUserService { public String[] getAllUsers2Task(String[] paramArrayOfString, String userName) throws Exception { if (paramArrayOfString == null || paramArrayOfString.length == 0) return new String[0]; FrameworkServicePrx frameService = ServerServiceProvider.getFrameService(); List canditates = new ArrayList(); ServerWithLog4j.logger.debug("用户解析类:WorkFlowUserParserImpl----------------------------------------"); for (int i = 0; i < paramArrayOfString.length; i++) { if (StringUtils.isEmpty(paramArrayOfString[i])) continue; int indexOf = paramArrayOfString[i].indexOf(":"); if (indexOf < 0) { canditates.add(paramArrayOfString[i]); continue; } String flag = paramArrayOfString[i].substring(0, indexOf).toLowerCase().trim(); String substring = paramArrayOfString[i].substring(indexOf + 1); if ("user".equals(flag)) { ServerWithLog4j.logger.debug("user----------------------------------------"); if (!canditates.contains(substring)) { canditates.add(substring); ServerWithLog4j.logger.debug("user:" + substring); } } if ("role".equals(flag)) { ServerWithLog4j.logger.debug("role----------------------------------------"); RoleInfo role = frameService.fetchRoleByName(substring); UserInfo[] users = frameService.fetchUserInfoByRoleId(role.id, (short)0); for (int j = 0; j < users.length; j++) { if (!canditates.contains(users[j].userName)) { canditates.add(users[j].userName); ServerWithLog4j.logger.debug("role:" + users[j].userName); } } // Role roleByName = new RoleService().selectRole(substring); // List selectUserByRoleId = new UserService().selectUserByRoleId(roleByName.getId()); // for (int j = 0; j < selectUserByRoleId.size(); j++) { // if (!canditates.contains(selectUserByRoleId.get(j).getUserName())) { // canditates.add(selectUserByRoleId.get(j).getUserName()); // ServerWithLog4j.logger.debug("role:" + selectUserByRoleId.get(j).getUserName()); // } // } } if ("dept".equals(flag)) { ServerWithLog4j.logger.debug("dept----------------------------------------"); DeptInfo dept = frameService.fetchDeptByDeptName(substring); UserInfo[] users = frameService.fetchUserInfoByDeptAndRole(new String[] {dept.id}, new String[0]); for (int j = 0; j < users.length; j++) { if (!canditates.contains(users[j].userName)) { canditates.add(users[j].userName); ServerWithLog4j.logger.debug("dept:" + users[j].userName); } } // Department selectDepartmentByName = new DepartmentService().selectDepartmentById(substring); // List userByDeptId = new UserService().getUserByDeptId(selectDepartmentByName.getId()); // for (int j = 0; j < userByDeptId.size(); j++) { // if (!canditates.contains(userByDeptId.get(j).getUserName())) { // canditates.add(userByDeptId.get(j).getUserName()); // ServerWithLog4j.logger.debug("dept:" + userByDeptId.get(j).getUserName()); // } // } } } return canditates.toArray(new String[0]); } }