2011-12-12 44 views
0

這裏是我的代碼,將啓動一個進程:如何從進程內讀取外部參數?

StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); 

Map<String, Object> params = new HashMap<String, Object>(); 
params.put("doctorsDecision", "L1"); 
ksession.startProcess("MyProcess", params); 

這裏就是我希望這個變量在MyProcess可用。這是我的腳本任務之一的MyProcess行動:

System.out.println("doctorsDecision: "+doctorsDecision); 

這是一個進程內訪問外部變量的正確方法?

P.S.

當我運行我的應用程序時,流程定義永遠不會添加到知識庫中,因爲jBPM似乎無法識別doctorsDecision變量。我怎麼能告訴jBPM這個變量是外部的,它的值將在運行時提供?

回答

0

你可以描述一下你的過程更好一點嗎?您是否只有啓動事件,然後是打印出來的腳本任務? 您是否定義了過程中的輸入變量?因爲您應該在流程定義中添加當您啓動流程時將從外部環境接收的變量。

你能給我們更多的背景嗎?如果您可以啓動流程,那麼您的意思是「流程定義永遠不會添加到知識庫」,這意味着該流程已添加到知識庫中。如果不是startProcess(「MyProcess」,params)將會失敗。 你可以顯示執行的輸出嗎?

使用KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);在開始您的過程之前,您將在控制檯中向您顯示流程引擎的內部活動。

希望它可以幫助.. 乾杯

0

我JBPM的初學者,我遇到了同樣的問題,當我開始使用JBPM。 嘗試添加數據對象在proess 的名字是doctorsDecision和類型爲String

結果是

<process> 
... 
... 
<dataObject id="doctorsDecision" name="doctorsDecision" itemSubjectRef="ItemDefinition_1"/> 
</process> 

<itemDefinition id="ItemDefinition_1" structureRef="String"/> 

,它爲我工作。