亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? token.java

?? jboss jpdl-3.2.2 nolib
?? JAVA
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
      li.addLog(processLog);
    }
  }
  /**
   * convenience method for starting a composite log.  When you add composite logs,
   * make sure you put the {@link #endCompositeLog()} in a finally block.
   */
  public void startCompositeLog(CompositeLog compositeLog) {
    LoggingInstance li = (LoggingInstance) processInstance.getInstance(LoggingInstance.class);
    if (li != null) {
      compositeLog.setToken(this);
      li.startCompositeLog(compositeLog);
    }
  }
  /**
   * convenience method for ending a composite log.  Make sure you put this in a finally block.
   */
  public void endCompositeLog() {
    LoggingInstance li = (LoggingInstance) processInstance.getInstance(LoggingInstance.class);
    if (li != null) {
      li.endCompositeLog();
    }
  }

  // various information extraction methods ///////////////////////////////////

  public String toString() {
    return "Token("+getFullName()+")";
  }

  public boolean hasEnded() {
    return (end != null);
  }

  public boolean isRoot() {
    return (parent == null);
  }

  public boolean hasParent() {
    return (parent != null);
  }

  public boolean hasChild(String name) {
    return (children != null ? children.containsKey(name) : false);
  }

  public Token getChild(String name) {
    Token child = null;
    if (children != null) {
      child = (Token) children.get(name);
    }
    return child;
  }

  public String getFullName() {
    if (parent==null) return "/";
    if (parent.getParent()==null) return "/"+name;
    return parent.getFullName()+"/"+name;
  }

  public List getChildrenAtNode(Node aNode) {
    List foundChildren = new ArrayList();
    getChildrenAtNode(aNode, foundChildren);
    return foundChildren;
  }
  
  void getChildrenAtNode(Node aNode, List foundTokens) {
    if(aNode.equals(node)) {
      foundTokens.add(this);
    }
    else if(children != null && !children.isEmpty()) {
      for(Iterator it = children.values().iterator(); it.hasNext();) {
        Token aChild = (Token)it.next();
        aChild.getChildrenAtNode(aNode, foundTokens);
      }
    }
  }
  
  public void collectChildrenRecursively(List tokens) {
    if (children!=null) {
      Iterator iter = children.values().iterator();
      while (iter.hasNext()) {
        Token child = (Token) iter.next();
        tokens.add(child);
        child.collectChildrenRecursively(tokens);
      }
    }
  }

  
  public Token findToken(String relativeTokenPath) {
    if (relativeTokenPath == null)
      return null;
    String path = relativeTokenPath.trim();
    if (("".equals(path)) || (".".equals(path))) {
      return this;
    }
    if ("..".equals(path)) {
      return parent;
    }
    if (path.startsWith("/")) {
      Token root = processInstance.getRootToken();
      return root.findToken(path.substring(1));
    }
    if (path.startsWith("./")) {
      return findToken(path.substring(2));
    }
    if (path.startsWith("../")) {
      if (parent != null) {
        return parent.findToken(path.substring(3));
      }
      return null;
    }
    int slashIndex = path.indexOf('/');
    if (slashIndex == -1) {
      return (Token) (children != null ? children.get(path) : null);
    }
    Token token = null;
    String name = path.substring(0, slashIndex);
    token = (Token) children.get(name);
    if (token != null) {
      return token.findToken(path.substring(slashIndex + 1));
    }
    return null;
  }

  public Map getActiveChildren() {
    Map activeChildren = new HashMap();
    if (children != null) {
      Iterator iter = children.entrySet().iterator();
      while (iter.hasNext()) {
        Map.Entry entry = (Map.Entry) iter.next();
        Token child = (Token) entry.getValue();
        if (!child.hasEnded()) {
          String childName = (String) entry.getKey();
          activeChildren.put(childName, child);
        }
      }
    }
    return activeChildren;
  }

  public void checkImplicitTermination() {
    if (isTerminationImplicit && node.hasNoLeavingTransitions()) {
      end();
      
      if (processInstance.isTerminatedImplicitly()) {
        processInstance.end();
      }
    }
  }

  public boolean isTerminatedImplicitly() {
    if (end != null) return true;

    Map leavingTransitions = node.getLeavingTransitionsMap();
    if ((leavingTransitions != null) && (leavingTransitions.size() > 0)) {
      // ok: found a non-terminated token
      return false;
    }

    // loop over all active child tokens
    Iterator iter = getActiveChildren().values().iterator();
    while (iter.hasNext()) {
      Token child = (Token) iter.next();
      if (!child.isTerminatedImplicitly()) {
        return false;
      }
    }
    // if none of the above, this token is terminated implicitly
    return true;
  }

  public int nextLogIndex() {
    return nextLogIndex++;
  }

  /**
   * suspends a process execution.
   */
  public void suspend() {
    isSuspended = true;
    
    suspendJobs();
    suspendTaskInstances();

    // propagate to child tokens
    if (children!=null) {
      Iterator iter = children.values().iterator();
      while (iter.hasNext()) {
        Token child = (Token) iter.next();
        child.suspend(); 
      }
    }
  }

  void suspendJobs() {
    JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
    JobSession jobSession = (jbpmContext!=null ? jbpmContext.getJobSession() : null);
    if (jobSession!=null) {
      jobSession.suspendJobs(this);
    }
  }

  void suspendTaskInstances() {
    TaskMgmtInstance taskMgmtInstance = (processInstance!=null ? processInstance.getTaskMgmtInstance() : null);
    if (taskMgmtInstance!=null) {
      taskMgmtInstance.suspend(this);
    }
  }

  /**
   * resumes a process execution.
   */
  public void resume() {
    isSuspended = false;
    
    resumeJobs();
    resumeTaskInstances();

    // propagate to child tokens
    if (children!=null) {
      Iterator iter = children.values().iterator();
      while (iter.hasNext()) {
        Token child = (Token) iter.next();
        child.resume(); 
      }
    }
  }

  void resumeJobs() {
    JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
    JobSession jobSession = (jbpmContext!=null ? jbpmContext.getJobSession() : null);
    if (jobSession!=null) {
      jobSession.resumeJobs(this);
    }
  }

  void resumeTaskInstances() {
    TaskMgmtInstance taskMgmtInstance = (processInstance!=null ? processInstance.getTaskMgmtInstance() : null);
    if (taskMgmtInstance!=null) {
      taskMgmtInstance.resume(this);
    }
  }


  // equals ///////////////////////////////////////////////////////////////////
  // hack to support comparing hibernate proxies against the real objects
  // since this always falls back to ==, we don't need to overwrite the hashcode
  public boolean equals(Object o) {
    return EqualsUtil.equals(this, o);
  }

  public ProcessInstance createSubProcessInstance(ProcessDefinition subProcessDefinition) {
    // create the new sub process instance
    subProcessInstance = new ProcessInstance(subProcessDefinition);
    // bind the subprocess to the super-process-token
    setSubProcessInstance(subProcessInstance);
    subProcessInstance.setSuperProcessToken(this);
    // make sure the process gets saved during super process save
    processInstance.addCascadeProcessInstance(subProcessInstance);
    return subProcessInstance;
  }

  /**
   * locks a process instance for further execution.  A locked token 
   * cannot continue execution.  This is a non-persistent
   * operation.  This is used to prevent tokens being propagated during 
   * the execution of actions.
   * @see #unlock(String) 
   */
  public void lock(String lockOwnerId) {
    if (lockOwnerId==null) {
      throw new JbpmException("can't lock with null value for the lockOwnerId");
    }
    if ( (lock!=null)
         && (!lock.equals(lockOwnerId))
       ) {
      throw new JbpmException("token '"+id+"' can't be locked by '"+lockOwnerId+"' cause it's already locked by '"+lock+"'");
    }
    log.debug("token["+id+"] is locked by "+lockOwnerId);
    lock = lockOwnerId;
  }

  /**
   * @see #lock(String)
   */
  public void unlock(String lockOwnerId) {
    if (lock==null) {
      log.warn("lock owner '"+lockOwnerId+"' tries to unlock token '"+id+"' which is not locked");
    } else if (!lock.equals(lockOwnerId)) {
      throw new JbpmException("'"+lockOwnerId+"' can't unlock token '"+id+"' because it was already locked by '"+lock+"'");
    }
    log.debug("token["+id+"] is unlocked by "+lockOwnerId);
    lock = null;
  }
  
  public boolean isLocked() {
    return lock!=null;
  }

  // getters and setters //////////////////////////////////////////////////////

  public long getId() {
    return id;
  }
  public Date getStart() {
    return start;
  }
  public Date getEnd() {
    return end;
  }
  public String getName() {
    return name;
  }
  public ProcessInstance getProcessInstance() {
    return processInstance;
  }
  public Map getChildren() {
    return children;
  }
  public Node getNode() {
    return node;
  }
  public void setNode(Node node) {
    this.node = node;
  }
  public Token getParent() {
    return parent;
  }
  public void setParent(Token parent) {
    this.parent = parent;
  }
  public void setProcessInstance(ProcessInstance processInstance) {
    this.processInstance = processInstance;
  }
  public ProcessInstance getSubProcessInstance() {
    return subProcessInstance;
  }
  public Date getNodeEnter() {
    return nodeEnter;
  }
  public void setNodeEnter(Date nodeEnter) {
    this.nodeEnter = nodeEnter;
  }
  public boolean isAbleToReactivateParent() {
    return isAbleToReactivateParent;
  }
  public void setAbleToReactivateParent(boolean isAbleToReactivateParent) {
    this.isAbleToReactivateParent = isAbleToReactivateParent;
  }
  public boolean isTerminationImplicit() {
    return isTerminationImplicit;
  }
  public void setTerminationImplicit(boolean isTerminationImplicit) {
    this.isTerminationImplicit = isTerminationImplicit;
  }
  public boolean isSuspended() {
    return isSuspended;
  }
  public void setSubProcessInstance(ProcessInstance subProcessInstance) {
    this.subProcessInstance = subProcessInstance;
  }

  private static final Log log = LogFactory.getLog(Token.class);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品欧美久久久| 99re在线视频这里只有精品| 91精品婷婷国产综合久久性色| 亚洲国产欧美在线人成| 在线免费观看日本欧美| 午夜精品福利一区二区三区av| 7777精品伊人久久久大香线蕉的| 美女视频免费一区| 国产婷婷精品av在线| www.在线成人| 亚洲国产你懂的| 欧美一区二区美女| 国产毛片精品视频| 国产精品久久久久久妇女6080| 色综合婷婷久久| 日韩极品在线观看| 中文字幕成人av| 欧美男男青年gay1069videost | 3d动漫精品啪啪| 精品一区二区三区免费| 日韩美女啊v在线免费观看| 欧美日韩在线观看一区二区 | 精品国产一二三| 国产iv一区二区三区| 亚洲一区在线观看免费观看电影高清| 欧美一级生活片| 成人国产免费视频| 免费在线观看精品| 亚洲美女一区二区三区| 欧美精品一区二区三区在线| 色中色一区二区| 国产真实精品久久二三区| 一区二区三区不卡视频| 久久久精品国产免费观看同学| av在线免费不卡| 美国十次了思思久久精品导航| 亚洲欧美乱综合| 欧美精品一区二区高清在线观看| 色综合久久久久综合体| 国产老妇另类xxxxx| 亚洲成av人片一区二区| 国产精品卡一卡二| 久久影院午夜片一区| 欧美巨大另类极品videosbest | 91行情网站电视在线观看高清版| 久久99久久99小草精品免视看| 亚洲欧美色综合| 欧美高清一级片在线观看| 日韩色在线观看| 欧美日韩亚洲丝袜制服| www.成人网.com| 国产激情91久久精品导航| 美洲天堂一区二卡三卡四卡视频 | 国产精品麻豆网站| 精品国产一区二区三区四区四| 欧美图区在线视频| 成人av网址在线| 国产精品18久久久久久vr| 免费在线一区观看| 日日夜夜免费精品视频| 亚洲国产色一区| 一区二区在线观看免费| 亚洲视频精选在线| 国产精品传媒在线| 欧美韩日一区二区三区| 国产欧美日韩久久| 国产欧美日韩一区二区三区在线观看| 亚洲精品在线网站| 久久久久久久久久久久久久久99| 日韩精品中文字幕一区二区三区 | 国产大陆精品国产| 国产成人在线视频免费播放| 国产精品一二三四| 国产一区二区视频在线| 国产一区二区按摩在线观看| 国产一区二区三区在线观看精品 | 国产福利一区二区三区视频| 国产综合久久久久久久久久久久| 国产在线一区二区综合免费视频| 国内精品久久久久影院一蜜桃| 久久99国产精品免费网站| 麻豆精品一区二区三区| 国产自产视频一区二区三区| 国产成人午夜视频| 99久久精品国产一区| 日本久久一区二区三区| 在线免费观看日韩欧美| 制服丝袜中文字幕亚洲| 精品久久一区二区三区| 久久精品视频网| 综合激情成人伊人| 一区二区成人在线视频| 亚洲网友自拍偷拍| 美女在线一区二区| 国产一区二区美女诱惑| 国产成人在线视频网站| 91高清在线观看| 欧美蜜桃一区二区三区| 精品国产乱码久久| 亚洲国产高清在线| 亚洲一区二区三区四区五区黄| 日日夜夜一区二区| 国产91在线观看| 色婷婷精品大在线视频| 日韩精品一区二区三区视频在线观看| 国产亚洲va综合人人澡精品| 亚洲精品欧美激情| 久久精品国产999大香线蕉| 波多野结衣视频一区| 欧美视频三区在线播放| 2020国产精品| 夜夜嗨av一区二区三区网页 | 欧美体内she精视频| 日韩一卡二卡三卡| 国产精品国产三级国产普通话蜜臀| 亚洲第一激情av| 国产成人一区二区精品非洲| 精品视频资源站| 国产欧美日韩精品一区| 亚洲国产一区在线观看| 国产精品亚洲专一区二区三区| 色噜噜久久综合| 久久久久久久久久久久久久久99 | 麻豆专区一区二区三区四区五区| 成人小视频在线| 日韩欧美精品在线| 亚洲黄色在线视频| 国产成人亚洲综合色影视| 91麻豆精品国产综合久久久久久 | 精品国产乱码久久久久久久| 亚洲一区二区三区四区在线观看 | 国内精品免费**视频| 欧美日韩五月天| 亚洲欧美成人一区二区三区| 激情综合色综合久久| 欧美日韩国产高清一区二区| 国产精品护士白丝一区av| 久久精品国产一区二区| 中文字幕中文乱码欧美一区二区| 日本亚洲视频在线| 欧美性xxxxxxxx| 国产精品久久久久久久久免费丝袜 | 69精品人人人人| 日韩毛片一二三区| 高清av一区二区| 亚洲精品在线免费播放| 日韩国产欧美在线观看| 一本大道久久a久久精品综合| 亚洲国产精品成人综合色在线婷婷| 日韩av一区二区在线影视| 精品污污网站免费看| 亚洲精品乱码久久久久| 99久久婷婷国产| 国产精品剧情在线亚洲| 高清国产午夜精品久久久久久| 久久久久国产精品免费免费搜索| 美女一区二区视频| 欧美一区二区三区在线视频| 午夜精品福利视频网站| 欧美日韩视频在线第一区| 亚洲一区二区三区美女| 在线视频中文字幕一区二区| 亚洲曰韩产成在线| 欧美性色欧美a在线播放| 一区二区免费在线| 欧美亚洲愉拍一区二区| 亚洲综合在线五月| 欧美性猛交xxxxxx富婆| 亚洲午夜精品网| 欧美精品乱人伦久久久久久| 图片区小说区国产精品视频| 91.成人天堂一区| 日韩在线观看一区二区| 欧美一区二区视频免费观看| 久久精品理论片| 久久久电影一区二区三区| 成人午夜精品一区二区三区| 国产喂奶挤奶一区二区三区| 成人的网站免费观看| 一区二区三区在线观看视频| 欧美午夜精品一区二区蜜桃| 天堂成人免费av电影一区| 69堂精品视频| 国产美女久久久久| 国产精品久久久久影院| 在线精品视频免费播放| 日本视频在线一区| 久久久久久久免费视频了| aa级大片欧美| 午夜久久久久久电影| 26uuuu精品一区二区| 成人性生交大片免费| 亚洲国产日韩av| 久久综合久久鬼色| 成人精品鲁一区一区二区| 亚洲一区二区中文在线| 日韩欧美激情一区| 成人高清免费观看| 日韩av电影免费观看高清完整版| 久久综合资源网|