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

📄 getnestingflowinfodao.java

📁 公司自己开发的工作流引擎
💻 JAVA
字号:
package cn.com.iaspec.workflow.engine.dao;

/**
 * <p>Title: 嵌套子流程的DAO类</p>
 *
 * <p>Description: 深圳市劳动仲裁信息管理系统</p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: 永泰软件工程有限公司</p>
 *
 * @author syj
 * @version 1.0
 */
import java.sql.*;
import org.apache.log4j.*;
import cn.com.iaspec.workflow.db.*;
import cn.com.iaspec.workflow.engine.*;
import cn.com.iaspec.workflow.vo.workflow.NextActivityInfo;
import java.util.ArrayList;

public class GetNestingFlowInfoDAO{
  private static Logger logger=Logger.getLogger(GetNestingFlowInfoDAO.class);

  /**
   * 根据嵌套子流程的活动实例ID取得嵌套子流程的流程实例ID
   * @param actInsID long
   * @return long
   */
  public static long getNestingProInsID(long actInsID){
    String sql="select sbc_priid from subflowcontext where sbc_atiid=?";
    Connection conn=null;
    ResultSet rs=null;
    long proInsID=0; //子流程的流程实例ID
    java.sql.PreparedStatement prep=null;
    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      prep=conn.prepareStatement(sql);
      prep.setLong(1,actInsID);
      rs=prep.executeQuery();
      while(rs.next()){
        proInsID=rs.getLong("sbc_priid");
      }
    }
    catch(SQLException e){
      e.printStackTrace();
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(rs);
      WorkflowDBConnectionManager.getInstance().close(prep,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }
    return proInsID;
  }

  /**
   * 生成工作项信息关联信息
   * @param FROM_USER String  //发送人
   * @param FROM_ITEM_ID long //发送工作项id
   * @param FROM_PRO_ID long //发送流程实例ID
   * @param FROM_ACT_NAME String//发送活动名称
   * @param TO_ITEM_ID long   //接收工作项id
   * @param TO_PRO_INST_ID long  //接收流程实例ID
   * @param TO_ACT_NAME String   //接收活动名称
   */
  public void insertwf_workitem_rel(String FROM_USER,long FROM_ITEM_ID,
      long FROM_PRO_ID,String FROM_ACT_NAME,long TO_ITEM_ID,long TO_PRO_INST_ID,
      String TO_ACT_NAME)
      throws NestingFlowException{
    String sql=
        "insert into wf_workitem_rel(FROM_ITEM_ID,FROM_USER,FROM_PRO_ID,FROM_ACT_NAME,"+
        " TO_ITEM_ID,TO_PRO_INST_ID,TO_ACT_NAME) value(?,?,?,?,?,?,?)";
    Connection conn=null;
    java.sql.PreparedStatement prep=null;
    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      prep=conn.prepareStatement(sql);
      prep.setLong(1,FROM_ITEM_ID);
      prep.setString(2,FROM_USER.trim());
      prep.setLong(3,FROM_PRO_ID);
      prep.setString(4,FROM_ACT_NAME.trim());
      prep.setLong(5,TO_ITEM_ID);
      prep.setLong(6,TO_PRO_INST_ID);
      prep.setString(7,TO_ACT_NAME.trim());
    }
    catch(SQLException e){
      e.printStackTrace();
      throw new NestingFlowException("添加工作项信息关联信息异常。");
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(prep,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }
  }

  /**
   * 根据嵌套子流程活动定义ID取得嵌套子流程的名称
   * @param actID long
   * @return String
   */
  public String getProcDefNameDAO(long actID){
    String sql="select sad_prdname from subflowactidesc where sad_atdid=?";
    Connection conn=null;
    ResultSet rs=null;
    String procDefName=null;
    java.sql.PreparedStatement prep=null;
    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      prep=conn.prepareStatement(sql);
      prep.setLong(1,actID);
      rs=prep.executeQuery();
      while(rs.next()){
        procDefName=rs.getString("sad_prdname");
      }
    }
    catch(SQLException e){
      e.printStackTrace();
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(rs);
      WorkflowDBConnectionManager.getInstance().close(prep,false);
      WorkflowDBConnectionManager.getInstance().close(conn);

    }

