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? 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. 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. 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-engine-Noob-questions-about-events-and-concurrency-tp706102p706102.html Sent from the Drools - User mailing list archive at Nabble.com. _______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
