(二)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() {
              }

              /**
               * 判斷是否需要主管批準(zhǔn),決定下一個(gè)要進(jìn)行的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+"需要老板批準(zhǔn)!");
                      return "BossApprove";
                  }else{
                      log.info(ac+"需要先經(jīng)主管批準(zhǔn)");
                      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,只要一個(gè)分支到達(dá),即可進(jìn)行下一步操作,同時(shí)取消其它同時(shí)進(jìn)行的分支。
               * 這里就是用戶如果取消,請(qǐng)假就取消。如果用戶請(qǐng)假批準(zhǔn),則用戶不能取消。
               *
               * @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())){
                          //取消其它執(zhí)行的Token
                          joinContext.getExecutionService().cancelToken(to.getId());
                      }
                  }
                   // reactivate the parent token.
                    joinContext.reactivateToken( arrivingToken.getParent() );
              }
          }

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

          Copyright © 蝦米老

          主站蜘蛛池模板: 安丘市| 巴彦淖尔市| 兰坪| 云浮市| 淄博市| 普洱| 读书| 邢台市| 东源县| 博湖县| 琼中| 正定县| 顺义区| 内丘县| 东丽区| 崇明县| 芦溪县| 武宣县| 台山市| 盐城市| 苗栗市| 通江县| 云梦县| 新津县| 揭阳市| 承德市| 进贤县| 阿鲁科尔沁旗| 杭州市| 巴南区| 镇赉县| 洪湖市| 华坪县| 若羌县| 临汾市| 成安县| 柏乡县| 高清| 大同市| 循化| 富蕴县|