[轉]一個JBPM工作流管理示例(三)

          Posted on 2005-12-16 16:55 蝦米老 閱讀(586) 評論(0)  編輯  收藏 所屬分類: flow學習


          (二)Decision
          package kellerdu.jbpm.delegation;

          import org.jbpm.delegation.*;
          import kellerdu.jbpm.LogsFactory;
          import org.apache.commons.logging.Log;
          import kellerdu.jbpm.Constants;

          public class ChiefDecision implements DecisionHandler {
              public ChiefDecision() {
              }

              /**
               * 判斷是否需要主管批準,決定下一個要進行的transition
               *
               * @param executionContext ExecutionContext
               * @return String
               * @todo Implement this org.jbpm.delegation.DecisionHandler method
               */
              public String decide(ExecutionContext executionContext) {
                  Log log=LogsFactory.getLogInstance(this.getClass());
                  String ac=(String)executionContext.getVariable(Constants.USER_NAME);
                  if(ac!=null&&(ac.equals("dali")||ac.equals("wang"))){
                      log.info(ac+"需要老板批準!");
                      return "BossApprove";
                  }else{
                      log.info(ac+"需要先經主管批準");
                      return "ChiefApprove";
                  }
              }
          }
          =======================
          (三)fork
          package kellerdu.jbpm.delegation;

          import org.jbpm.*;
          import org.jbpm.delegation.*;
          import org.jbpm.model.execution.*;
          import java.util.*;

          public class DecidedJoin implements JoinHandler {
              public DecidedJoin() {
              }

              /**
               * fork,只要一個分支到達,即可進行下一步操作,同時取消其它同時進行的分支。
               * 這里就是用戶如果取消,請假就取消。如果用戶請假批準,則用戶不能取消。
               *
               * @param forkContext ForkContext
               * @throws ExecutionException
               * @todo Implement this org.jbpm.delegation.ForkHandler method
               */
              public void join(JoinContext joinContext) throws ExecutionException {
                  Iterator it=joinContext.getConcurrentTokens().values().iterator();
                  Token arrivingToken = joinContext.getToken();
                  while(it.hasNext()){
                      Token to=(Token)it.next();
                      if(to.getId().equals(arrivingToken.getId())){
                          //取消其它執行的Token
                          joinContext.getExecutionService().cancelToken(to.getId());
                      }
                  }
                   // reactivate the parent token.
                    joinContext.reactivateToken( arrivingToken.getParent() );
              }
          }

          posts - 5, comments - 3, trackbacks - 0, articles - 0

          Copyright © 蝦米老

          主站蜘蛛池模板: 治多县| 常德市| 米林县| 广宁县| 鞍山市| 馆陶县| 拉孜县| 文水县| 永清县| 汨罗市| 平果县| 临潭县| 吉水县| 奉新县| 遂溪县| 东至县| 泰宁县| 清流县| 上高县| 长治县| 抚顺县| 尼玛县| 专栏| 黑水县| 湖北省| 繁昌县| 乃东县| 蓬莱市| 米脂县| 辽源市| 上思县| 湾仔区| 闵行区| 墨脱县| 外汇| 奉贤区| 安徽省| 卢湾区| 闵行区| 庆安县| 九江县|