jeffen2006的专栏

当我们往前仰望大师的遥远背影时,我们总是期望有那么一个快捷方式能够赶上他们,但事实上并不存在这个快捷方式,大师们所花费的时间是我们所尚未付出的、他 们所花费的精神是我们尚未投入的、中间所历经的苦恼是我...

jpbm如何获得流程所处的环节。

今天中午,一个msn的朋友问起这个问题, 就在这里说明一下吧。

我们都玩过击鼓传花的游戏,花在众人的手里不停的传递,鼓停了,花在谁手里就代表了这个击鼓传花的流程进行到哪个环节了。对于jbpm,roottoken就是这个花,我们可以通过Token token = processInstance.getRootToken();token.getNode()得到某一个流程实例所处的环节。

但是有一个问题,对于某些流程会生成子token,比如fork节点,如果子token没有全部完成,那么roottoken就始终处于fork节点,如果我们需要得到fork下流程的执行情况只看roottoken就不行了,就需要处理这些子token,当然如果有嵌套的fork那就要去遍历了。下面给出没有嵌套的处理代码:

<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="" name="yytest">
   
<start-state name="s">
        
<transition name="s" to="bf"/>
    
</start-state>
    
<state name="bf">
        
<transition to="f"/>
    
</state>
    
<fork name="f">
        
<transition name="ns1" to="s1"/>
        
<transition name="ns2" to="s2"/>
        
<transition name="ns3" to="s3"/>
    
</fork>
    
<state name="s1">
        
<transition to="j"/>
    
</state>
    
<state name="s2">
        
<transition to="j"/>
    
</state>
    
<state name="s3">
        
<transition to="j"/>
    
</state>
    
<join name="j">
        
<transition to="af"/>
    
</join>
    
<state name="af">
        
<transition to="e"/>
    
</state>
    
<end-state name="e"/>
 
</process-definition>

 

 

private static void run()...{
        JbpmContext jbpmContext 
= jbpmConfiguration.createJbpmContext();
        
try ...{
            
long processInstanceId =1;
               processInstance 
= jbpmContext.loadProcessInstance(processInstanceId);
               Token token 
= processInstance.getRootToken();
               token.signal();
               token.signal();
//               token.getChild("ns1").signal();
               token.getChild("ns3").signal();
               Iterator i
=token.getActiveChildren().values().iterator();
               
while(i.hasNext())...{
                   Token childToken
=(Token)i.next();
                   
if(childToken.isAbleToReactivateParent())...{
                       System.out.println(
"还需要处理的子token为"+childToken.getNode());
                   }

               }

            }
finally ...{
              jbpmContext.close();
            }

    }
    

 

 

阅读更多
个人分类: jboss-jbpm
想对作者说点什么? 我来说一句

jbpm-oa工程一例

2011年10月09日 760KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