屹砾

屹砾技术博客,记录生活点滴。
Email/QQ/MSN/GTalk: eli.wuhan@gmail.com

留言簿

积分与排名

Growing & Life

JavaSE & JavaEE

Linux & Unix

时事点评

阅读排行榜

评论排行榜

JbpmConfigurationHelper

 

package eli.jbpm;

import java.util.List;
import java.util.Set;

import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.db.GraphSession;
import org.jbpm.graph.def.Node;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.node.TaskNode;
import org.jbpm.taskmgmt.def.Task;
/**
@author <a href=mailto:eli.wuhan@gmail.com>屹砾</a>
*/

public class JbpmConfigurationHelper {
    
private static final JbpmConfigurationHelper jbpmConfigurationHelper = new JbpmConfigurationHelper();
    
protected JbpmConfiguration jbpmConfiguration = JbpmConfiguration
            .getInstance();

    
public static JbpmConfigurationHelper getInstance() {
        
return jbpmConfigurationHelper;
    }


    
/**
     * 获取 JbpmConfiguration
     * 
     * 
@return JbpmConfiguration
     
*/

    
public JbpmConfiguration getJbpmConfiguration() {
        
return jbpmConfiguration;
    }


    
/**
     * 获取 JbpmContext
     * 
     * 
@return JbpmContext
     
*/

    
public JbpmContext createJbpmContext() {
        
return jbpmConfiguration.createJbpmContext();
    }


    
/**
     * 获取 GraphSession
     * 
     * 
@return GraphSession
     
*/

    
public GraphSession getGraphSession() {
        
return createJbpmContext().getGraphSession();
    }


    
/**
     * 部署流程定义
     * 
     * 
@param processDefinition
     
*/

    
public void deployProcessDefinition(ProcessDefinition processDefinition) {
        JbpmContext context 
= createJbpmContext();
        
try {
            context.deployProcessDefinition(processDefinition);
        }
 finally {
            context.close();
        }

    }


    
/**
     * 创建JBPM数据表
     
*/

    
public void createSchema() {
        jbpmConfiguration.createSchema();
    }


    
/**
     * 删除JBPM数据表
     
*/

    
public void dropSchema() {
        jbpmConfiguration.dropSchema();
    }


    
/**
     * 获取所有的流程定义.
     * 
     * 
@return 流程定义集合
     
*/

    @SuppressWarnings(
"unchecked")
    
public List<ProcessDefinition> getProcessDefinitions() {
        
return getGraphSession().findAllProcessDefinitions();
    }


    
/**
     * 获取指定的流程定义
     * 
     * 
@param processDefinitionId
     *            流程定义编号
     * 
@return 流程定义
     
*/

    
public ProcessDefinition getProcessDefinition(Long processDefinitionId) {
        
return getGraphSession().getProcessDefinition(processDefinitionId);
    }


    
/**
     * 获取指定的流程定义
     * 
     * 
@param processDefinitionName
     *            流程定义名称
     * 
@return 流程定义
     
*/

    
public ProcessDefinition getProcessDefinition(String processDefinitionName) {
        
return getGraphSession().findLatestProcessDefinition(
                processDefinitionName);
    }


    
/**
     * 获取所有的节点
     * 
     * 
@param processDefinitionId
     *            流程定义编号
     * 
@return 节点集合
     
*/

    @SuppressWarnings(
"unchecked")
    
public List<Node> getNodesFromProcessDefinition(Long processDefinitionId) {
        
return getProcessDefinition(processDefinitionId).getNodes();
    }


    
/**
     * 获取所有的节点
     * 
     * 
@param processDefinitionName
     *            流程定义名称
     * 
@return 节点集合
     
*/

