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

原创 2006年11月30日 14:59:00

今天中午,一个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();
            }

    }
    

 

 

相关文章推荐

jPBM4.3 -- 第四节 动态发布与删除流程实例

package com.darren.action;   import java.util.List; import org.jbpm.api.Configuration; import or...
  • zpf336
  • zpf336
  • 2013年01月07日 22:50
  • 284

获取手机所处的网络IP地址

  • 2016年07月22日 10:44
  • 1.43MB
  • 下载

C#面试题 专业培训机构所处

  • 2013年12月11日 11:17
  • 280KB
  • 下载

关心关注自己所处的环境

2012-08-14 21:58:26 【关心关注自己所处的环境】 在一个很平常的节日,公司发了大礼包给我们,很丰盛的礼物。 我现在还能翻到那天的在各个SNS网站记载的幸福,还能翻到同事上传的阵...

各类协议所处OSI七层模型位置

  • 2016年02月17日 08:42
  • 3.75MB
  • 下载

程序员,闯你所处的行业

最近看到一个帖子,说的是一个程序员不想编程了,想转到金融行业里去,他说在IT领域很迷茫,累,也没赚到多少钱,他还说对金融很感兴趣。我想这个问题,也是大多数程序员所困惑的。能够有这样的思考,首先是值得肯...

hadoop 单词个数及所处文件位置统计

一、题目描述         输入若干个文件,得到所有文件中某单词的所在文件名,单词在文档中出现的次数和具体的位置信息 例如,输入文件如下: 1.txt: it iswhat it is w...

运行中的处理器所处的三种状态--写在2016年最后一贴

做应用层开发的这图都应该看过很多遍了。 1. 最底层是硬件层支撑所有软件层的运行以及特定功能的实现;像CPU、内存、鼠标、键盘、硬盘、光驱、网卡等等。 2. 在硬件之上的是设备驱动程序,用于驱动硬...

Android自定义View之IndicatorView,显示当前tab页所处位置的View

自定义IndicatorView,用来指示tab标题的显示。具有动画效果,以及可以设置颜色渐变效果,长度灵活可控,可同时设置各个item的文字...

计算机网络设备在OSI模型中所处位置总结

计算机网络 OSI 网络模型的分布:
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jpbm如何获得流程所处的环节。
举报原因:
原因补充:

(最多只允许输入30个字)