<font size=2 face="sans-serif">Hi &nbsp;</font>
<br>
<br>
<br><font size=2 face="sans-serif"><b>1/ Here is my snapshot code which
initilize session to use bpmn:</b></font>
<br>
<br><font size=2 color=#820040 face="Courier New"><b>protected</b></font><font size=2 face="Courier New">
</font><font size=2 color=#820040 face="Courier New"><b>void</b></font><font size=2 face="Courier New">
startProcess(T processContext) </font><font size=2 color=#820040 face="Courier New"><b>throws</b></font><font size=2 face="Courier New">
ProcessException {</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </font><font size=2 color=#0021bf face="Courier New"><i>log</i></font><font size=2 face="Courier New">.info(</font><font size=2 color=#4200ff face="Courier New">&quot;Executing
BPMN process : &quot;</font><font size=2 face="Courier New"> + getProcessName().getProcessId()
+ </font><font size=2 color=#4200ff face="Courier New">&quot; ...&quot;</font><font size=2 face="Courier New">);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </font><font size=2 color=#3f8080 face="Courier New">//
<u>init</u> common properties when entering in process</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; init(processContext);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; audit(processContext);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </font><font size=2 color=#3f8080 face="Courier New">//
process execution</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </font><font size=2 color=#3f8080 face="Courier New">//
load up the knowledge base</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; StatefulKnowledgeSession ksession = </font><font size=2 color=#820040 face="Courier New"><b>null</b></font><font size=2 face="Courier New">;</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; KnowledgeRuntimeLogger fileLogger = </font><font size=2 color=#820040 face="Courier New"><b>null</b></font><font size=2 face="Courier New">;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; String auditFileName = getAuditFileName(getProcessName(),
processContext);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; ProcessInstance processInstance = </font><font size=2 color=#820040 face="Courier New"><b>null</b></font><font size=2 face="Courier New">;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </font><font size=2 color=#820040 face="Courier New"><b>try</b></font><font size=2 face="Courier New">
{</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ksession
= </font><font size=2 color=#0021bf face="Courier New">omsRulesManager</font><font size=2 face="Courier New">.getOmsRulesService().getKnownledgeBase()</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .newStatefulKnowledgeSession();</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </font><font size=2 color=#820040 face="Courier New"><b>if</b></font><font size=2 face="Courier New">
(</font><font size=2 color=#0021bf face="Courier New"><i>log</i></font><font size=2 face="Courier New">.isDebugEnabled())
{</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; String folder = System.<i>getProperty</i>(</font><font size=2 color=#4200ff face="Courier New">&quot;Log4j.OUTPUT_DIR&quot;</font><font size=2 face="Courier New">);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </font><font size=2 color=#820040 face="Courier New"><b>if</b></font><font size=2 face="Courier New">
(StringUtils.<i>isEmpty</i>(folder)) {</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; folder
= System.<i>getProperty</i>(</font><font size=2 color=#4200ff face="Courier New">&quot;java.io.tmpdir&quot;</font><font size=2 face="Courier New">);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; }</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; String fullFileName = folder + File.</font><font size=2 color=#0021bf face="Courier New"><i>separator</i></font><font size=2 face="Courier New">
+ auditFileName;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; fileLogger = KnowledgeRuntimeLoggerFactory.<i>newFileLogger</i>(</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; ksession, fullFileName);</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; ksession.addEventListener(</font><font size=2 color=#820040 face="Courier New"><b>new</b></font><font size=2 face="Courier New">
DebugWorkingMemoryEventListener());</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; ksession.addEventListener(</font><font size=2 color=#820040 face="Courier New"><b>new</b></font><font size=2 face="Courier New">
DebugAgendaEventListener());</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </font><font size=2 color=#0021bf face="Courier New"><i>log</i></font><font size=2 face="Courier New">.debug(</font><font size=2 color=#4200ff face="Courier New">&quot;Starting
workflow process : &quot;</font><font size=2 face="Courier New"> + getProcessName().getProcessId()</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + </font><font size=2 color=#4200ff face="Courier New">&quot;
...&quot;</font><font size=2 face="Courier New">);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ksession.setGlobal(</font><font size=2 color=#4200ff face="Courier New">&quot;log&quot;</font><font size=2 face="Courier New">,
</font><font size=2 color=#0021bf face="Courier New"><i>log</i></font><font size=2 face="Courier New">);</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </font><font size=2 color=#3f8080 face="Courier New">//
populate knowledge session global </font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Map&lt;String,
Object&gt; global = getSessionGlobal(processContext);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; populateGlobalSession(ksession,
global);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Map&lt;String,
Object&gt; parameters = getProcessParameters(processContext);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ksession.insert((OrderContext)
processContext);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; processInstance
= ksession.startProcess(getProcessName().getProcessId(), parameters);</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ksession.insert(processInstance);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ksession.fireAllRules();</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </font><font size=2 color=#820040 face="Courier New"><b>if</b></font><font size=2 face="Courier New">(fileLogger
!= </font><font size=2 color=#820040 face="Courier New"><b>null</b></font><font size=2 face="Courier New">)
{</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; fileLogger.close();</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parameters
= </font><font size=2 color=#820040 face="Courier New"><b>null</b></font><font size=2 face="Courier New">;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; } </font><font size=2 color=#820040 face="Courier New"><b>catch</b></font><font size=2 face="Courier New">
(Exception e) {</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </font><font size=2 color=#820040 face="Courier New"><b>throw</b></font><font size=2 face="Courier New">
</font><font size=2 color=#820040 face="Courier New"><b>new</b></font><font size=2 face="Courier New">
ProcessException(e.getMessage(), e);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; } </font><font size=2 color=#820040 face="Courier New"><b>finally</b></font><font size=2 face="Courier New">
{</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ksession.dispose();
</font><font size=2 color=#3f8080 face="Courier New">// free memory</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; processInstance
= </font><font size=2 color=#820040 face="Courier New"><b>null</b></font><font size=2 face="Courier New">;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ksession
= </font><font size=2 color=#820040 face="Courier New"><b>null</b></font><font size=2 face="Courier New">;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; }</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </font><font size=2 color=#0021bf face="Courier New"><i>log</i></font><font size=2 face="Courier New">.info(</font><font size=2 color=#4200ff face="Courier New">&quot;BPMN
process : &quot;</font><font size=2 face="Courier New"> + getProcessName().name()
+ </font><font size=2 color=#4200ff face="Courier New">&quot; executed&quot;</font><font size=2 face="Courier New">);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; }</font>
<br>
<br>
<br><font size=2 color=#4040c2 face="Courier New">&nbsp; &nbsp; &nbsp;
&nbsp; /**</font>
<br><font size=2 color=#4040c2 face="Courier New">&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;* Default</font>
<br><font size=2 color=#4040c2 face="Courier New">&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;* </font><font size=2 color=#71b2cf face="Courier New"><b>@param</b></font><font size=2 color=#4040c2 face="Courier New">
processContext</font>
<br><font size=2 color=#4040c2 face="Courier New">&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;* </font><font size=2 color=#71b2cf face="Courier New"><b>@return</b></font>
<br><font size=2 color=#4040c2 face="Courier New">&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;*/</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; </font><font size=2 color=#5f5f5f face="Courier New">@SuppressWarnings</font><font size=2 face="Courier New">(</font><font size=2 color=#4200ff face="Courier New">&quot;unchecked&quot;</font><font size=2 face="Courier New">)</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; </font><font size=2 color=#820040 face="Courier New"><b>protected</b></font><font size=2 face="Courier New">
Map&lt;String, Object&gt; getProcessParameters(OmsProcessContext processContext)
{</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; Map map = </font><font size=2 color=#820040 face="Courier New"><b>new</b></font><font size=2 face="Courier New">
HashMap();</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; map.put(</font><font size=2 color=#4200ff face="Courier New">&quot;orderContext&quot;</font><font size=2 face="Courier New">,
(OrderContext) processContext);</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </font><font size=2 color=#820040 face="Courier New"><b>return</b></font><font size=2 face="Courier New">
map;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; }</font>
<br>
<br>
<br><font size=2 face="sans-serif"><b>2/ and bpmn this was very complex,
I just create small one to simulate the case </b></font>
<br>
<br><font size=2 face="sans-serif">------ BEGIN BPMN -----</font>
<br>
<br><font size=2 face="Courier New">&lt;?<u>xml</u> version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;?&gt; </font>
<br><font size=2 face="Courier New">&lt;definitions id=&quot;Definition&quot;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;targetNamespace=&quot;</font><a href=http://www.jboss.org/drools><font size=2 face="Courier New">http://www.jboss.org/drools</font></a><font size=2 face="Courier New">&quot;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;typeLanguage=&quot;</font><a href=http://www.java.com/javaTypes><font size=2 face="Courier New">http://www.java.com/javaTypes</font></a><font size=2 face="Courier New">&quot;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;expressionLanguage=&quot;</font><a href=http://www.mvel.org/2.0><font size=2 face="Courier New">http://www.mvel.org/2.0</font></a><font size=2 face="Courier New">&quot;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;<u>xmlns</u>=&quot;</font><a href=http://www.omg.org/spec/BPMN/20100524/MODEL><font size=2 face="Courier New">http://www.omg.org/spec/BPMN/20100524/MODEL</font></a><font size=2 face="Courier New">&quot;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;xmlns:xsi=&quot;</font><a href="http://www.w3.org/2001/XMLSchema-instance"><font size=2 face="Courier New">http://www.w3.org/2001/XMLSchema-instance</font></a><font size=2 face="Courier New">&quot;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;xsi:schemaLocation=&quot;</font><a href=http://www.omg.org/spec/BPMN/20100524/MODEL><font size=2 face="Courier New">http://www.omg.org/spec/BPMN/20100524/MODEL</font></a><font size=2 face="Courier New">
BPMN20.<u>xsd</u>&quot;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;xmlns:g=&quot;</font><a href=http://www.jboss.org/drools/flow/gpd><font size=2 face="Courier New">http://www.jboss.org/drools/flow/gpd</font></a><font size=2 face="Courier New">&quot;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;xmlns:bpmndi=&quot;</font><a href=http://www.omg.org/spec/BPMN/20100524/DI><font size=2 face="Courier New">http://www.omg.org/spec/BPMN/20100524/DI</font></a><font size=2 face="Courier New">&quot;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;xmlns:dc=&quot;</font><a href=http://www.omg.org/spec/DD/20100524/DC><font size=2 face="Courier New">http://www.omg.org/spec/DD/20100524/DC</font></a><font size=2 face="Courier New">&quot;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;xmlns:di=&quot;</font><a href=http://www.omg.org/spec/DD/20100524/DI><font size=2 face="Courier New">http://www.omg.org/spec/DD/20100524/DI</font></a><font size=2 face="Courier New">&quot;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;xmlns:tns=&quot;</font><a href=http://www.jboss.org/drools><font size=2 face="Courier New">http://www.jboss.org/drools</font></a><font size=2 face="Courier New">&quot;&gt;</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &lt;itemDefinition id=&quot;_orderContextItem&quot;
structureRef=&quot;com.bp2s.oms.process.OrderContext&quot; /&gt;</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &lt;process processType=&quot;Private&quot;
isExecutable=&quot;true&quot; id=&quot;com.bp2s.oms.dealing.process.OrderReceptionProcess&quot;
name=&quot;OrderReceptionProcess&quot; tns:packageName=&quot;com.bp2s.oms.dealing.process&quot;
&gt;</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;extensionElements&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.corecontrol.ValidationResult&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.corecontrol.service.CoreControlTreeService&quot;
/&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.core.service.OrderService&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.corecontrol.service.CoreControlTreeService.CoreControlTree&quot;
/&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.core.error.OrderInErrorService&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.model.common.OrderStatus.Status&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.model.process.Disposition&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.model.staticdata.Fund&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.model.task.TaskContext&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.process.OmsProcessContext&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.process.OrderContext&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.process.OmsProcessContext.IncomingMode&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.process.OmsProcessContext.ComingFrom&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.status.management.OrderStatusService&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.task.TaskContextFactory&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.task.TaskContextQueue&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.corecontrol.CoreControlError&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;org.apache.commons.logging.Log&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.model.process.OrderInError&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.model.process.Operation&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;java.util.List&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.corecontrol.CoreControlError.ErrorCode&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:import
name=&quot;com.bp2s.oms.dao.StoredProcedureDAO&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:global
identifier=&quot;queue&quot; type=&quot;TaskContextQueue&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:global
identifier=&quot;orderService&quot; type=&quot;OrderService&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:global
identifier=&quot;coreControlTreeService&quot; type=&quot;CoreControlTreeService&quot;
/&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:global
identifier=&quot;storedProcedureDAO&quot; type=&quot;StoredProcedureDAO&quot;
/&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:global
identifier=&quot;taskContextFactory&quot; type=&quot;TaskContextFactory&quot;
/&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:global
identifier=&quot;log&quot; type=&quot;Log&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:global
identifier=&quot;orderStatusService&quot; type=&quot;OrderStatusService&quot;
/&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;&lt;tns:global
identifier=&quot;orderInErrorService&quot; type=&quot;OrderInErrorService&quot;
/&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;/extensionElements&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;!-- process variables
--&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;property id=&quot;orderContext&quot;
itemSubjectRef=&quot;_orderContextItem&quot;/&gt;</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;!-- nodes --&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;startEvent id=&quot;_1&quot;
name=&quot;StartProcess&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;endEvent id=&quot;_2&quot;
name=&quot;End&quot; &gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &lt;terminateEventDefinition
/&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;/endEvent&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;scriptTask id=&quot;_3&quot;
name=&quot;test parameters &quot; scriptFormat=&quot;</font><a href=http://www.java.com/java><font size=2 face="Courier New">http://www.java.com/java</font></a><font size=2 face="Courier New">&quot;
&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &lt;script&gt;log.info(&quot;I
am here : &quot; + orderContext.toString());&lt;/script&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;/scriptTask&gt;</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;!-- connections --&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;sequenceFlow id=&quot;_3-_2&quot;
sourceRef=&quot;_3&quot; targetRef=&quot;_2&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;sequenceFlow id=&quot;_1-_3&quot;
sourceRef=&quot;_1&quot; targetRef=&quot;_3&quot; /&gt;</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &lt;/process&gt;</font>
<br>
<br><font size=2 face="Courier New">&nbsp; &lt;bpmndi:BPMNDiagram&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;bpmndi:BPMNPlane
bpmnElement=&quot;com.bp2s.oms.dealing.process.OrderReceptionProcess&quot;
&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &lt;bpmndi:BPMNShape
bpmnElement=&quot;_1&quot; &gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &lt;dc:Bounds
x=&quot;324&quot; y=&quot;82&quot; width=&quot;48&quot; height=&quot;48&quot;
/&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &lt;/bpmndi:BPMNShape&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &lt;bpmndi:BPMNShape
bpmnElement=&quot;_2&quot; &gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &lt;dc:Bounds
x=&quot;324&quot; y=&quot;264&quot; width=&quot;48&quot; height=&quot;48&quot;
/&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &lt;/bpmndi:BPMNShape&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &lt;bpmndi:BPMNShape
bpmnElement=&quot;_3&quot; &gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &lt;dc:Bounds
x=&quot;240&quot; y=&quot;168&quot; width=&quot;217&quot; height=&quot;48&quot;
/&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &lt;/bpmndi:BPMNShape&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &lt;bpmndi:BPMNEdge
bpmnElement=&quot;_3-_2&quot; &gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &lt;di:waypoint
x=&quot;348&quot; y=&quot;192&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &lt;di:waypoint
x=&quot;348&quot; y=&quot;288&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &lt;/bpmndi:BPMNEdge&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &lt;bpmndi:BPMNEdge
bpmnElement=&quot;_1-_3&quot; &gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &lt;di:waypoint
x=&quot;348&quot; y=&quot;106&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &lt;di:waypoint
x=&quot;348&quot; y=&quot;192&quot; /&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &lt;/bpmndi:BPMNEdge&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &lt;/bpmndi:BPMNPlane&gt;</font>
<br><font size=2 face="Courier New">&nbsp; &lt;/bpmndi:BPMNDiagram&gt;</font>
<br>
<br><font size=2 face="Courier New">&lt;/definitions&gt;</font>
<br>
<br><font size=2 face="sans-serif">----- END BPMN</font>
<br>
<br>
<br><font size=2 face="sans-serif">3/ Memory dump after forcing GC</font>
<br>
<br><font size=2 face="sans-serif">OrderContext is always here after calling
BPMN with orderContext in process parameter</font>
<br>
<br>
<br><img src=cid:_1_07FB3EB407FB391800383C73C1257CEC>
<br><font size=2 face="sans-serif">Thanks in advance,</font>
<br>
<br><font size=2 face="sans-serif">Regards,</font>
<br>
<br>
<br><font size=2 face="sans-serif">Paul</font>
<br>
<br>
<br>
<br>
<br>
<table width=100%>
<tr>
<td><img src=cid:_1_09062BF8090627F800383C73C1257CEC width=80 height=1>
<td width=100%>
<table width=100%>
<tr valign=top>
<td width=100%><font size=2 face="sans-serif"><b>Re: [jbpm-dev] process
instance BPMN and variable scope memory leak</b></font></table>
<br>
<table width=100%>
<tr>
<td><font size=2 color=#e26200 face="sans-serif"><b>(Internet)</b></font>
<br><font size=2 color=#e26200 face="sans-serif"><b>salaboy </b></font>
<td>
<td valign=top>
<table width=100%>
<tr valign=top>
<td><font size=2 color=#8f8f8f face="sans-serif">To:</font>
<td><font size=2 face="sans-serif">Paul CHAU N'GUYEN</font>
<tr valign=top>
<td><font size=1 color=#8f8f8f face="sans-serif">Cc:</font>
<td><font size=1 face="sans-serif">jbpm-dev</font></table>
<br>
<td>
<div align=right><font size=1 face="sans-serif">03/06/2014 11:58</font></div></table>
<br></table>
<br>
<br>
<hr>
<br>
<br>
<br><font size=3>Can you please provide a reproducer for this:&nbsp;</font>
<br>
<br><font size=2 face="sans-serif">2/ We try to change this in moving object
(prototype) to process parameters map, --&gt; still the same issue: after
bpmn execution object is still there JVM garbage collection can not removed
it</font><font size=2 face="Arial">&nbsp;</font>
<br>
<br><font size=2 face="Arial">so we can check it out?&nbsp;</font>
<br>
<br><font size=2 face="Arial">Usually a Junit inside a maven project is
enough&nbsp;</font>
<br><font size=3><br>
</font>
<br><font size=3>On Tue, Jun 3, 2014 at 10:41 AM, &lt;</font><a href=mailto:paul.chaunguyen@externe.bnpparibas.com target=_blank><font size=3 color=blue><u>paul.chaunguyen@externe.bnpparibas.com</u></font></a><font size=3>&gt;
wrote:</font>
<br><font size=3 face="sans-serif">Dear all,</font><font size=3> <br>
</font><font size=3 face="sans-serif"><br>
We are facing big issue with variable scope so application failed to out
of memory with BPMN.</font><font size=3> <br>
</font><font size=3 face="sans-serif"><br>
Our situtation is below</font><font size=3> <br>
</font><font size=3 face="sans-serif"><br>
1/ Initially, we put an object (prototype) as global inside BPMN --&gt;
after bpmn execution object is still there JVM garbage collection can not
removed it</font><font size=3> <br>
</font><font size=3 face="sans-serif"><br>
2/ We try to change this in moving object (prototype) to process parameters
map, --&gt; still the same issue: after bpmn execution object is still
there JVM garbage collection can not removed it</font><font size=3> <br>
<br>
</font><font size=3 face="sans-serif"><br>
3/ We try to use this object as facts but can not get the good syntax in
java dialect to process as document or user guide related BPMN is very
poor, Can you help please ?</font><font size=3> <br>
</font><font size=3 face="sans-serif"><br>
Many thanks,</font><font size=3> <br>
<br>
</font><font size=3 face="sans-serif"><br>
Regards,</font><font size=3> <br>
</font><font size=3 face="sans-serif"><br>
Paul</font><font size=3> </font>
<p><font size=3>This message and any attachments (the &quot;message&quot;)
is<br>
intended solely for the intended addressees and is confidential. <br>
If you receive this message in error,or are not the intended recipient(s),
<br>
please delete it and any copies from your systems and immediately notify<br>
the sender. Any unauthorized view, use that does not comply with its purpose,
<br>
dissemination or disclosure, either whole or partial, is prohibited. Since
the internet <br>
cannot guarantee the integrity of this message which may not be reliable,
BNP PARIBAS <br>
(and its subsidiaries) shall not be liable for the message if modified,
changed or falsified. <br>
Do not print this message unless it is necessary,consider the environment.</font>
<p><font size=3>----------------------------------------------------------------------------------------------------------------------------------</font>
<p><font size=3>Ce message et toutes les pieces jointes (ci-apres le &quot;message&quot;)
<br>
sont etablis a l'intention exclusive de ses destinataires et sont confidentiels.<br>
Si vous recevez ce message par erreur ou s'il ne vous est pas destine,<br>
merci de le detruire ainsi que toute copie de votre systeme et d'en avertir<br>
immediatement l'expediteur. Toute lecture non autorisee, toute utilisation
de <br>
ce message qui n'est pas conforme a sa destination, toute diffusion ou
toute <br>
publication, totale ou partielle, est interdite. L'Internet ne permettant
pas d'assurer<br>
l'integrite de ce message electronique susceptible d'alteration, BNP Paribas
<br>
(et ses filiales) decline(nt) toute responsabilite au titre de ce message
dans l'hypothese<br>
ou il aurait ete modifie, deforme ou falsifie. <br>
N'imprimez ce message que si necessaire, pensez a l'environnement.</font>
<p><font size=3><br>
_______________________________________________<br>
jbpm-dev mailing list</font><font size=3 color=blue><u><br>
</u></font><a href="mailto:jbpm-dev@lists.jboss.org"><font size=3 color=blue><u>jbpm-dev@lists.jboss.org</u></font></a><font size=3 color=blue><u><br>
</u></font><a href="https://lists.jboss.org/mailman/listinfo/jbpm-dev" target=_blank><font size=3 color=blue><u>https://lists.jboss.org/mailman/listinfo/jbpm-dev</u></font></a>
<br><font size=3><br>
</font>
<br>
<br><font size=3>-- </font>
<br><font size=3>&nbsp;- MyJourney @ </font><a href=http://salaboy.wordpress.com/ target=_blank><font size=3 color=blue><u>http://salaboy.com</u></font></a>
<br><font size=3>&nbsp;- Co-Founder @ </font><a href=http://www.jugargentina.org/ target=_blank><font size=3 color=blue><u>http://www.jugargentina.org</u></font></a><font size=3><br>
&nbsp;- Co-Founder @ </font><a href=http://www.jbug.com.ar/ target=_blank><font size=3 color=blue><u>http://www.jbug.com.ar</u></font></a><font size=3><br>
&nbsp;<br>
&nbsp;- Salatino &quot;Salaboy&quot; Mauricio -</font>
<br>