一个JBPM工作流管理示例(三)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

(二)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() );

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航