- description>
- <delegation class="kellerdu.jbpm.delegation.DoSomethingDecision"/>
- <transition name="disapprove" to="Finished">
- <action>
- <delegation class="kellerdu.jbpm.action.Disapprove"/>
- action>
- transition>
- <transition name="approve" to="Finished">
- <action>
- <delegation class="kellerdu.jbpm.action.Approve"/>
- action>
- transition>
- <transition name="cancel" to="Finished">
- <action>
- <delegation class="kellerdu.jbpm.action.Cancel"/>
- action>
- transition>
- decision>
- <end-state name="Finished"/>
- <action event-type="process-end">
-
- <delegation class="kellerdu.jbpm.action.ProcessEndAction"/>
- action>
- /process-definition>
Action指明的是当前状态要执行的一些额外的操作,如记录log、发邮件等。
(1)Swimline的delegation要做的就是判别当前Actor的身份。
java 代码
- package kellerdu.jbpm.delegation;
-
- import org.jbpm.delegation.*;
- import kellerdu.jbpm.LogsFactory;
- import org.apache.commons.logging.Log;
-
- public class BossSwimlane implements AssignmentHandler {
- public BossSwimlane() {
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public String selectActor(AssignmentContext assignmentContext) {
- Log log = LogsFactory.getLogInstance(this.getClass());
- log.info("任务分配给老板");
- return "boss";
- }
- }
- ========================================
- ackage kellerdu.jbpm.delegation;
-
- import org.jbpm.delegation.*;
- import kellerdu.jbpm.LogsFactory;
- import org.apache.commons.logging.Log;
-
- public class ChiefSwimlane implements AssignmentHandler {
- public ChiefSwimlane() {
- }
-
-
-
-
-
-
-
-
-
- public String selectActor(AssignmentContext assignmentContext) {
- Log log = LogsFactory.getLogInstance(this.getClass());
- log.info("任务分配给上级主管");
- return "chief";
- }
- }
(二)Decision
java 代码
- 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() {
- }
-
-
-
-
-
-
-
-
- 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
java 代码
- 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() {
- }
-
-
-
-
-
-
-
-
-
- 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())){
-
- joinContext.getExecutionService().cancelToken(to.getId());
- }
- }
-
- joinContext.reactivateToken( arrivingToken.getParent() );
- }
- }
-
(一) 开始一个请假流程
java 代码
-
- ExecutionService es=JbpmServiceFactory.getInstance().openExecutionService(user);
- HashMap vs=new HashMap();
-
- vs.put(Constants.REQUEST_STATUS,String.valueOf(0));
- vs.put(Constants.REQUEST_RETURN_INFO,"No info!");
- vs.put(Constants.USER_NAME,EncodeTransfer.toISO(user));
- vs.put(Constants.REQUEST_DAYS,String.valueOf(rea.getDays()));
- try {
-
- es.startProcessInstance(Constants.WORK_NAME, vs);
- log.info("["+user+"]"+"申请假期开始!请假"+rea.getDays()+"天!");
- return am.findForward("main");
- } catch (ExecutionException ex) {
- ex.printStackTrace();
- log.error("请假进程无法开始!");
- return am.findForward("error");
- }finally{
- es.close();
- }
(二)当前执行任务
对于部门经理或者老板,找到要处理的请假。
java 代码
- String actorId = (String) req.getSession().getAttribute(Constants.USER);
- if(actorId.equals("wang")){
- actorId="boss";
- }else if(actorId.equals("bigli")){
- actorId="chief";
- }
-
- ExecutionService executionService = JbpmServiceFactory.getInstance().
- openExecutionService(actorId);
-
-
- List tasks = new ArrayList();
-
- tasks.addAll(executionService.getTaskList(actorId));
-
- mf.setTasks(tasks);
-
- List definitions = new ArrayList();
-
- definitions.addAll(executionService.getLatestDefinitions());
-
- mf.setRequests(definitions);
-
- executionService.close();
- req.getSession().setAttribute("mainForm",mf);
- log.debug("任务: " + tasks);
- log.debug("当前可以执行的请求: " + definitions);
(三)处理请假
java 代码
- String actorId = (String) reqrest.getSession().getAttribute(Constants.
- USER);
- Long tokenId=new Long(req.getParameter("tokenId"));
-
- ExecutionService executionService = JbpmServiceFactory.getInstance().
- openExecutionService(actorId);
- Map hm=executionService.getVariables(tokenId);
- String act=req.getParameter("action");
- executionService.endOfState(tokenId,hm,act);
- executionService.close();
评论排行榜