it's not a problem really..
2010/4/26 Pedro Maria Buitrago Mantilla <pmbtgun(a)gmail.com>
The problem is the multithreading execution. For a "SPLIT NODE" of type
"AND", first, is process one branch, after, the next branch and so on for
each. The execution is sequential.
PEDRO MARIA BUITRAGO MANTILLA
Bogotá, Colombia
2010/4/26 rudolf michael <roudolf(a)gmail.com>
Alan, couldn't you have achieved this using a Split and Join?
>
> 2010/4/26 <Alan.Gairey(a)tessella.com>
>
>
>> Interesting. What you've described Pedro is similar to what I'm trying
to
>> achieve, and also relates to some earlier posts I made to the list (title:
>> 'Drools Flow: Problem with constraint in (Wait) State node').
>>
>> I have a process that launches independent sub flows; these independent
>> sub flows execute on separate threads. I then want the original process to
>> "block" until all the subflows have finished, and to then continue.
>> In order to achieve this, I've done the following:
>>
>> - Each process (both the main flow and each sub flow) is executed by a
>> separate stateful knowledge session.
>> - When a sub flow is started, it inserts a fact into the working memory
>> of the session for the original process.
>> - When a sub flow finishes, it updates a fact in the working memory of
>> the session for the original process to "signal" its completion.
>> - After launching the sub flows, the original process contains a (wait)
>> state node; the constraint for this node is designed to block until all
>> facts in its memory are in the "signalled" state.
>>
>> I've attached an example project that illustrates what I'm trying to
>> achieve. The constraint on the wait state node is currently as follows:
>>
>> (and forall(SimpleFact(complete == true)) exists(SimpleFact()))
>>
>> I'd be interested to know from someone who understands rule syntax better
>> than me as to why this seems to work when other attempts (see my earlier
>> posts) failed.
>>
>> I still have two problems though:
>>
>> 1) The above constraint appeared to work OK with an earlier 5.1 snapshot
>> build (from a couple of months back). However, using the latest successful
>> build from trunk (#3845), the Action node after the wait state node isn't
>> executed. Given that 5.1.M2 is supposed to be imminent, I'm worried. Does
>> anyone know why this no longer works?
>>
>> 2) If I try to enable JPA-based state persistence, using the Bitronix
>> transaction manager, then when I try to insert a fact into the working
>> memory of the session for the original process from a separate thread, I get
>> the following error:
>>
>> bitronix.tm.internal.BitronixRollbackException: transaction was marked as
>> rollback only and has been rolled back
>> at
>> bitronix.tm.BitronixTransaction.commit(BitronixTransaction.java:153)
>> at
>>
bitronix.tm.BitronixTransactionManager.commit(BitronixTransactionManager.java:96)
>> at
>>
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:258)
>> at
>>
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.insert(CommandBasedStatefulKnowledgeSession.java:306)
>> at
>> com.test.InsertWorkItemHandler$1.insertFact(InsertWorkItemHandler.java:52)
>> at
>> com.test.InsertWorkItemHandler$1.run(InsertWorkItemHandler.java:40)
>> at java.lang.Thread.run(Thread.java:619)
>> java.lang.RuntimeException: Could not rollback transaction
>> at
>>
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:283)
>> at
>>
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.insert(CommandBasedStatefulKnowledgeSession.java:306)
>> at
>> com.test.InsertWorkItemHandler$1.insertFact(InsertWorkItemHandler.java:52)
>> at
>> com.test.InsertWorkItemHandler$1.run(InsertWorkItemHandler.java:40)
>> at java.lang.Thread.run(Thread.java:619)
>> Caused by: java.lang.IllegalStateException: no transaction started on
>> this thread
>> at
>>
bitronix.tm.BitronixTransactionManager.rollback(BitronixTransactionManager.java:103)
>> at
>>
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:278)
>> ... 4 more
>>
>> Any help anyone can provide would be very much appreciated. Thank you.
>>
>> Regards,
>>
>> Alan
>>
>>
>>
>>
>> *Pedro Maria Buitrago Mantilla <pmbtgun(a)gmail.com>*
>> Sent by: rules-users-bounces(a)lists.jboss.org
>>
>> 23/04/2010 14:38
>> Please respond to
>> Rules Users List <rules-users(a)lists.jboss.org>
>>
>> To
>> Rules Users List <rules-users(a)lists.jboss.org>
>> cc
>> Subject
>> Re: [rules-users] Multithreading work items
>>
>>
>>
>>
>> Each of the sub flows requires final user design. Mauricio thanks very
>> much.
>>
>> PEDRO BUITRAGO
>> Bogotá, Colombia
>>
>>
>> 2010/4/22 Mauricio Salatino <*salaboy(a)gmail.com*
<salaboy(a)gmail.com>>
>> yes.. sounds more like a normal java problem than Drools FLow problem. I
>> think that your solution is the correct one because it handle internally the
>> multithreaded requierements and then it continue the business process
>> normally.
>>
>>
>> 2010/4/22 Pedro Maria Buitrago Mantilla
<*pmbtgun@gmail.com*<pmbtgun(a)gmail.com>>
>>
>>
>> The idea is to run multiple independent sub flows. Each of the sub flows
>> requires approximately 2 minutes to complete, so parallel processing is
>> required. Once all the sub flows have completed their tasks is necessary to
>> collect all the results and process them. This implies that the workflow
>> should not end until it collects all information submitted by the sub flows.
>>
>> For now, I think to create, with JMS, a queue in jboss receive the name
>> of each sub flow, create your own KnowledgeBase run each subflow as a
>> separate workflow and delivers the results. Finally, some components will
>> take all the results (from a database of another jms queue and process and
>> again another component start another workflow to process all results.
>>
>>
>> PEDRO BUITRAGO
>> Bogotá, Colombia
>>
>>
>> 2010/4/22 Mauricio Salatino <*salaboy(a)gmail.com*
<salaboy(a)gmail.com>>
>>
>> can you describe a little bit your use case?
>> I'm not sure about what you want to achieve.
>>
>> 2010/4/21 Pedro Maria Buitrago Mantilla
<*pmbtgun@gmail.com*<pmbtgun(a)gmail.com>
>> >
>> In general, I meet that for resolve the topic of multithreading it's
>> required to implement another thread over a work item.
>>
>> How does the asynchronic task can modified a variable of Knowledgebase?
>>
>> Can you give me an example?
>>
>> Pedro Buitrago
>>
>>
>>
>> _______________________________________________
>> rules-users mailing list*
>> **rules-users(a)lists.jboss.org* <rules-users(a)lists.jboss.org>*
>>
**https://lists.jboss.org/mailman/listinfo/rules-users*<https://lists.jboss.org/mailman/listinfo/rules-users>
>>
>>
>>
>>
>> --
>> - *http://salaboy.wordpress.com* <
http://salaboy.wordpress.com/>
>> - *http://www.jbug.com.ar* <
http://www.jbug.com.ar/>
>> - Salatino "Salaboy" Mauricio -
>>
>> _______________________________________________
>> rules-users mailing list*
>> **rules-users(a)lists.jboss.org* <rules-users(a)lists.jboss.org>*
>>
**https://lists.jboss.org/mailman/listinfo/rules-users*<https://lists.jboss.org/mailman/listinfo/rules-users>
>>
>>
>>
>> _______________________________________________
>> rules-users mailing list*
>> **rules-users(a)lists.jboss.org* <rules-users(a)lists.jboss.org>*
>>
**https://lists.jboss.org/mailman/listinfo/rules-users*<https://lists.jboss.org/mailman/listinfo/rules-users>
>>
>>
>>
>>
>> --
>> - *http://salaboy.wordpress.com* <
http://salaboy.wordpress.com/>
>> - *http://www.jbug.com.ar* <
http://www.jbug.com.ar/>
>> - Salatino "Salaboy" Mauricio -
>>
>> _______________________________________________
>> rules-users mailing list*
>> **rules-users(a)lists.jboss.org* <rules-users(a)lists.jboss.org>*
>>
**https://lists.jboss.org/mailman/listinfo/rules-users*<https://lists.jboss.org/mailman/listinfo/rules-users>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users