    @SuppressWarnings(
"unchecked")
    
public List<Node> getNodesFromProcessDefinition(String processDefinitionName) {
        
return getProcessDefinition(processDefinitionName).getNodes();
    }


    
/**
     * 获取指定的节点
     * 
     * 
@param processDefinitionId
     *            流程定义编号
     * 
@param nodeName
     *            节点名称
     * 
@return 节点
     
*/

    
public Node getNodeFromProcessDefinition(Long processDefinitionId,
            String nodeName) 
{
        
return getProcessDefinition(processDefinitionId).getNode(nodeName);
    }


    
/**
     * 获取指定的节点
     * 
     * 
@param processDefinitionName
     *            流程定义名称
     * 
@param nodeName
     *            节点名称
     * 
@return 节点
     
*/

    
public Node getNodeFromProcessDefinition(String processDefinitionName,
            String nodeName) 
{
        
return getProcessDefinition(processDefinitionName).getNode(nodeName);
    }


    
/**
     * 获取所有的任务
     * 
     * 
@param processDefinitionId
     *            流程定义编号
     * 
@param nodeName
     *            节点名称
     * 
@return 任务集合
     
*/

    @SuppressWarnings(
"unchecked")
    
public Set<Task> getTasksFromTaskNode(Long processDefinitionId,
            String nodeName) 
{
        Node tmp 
= getNodeFromProcessDefinition(processDefinitionId, nodeName);
        
if (tmp instanceof TaskNode) {
            
return ((TaskNode) tmp).getTasks();
        }

        
throw new ClassCastException("此节点不是任务节点");
    }


    
/**
     * 获取所有的任务
     * 
     * 
@param processDefinitionName
     *            流程定义名称
     * 
@param nodeName
     *            节点名称
     * 
@return 任务集合
     
*/

    @SuppressWarnings(
"unchecked")
    
public Set<Task> getTasksFromTaskNode(String processDefinitionName,
            String nodeName) 
{
        Node tmp 
= getNodeFromProcessDefinition(processDefinitionName, nodeName);
        
if (tmp instanceof TaskNode) {
            
return ((TaskNode) tmp).getTasks();
        }

        
throw new ClassCastException("此节点不是任务节点");
    }


    
/**
     * 获取指定的任务
     * 
     * 
@param processDefinitionId
     *            流程定义编号
     * 
@param nodeName
     *            节点名称
     * 
@param taskName
     *            任务名称
     * 
@return 任务
     
*/

    
public Task getTaskFromTaskNode(Long processDefinitionId, String nodeName,
            String taskName) 
{
        Node tmp 
= getNodeFromProcessDefinition(processDefinitionId, nodeName);
        
if (tmp instanceof TaskNode) {
            
return ((TaskNode) tmp).getTask(taskName);
        }

        
throw new ClassCastException("此节点不是任务节点");
    }


    
/**
     * 获取指定的任务
     * 
     * 
@param processDefinitionName
     *            流程定义名称
     * 
@param nodeName
     *            节点名称
     * 
@param taskName
     *            任务名称
     * 
@return 任务
     
*/

    
public Task getTaskFromTaskNode(String processDefinitionName,
            String nodeName, String taskName) 
{
        Node tmp 
= getNodeFromProcessDefinition(processDefinitionName, nodeName);
        
if (tmp instanceof TaskNode) {
            
return ((TaskNode) tmp).getTask(taskName);
        }

        
throw new ClassCastException("此节点不是任务节点");
    }


    
/**
     * 获取指定流程定义的所有流程实例
     * 
     * 
@param processDefinitionId
     *            流程定义编号
     * 
@return 流程实例集合
     
*/

    @SuppressWarnings(
"unchecked")
    
public List<ProcessInstance> getProcessInstances(Long processDefinitionId) {
        
return getGraphSession().findProcessInstances(processDefinitionId);
    }


    
/**
     * 获取指定的流程实例
     * 
     * 
@param processInstanceId
     *            流程实例编号
     * 
@return 流程实例
     
*/

    
public ProcessInstance getProcessInstance(Long processInstanceId) {
        
return getGraphSession().getProcessInstance(processInstanceId);
    }

    
}

posted on 2008-07-04 12:48 屹砾 阅读(35) 评论(0)  编辑  收藏 所属分类: BPM / Workflow


标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-07-10 14:24 编辑过
 
成果网帮您增加网站收入
 
相关链接:
网站导航: