pathinfopcoessimpl.java

来自「公司自己开发的工作流引擎」· Java 代码 · 共 986 行 · 第 1/3 页

JAVA
986
字号
    }
    logger.info("Execution getPathInfoElements cost time:"+
        (System.currentTimeMillis()-startTime)+" ms.");
    return elmString;
  }

  /**
   * 取得指定活动的流向元素
   * @param nextInfo NextActivityInfo
   * @param atdId long
   * @param selectElementType String
   * @return String
   */
  private String getInputActElements(NextActivityInfo nextInfo,long atdId,
      String selectElementType,SelectActorParam actorParam,String selectTag,
      ArrayList actorList){
    long startTime=System.currentTimeMillis();
    String elmString="";
    NextActivityInfo actInfo=getActivityInfo(nextInfo,atdId);
    if(actInfo!=null){
      String orgRel=actInfo.getActParamValueByName("orgRel");
      String actorSelMode=actInfo.getActParamValueByName("actorSelMode");
      String noSelActorPromptType=actInfo.getActParamValueByName(
          "noSelActorPromptType");
      String senderMode=actInfo.getActParamValueByName("senderMode");
      int tranType=actInfo.getTranType();

      long subActId=0;
      //如果是嵌套子流程,则取得子流程的首节点信息
      if(actInfo.getActType()==2&&actInfo.getFirstNestingActivity()!=null){
        //取得嵌套活动第一个节点的信息
        NextActivityInfo subflowInfo=actInfo.getFirstNestingActivity();
        subActId=subflowInfo.getActivityID();
        orgRel=subflowInfo.getActParamValueByName("orgRel");
        actorSelMode=subflowInfo.getActParamValueByName("actorSelMode");
        noSelActorPromptType=subflowInfo.getActParamValueByName(
            "noSelActorPromptType");
        senderMode=subflowInfo.getActParamValueByName("senderMode");
        tranType=subflowInfo.getTranType();
      }

      String onClick="";
      if(selectElementType.equals("radio")||selectElementType.equals("checkbox")){
        onClick="setProcessInfo(this)";
      }
      elmString+="<span class=\"style2\">"+
          "<input name=\"flow_activity_selected\" actName='"+
          actInfo.getATP_APRTINAME()+"' tranType='"+tranType+"' actId='"+
          actInfo.getActivityID()+"' subActId='"+subActId+"' selectType='"+
          selectElementType+"' orgRel='"+orgRel+"' actorSelMode='"+actorSelMode+
          "' senderMode='"+senderMode+"' noSelActorPromptType='"+
          noSelActorPromptType+"' actType='"+actInfo.getActType()+"' type=\""+
          selectElementType+"\" "+selectTag+" onClick=\""+onClick+"\" value=\""+
          actInfo.getActivityID()+"\">"+"<span class=\"style7\">&nbsp;"+
          actInfo.getATP_APRTINAME()+"<span class=\"style2\"></span></td>";

      String sValue="";

      if(senderMode.equals("single")||senderMode.equals("multi")){
        SelectActorTree firstActor=this.getFirstActor(actorList,
            actorParam.getSelectType());
        if(firstActor!=null){
          sValue=firstActor.getTreeId()+";"+firstActor.getTreeName()+";"+
              firstActor.getTreeType()+";"+firstActor.getParentId()+";0;0;"+
              (firstActor.isIfAgen()?"Y":"N")+";"+firstActor.getCosignUserId();
        }
      }

      elmString+="<input type=\"hidden\" id=\"participator_"+
          actInfo.getActivityID()+"\" name=\"participator_"+
          actInfo.getActivityID()+"\" value=\""+sValue+"\">";

      elmString+="<input type=\"hidden\" id=\"variable_"+actInfo.getActivityID()+
          "\" name=\"variable_"+actInfo.getActivityID()+"\">";
    }
    logger.info("Execution getInputActElements cost time:"+
        (System.currentTimeMillis()-startTime)+" ms.");
    return elmString;
  }

  /**
   * 取得指定活动的办理人信息元素
   * @param nextInfo NextActivityInfo
   * @param atdId long
   * @param actorParam SelectActorParam
   * @param actorList List
   * @return String
   */
  private String getActorElements(NextActivityInfo nextInfo,long atdId,
      SelectActorParam actorParam,ArrayList actorList,String contextPath){
    long startTime=System.currentTimeMillis();
    String elmString="";
    NextActivityInfo actInfo=getActivityInfo(nextInfo,atdId);
    if(actInfo!=null){
      String senderMode=actInfo.getActParamValueByName("senderMode");
      String actorSelMode=actInfo.getActParamValueByName("actorSelMode");
      //如果是嵌套子流程,则取得子流程的首节点信息
      if(actInfo.getActType()==2&&actInfo.getFirstNestingActivity()!=null){
        //取得嵌套活动第一个节点的信息
        NextActivityInfo subflowInfo=actInfo.getFirstNestingActivity();
        senderMode=subflowInfo.getActParamValueByName("senderMode");
        actorSelMode=subflowInfo.getActParamValueByName("actorSelMode");
      }
      String selectActorStyle="display:";
      String textActorStyle="display:";
      String clearImageStyle="display:";
      //选择参与者模式为隐藏,则隐藏参与者信息
      if(actorSelMode!=null&&actorSelMode.equals("auto")){
        selectActorStyle="display:none";
        textActorStyle="display:none";
        clearImageStyle="display:none";
      }
      else{
        if(senderMode!=null&&senderMode.equals("multi")){
          selectActorStyle="display:";
          textActorStyle="display:";
          clearImageStyle="display:";
        }
        else if(senderMode!=null&&senderMode.equals("single")){
          //结果个数大于1
          if(this.getActorCount(actorList,actorParam.getSelectType())>1){
            selectActorStyle="display:";
            textActorStyle="display:none";
            clearImageStyle="display:none";
          }
          else{
            selectActorStyle="display:none";
            textActorStyle="display:";
            clearImageStyle="display:none";
          }
        }
        else{
          selectActorStyle="display:none";
          textActorStyle="display:none";
          clearImageStyle="display:none";
        }
      }
      elmString+="<span style=\""+selectActorStyle+"\" class=\""+
          WF_SELECT_SPAN_STYLE_CLASS+"\"><select tag_value=\""+
          actInfo.getActivityID()+"\" senderMode=\""+senderMode+"\" class=\""+
          WF_SELECT_STYLE_CLASS+
          "\" onChange=\"changeActor(this)\" select_actor_type=\""+
          actorParam.getSelectType()+"\" name=\"select_actor_"+
          actInfo.getActivityID()+"\">";
      if(actorList!=null&&actorList.size()>0){
        int iActorCount=0;
        for(int i=0;i<actorList.size();i++){
          SelectActorTree actorNode=(SelectActorTree)actorList.get(i);
          String selected="";
          String preString="";
          //前置字符串
          if(actorNode.getLevel()>1){
            for(int k=0;k<actorNode.getLevel();k++){
              preString+="&nbsp;";
            }
            preString+="|-";
          }
          //默认选择第一个
          if(actorNode.getTreeType().equals(actorParam.getSelectType())){
            iActorCount++;
            if(iActorCount==1){
              selected=" selected ";
            }
          }

          elmString+="<option tree_id='"+actorNode.getTreeId()+"' tree_name='"+
              actorNode.getTreeName()+"' tree_type='"+actorNode.getTreeType()+
              "' parent_id='"+actorNode.getParentId()+"' parent_name='"+
              actorNode.getParentName()+"' parent_type='"+
              actorNode.getParentType()+"' if_agen='"+(actorNode.isIfAgen()?"Y":
              "N")+"' consign_user_id='"+actorNode.getCosignUserId()+"' "+
              selected+">"+preString+actorNode.getTreeName()+"</option>";
        }
      }
      elmString+="</select></span>";

      String actorTextTagValue="";
      String actorTextValue="";
      if(senderMode!=null&&(senderMode.equals("single")||
          senderMode.equals("multi"))){
        SelectActorTree firstActor=this.getFirstActor(actorList,
            actorParam.getSelectType());
        if(firstActor!=null){
          actorTextTagValue=",["+firstActor.getTreeId()+"]";
          actorTextValue=firstActor.getTreeName();
        }
      }
      elmString+="<span style=\""+textActorStyle+"\"><input tag_value=\""+
          actorTextTagValue+"\" name=\"select_actor_text_"+
          actInfo.getActivityID()+"\" type=\"text\" class=\""+
          WF_TEXT_STYLE_CLASS+"\" value=\""+actorTextValue+
          "\" size=\"15\" readonly></span>";
      elmString+="<span style=\""+clearImageStyle+"\"><img src=\""+contextPath+
          "/workflow/images/clear.gif\" title=\"清除\" tag_value=\""+
          actInfo.getActivityID()+"\" onClick=\"clearActor(this)\"></span>";
    }
    logger.info("Execution getActorElements cost time:"+
        (System.currentTimeMillis()-startTime)+" ms.");
    return elmString;
  }

  /**
   * 取得指定活动的时限信息元素
   * @param nextInfo NextActivityInfo
   * @param atdId long
   * @param actorParam SelectActorParam
   * @param actorList List
   * @return String
   */
  private String getTimeLimitElements(NextActivityInfo nextInfo,long atdId){
    long startTime=System.currentTimeMillis();
    String elmString="";
    NextActivityInfo actInfo=getActivityInfo(nextInfo,atdId);
    if(actInfo!=null){
      String timeLimitType=actInfo.getActParamValueByName("setTimeLimitType");
      long atdMaxTime=actInfo.getAtdMaxTime();
      //如果是嵌套子流程,则取得子流程的首节点信息
      if(actInfo.getActType()==2&&actInfo.getFirstNestingActivity()!=null){
        //取得嵌套活动第一个节点的信息
        NextActivityInfo subflowInfo=actInfo.getFirstNestingActivity();
        timeLimitType=subflowInfo.getActParamValueByName("setTimeLimitType");
        atdMaxTime=subflowInfo.getAtdMaxTime();
      }
      String readOnly=" readonly ";
      String displayStyle="display:";
      //只读
      if(timeLimitType!=null&&timeLimitType.equals("read")){
        readOnly=" readonly ";
        displayStyle="display:";
      }
      //读写
      else if(timeLimitType!=null&&timeLimitType.equals("write")){
        readOnly=" ";
        displayStyle="display:";
      }
      //隐藏
      else{
        readOnly=" ";
        displayStyle="display:none";
      }

      elmString+="<span style=\""+displayStyle+
          "\">&nbsp;&nbsp;时限:<input name=\"act_maxtime_"+actInfo.getActivityID()+
          "\" class=\""+WF_TEXT_STYLE_CLASS+"\" type=\"text\" value=\""+
          ConvertWorkitemDatetime.getWorkDatetime(atdMaxTime)+"\" size=\"3\" "+
          readOnly+">工作日</span>";
    }
    logger.info("Execution getTimeLimitElements cost time:"+
        (System.currentTimeMillis()-startTime)+" ms.");
    return elmString;
  }

  /**
   * 取得指定活动的签收信息元素
   * @param nextInfo NextActivityInfo
   * @param atdId long
   * @param actorParam SelectActorParam
   * @param actorList List
   * @return String
   */
  private String getSignInElements(NextActivityInfo nextInfo,long atdId){
    long startTime=System.currentTimeMillis();
    String elmString="";
    NextActivityInfo actInfo=getActivityInfo(nextInfo,atdId);
    if(actInfo!=null){
      String isNeedSignIn=actInfo.getActParamValueByName("isNeedSignIn");
      //如果是嵌套子流程,则取得子流程的首节点信息
      if(actInfo.getActType()==2&&actInfo.getFirstNestingActivity()!=null){
        //取得嵌套活动第一个节点的信息
        NextActivityInfo subflowInfo=actInfo.getFirstNestingActivity();
        isNeedSignIn=subflowInfo.getActParamValueByName("isNeedSignIn");
      }
      //用户决定是否签收,即用户可在界面上决定是否需要签收。
      if(isNeedSignIn!=null&&isNeedSignIn.equals("2")){
        elmString+=
            "<span>&nbsp;&nbsp;需要签收<input class=\"WF_CHECKBOX_STYLE_CLASS\" tag_value=\""+
            actInfo.getActivityID()+"\" onClick=\"changeTaskSignInInfo(this)\" type=\"checkbox\" name=\"need_signin_checkbox_"+
            actInfo.getActivityID()+"\" value=\"1\"></span>";
      }
    }
    logger.info("Execution getSignInElements cost time:"+
        (System.currentTimeMillis()-startTime)+" ms.");
    return elmString;
  }

  /**
   * 在列表中取得type类型的参与这
   * @param treeList ArrayList
   * @param type String
   * @return int
   */
  private SelectActorTree getFirstActor(ArrayList treeList,String type){
    SelectActorTree treeNode=null;
    if(treeList!=null&&treeList.size()>0){
      for(int i=0;i<treeList.size();i++){
        SelectActorTree tempNode=(SelectActorTree)treeList.get(i);
        if(type.equals(tempNode.getTreeType())){
          treeNode=tempNode;
          break;
        }
      }
    }
    return treeNode;
  }

  /**
   * 从NextActivityInfo.getNextActivity列表中取出对应的活动流向信息
   * @param nextInfo NextActivityInfo
   * @param atdId long
   * @return NextActivityInfo
   */
  private NextActivityInfo getActivityInfo(NextActivityInfo nextInfo,long atdId){
    NextActivityInfo info=null;
    List nextList=nextInfo.getNextActivity();
    if(nextList!=null&&nextList.size()>0){
      for(int i=0;i<nextInfo.getNextActivity().size();i++){
        NextActivityInfo tempInfo=(NextActivityInfo)nextInfo.getNextActivity().
            get(i);
        if(tempInfo.getActivityID()==atdId){
          info=tempInfo;
          break;
        }
      }
    }
    return info;
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?