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

JBPM高级有关问题

2012-11-01 
JBPM高级问题.ProcessDefinition Xml-String: String xml ?xml version1.0 encodingGBK?+pr

JBPM高级问题.
               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
//------------------------------------
哦... 1 楼 javaeye_jbpm 2007-04-05   其中:  xx =  de.execute_X(ec);
execute_X() 为自己写的一个计算Decision中表达式方法.

热点排行