浏览 1925 次
锁定老帖子 主题:JBPM高级问题.
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-04-05
String xml = "<?xml version='1.0' encoding='GBK'?>" +" <process-definition xmlns=\"urn:jbpm.org:jpdl-3.1\" name=\"流程定义1\">" +" <start-state name='开始'>" +" <transition name=\"\" to=\"task1\"></transition>" +" </start-state>" +" <task-node name=\"task1\">" +" <task name=\"ade\"></task>" +" <transition name=\"\" to=\"decision1\"></transition>" +" </task-node>" +" <decision name=\"decision1\" expression=\"#{SP=='Y'?'true':'false'}\">" +" <transition name=\"true\" to=\"state100\"></transition>" +" <transition name=\"false\" to=\"state200\"></transition>" +" </decision>" +" <state name=\"state100\">" +" <transition name=\"\" to=\"end1\"></transition>" +" </state>" +" <state name=\"state200\">" +" <transition name=\"\" to=\"end2\"></transition>" +" </state>" +" <end-state name=\"end1\"></end-state>" +" <end-state name=\"end2\"></end-state>" +" </process-definition>"; //------------------------------------------------------ processDefinition = ProcessDefinition.parseXmlString(xml); cxt.deployProcessDefinition(processDefinition); instance = new ProcessInstance(processDefinition); System.out.println("pd-id:"+processDefinition.getId()); //678, System.out.println("pi-id:"+instance.getId()); //678,1725 //instance = cxt.getProcessInstance(4959); Token root = instance.getRootToken(); root.signal(); ExecutionContext ec = new ExecutionContext(root); instance.getContextInstance().setVariable("SP", "Y"); System.out.println("root::"+getGBK(root.getNode().getName())+instance.getId()); Node node2 = ((Transition)root.getNode().getLeavingTransitions().iterator().next()).getTo(); String xx = null; System.out.println("root::"+getGBK(root.getNode().getName())+instance.getId()); List Nodelist = root.getNode().getLeavingTransitions(); for (int i = 0; i < Nodelist.size(); i++) { Transition tran = (Transition) Nodelist.get(0); Node node = tran.getTo(); if(node instanceof Decision){ Decision de = (Decision)node; xx = de.execute_X(ec); System.out.println("dec_: "+xx); } System.out.println(getGBK(node.getName())); } Result: root::task15157 root::task15157 dec_: true decision1 //------------------------------------------------------ instance = cxt.getProcessInstance(4959); Token root = instance.getRootToken(); //root.signal(); ExecutionContext ec = new ExecutionContext(root); instance.getContextInstance().setVariable("SP", "Y"); System.out.println("root::"+getGBK(root.getNode().getName())+instance.getId()); Node node2 = ((Transition)root.getNode().getLeavingTransitions().iterator().next()).getTo(); String xx = null; System.out.println("root::"+getGBK(root.getNode().getName())+instance.getId()); List Nodelist = root.getNode().getLeavingTransitions(); for (int i = 0; i < Nodelist.size(); i++) { Transition tran = (Transition) Nodelist.get(0); Node node = tran.getTo(); //这里的Decision节点无法还原? 为什么呢? if(node instanceof Decision){ Decision de = (Decision)node; xx = de.execute_X(ec); System.out.println("dec_: "+xx); } System.out.println(getGBK(node.getName())); } Result: root::task14959 root::task14959 decision1 //------------------------------------------------------------------------ 哦... 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-04-05
其中: xx = de.execute_X(ec);
execute_X() 为自己写的一个计算Decision中表达式方法. |
|
返回顶楼 | |