⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hpdlfacade.java

📁 java实现的可配置的工作流引擎,采用jsp+javabean实现
💻 JAVA
字号:
/*
 * Created on 2004-10-16
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package com.hongsoft.agile.hpdl;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;

import com.hongsoft.res.pojo.PrivilegeType;

/**
 * @author hongsoft.com
 * 
 * TODO 这里只考虑了一个流程定义文件,以后可能要考虑多个文件的解析问题
 */
public class HpdlFacade {
	private static final String PROCESS_DEF_FILE_NAME = "processDefine.xml";

	private static ProcessesObject po;

	/**
	 * 解析流程定义文件
	 * 
	 * @return @throws
	 *         HpdlException
	 */
	public static ProcessesObject getProcessesObject(Session session)
			throws HpdlException, HibernateException {
		po = HpdlFactory.createPackageObject(session, PROCESS_DEF_FILE_NAME);
		return po;
	}
	/**
	 * 得到流程定义中的所有的流程的LIST
	 * @return  ProcessObject的list
	 */
    public static List getProcessList()
    {
        return  po.getProcessObjectList();		
    }
	/**
	 * 得到活动定义对应的流程定义ID,如果没有,则返回""
	 * 
	 * @param activityDefId
	 * @return @throws
	 *         HpdlException
	 */
	public static String getCorrespondingSubProcessId(String activityDefId) {
		List pList = po.getProcessObjectList();
		for (int i = 0; i < pList.size(); i++) {
			ProcessObject process = (ProcessObject) pList.get(i);
			List aList = process.getActivityObjectList();
			for (int j = 0; j < aList.size(); j++) {
				ActivityObject ao = (ActivityObject) aList.get(j);
				if (ao.getActivityDefId().equals(activityDefId))
					return ao.getCorrespondingSubProcessDefId();
			}
		}
		return "";
	}

	/**
	 * 得到活动定义对应的joinType,如果没有,则返回""
	 * 
	 * @param activityDefId
	 * @return @throws
	 *         HpdlException
	 */
	public static String getJoinType(String activityDefId) {
		List pList = po.getProcessObjectList();
		for (int i = 0; i < pList.size(); i++) {
			ProcessObject process = (ProcessObject) pList.get(i);
			List aList = process.getActivityObjectList();
			for (int j = 0; j < aList.size(); j++) {
				ActivityObject ao = (ActivityObject) aList.get(j);
				if (ao.getActivityDefId().equals(activityDefId))
					return ao.getJoinType();
			}
		}
		return "";
	}

	/**
	 * 得到活动定义对应的活动名称,如果没有,则返回""
	 * 
	 * @param activityDefId
	 * @return @throws
	 *         HpdlException
	 */
	public static String getActivityName(String activityDefId) {
		List pList = po.getProcessObjectList();
		for (int i = 0; i < pList.size(); i++) {
			ProcessObject process = (ProcessObject) pList.get(i);
			List aList = process.getActivityObjectList();
			for (int j = 0; j < aList.size(); j++) {
				ActivityObject ao = (ActivityObject) aList.get(j);
				if (ao.getActivityDefId().equals(activityDefId))
					return ao.getActivityDefName();
			}
		}
		return "";
	}

	/**
	 * 得到流程定义对应的流程名称,如果没有,则返回""
	 * 
	 * @param activityDefId
	 * @return @throws
	 *         HpdlException
	 */
	public static String getProcessName(String processDefId) {
		List pList = po.getProcessObjectList();
		for (int i = 0; i < pList.size(); i++) {
			ProcessObject process = (ProcessObject) pList.get(i);
			if (process.getProcessDefId().equals(processDefId))
				return process.getProcessName();
		}
		return "";
	}

	/**
	 * 得到某流程的某个活动后面的活动的nextActivity的list 如果没有,返回null
	 * 
	 * @param processDefId
	 * @return
	 */
	public static List getNextActivityDefList(String processDefId,
			String activityDefId) {
		List pList = po.getProcessObjectList();
		for (int i = 0; i < pList.size(); i++) {
			ProcessObject process = (ProcessObject) pList.get(i);
			if (processDefId.equalsIgnoreCase(process.getProcessDefId())) {
				List aList = process.getActivityObjectList();
				for (int j = 0; j < aList.size(); j++) {
					ActivityObject ao = (ActivityObject) aList.get(j);
					if (activityDefId.equalsIgnoreCase(ao.getActivityDefId()))
						return ao.getNextActivityList();
				}
			}
		}
		return null;
	}

	/**
	 * 得到某流程的某个活动前面的活动的preActivity的list 如果没有,返回null
	 * 
	 * @param processDefId
	 * @return
	 */
	public static List getPreActivityDefList(String processDefId,
			String activityDefId) {
		List pList = po.getProcessObjectList();
		for (int i = 0; i < pList.size(); i++) {
			ProcessObject process = (ProcessObject) pList.get(i);
			if (processDefId.equalsIgnoreCase(process.getProcessDefId())) {
				List aList = process.getActivityObjectList();
				for (int j = 0; j < aList.size(); j++) {
					ActivityObject ao = (ActivityObject) aList.get(j);
					if (activityDefId.equalsIgnoreCase(ao.getActivityDefId()))
						return ao.getPreActivityList();
				}
			}
		}
		return null;
	}

	/**
	 * 得到所有活动的ID/NAME,并从2开始排序,准备存到数据库中
	 * 
	 * @param processDefId
	 * @return
	 */
	public static List getPrivelegeList(ProcessesObject po) {
		List list = new ArrayList();
		int typeId = 2;
		List pList = po.getProcessObjectList();
		for (int i = 0; i < pList.size(); i++) {
			ProcessObject process = (ProcessObject) pList.get(i);
			List aList = process.getActivityObjectList();
			for (int j = 0; j < aList.size(); j++) {
				ActivityObject ao = (ActivityObject) aList.get(j);
				if (!ao.getActivityDefId().equalsIgnoreCase("start")
						&& !ao.getActivityDefId().equalsIgnoreCase("end")) {
					PrivilegeType pt = new PrivilegeType();
					pt.setTypeID(typeId);
					typeId++;
					pt.setName(ao.getActivityDefId());
					pt.setDescription(ao.getActivityDefName());
					list.add(pt);
					pt = null;
				}
			}
		}
		return list;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -