首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

怎么获取JBPM节点类型

2012-09-14 
如何获取JBPM节点类型JBPM节点均是继承于Node,ProcessDefinition与Node是OneToMany的关系,ProcessDefiniti

如何获取JBPM节点类型
JBPM节点均是继承于Node,ProcessDefinition与Node是OneToMany的关系,ProcessDefinition与StartState是ManyToOne的关系。
在操作流程时,有时候需要依据节点类型作相应的处理,那么如何获取节点类型呢?

protected void getNodeType(ProcessDefinition processDefinition){List<Node> nodes = processDefinition.getNodes();for(Node node : nodes){if (node instanceof TaskNode){// TODO } else if (node instanceof Decision){// TODO } else if (node instanceof StartState){// TODO } else if (.....) {  .....} }}


这样的处理方式常规看是没有问题,但是不见得代码是稳健的,一定就可以获取节点类型。
其原因是延时加载。流程定义的StartState就是延时加载的,运行过程中有些节点也是延时对象。可以通过获取延时对象,然后再参与运算:

if (node instanceof HibernateProxy){HibernateProxy hiberanteProxy = (HibernateProxy)node;LazyInitializer lazyInitializer = hiberanteProxy.getHibernateLazyInitializer();node = (Node)lazyInitializer.getImplementation();}



热点排行