锘??xml version="1.0" encoding="utf-8" standalone="yes"?>成a人片亚洲日本久久,免费人成在线观看网站,中文字幕一区二区三区四区五区http://www.aygfsteel.com/jbpm/category/25749.htmlzh-cnWed, 12 Sep 2007 01:02:00 GMTWed, 12 Sep 2007 01:02:00 GMT60jbpm騫跺彂鐨勫瓙嫻佺▼鐨勮В鍐蟲柟妗堜笌鎺㈣http://www.aygfsteel.com/jbpm/archive/2007/09/11/144331.htmljbpmjbpmTue, 11 Sep 2007 09:48:00 GMThttp://www.aygfsteel.com/jbpm/archive/2007/09/11/144331.htmlhttp://www.aygfsteel.com/jbpm/comments/144331.htmlhttp://www.aygfsteel.com/jbpm/archive/2007/09/11/144331.html#Feedback0http://www.aygfsteel.com/jbpm/comments/commentRss/144331.htmlhttp://www.aygfsteel.com/jbpm/services/trackbacks/144331.html 浣滆咃細 JeffreyHsu


灝界jbpm闈炲父寮哄ぇ錛屾槸鐩墠鏈閫傚悎鍟嗕笟鍖栫殑寮婧愬伐浣滄祦寮曟搸錛屽彲浠ュ紑鍙戝嚭澶嶆潅鐨勬祦紼嬶紝浣嗘槸鐗瑰埆閬楁喚鐨勬槸騫朵笉鏀寔騫跺彂瀛愭祦紼嬶紙multiple-subprocess錛?
鏈変竴嬈℃垜闇瑕佸仛涓涓鏉傜殑嫻佺▼錛屼富嫻佺▼閲岃姹傚悓鏃跺惎鍔ㄥ涓茍鍙戞墽琛岀殑瀛愭祦紼嬶紝騫朵笖瀛愭祦紼嬬殑鏁扮洰鍜屽惎鍔ㄧ殑鏃墮棿閮戒笉紜畾錛屽綋鎵鏈夊瓙嫻佺▼閮界粨鏉熶互鍚庯紝涓繪祦紼嬫墠緇х畫鎵ц銆傛垜浠煡閬搄bpm閲屾湁瀛愭祦紼嬬殑璁懼畾錛屾湁涓撻棬鐨勮妭鐐筆rocessState鏉ュ鐞嗭紝浣嗘槸鍚庢潵鍙戠幇鏃犺濡備綍涔熷疄鐜頒笉浜嗗瀛愭祦紼嬪茍鍙戞墽琛岋紝鍚庢潵鐪嬪叾婧愮爜鐭ラ亾鍥犱負subprocess鏄綔涓篜rocessState鐨勪竴涓睘鎬э紝涔熷氨鏄ProcessState鍙兘鍖呭惈涓涓猻ubprocess鐨勫畾涔夛紝騫朵笖鏈閲嶈鐨勬槸processInstance.getRootToken()鍜屽瓙嫻佺▼鐩稿叧鐨勫彧鏈塩reateSubProcessInstance, getSubProcessInstance, setSubProcessInstance涓変釜鏂規硶錛岃繖鎰忓懗鐫涓繪祦紼嬬殑rootToken鍙兘璁劇疆涓涓瓙嫻佺▼錛宩bpm騫朵笉鐩存帴鏀寔澶氬瓙嫻佺▼銆?
閭d箞鎴戜滑灝卞繀欏葷敤涓涓彉閫氱殑鏂規硶鏉ュ疄鐜幫紝“騫跺彂”寰堣嚜鐒剁殑璁╂垜浠兂鍒頒簡fork錛屼絾鏄繖閲岀殑fork涓嶈兘鎼厤join鏉ヤ嬌鐢紝鍏蜂綋鍘熷洜錛屽皢鍦ㄥ悗闈㈣璁恒?
涓嬮潰鍏堢粰鍑烘祦紼嬪浘錛?

state鑺傜偣鐢ㄦ潵鍚姩瀛愭祦紼嬶紙瀹為檯搴旂敤鍙互鎹㈡垚Task-Node錛夛紝state榪涘叆fork鍚庡悓鏃惰繘鍏ヤ袱涓垎鏀紝涓鏉″幓鍚姩瀛愭祦紼嬶紝鍙︿竴鏉″洖鍒拌嚜宸憋紝榪欐牱琛ㄩ潰鐪嬫潵state娌℃湁鍔紝鑰屽悓鏃朵綘鍙堝彲浠ュ惎鍔ㄧ2涓紝絎?涓?#8230;…瀛愭祦紼嬶紝闇瑕佹敞鎰忕殑鏄2鏉″瓙嫻佺▼鍜岀1涓瓙嫻佺▼騫朵笉澶勪簬鍚屼竴綰т笂錛岃屾瘮絎竴涓瓙嫻佺▼浣庝竴綰э紝鍏蜂綋璇風湅鍚庨潰涓寮犲浘灝辨槑鐧戒簡錛屽垎瑙e悗鐨勶細

