JBPM高级问题
javaeye_jbpm
2007-04-05
ProcessDefinition Xml-String:
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 //------------------------------------------------------------------------ 急... |
|
javaeye_jbpm
2007-04-05
xx = de.execute_X(ec); 中的方法为验证Decision中的表达式的返回值.
当流程实例创建保存到数据库后.第二次跟据流程实例ID取得的节点.无法还原原有类型. 发现从数据库中取出的节点.包括TaskNode,Decision...全部成了Node类型,而且没法转换回来, 郁闷中... 不知道是我理解错了,还是事实如此,希望那位朋友给指点一下. |
|
billy119
2007-04-10
TaskNode taskNode = (TaskNode)(jbpmContext.getSession().load(TaskNode.class, token.getNode().getId()));
|
|
javaeye_jbpm
2007-04-12
非常感谢,~~ 结贴~ ^_^
|