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

📄 hibernateprocess.java

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

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.type.StringType;

import com.hongsoft.agile.AgileActivity;
import com.hongsoft.agile.AgileException;
import com.hongsoft.agile.pojo.ProcessInstance;

/**
 * @author hongsoft.com TODO To change the template for this generated type comment go to Window - Preferences - Java -
 *         Code Style - Code Templates
 */
public class HibernateProcess {
    /**
     * 插入一个对象
     *
     * @param session
     * @param ai
     * @throws HibernateException
     */
    public void insert(Session session, ProcessInstance pi) throws HibernateException {
        session.save(pi);
    }

    /**
     * 获取
     *
     * @param session
     * @param processInsId
     * @return
     * @throws HibernateException
     */
    public ProcessInstance getByProcessInsId(Session session, String processInsId) throws HibernateException {
        SQLQuery query = session
                .createSQLQuery("SELECT a FROM ProcessInstance as a WHERE a.processInsId=:processInsId");
        query.setParameter("processInsId", processInsId, new StringType());
        List list = query.list();
        if (list != null && list.size() != 0)
            return (ProcessInstance) list.get(0);
        return null;
    }

    /**
     * 得到流程的最大实例号
     *
     * @param session
     * @param processDefId
     * @return
     * @throws HibernateException
     */
    public static int getMaxProcessInsId(Session session, String processDefId) throws HibernateException {
        String insId;
        List processInsList = (new HibernateActivity()).getByProcessDefId(session, processDefId);
        if (processInsList == null || processInsList.size() == 0)
            return 0;
        else
            insId = ((AgileActivity) processInsList.get(processInsList.size() - 1)).getProcessInsId();
        return Util.getIntIdByInsId(insId);
    }

    /**
     * 开始一个是子流程的流程,它肯定是从一个活动定义开始的 这里的先后顺序不能发生改变!
     *
     * @param session
     * @param activityDefId
     * @throws HibernateException
     */
    public void startSubProcess(Session session, String parentProcessInsId, String parentActivityInsId,
            String subProcessDefId) throws HibernateException, AgileException {
        // 1)向ProcessInstance表中插入数据
        ProcessInstance pi = new ProcessInstance();
        pi.setParentProcessInsId(parentProcessInsId);
        pi.setParentActivityInsId(parentActivityInsId);
        pi.setProcessInsId(subProcessDefId + "_" + (getMaxProcessInsId(session, subProcessDefId) + 1));
        // pi.setProcessInsId(subProcessDefId+"_"+getMaxProcessInsId(session,subProcessDefId));
        (new HibernateProcess()).insert(session, pi);
        // 2)启动流程
        FacadeProcess.startProcess(session, subProcessDefId);
    }

}

⌨️ 快捷键说明

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