浠庡浘涓垜浠彲浠ョ湅鍒板悗涓涓瓙嫻佺▼鐨勬暣媯墊爲鏄墠涓涓瓙嫻佺▼鐨勫厔寮燂紝浣嗘槸鍦ㄤ笟鍔$駭涓婃槸騫跺彂鐨勬晥鏋滐紝宸茬粡瀹炵幇鎴戜滑鍓嶉潰鐨勯渶姹傘?/font>

鐜板湪鏉ヨ璇翠負浠涔堜笉鑳界敤join鑰岀洿鎺ョ敤end錛屽洜涓轟細浜х敓涓涓棶棰橈紝state3鍜宻ub process 2閮藉埌杈句簡join浠ュ悗錛宻tate2涓嬮潰鐨刦ork灝辯粨鏉熶簡錛屽氨浼氱珛鍒昏秺榪噅oin鍒拌揪end錛岃宻ub process 1鍗充嬌鎵ц瀹屾瘯鍒拌揪浜唈oin鍗翠粛鐒跺湪鍌誨偦絳夊緟鐫浠栫殑鍏勫紵鍒嗘敮涔熷埌杈緅oin錛堣屽疄闄呬笂瀹冨凡緇忚嚜璺戝埌end鍘諱簡錛変竴鍚岀粨鏉燂紝榪欐牱sub process 1灝變細姘歌繙鍋滃湪join鍔ㄥ脊涓嶅緱錛屼笟鍔℃棤娉曡繘琛屻?/font>

榪欐槸鎴戠殑涓涓В鍐蟲柟妗堬紝浣嗚繕鏈変竴涓棶棰橈紝铏界劧鍏ㄩ儴鐨勫瓙嫻佺▼閮借兘緇撴潫錛屼富嫻佺▼涔熻兘緇撴潫錛屼絾鍥犱負娌℃湁join錛屼富嫻佺▼鐨剅ootToken浠嶇劧鍋滅暀鍦╢ork鑺傜偣涓娿傜洰鍓嶆垜灝氫笉鐭ュ浣曡В鍐籌紝甯屾湜鍚勪綅澶у鑳芥彁鍑哄叾浠栨洿濂界殑瑙e喅鍔炴硶銆?
鍒濆jbpm錛屾按騫蟲湁闄愶紝鏈変笉褰撲箣澶勮繕璇烽珮鎵嬫枾姝?/font>

鏈鍚庨檮涓奷emo浠g爜渚涘弬鑰冿細

