Good questions, Let me try to clarify them for you
On Thu, Apr 8, 2010 at 10:25 AM, jeanjvr <jeanjvr(a)live.co.za> wrote:
First I want to thank Kris for responding to my direct email - very quick
response!
I'll move over to the mailing list for now.
I went and read the documentation for Flow and constructed a test flow
attached to an application that launches and controls it. I did this is
Eclipse for now using the GUI to test the applicability of the a work-flow
engine to a simple manufacturing task.
I attach a PNG image
(
http://i349.photobucket.com/albums/q388/shooter_za/jvr_test_flow.png) and
a
trimmed log of my flow just for interest sake at the end.
My test Java app starts the flow in a new thread and allows me to trigger
events in the flow with buttons (processInstance.signalEvent(String type,
Object data)). If I use Drools in my project, the events would be generated
by factory devices through an industrial protocol called OPC.
Some noob questions:
1. I need concurrent execution in my flow. I use Split nodes to do this. Is
this the correct way to achieve concurrency?
No really, if you want to represent with your business processes concurrent
tasks you use split and join nodes.
But if you are talking about multi-threaded programming this is not a good
choice. You can create multi-thread and concurrent code
to run inside a custom work item, but the concurrent threads will not be
visible in the processes graph.
2. I need to construct control loops. Pieces of the flow that execute over
and over until a constraint
directs flow to an End node. I see no reason why loops cannot be done in
DROOLS flow.
You can use for each nodes for that kind of behaviors. Where the loop will
be executed N times based on a variable/collection
3. My biggest problem at this time is that my flow executes, but "ignores"
Event nodes connected to AND Join nodes. The work-flow then ends and my
thread exits, although the End nodes in question are not reached according
to the log.
Can you provide a test case that demonstrate this behavior?
I suppose the engine determines that no terminating End node can be reached
and stops. I think that I maybe have an incorrect understanding of some
aspect of the DROOLS work-flow engine.
The core idea is to let one or more flows reach an AND Join node - and then
wait until all Event nodes attached to the AND Join node is triggered,
allowing the flow to continue.
Other problems I will not list here now, as I believe I may be able to
figure them out (variables, constraints). I just want to prove that Flow
can
be used.
Anybody got any advice for me?
Thanks
Jean
http://n3.nabble.com/file/n706102/jvr_test_flow.png
BEFORE RULEFLOW NODE TRIGGERED node:Start[id=1]
BEFORE RULEFLOW NODE TRIGGERED node:AND - Split Flow - Two concurent
Processes[id=3]
BEFORE RULEFLOW NODE TRIGGERED node:Start Conveyor 1[id=4]
Start Conveyor 1
BEFORE RULEFLOW NODE TRIGGERED node:Stop Conveyor 1[id=38]
Stop Conveyor 1
BEFORE RULEFLOW NODE TRIGGERED node:End[id=9]
AFTER RULEFLOW NODE TRIGGERED node:End[id=9]
AFTER RULEFLOW NODE TRIGGERED node:Stop Conveyor 1[id=38]
AFTER RULEFLOW NODE TRIGGERED node:Start Conveyor 1[id=4]
BEFORE RULEFLOW NODE TRIGGERED node:Start Conveyor 2[id=5]
Start Conveyor 2
BEFORE RULEFLOW NODE TRIGGERED node:AND - Split Flow - Three concurent
Processes[id=6]
BEFORE RULEFLOW NODE TRIGGERED node:Start Conveyor 3[id=7]
Start Conveyor 3
BEFORE RULEFLOW NODE TRIGGERED node:Disciminator - Join - Continue if any
input[id=10]
BEFORE RULEFLOW NODE TRIGGERED node:Load A onto conveyor 3[id=12]
Load one subassembly A on to Conveyor 3
BEFORE RULEFLOW NODE TRIGGERED node:Split - After Load A onto conveyor
3[id=17]
BEFORE RULEFLOW NODE TRIGGERED node:Discriminator - Join - Continue if any
input[id=13]
BEFORE RULEFLOW NODE TRIGGERED node:AND Join - Continue if all input[id=51]
AFTER RULEFLOW NODE TRIGGERED node:AND Join - Continue if all input[id=51]
AFTER RULEFLOW NODE TRIGGERED node:Discriminator - Join - Continue if any
input[id=13]
BEFORE RULEFLOW NODE TRIGGERED node:AND Join - Continue if all input[id=42]
AFTER RULEFLOW NODE TRIGGERED node:AND Join - Continue if all input[id=42]
AFTER RULEFLOW NODE TRIGGERED node:Split - After Load A onto conveyor
3[id=17]
AFTER RULEFLOW NODE TRIGGERED node:Load A onto conveyor 3[id=12]
AFTER RULEFLOW NODE TRIGGERED node:Disciminator - Join - Continue if any
input[id=10]
AFTER RULEFLOW NODE TRIGGERED node:Start Conveyor 3[id=7]
BEFORE RULEFLOW NODE TRIGGERED node:Discriminator Join - Continue if any
input[id=26]
BEFORE RULEFLOW NODE TRIGGERED node:Load B onto Conveyor 2[id=8]
Load one subassembly B onto conveyor 2
BEFORE RULEFLOW NODE TRIGGERED node:Split - After load B onto conveyor
2[id=24]
BEFORE RULEFLOW NODE TRIGGERED node:Discriminator Join - Continue if any
input[id=47]
BEFORE RULEFLOW NODE TRIGGERED node:AND Join - Continue if all input[id=52]
AFTER RULEFLOW NODE TRIGGERED node:AND Join - Continue if all input[id=52]
AFTER RULEFLOW NODE TRIGGERED node:Discriminator Join - Continue if any
input[id=47]
BEFORE RULEFLOW NODE TRIGGERED node:AND Join - Continue if all input[id=49]
AFTER RULEFLOW NODE TRIGGERED node:AND Join - Continue if all input[id=49]
AFTER RULEFLOW NODE TRIGGERED node:Split - After load B onto conveyor
2[id=24]
AFTER RULEFLOW NODE TRIGGERED node:Load B onto Conveyor 2[id=8]
AFTER RULEFLOW NODE TRIGGERED node:Discriminator Join - Continue if any
input[id=26]
BEFORE RULEFLOW NODE TRIGGERED node:Disciminator - Join - Continue if any
input[id=37]
BEFORE RULEFLOW NODE TRIGGERED node:AND Join - Continue if all input[id=39]
AFTER RULEFLOW NODE TRIGGERED node:AND Join - Continue if all input[id=39]
AFTER RULEFLOW NODE TRIGGERED node:Disciminator - Join - Continue if any
input[id=37]
AFTER RULEFLOW NODE TRIGGERED node:AND - Split Flow - Three concurent
Processes[id=6]
AFTER RULEFLOW NODE TRIGGERED node:Start Conveyor 2[id=5]
AFTER RULEFLOW NODE TRIGGERED node:AND - Split Flow - Two concurent
Processes[id=3]
AFTER RULEFLOW NODE TRIGGERED node:Start[id=1]
AFTER RULEFLOW STARTED
--
View this message in context:
http://n3.nabble.com/DROOLS-Flow-as-a-Manufacturing-process-execution-eng...
Sent from the Drools - User mailing list archive at
Nabble.com.
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
-
http://salaboy.wordpress.com
-
http://www.jbug.com.ar
- Salatino "Salaboy" Mauricio -