📄 getnestingflowinfodao.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 + -