    return procDefName;
  }

  /**
   * 根据流程定义ID很活动名称取的活动的定义ID
   * @param procDefName long
   * @param atd_name String
   * @return long
   */
  public long getProcDef_actID_DAO(long procDefID,String atd_name){
    //首先判断开始节点指向的节点是否有多个,如果有多个则取得atd_name对应的活动
    String sql1=
        " select distinct a.trd_toatdid from trandefinition a,actidefinition b where a.trd_prdid=? "+
        " and a.trd_fromatdid=b.atd_id and b.atd_attid=5";
    String sql2=
        " select a.trd_toatdid from trandefinition t,actidefinition b where a.trd_prdid=? "+
        " and a.trd_fromatdid=b.atd_id and a.atd_name=? and b.atd_attid=5";
    Connection conn=null;
    ResultSet rs=null;
    long actID=0; //活动定义ID
    java.sql.PreparedStatement prep=null;
    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      prep=conn.prepareStatement(sql1);
      prep.setLong(1,procDefID);
      rs=prep.executeQuery();
      int count=0;
      while(rs.next()){
        actID=rs.getLong("trd_toatdid");
        count++;
      }
      //如果有多个则取得atd_name对应的活动
      if(count>1){
        prep=conn.prepareStatement(sql2);
        prep.setLong(1,procDefID);
        prep.setString(2,atd_name);
        rs=prep.executeQuery();
        if(rs.next()){
          actID=rs.getLong("trd_toatdid");
        }
      }
    }
    catch(SQLException e){
      e.printStackTrace();
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(rs);
      WorkflowDBConnectionManager.getInstance().close(prep,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }
    return actID;
  }

  /**
   * 根据活动id取得活动定义信息
   * @param actId long
   * @return NextActivityInfo
   */
  public NextActivityInfo getActiInfoByActId(long actId){
    String sql="select a.* from actidefinition a where a.atd_id =?";
    PreparedStatement prep=null;
    Connection conn=null;
    ResultSet rs=null;
    NextActivityInfo act=null;
    try{
      conn=WorkflowDBConnectionManager.getInstance().getConnection();
      prep=conn.prepareStatement(sql);
      prep.setLong(1,actId);
      rs=prep.executeQuery();
      if(rs.next()){
        act=new NextActivityInfo();
        act.setActivityID(rs.getLong("ATD_ID"));
        act.setUid(rs.getString("ATD_UID"));
        act.setAtdMaxTime(rs.getLong("ATD_MAXTIME"));
        act.setActivityName(rs.getString("ATD_NAME"));
        act.setDescription(rs.getString("ATD_DESC"));
        act.setNotifyMethod(rs.getInt("ATD_NOTIFYMETHOD"));
        act.setPriority(rs.getInt("ATD_PRIORITY"));
        act.setAtd_join(rs.getInt("ATD_JOIN"));
        act.setAtd_split(rs.getInt("ATD_SPLIT"));
        act.setActMethod(rs.getInt("ATD_TAMID"));
        act.setProcDefID(rs.getLong("ATD_PRDID"));
        act.setActType(rs.getInt("ATD_ATTID"));
      }
    }
    catch(Exception e){
      e.printStackTrace();
    }
    finally{
      WorkflowDBConnectionManager.getInstance().close(rs);
      WorkflowDBConnectionManager.getInstance().close(prep,false);
      WorkflowDBConnectionManager.getInstance().close(conn);
    }
    return act;
  }

  public static void main(String[] args){
    GetNestingFlowInfoDAO getnestingflowinfodao=new GetNestingFlowInfoDAO();
    System.out.println(getnestingflowinfodao.getNestingProInsID(11));
  }
}

⌨️ 快捷键说明

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