📄 activitytransfercontrol.java
字号:
package cn.com.iaspec.workflow.engine.business;
/**
* <p>Title: 流程启动功能(查询后续活动节点)</p>
*
* <p>Description: 深圳市劳动仲裁信息管理系统</p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: 永泰软件工程有限公司</p>
*
* @author syj
* @version 1.0
*/
import java.util.*;
import org.apache.log4j.*;
import cn.com.iaspec.workflow.engine.*;
import cn.com.iaspec.workflow.engine.dao.*;
import cn.com.iaspec.workflow.vo.workflow.*;
import com.sunyard.sunflow.client.*;
import com.sunyard.sunflow.engine.context.*;
public class ActivityTransferControl{
private static Logger logger=Logger.getLogger(ActivityTransferControl.class);
private UserInfo userinfo=null;
private static long ProcInstID;
public ActivityTransferControl(){
}
/**
* 返回活动节点的对象NextActivityInfod对象(根据userinfo和工作项的ID:workItemID查询)
* @param workItemID long
* @return NextActivityInfo
*/
public NextActivityInfo getNextActivityInfo(UserInfo userinfo,long workItemID){
logger.info("begin getNextActivityInfo...");
this.userinfo=userinfo;
NextActivityInfo nextActivityInfo = null,activity = null;
SunflowClient sunflowclient=WorkflowSession.getSunflowClient(userinfo);
ActivityTransferDAO transferDao = new ActivityTransferDAO();
try{
WorkItemContext workItemcontext=sunflowclient.findWorkItem(workItemID);
ActivityInstanceContext actInstCtx=sunflowclient.findActivityInstance(
workItemcontext.getActivityInstanceID());
long procInstId = workItemcontext.getProInstanceID();
long procDefId = workItemcontext.getProDefinitionID();
long actiDefId = actInstCtx.getActivityID();
ArrayList nextActiList = transferDao.getActiByTranFromIdAndProcDefId(actiDefId,procDefId);
for(int i=0;i<nextActiList.size();i++){
activity = (NextActivityInfo)nextActiList.get(i);
activity.setProcInstID(procInstId);
//返回节点的参数信息集合
activity.setActivityParametervalue(ActivityTransferDAO.
getActivityParameterValue(activity.getActivityID()));
String promptType=getStringValue(activity.getActivityParametervalue(),
"noSelActorPromptType");
if(activity.getActType()==2){
String firstActName=getActivityName(activity,"firstActName");
activity.setFirstNestingActivity(NestingFlowControl.
getNestingFirstActivity(this.userinfo,activity.getActivityID(),
firstActName));
// //取得嵌套节点的“noSelActorPromptType”属性
// if(activity.getFirstNestingActivity()!=null){
// promptType=getStringValue(activity.getFirstNestingActivity().
// getActivityParametervalue(),"noSelActorPromptType");
// }
}
if(promptType==null||promptType.equals(""))
promptType="stop";
else
promptType=promptType.toLowerCase();
activity.setNoSelActorPromptType(promptType);
}
nextActivityInfo = getNextActivityDefineInfo(actiDefId,sunflowclient);
nextActivityInfo.setNextActivity(nextActiList);
//返回节点的参数信息集合
nextActivityInfo.setActivityParametervalue(ActivityTransferDAO.
getActivityParameterValue(actiDefId));
nextActivityInfo.setTrd_fromatdid(actiDefId);
nextActivityInfo.setProcInstID(procInstId);
nextActivityInfo.setActivityInstanceID(actInstCtx.getActivityInstanceID());
}
catch(Exception e){
e.printStackTrace();
}
finally{
WorkflowSession.deleteSunflowClient(userinfo);
}
if (nextActivityInfo!=null && nextActivityInfo.getNextActivity()!=null){
SortNextActivityInfo sort=new SortNextActivityInfo();
ArrayList tempList=nextActivityInfo.getNextActivity();
logger.info("sort nextActivityInfo...");
//流向排序
Collections.sort(tempList,sort);
nextActivityInfo.setNextActivity(tempList);
}
return nextActivityInfo;
}
/**
* 返回活动节点的对象NextActivityInfo(根据活动的定义ID查询活动的信息)
* @param actID long
* @return NextActivityInfo
*/
public static NextActivityInfo getNextActivityDefineInfo(long actiDefId,
SunflowClient sunflowclient){
// ActivityContext activityContext=null;
// try{
// activityContext=sunflowclient.findActivity(actID);
//
// activityinfo.setActivityID(activityContext.getActivityID());
// activityinfo.setActivityName(activityContext.getActivityName());
// activityinfo.setAheadOfTime(activityContext.getAheadOfTime());
// activityinfo.setDescription(activityContext.getDescription());
// activityinfo.setExpiredTime(activityContext.getExpiredTime());
// activityinfo.setForecastExecuteTime(activityContext.
// getForecastExecuteTime());
// activityinfo.setNotifyMethod(activityContext.getNotifyMethod());
// activityinfo.setPriority(activityContext.getPriority());
// activityinfo.setProcDefID(activityContext.getProcDefID());
// activityinfo.setActType(activityContext.getType());
// activityinfo.setWorkItemCount(activityContext.getWorkItemCount());
// }
// catch(Exception e){
// e.printStackTrace();
// }
return new ActivityTransferDAO().getActivityDefinition(actiDefId);
}
/**
* 在后续活动信息里面取出对应的参数值
* @param nextActivityInfo NextActivityInfo
* @return String
*/
public static String getActivityName(NextActivityInfo nextActivityInfo,
String variablename){
ArrayList arraylist=nextActivityInfo.getActivityParametervalue();
String ParameterName=null;
Iterator it=arraylist.listIterator();
while(it.hasNext()){
ActivityParameterValue actParameter=(ActivityParameterValue)it.next();
if(actParameter.getAtr_variablename().equals(variablename)){
ParameterName=actParameter.getAtr_stringvalue();
}
}
return ParameterName;
}
/**
* 在后续活动信息里面取出对应的参数值
* @param nextActivityInfo NextActivityInfo
* @return String
*/
/**
* 根据参数列表取得参数值
* @param actParamList List
* @param varName String
* @return String
*/
public static String getStringValue(List actParamList,String varName){
String strValue="";
if(actParamList!=null&&actParamList.size()>0){
Iterator it=actParamList.listIterator();
while(it.hasNext()){
ActivityParameterValue actParameter=(ActivityParameterValue)it.next();
if(actParameter.getAtr_variablename().equals(varName)){
strValue=actParameter.getAtr_stringvalue();
break;
}
}
}
return strValue;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -