[rules-users] Drools Flow / Declarative process definition

Jaroslav Pullmann jaroslav.pullmann at fit.fraunhofer.de
Wed Mar 3 05:31:16 EST 2010


  Hello Kris,

  thank you for your detailed response, this makes Drols Flow an even more
appealing solution for data-driven processes.
> Yes, if you execute your processes in advanced mode, we are translating 
> procedural constructs like sequence into a more declarative rule like the 
> one you described as an example.  Note we are currently not doing that for 
> all procedural constructs (like branch / joins) but we plan to extend these 
> integration points over time.

JOpera might be worth a look. It uses a ECA-driven approach and support a range of
control patterns [1] via dependency conditions [2].

> 
> This does allow you to execute a process without having explicit connections 
> between all nodes.  We like to describe this as process fragments, where you 
> have small, not-connected flow fragments and where the rules or the user can 
> define when each fragment should be executed, etc.  This could then be 
> event-based, data-based, user-triggered, etc.  Instead of the process 
> controlling everything, we see this as an inversion where your rules will be 
> controlling the process fragments.  

Could this be expressed in the process XML, while it explicitely states "connections"
between the tasks ?

> This is however still work in progress 
> (meaning a lot is already possible if you dive into it, but we definitely 
> need to extend the tooling etc. to better harness this power before we 
> unleash this to our users).  I'm hoping to do a blog entry about this soon, 
> to show some direction.  If you're interested in this, it's also related to 
> flexible or ad-hoc processes, adaptible case management, etc.

Yes please, I'd like to continue this topic.
> 
> Drools currently targets the Java space primarly.  But this doesn't mean you 
> can't use if for XML processing.  At this stage, this could become rather 
> complex as we don't provide high-level constructs yet to manipulate this XML 
> data, so you'd have to either build this yourself or do more low-level XML 
> manipulation.  As part of our move to BPMN2, we are however planning to 
> seriously enhance this, by adding XPath as a constraint language dialect, 
> better web service integration (as part of our integration with the ESB and 
> the entire SOA platform), etc.

SCXML [3] has the notion of a pluggable data- and expression langauge model and
[4] offers an XML/Xpath support. This results in an elegant way of specifing
state (task) activation through data-driven transitions:

  <state id="frist">

   <datamodel>
     <data id="input">
       <input> <!-- will change e.g. through incomming events/interaction -->
	<source/>
	<content/>
       </input>
     </data>	
   </datamodel>

   <transition cond="$input/content != ''" target="second"/>

  </state>

  <state id="second"/>

On the other side SCXML requires a design-time decision on state coordination
(state vs. parallel elements) which makes it unsuitable for adaptive worklflows.

Having at least XPath as a constraint language operating on whatever data model
(e.g. Java beans) would be great!

   Best regards
     Jaro


[1] http://www.workflowpatterns.com/patterns/control/index.php
[2] http://www.jopera.org/docs/help/jop_9.html
[3] http://www.w3.org/TR/scxml/
[4] http://commons.apache.org/scxml/index.html

> ----- Original Message ----- 
> From: "Jaroslav Pullmann" <jaroslav.pullmann at fit.fraunhofer.de>
> To: <rules-users at lists.jboss.org>
> Sent: Friday, February 26, 2010 2:47 PM
> Subject: [rules-users] Drools Flow / Declarative process definition
> 
> 
>> Dear Drools team,
>>
>>  I like much the approach of Drools Flow and would appreciate to learn 
>> more.
>>
>>  The documentation states the extended rule engine having knowledge of the 
>> process model
>>  and instance state derives the next process execution step. I am 
>> wondering, whether the
>>  overall flow is reactive, even the procedural constructs like sequence, 
>> branching/joining
>>  are implemented through firing rule actions ? For example, does Drools 
>> Flow converts the
>>  sequence of steps A -> B into sth. like "when A.passed then B.start()" ?
>>
>>  When the prevoius holds, does Drools Flow allows to create (desgin) and 
>> execute declarative processes
>>  omiting any explicit sequencing ? The steps/tasks were ordered partially 
>> by data- or event-based
>>  dependency conditions or even activated independently of each other.
>>
>>  Drools Flow/Expert provide a thight integration with Java (e.g. 
>> representing facts as Java classes).
>>  Are there future plans for supporting a higher-level processing with 
>> XML/XPath/XQuery like in YAWL ?
>>
>>   Many thanks
>>    Jaro
>>
>>
>>
>>
>> -- 
>> Jaroslav Pullmann
>> Web Compliance Center - Fraunhofer FIT
>> Schloss Birlinghoven, D-53757 Sankt Augustin, Germany
>> Phone: +49-2241-142623    Fax: +49-2241-142065
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users 
> 
> 
> Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users


-- 
Jaroslav Pullmann
Web Compliance Center - Fraunhofer FIT
Schloss Birlinghoven, D-53757 Sankt Augustin, Germany
Phone: +49-2241-142623    Fax: +49-2241-142065



More information about the rules-users mailing list