浠g爜
  1.   
  2. import static org.junit.Assert.*;   
  3.   
  4. import org.jbpm.graph.def.ProcessDefinition;   
  5. import org.jbpm.graph.exe.ProcessInstance;   
  6. import org.jbpm.graph.exe.Token;   
  7. import org.jbpm.graph.node.ProcessState;   
  8. import org.junit.Before;   
  9. import org.junit.Test;   
  10.   
  11. public class MultiProcessTest {   
  12.     private ProcessDefinition superProcessDefinition;   
  13.   
  14.     private ProcessDefinition subProcessDefinition;   
  15.   
  16.     @Before   
  17.     public void setUp() throws Exception {   
  18.         superProcessDefinition = ProcessDefinition.parseXmlString(   
  19.                 "<process-definition name='super'>" +                
  20.                 "  <start-state name='start'>" +   
  21.                 "    <transition to='state' />" +   
  22.                 "  start-state>" +   
  23.                 "  <state name='state'>" +   
  24.                 "    <transition name='create sub' to='fork' />" +   
  25.                 "    <transition name='end' to='end' />" +   
  26.                 "  state>" +   
  27.                 "  <fork name='fork'>" +   
  28.                 "    <transition name='back' to='state' />" +   
  29.                 "    <transition name='go to sub' to='sub process' />" +   
  30.                 "  fork>" +   
  31.                 "  <process-state name='sub process'>" +   
  32.                 "    <sub-process name='sub' />" +   
  33.                 "    <transition to='end' />" +   
  34.                 "  process-state>" +   
  35.                 "  <end-state name='end' />" +   
  36.                 "process-definition>");   
  37.            
  38.         subProcessDefinition = ProcessDefinition.parseXmlString(   
  39.                 "<process-definition name='sub'>" +                          
  40.                 "  <start-state name='start'>"  +   
  41.                 "    <transition to='wait' />" +   
  42.                 "  start-state>" +                         
  43.                 "  <state name='wait'>" +   
  44.                 "    <transition to='end' />" +   
  45.                 "  state>" +              
  46.                 "  <end-state name='end' />" +   
  47.                 "process-definition>");   
  48.         ProcessState processState = (ProcessState) superProcessDefinition   
  49.                 .getNode("sub process");   
  50.         processState.setSubProcessDefinition(subProcessDefinition);   
  51.     }   
  52.   
  53.     @Test   
  54.     public void testMultiProcesses() {   
  55.         ProcessInstance pi = new ProcessInstance(superProcessDefinition);   
  56.   
  57.         // 鍚姩涓涓富嫻佺▼   
  58.         pi.signal();   
  59.         assertEquals("state", pi.getRootToken().getNode().getName());   
  60.   
  61.         // 榪涘叆鍒嗘敮錛屾澶勫皢榪涘叆瀛愭祦紼?  
  62.         pi.signal("create sub");   
  63.         // 涓繪祦紼媡oken灝嗗仠鐣欏湪fork鑺傜偣涓?  
  64.         assertEquals("fork", pi.getRootToken().getNode().getName());   
  65.   
  66.         // fork鍒嗕負涓ゆ敮錛屽叾涓竴鏀殑鑺傜偣鍋滅暀鍦≒rocessState涓?  
  67.         Token subProcessToken1 = pi.getRootToken().getChild("go to sub");   
  68.         ProcessInstance subPi1 = subProcessToken1.getSubProcessInstance();   
  69.         assertEquals("wait", subPi1.getRootToken().getNode().getName());   
  70.   
  71.         // 鍙︿竴鏀繑鍥炰簡state鑺傜偣錛屽疄闄呬笂騫舵病鏈夎繑鍥烇紝榪欎釜state鑺傜偣涓嶅悓浜庡厛鍓嶇殑state錛屽畠浠茍涓嶅湪鍚屼竴涓猵ath涓?  
  72.         Token stateToken1 = pi.getRootToken().getChild("back");   
  73.         assertEquals("state", stateToken1.getNode().getName());   
  74.            
  75.         // 鍐嶆榪涘叆fork錛屽惎鍔ㄧ浜屼釜瀛愭祦紼?  
  76.         stateToken1.signal("create sub");   
  77.         ProcessInstance subPi2 = stateToken1.getChild("go to sub")   
  78.                 .getSubProcessInstance();   
  79.         // 铏界劧閮芥槸瀛愭祦紼嬶紝浣嗗畠浠茍涓嶇浉鍚岋紝鍦ㄩ昏緫涓婃槸灞炰簬騫跺彂鐨勬棤鍏崇郴鐨勫瓙嫻佺▼   
  80.         assertFalse(subPi1.equals(subPi2));   
  81.         // 緇撴潫絎簩涓瓙嫻佺▼   
  82.         subPi2.signal();   
  83.         assertTrue(subPi2.hasEnded());   
  84.         assertFalse(pi.hasEnded());   
  85.   
  86.         // 緇撴潫絎竴涓瓙嫻佺▼錛屼絾涓繪祦紼嬩粛鏈粨鏉?  
  87.         subPi1.signal();   
  88.         assertTrue(subPi1.hasEnded());   
  89.         assertFalse(pi.hasEnded());   
  90.            
  91.         // 緇撴潫絎簩涓瓙嫻佺▼涓殑state錛岀涓瀛愭祦紼嬬殑back鍒嗘敮緇撴潫錛屼粠鑰屼富嫻佺▼涔熺粨鏉?  
  92.         Token stateToken2 = stateToken1.getChild("back");   
  93.         assertEquals("state", stateToken2.getNode().getName());   
  94.         assertFalse(stateToken1.hasEnded());   
  95.         assertFalse(pi.hasEnded());   
  96.         stateToken2.signal("end");   
  97.            
  98.         assertTrue(stateToken1.hasEnded());   
  99.         assertTrue(subPi1.hasEnded());   
  100.         assertTrue(pi.getRootToken().getChild("back").hasEnded());   
  101.         assertTrue(pi.getRootToken().getChild("go to sub").hasEnded());   
  102.         // 涓繪祦紼嬬粨鏉熶簡   
  103.         assertTrue(pi.hasEnded());   
  104.         // 铏界劧涓繪祦紼嬪凡緇忕粨鏉熶簡錛屼絾鏄洜涓哄瓙嫻佺▼娌℃湁join錛屾墍浠ュ叾rootToken浠嶇劧鍋滅暀鍦╢ork涓?  
  105.         assertEquals("fork", pi.getRootToken().getNode().getName());   
  106.         // 絎簩涓瓙嫻佺▼鍒拌揪鐨別nd鍜屼富嫻佺▼涓殑end騫朵笉鏄悓涓涓妭鐐?/font>   
  107.         assertTrue(!pi.getRootToken().getNode().equals(stateToken2.getNode()));   
  108.     }   
  109. }   


jbpm 2007-09-11 17:48 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 苏尼特右旗| 顺昌县| 长丰县| 惠水县| 福泉市| 维西| 青阳县| 荣昌县| 克拉玛依市| 百色市| 邮箱| 车致| 土默特右旗| 内黄县| 聊城市| 榆树市| 隆德县| 来宾市| 三门峡市| 广州市| 奈曼旗| 巧家县| 德兴市| 昌都县| 怀集县| 北川| 日照市| 鹤庆县| 庄河市| 三亚市| 永靖县| 河间市| 上犹县| 延川县| 滦平县| 阳原县| 永吉县| 林口县| 集安市| 泊头市| 民丰县|