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

📄 activitytransfercontrol.java

📁 公司自己开发的工作流引擎
💻 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 + -