processworkflowdao.java
来自「公司自己开发的工作流引擎」· Java 代码 · 共 265 行
JAVA
265 行
package cn.com.iaspec.workflow.engine.dao;
import java.util.List;
import cn.com.iaspec.workflow.db.WorkflowDBConnectionManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.Connection;
import org.apache.log4j.Logger;
import java.sql.SQLException;
import java.util.ArrayList;
import cn.com.iaspec.workflow.vo.workflow.ProcessDefine;
import cn.com.iaspec.workflow.vo.db.WfProcInstance;
import cn.com.iaspec.workflow.vo.db.WfActiInstance;
import java.util.Vector;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: IASPEC Technologies</p>
*
* @author xiesonglin
* @version 1.0
*/
public class ProcessWorkflowDAO{
private static Logger logger=Logger.getLogger(ProcessWorkflowDAO.class);
public ProcessWorkflowDAO(){
}
/**
* 取出要返回活动的办理人
* @param workitemId 当前流程实例id
* @param returnToActId 要返回的活动定义id
* @return String
* @throws Exception
*/
public String getReturnActor(long proInstId,long returnToActDefId)
throws Exception{
String sendUserId="";
Connection conn=null;
Statement stm=null;
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
stm=conn.createStatement();
String sql=" select wki_id,wki_user from workitem where wki_id in "+
" (select max(a.wki_id) from workitem a inner join actiinstance b "+
" on a.wki_atiid=b.ati_id where b.ati_atdid="+returnToActDefId+
" and b.ati_priid="+proInstId+" and a.wki_state>=4) ";
logger.info("......query sql:"+sql);
ResultSet rs=stm.executeQuery(sql);
if(rs.next()){
sendUserId=rs.getString("wki_user");
}
}
finally{
WorkflowDBConnectionManager.getInstance().close(stm,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
return sendUserId;
}
/**
* 取出要返回活动的办理人(可能有多个)
* @param workitemId 当前流程实例id
* @param returnToActId 要返回的活动定义id
* @return Vector
* @throws Exception
*/
public Vector getReturnActors(long proInstId,long returnToActDefId)
throws Exception{
Vector vector=new Vector();
Connection conn=null;
Statement stm=null;
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
stm=conn.createStatement();
String sql=" select distinct wki_id,wki_user from workitem where wki_id in "+
" (select a.wki_id from workitem a inner join actiinstance b "+
" on a.wki_atiid=b.ati_id where b.ati_atdid="+returnToActDefId+
" and b.ati_priid="+proInstId+" and a.wki_state>=4) ";
logger.info("......query sql:"+sql);
ResultSet rs=stm.executeQuery(sql);
while(rs.next()){
vector.add(rs.getString("wki_user"));
}
}
finally{
WorkflowDBConnectionManager.getInstance().close(stm,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
return vector;
}
/**
* 查询所有有效的流程定义
*
* @return List
* @throws Exception
*/
public List getAllProcesses()
throws Exception{
String sql="select * from procdefinition where prd_flag = 0";
Connection conn=null;
Statement stm=null;
List processList=new ArrayList();
ProcessDefine procDef=null;
ResultSet rs=null;
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
stm=conn.createStatement();
rs=stm.executeQuery(sql);
while(rs.next()){
procDef=new ProcessDefine();
procDef.setProcessDefineId(rs.getLong("prd_id"));
procDef.setProcessDefineName(rs.getString("prd_name"));
procDef.setDescription(rs.getString("prd_description"));
procDef.setVersion(rs.getString("prd_version"));
procDef.setCreateDate(rs.getDate("prd_createDate"));
procDef.setCreator(rs.getString("prd_creator"));
processList.add(procDef);
}
}
catch(SQLException sqle){
sqle.printStackTrace();
throw sqle;
}
finally{
WorkflowDBConnectionManager.getInstance().close(rs);
WorkflowDBConnectionManager.getInstance().close(stm,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
return processList;
}
/**
* 根据流程实例id取得流程实例信息
* @param procInstanceId long
* @return WfProcInstance
* @throws Exception
*/
public WfProcInstance getWfProcInstanceInfo(long procInstanceId)
throws Exception{
String sql="select b.pri_id,b.pri_state,b.pri_endtime,b.pri_starttime,a.prd_maxtime,a.prd_estimatetime "+
" from procdefinition a,procinstance b where a.prd_id=b.pri_prdid "+
" and b.pri_id="+procInstanceId;
Connection conn=null;
Statement stm=null;
ResultSet rs=null;
WfProcInstance procInst=null;
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
stm=conn.createStatement();
rs=stm.executeQuery(sql);
while(rs.next()){
procInst=new WfProcInstance();
procInst.setPriId(rs.getLong("pri_id"));
procInst.setPriState(rs.getInt("pri_state"));
procInst.setPriStartTime(rs.getTimestamp("pri_starttime"));
procInst.setPrdMaxTime(rs.getLong("prd_maxtime"));
procInst.setPrdEstimateTime(rs.getLong("prd_estimatetime"));
procInst.setPriEndTime(rs.getTimestamp("pri_endtime"));
}
}
finally{
WorkflowDBConnectionManager.getInstance().close(rs);
WorkflowDBConnectionManager.getInstance().close(stm,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
return procInst;
}
/**
* 根据活动实例id取得活动实例信息
* @param procInstanceId long
* @return WfProcInstance
* @throws Exception
*/
public WfActiInstance getWfActiInstanceInfo(long actiInstanceId)
throws Exception{
String sql="select b.ati_id,b.ati_state,b.ati_starttime,ati_endtime,a.atd_id,a.atd_uid,a.atd_maxtime,a.atd_estimatetime "+
" from actidefinition a,actiinstance b where a.atd_id=b.ati_atdid "+
" and b.ati_id="+actiInstanceId;
logger.info("......query sql:"+sql);
Connection conn=null;
Statement stm=null;
ResultSet rs=null;
WfActiInstance actiInst=null;
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
stm=conn.createStatement();
rs=stm.executeQuery(sql);
while(rs.next()){
actiInst=new WfActiInstance();
actiInst.setAtiId(rs.getLong("ati_id"));
actiInst.setAtiState(rs.getInt("ati_state"));
actiInst.setAtiStartTime(rs.getTimestamp("ati_starttime"));
actiInst.setAtdMaxTime(rs.getLong("atd_maxtime"));
actiInst.setAtdId(rs.getLong("atd_id"));
actiInst.setAtdUid(rs.getString("atd_uid"));
actiInst.setAtdEstimateTime(rs.getLong("atd_estimatetime"));
actiInst.setAtiEndTime(rs.getTimestamp("ati_endtime"));
}
}
finally{
WorkflowDBConnectionManager.getInstance().close(rs);
WorkflowDBConnectionManager.getInstance().close(stm,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
return actiInst;
}
/**
* 根据活动实例id取得活动实例信息
* @param workitemId 工作项id
* @return WfActiInstance
* @throws Exception
*/
public WfActiInstance getWfActiInstanceInfoByWorkitemId(long workitemId)
throws Exception{
String sql="select b.ati_id,b.ati_state,b.ati_starttime,ati_endtime,a.atd_id,a.atd_uid,a.atd_maxtime,a.atd_estimatetime "+
" from actidefinition a,actiinstance b,workitem c where a.atd_id=b.ati_atdid and c.wki_atiid=b.ati_id "+
" and c.wki_id="+workitemId;
logger.info("......query sql:"+sql);
Connection conn=null;
Statement stm=null;
ResultSet rs=null;
WfActiInstance actiInst=null;
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
stm=conn.createStatement();
rs=stm.executeQuery(sql);
while(rs.next()){
actiInst=new WfActiInstance();
actiInst.setAtiId(rs.getLong("ati_id"));
actiInst.setAtiState(rs.getInt("ati_state"));
actiInst.setAtiStartTime(rs.getTimestamp("ati_starttime"));
actiInst.setAtdMaxTime(rs.getLong("atd_maxtime"));
actiInst.setAtdId(rs.getLong("atd_id"));
actiInst.setAtdUid(rs.getString("atd_uid"));
actiInst.setAtdEstimateTime(rs.getLong("atd_estimatetime"));
actiInst.setAtiEndTime(rs.getTimestamp("ati_endtime"));
}
}
finally{
WorkflowDBConnectionManager.getInstance().close(rs);
WorkflowDBConnectionManager.getInstance().close(stm,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
return actiInst;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?