<div><br></div><div>Thanks for you answer, </div><div><br></div><div>I thought the performance model took the two branches and processed in parallel in java. Now, given that it is not, I would like to know that I can do in java to execute in parallel my two subflows.</div>
<div><br></div><div>The launcher is: </div><div><br></div><div><div><i><span class="Apple-style-span" style="font-size: x-small;">package com.epmbog.esb.drools.mediator;</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"><br>
</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;">import java.util.HashMap;</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;">import java.util.Map;</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"><br></span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;">import org.drools.KnowledgeBase;</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;">import org.drools.KnowledgeBaseConfiguration;</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;">import org.drools.KnowledgeBaseFactory;</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;">import org.drools.builder.KnowledgeBuilder;</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;">import org.drools.builder.KnowledgeBuilderFactory;</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;">import org.drools.builder.ResourceType;</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;">import org.drools.conf.MultithreadEvaluationOption;</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;">import org.drools.io.ResourceFactory;</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;">import org.drools.runtime.StatefulKnowledgeSession;</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"><br></span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;">import com.epmbog.drools.utils.Constantes;</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;">import com.epmbog.esb.drools.workitems.EJBGenericWorkItemHandler;</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"><br></span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;">public class TestProcess {</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"><br>
</span></i></div><div><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">        </span></i></span><i><span class="Apple-style-span" style="font-size: x-small;">public static final void main(String[] args) {</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div><div><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">                </span></i></span><i><span class="Apple-style-span" style="font-size: x-small;">try {</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> KnowledgeBase knowledgeBase = readRule();</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> ksession.getWorkItemManager().registerWorkItemHandler("TelnetConnection", new EJBGenericWorkItemHandler());</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> ksession.getWorkItemManager().registerWorkItemHandler( "TelnetDisonnection", new EJBGenericWorkItemHandler());</span></i></div><div>
<i><span class="Apple-style-span" style="font-size: x-small;"> ksession.getWorkItemManager().registerWorkItemHandler( "TelnetSendCommands", new EJBGenericWorkItemHandler());</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> HashMap<String, Object> paramMap = new HashMap<String, Object>();</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> paramMap.put( Constantes.SOFT_SWITCH_IP , "10.134.2.2");</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> paramMap.put( Constantes.SOFT_SWITCH_USER , null);</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> paramMap.put( Constantes.SOFT_SWITCH_PASS , null);</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> paramMap.put( Constantes.SOFT_SWITCH_PORT , "6000");</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> paramMap.put( Constantes.UMG_IP , "10.134.2.11");</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> paramMap.put( Constantes.UMG_USER , "gestor");</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> paramMap.put( Constantes.UMG_PASS , "gestor");</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> paramMap.put( Constantes.UMG_PORT , "23");</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> Map<String, Object> parameters = new HashMap<String, Object>();</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> Map<String, Object> results = new HashMap<String, Object>();</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> Map<String, Object> mapaFormadoPorEsbSegunDatosInfraestructuraSolicitados = new HashMap<String, Object>();</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> mapaFormadoPorEsbSegunDatosInfraestructuraSolicitados.put("softswitch_user", "mediator");</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> mapaFormadoPorEsbSegunDatosInfraestructuraSolicitados.put("softswitch_pass", "mediator");</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> mapaFormadoPorEsbSegunDatosInfraestructuraSolicitados.put("softswitch_number", "6057000");</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> mapaFormadoPorEsbSegunDatosInfraestructuraSolicitados.put("softswitch_circuitInit", "864");</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> mapaFormadoPorEsbSegunDatosInfraestructuraSolicitados.put("softswitch_circuitEnd", "895");</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> mapaFormadoPorEsbSegunDatosInfraestructuraSolicitados.put("umg_port", "00");</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> mapaFormadoPorEsbSegunDatosInfraestructuraSolicitados.put("umg_slot", "03");</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> mapaFormadoPorEsbSegunDatosInfraestructuraSolicitados.put("umg_frame", "1");</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> mapaFormadoPorEsbSegunDatosInfraestructuraSolicitados.put("umg_cardType", "CUALQUIERJODA");</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> paramMap.put( Constantes.FM_PARAMETERS_MAP , mapaFormadoPorEsbSegunDatosInfraestructuraSolicitados);</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">                </span></i></span><i><span class="Apple-style-span" style="font-size: x-small;">parameters.put("factsMap", paramMap);</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">                </span></i></span><i><span class="Apple-style-span" style="font-size: x-small;">parameters.put("resultsMap", results);</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">                </span></i></span></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">                </span></i></span><i><span class="Apple-style-span" style="font-size: x-small;">ksession.startProcess( "com.epmbog.esb.drools.mediator.PriDigitalTest", parameters );</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">                        </span></i></span></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">                </span></i></span><i><span class="Apple-style-span" style="font-size: x-small;">ksession.fireAllRules();</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">                </span></i></span></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">                </span></i></span></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">                </span></i></span><i><span class="Apple-style-span" style="font-size: x-small;">System.out.println("Cualquier cosa");</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">                </span></i></span></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> } catch ( Throwable t ) {</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> t.printStackTrace();</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> }</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> }</span></i></div><div><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">        </span></i></span></div>
<div><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">        </span></i></span><i><span class="Apple-style-span" style="font-size: x-small;">private static KnowledgeBase readRule() throws Exception {</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div><div><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">                </span></i></span><i><span class="Apple-style-span" style="font-size: x-small;">KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); </span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div><div><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">                </span></i></span><i><span class="Apple-style-span" style="font-size: x-small;">kbuilder.add( ResourceFactory.newClassPathResource( "/com/epmbog/esb/drools/mediator/PriDigitalTest.rf", TestProcess.class ),</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> ResourceType.DRF );</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> kbuilder.add( ResourceFactory.newClassPathResource( "/com/epmbog/esb/drools/mediator/SoftSwitchFlow.rf", TestProcess.class ),</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> ResourceType.DRF );</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> kbuilder.add( ResourceFactory.newClassPathResource( "/com/epmbog/esb/drools/mediator/UMGFlow.rf", TestProcess.class ),</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> ResourceType.DRF );</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> KnowledgeBaseConfiguration configuration = KnowledgeBaseFactory</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> .newKnowledgeBaseConfiguration();</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div><div>
<i><span class="Apple-style-span" style="font-size: x-small;"> configuration.setOption( MultithreadEvaluationOption.YES );</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> </span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"> KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(configuration);</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );</span></i></div>
<div><i><span class="Apple-style-span" style="font-size: x-small;"><br></span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> return kbase;</span></i></div><div><i><span class="Apple-style-span" style="font-size: x-small;"> }</span></i></div>
<div><span class="Apple-tab-span" style="white-space:pre"><i><span class="Apple-style-span" style="font-size: x-small;">        </span></i></span></div><div><i><span class="Apple-style-span" style="font-size: x-small;">}</span></i></div>
<div><br></div><div>Thank you,</div></div><div><br></div><br clear="all">PEDRO MARIA BUITRAGO MANTILLA<br><br>Bogotá, Colombia<br><br>
<br><br><div class="gmail_quote">2010/4/9 Mauricio Salatino <span dir="ltr"><<a href="mailto:salaboy@gmail.com">salaboy@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
When we define two parallel branches in a business process we represent a real situation where two task needs to be completed in parallel. We are not expressing something low level as Concurrent (multi threaded) programming.<br>
<br>Does this explanation answer your question?<br><br><div class="gmail_quote">2010/4/9 Pedro Maria Buitrago Mantilla <span dir="ltr"><<a href="mailto:pmbtgun@gmail.com" target="_blank">pmbtgun@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex"><div><div></div><div class="h5">
<div>Greetings for all,</div><div><br></div><div>We're learning about jboss rules ( drools ), in particular, drools flow by the workflow topic.</div><div><br></div><div>In the documentation, the parallelism is solved by means of split node of type 1 (AND). </div>
<div>However, when we execute the testing ,the execution is sequential.</div><div><br></div><div>In particular, the idea is that our workflow executes two subflows in parallel. For this target we configured a </div><div>
"split node" with type 'AND' and a "join node" with type 'AND', no more configuration, Is it required another configurations? </div><div>Is it problem of standalone applications? We don't know.</div>
<div><br></div><div><br></div><div>This is the case:</div><div><br></div><div>0. Drools:</div><div><br></div><div><div>Created-By: Apache Maven</div><div>Built-By: trikkola</div><div>Build-Jdk: 1.5.0_15</div>
<div>Specification-Title: Drools :: API</div><div>Specification-Version: 5.0.1</div><div>Specification-Vendor: JBoss Inc.</div><div>Implementation-Title: Drools :: API</div><div>Implementation-Version: 5.0.1</div><div>Implementation-Vendor-Id: org.drools</div>
<div>Implementation-Vendor: JBoss Inc.</div></div><div><br></div><div><br></div><div>1. ProcessXML:</div><div><br></div><div><div><i><?xml version="1.0" encoding="UTF-8"?> </i></div><div><i><process xmlns="<a href="http://drools.org/drools-5.0/process" target="_blank">http://drools.org/drools-5.0/process</a>"</i></div>
<div><i> xmlns:xs="<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>"</i></div><div><i> xs:schemaLocation="<a href="http://drools.org/drools-5.0/process" target="_blank">http://drools.org/drools-5.0/process</a> drools-processes-5.0.xsd"</i></div>
<div><i> type="RuleFlow" name="PriDigitalTest" id="com.epmbog.esb.drools.mediator.PriDigitalTest" package-name="com.epmbog.esb.drools.mediator" ></i></div><div><i><br></i></div>
<div><i> <header></i></div><div><i> <variables></i></div><div><i> <variable name="factsMap" ></i></div><div><i> <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="java.util.HashMap" /></i></div>
<div><i> </variable></i></div><div><i> <variable name="resultsMap" ></i></div><div><i> <type name="org.drools.process.core.datatype.impl.type.ObjectDataType" className="java.util.HashMap" /></i></div>
<div><i> </variable></i></div><div><i> </variables></i></div><div><i> </header></i></div><div><i><br></i></div><div><i> <nodes></i></div><div><i> </i></div><div><i> <start id="1" name="Start" x="126" y="16" width="48" height="48" /></i></div>
<div><i> </i></div><div><i> <split id="19" name="AND" x="109" y="95" width="80" height="40" type="1" /></i></div><div><i> </i></div><div>
<i> <subProcess id="17" name="UMGSubFlow" x="16" y="168" width="119" height="49" processId="com.epmbog.esb.drools.mediator.UMGFlow" waitForCompletion="false" independent="false" ></i></div>
<div><i> <mapping type="in" from="resultsMap" to="resultsMap" /></i></div><div><i> <mapping type="in" from="factsMap" to="factsMap" /></i></div>
<div><i> </subProcess></i></div><div><i> </i></div><div><i> <subProcess id="18" name="SoftSwitchSubFlow" x="167" y="168" width="119" height="49" processId="com.epmbog.esb.drools.mediator.SoftSwitchFlow" waitForCompletion="false" independent="false" ></i></div>
<div><i> <mapping type="in" from="resultsMap" to="resultsMap" /></i></div><div><i> <mapping type="in" from="factsMap" to="factsMap" /></i></div>
<div><i> </subProcess></i></div><div><i> </i></div><div><i> <join id="20" name="Join(And)" x="110" y="251" width="80" height="40" type="1" /></i></div>
<div><i> </i></div><div><i> <end id="6" name="End" x="112" y="414" width="80" height="40" /></i></div><div><i> </i></div><div><i> </nodes></i></div>
<div><i><br></i></div><div><i> <connections></i></div><div><i> </i></div><div><i> <connection from="1" to="19" /></i></div><div><i> </i></div><div><i> <connection from="19" to="17" /></i></div>
<div><i> <connection from="19" to="18" /></i></div><div><i> </i></div><div><i> <connection from="17" to="20" /></i></div><div><i> <connection from="18" to="20" /></i></div>
<div><i> </i></div><div><i> <connection from="20" to="6" /></i></div><div><i> </i></div><div><i> </connections></i></div><div><i><br></i></div><div><i></process></i></div><div>
<i><br></i></div><div><i>2. <span style="font-style:normal">Chart</span></i></div><div><i><br></i></div></div><div><img src="cid:ii_127e3872e3a9bfc0" alt="PriDigitalTest.JPG" title="PriDigitalTest.JPG" height="135" width="200"><br>
</div><div><font face="arial, sans-serif" size="6"><span style="font-size:19px;line-height:25px"><br></span></font></div><div>We greatly appreciate your help, any suggestions? Thank you a lot</div>
<br clear="all"><font color="#888888"><br><div>PEDRO MARIA BUITRAGO MANTILLA<br>Bogotá, Colombia<br><br>
</div>
</font><br></div></div>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><font color="#888888"><br><br clear="all"><br>-- <br> - <a href="http://salaboy.wordpress.com" target="_blank">http://salaboy.wordpress.com</a><br> - <a href="http://www.jbug.com.ar" target="_blank">http://www.jbug.com.ar</a><br>
- Salatino "Salaboy" Mauricio -<br>
</font><br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br>