📄 wfworker.java
字号:
/*
* Created on 2007-4-5
* Lasted modified 2007-04-30
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
* 最后更新 2008-04-20 更新流程没激活的bug
*/
package com.nari.pmos.wf.workflow;
import java.util.Calendar;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import pbos.dao.DB.ConnectParameters;
import pbos.dao.helper.DAOFactory;
import pbos.dao.helper.DAOParameter;
import pbos.dao.services.PbosDAO;
import com.nari.pmos.common.utilities.SequenceMgr;
import com.nari.pmos.wf.table_wf.WfActivityVo;
import com.nari.pmos.wf.table_wf.WfAttributeVo;
import com.nari.pmos.wf.table_wf.WfInsActivityVo;
import com.nari.pmos.wf.table_wf.WfInsAttributeVo;
import com.nari.pmos.wf.table_wf.WfInsOperationVo;
import com.nari.pmos.wf.table_wf.WfInstanceVo;
import com.nari.pmos.wf.table_wf.WfModelVo;
import com.nari.pmos.wf.table_wf.WfParticipantVo;
import com.nari.pmos.wf.table_wf.WfTransitionVo;
import com.nari.pmos.wf.view_wf.WfWorkItemVo;
import com.nari.pmos.wf.workflow.InsAttribute;
/**
* @author hujun
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style - Code Templates
*/
public class WfWorker {
private String userAccount = null;
private PbosDAO DAO = null;
private String dsName = "jdbc/pmosDB";
/**
*
*/
public WfWorker() {
super();
// TODO Auto-generated constructor stub
}
private String date2string(Date date, String format) {
if (date == null) {
return null;
}
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
return dateFormat.format(date);
}
private String date2Str(Date dt){
String s = "";
s = date2string(dt, "yyyy-MM-dd");
return s;
}
private String dateTime2Str(Date dt){
String s = "";
s = date2string(dt, "yyyy-MM-dd HH:mm:ss");
return s;
}
public Collection rtvDefModels() {
Collection rcol = null;
getDAO();
DAOParameter m_params = DAOFactory.getDAOParameter();
m_params.setCandiateClass(WfModelVo.class);
Collection col = (Collection) DAO.findData(m_params);
if (col != null) {
rcol = new ArrayList();
Iterator it = col.iterator();
while (it.hasNext()) {
WfModelVo modelVo = (WfModelVo) it.next();
rcol.add(modelVo);
}
col.clear();
}
closeDAO();
return rcol;
}
public Collection rtvDefAvtivities(String modelName) {
Collection rcol = null;
getDAO();
DAOParameter m_params = DAOFactory.getDAOParameter();
m_params.setCandiateClass(WfActivityVo.class);
m_params.setFilter("Model_Name = :m_Model_Name");
m_params.setParameter("m_Model_Name", modelName);
Collection col = (Collection) DAO.findData(m_params);
if (col != null) {
rcol = new ArrayList();
Iterator it = col.iterator();
while (it.hasNext()) {
WfActivityVo actVo = (WfActivityVo) it.next();
rcol.add(actVo);
}
col.clear();
}
closeDAO();
return rcol;
}
//
public Collection rtvDefAttributes(String modelName) {
Collection rcol = null;
getDAO();
DAOParameter m_params = DAOFactory.getDAOParameter();
m_params.setCandiateClass(WfAttributeVo.class);
m_params.setFilter("Model_Name = :m_Model_Name");
m_params.setParameter("m_Model_Name", modelName);
Collection col = (Collection) DAO.findData(m_params);
if (col != null) {
rcol = new ArrayList();
Iterator it = col.iterator();
while (it.hasNext()) {
WfAttributeVo attrVo = (WfAttributeVo) it.next();
rcol.add(attrVo);
}
col.clear();
}
closeDAO();
return rcol;
}
//
public Collection rtvDefPartivipants(String modelName) {
Collection rcol = null;
getDAO();
DAOParameter m_params = DAOFactory.getDAOParameter();
m_params.setCandiateClass(WfParticipantVo.class);
m_params.setFilter("Model_Name = :m_Model_Name");
m_params.setParameter("m_Model_Name", modelName);
Collection col = (Collection) DAO.findData(m_params);
if (col != null) {
rcol = new ArrayList();
Iterator it = col.iterator();
while (it.hasNext()) {
WfParticipantVo patVo = (WfParticipantVo) it.next();
rcol.add(patVo);
}
col.clear();
}
closeDAO();
return rcol;
}
public Collection rtvDefTransitions(String modelName) {
Collection rcol = null;
getDAO();
DAOParameter m_params = DAOFactory.getDAOParameter();
m_params.setCandiateClass(WfTransitionVo.class);
m_params.setFilter("Model_Name = :m_Model_Name");
m_params.setParameter("m_Model_Name", modelName);
Collection col = (Collection) DAO.findData(m_params);
if (col != null) {
rcol = new ArrayList();
Iterator it = col.iterator();
while (it.hasNext()) {
WfTransitionVo trVo = (WfTransitionVo) it.next();
rcol.add(trVo);
}
col.clear();
}
closeDAO();
return rcol;
}
private String insAttributes2Str(Collection initVaues) {
String r = "";
StringBuffer sb = new StringBuffer();
Iterator it = initVaues.iterator();
while (it.hasNext()) {
InsAttribute item = (InsAttribute) it.next();
sb.append(InsAttribute.Format(item) + ";");
}
int n = sb.length();
if (n > 0)
sb.deleteCharAt(n - 1);
r = sb.toString();
return r;
}
public long createInstance(String modelName, Collection initVaues) {
long r = -1;
getDAO();
String values = insAttributes2Str(initVaues);
DAOParameter m_params = DAOFactory.getDAOParameter();
m_params
.setProcedure("{call pmoswf.CreateInstance(:m_name,:m_values,:m_id) }");
m_params.setParameter("m_name", modelName);
m_params.setParameter("m_values", values);
m_params.setParameter("m_id", Long.class);
boolean cr = DAO.callStoredProcedure(m_params);
if (cr) {
Long L = (Long) m_params.getParameter("m_id");
r = L.longValue();
}
closeDAO();
return r;
}
//
public boolean syncInstanceStatus(long instanceID) {
getDAO();
DAOParameter m_params = DAOFactory.getDAOParameter();
m_params.setProcedure("{call pmoswf.CheckInstanceStatus(:m_id) }");
m_params.setParameter("m_id", new Long(instanceID));
boolean cr = DAO.callStoredProcedure(m_params);
closeDAO();
return cr;
}
//
private long rtvInstanceId(String modelName, Collection keyVaues) {
String values = null;
long id = -1;
Iterator it = keyVaues.iterator();
while (it.hasNext()) {
InsAttribute ia = (InsAttribute) it.next();
if (values != null)
values = values + ";" + InsAttribute.Format(ia);
else
values = InsAttribute.Format(ia);
}
String m_sql = "pmoswf.RtvInstanceId('" + modelName + "','" + values
+ "')";
Long m_long = (Long) DAO.findDefaultVariable(m_sql, Long.class);
if (m_long != null)
id = m_long.longValue();
return id;
}
private long rtvInstanceId(String modelName, String keyStr, String valStr) {
String values = keyStr + ',' + valStr;
long id = -1;
String m_sql = "pmoswf.RtvInstanceId('" + modelName + "','" + values
+ "')";
Long m_long = (Long) DAO.findDefaultVariable(m_sql, Long.class);
if (m_long != null)
id = m_long.longValue();
return id;
}
public WfInstanceVo rtvInstance(String modelName, String keyStr,
String valStr) {
getDAO();
WfInstanceVo insVo = null;
long insId = rtvInstanceId(modelName, keyStr, valStr);
if (insId > 0) {
DAOParameter m_params = DAOFactory.getDAOParameter();
m_params.setCandiateClass(WfInstanceVo.class);
m_params.setFilter("Instance_Id = :m_Instance_Id");
m_params.setParameter("m_Instance_Id", new Long(insId));
Collection col = (Collection) DAO.findData(m_params);
if (col != null) {
Iterator it = col.iterator();
if (it.hasNext())
insVo = (WfInstanceVo) it.next();
col.clear();
}
}
closeDAO();
return insVo;
}
//
public WfInstanceVo rtvInstance(String modelName, Collection keyVaues) {
getDAO();
WfInstanceVo insVo = null;
long insId = rtvInstanceId(modelName, keyVaues);
if (insId > 0) {
DAOParameter m_params = DAOFactory.getDAOParameter();
m_params.setCandiateClass(WfInstanceVo.class);
m_params.setFilter("Instance_Id = :m_Instance_Id");
m_params.setParameter("m_Instance_Id", new Long(insId));
Collection col = (Collection) DAO.findData(m_params);
if (col != null) {
Iterator it = col.iterator();
if (it.hasNext())
insVo = (WfInstanceVo) it.next();
col.clear();
}
}
closeDAO();
return insVo;
}
public Collection rtvInstances(String modelName, Date beginDt, Date endDt) {
Collection rcol = null;
getDAO();
DAOParameter m_params = DAOFactory.getDAOParameter();
m_params.setCandiateClass(WfInstanceVo.class);
m_params
.setFilter("Model_Name = :m_name and Created_Time >= :m_begin and Created_Time <= :m_end");
m_params.setParameter("m_name", modelName);
m_params.setParameter("m_begin", beginDt);
m_params.setParameter("m_end", endDt);
Collection col = (Collection) DAO.findData(m_params);
if (col != null) {
rcol = new ArrayList();
Iterator it = col.iterator();
while (it.hasNext()) {
WfInstanceVo insVo = (WfInstanceVo) it.next();
rcol.add(insVo);
}
col.clear();
}
closeDAO();
return rcol;
}
public Collection rtvInstances(String modelName, Long minId, Long maxId) {
Collection rcol = null;
getDAO();
DAOParameter m_params = DAOFactory.getDAOParameter();
m_params.setCandiateClass(WfInstanceVo.class);
m_params
.setFilter("Model_Name = :m_name and Instance_Id >= :m_startid and Instance_Id <= :m_endid");
m_params.setParameter("m_name", modelName);
m_params.setParameter("m_startid", minId);
m_params.setParameter("m_startid", maxId);
Collection col = (Collection) DAO.findData(m_params);
if (col != null) {
rcol = new ArrayList();
Iterator it = col.iterator();
while (it.hasNext()) {
WfInstanceVo insVo = (WfInstanceVo) it.next();
rcol.add(insVo);
}
col.clear();
}
closeDAO();
return rcol;
}
public Collection rtvInstancesByYear(String modelName, String year) {
Collection rcol = null;
getDAO();
DAOParameter m_params = DAOFactory.getDAOParameter();
m_params.setCandiateClass(WfInstanceVo.class);
m_params
.setFilter("Model_Name = :m_name and substr(key_value,1,4)=:m_year");
m_params.setParameter("m_name", modelName);
m_params.setParameter("m_year", year);
Collection col = (Collection) DAO.findData(m_params);
if (col != null) {
rcol = new ArrayList();
Iterator it = col.iterator();
while (it.hasNext()) {
WfInstanceVo insVo = (WfInstanceVo) it.next();
rcol.add(insVo);
}
col.clear();
}
closeDAO();
return rcol;
}
public Collection rtvInstancesByKeyValue(String modelName, String keyValue) {
Collection rcol = null;
getDAO();
DAOParameter m_params = DAOFactory.getDAOParameter();
m_params.setCandiateClass(WfInstanceVo.class);
m_params
.setFilter("Model_Name = :m_name and key_value=:m_keyValue");
m_params.setParameter("m_name", modelName);
m_params.setParameter("m_keyValue", keyValue);
Collection col = (Collection) DAO.findData(m_params);
if (col != null) {
rcol = new ArrayList();
Iterator it = col.iterator();
while (it.hasNext()) {
WfInstanceVo insVo = (WfInstanceVo) it.next();
rcol.add(insVo);
}
col.clear();
}
closeDAO();
return rcol;
}
public Collection rtvInsActivities(long instanceId) {
Collection rcol = null;
getDAO();
WfInsActivityVo actVo = null;
if (instanceId > 0) {
DAOParameter m_params = DAOFactory.getDAOParameter();
m_params.setCandiateClass(WfInsActivityVo.class);
m_params.setFilter("Instance_Id = :m_Instance_Id");
m_params.setParameter("m_Instance_Id", new Long(instanceId));
Collection col = (Collection) DAO.findData(m_params);
if (col != null) {
rcol = new ArrayList();
Iterator it = col.iterator();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -