Mark Proctor | 1 Apr 2009 07:08

[rules-dev] Drools Boot Camp Ligtning Talks and Registration Page

Due to demand the Drools team are introducing lightning talks to the Boot Camp, following the Drools 5.0 primer on the Monday. Each company will be given 20 minutes to present, more time can be requested if you need it. The Desktop Configuration team, http://www.sun.com/products/dc/,  from Sun are the first to volunteer to present. If you wish to present, please contact me asap.

The Drools Boot Camp registration page is now open. If you are hoping to attend, please put your details there and send me an email, so that we can estimate and manage attendance. We only have spaces for about 20 or so people, so please do hurry. Registration wiki page can be found here, http://www.jboss.org/community/docs/DOC-13468, you will need to login to edit the page.

The event time tabled schedule is now as follows:
Drools 5.0 Primer : Monday 1st of June 10.00 to 13.00
  • The new features in Drools 5.0 will be covered at an end user level. This includes all the drools projects, Guvnor, Flow, Fusion and Expert. This is suitable for anyone with minimal previous Drools experience who just want to know "what's new".
Community Lightning Talks : Monday 1st of June 13.30 to 14.30
  • 20 minute community lightning talks about their experiences with drools.
Drools 5.0 Guvnor Internals : Tuesday 10.00 to 12.00
  • The internals of Guvnor will be discussed and how all the parts come together and current issues and directions we wish to take the project. This is suitable for anyone with minimal previous Drools experience, but ideally you should be aware of GWT, JCR and Guvnor in general. This is targetted at people who wish to extend Guvnor with new features or re-use/embed existing aspects of Guvnor.
Drools 5.0 Advanced Engine : Wednesday 10.00 to 13.00
  • This will be a deep dive for the technical on Rete enhancements. We will cover the asymmetrical Rete implementation, as compared to the traditional symmetrical approach, and how we enhanced it for event processing and workflow. This is targetted at experienced people, who already have an understanding of Rete and wish to understand the latest research and innovations - not for the feint hearted.
Drools 5.0 Domain Specific Workflow : Thursday 10.00 to 12.00
We will show how Drools Flow can be extended for domain specific workflow, with a focus on the pluggable Work Items and Eclipse. We will also cover the pluggable workflow framework for customised execution behaviour, such as is used to provide OSWorkflow compatability. This is suitable for anyone with a java and eclipse background, ideally you should have some understanding of what Drools and especially Drools Flow is.



_______________________________________________
rules-dev mailing list
rules-dev <at> lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
Jaroslaw Kijanowski | 1 Apr 2009 16:03
Picon

Re: [rules-dev] Guvnor Error 5.0.0.CR1 - A Technical Error has Occurred , Please contact System Administrator

Can you please try trunk [1] and if it is still there then create a jira 
[2] and attach your jar?
Thanks.

[1] 
http://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/drools-5.0.0.SNAPSHOT-guvnor.zip
[2] https://jira.jboss.org/jira/browse/GUVNOR

Ashish Soni wrote:
> Hi All ,
> 
> I imported my Jar and when i click save a validate configuration i will get
> a pop up saying " A Technical Error has Occurred , Please contact System
> Administrator " .
> 
> I checked the console and there is no exception or warning , I am not sure
> how can i find out what is the error.
> 
> 
> Please help.
> 
> Regards,
> Ashish
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> rules-dev mailing list
> rules-dev <at> lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev

_______________________________________________
rules-dev mailing list
rules-dev <at> lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

Mark Proctor | 1 Apr 2009 16:19

[rules-dev] Session schedule change

I've been requested to move the technical "Advanced Engine" session to the last day, so that the user target sessions are consecutive, as people who attend monday's primer probably want to attend the 'Domain Specific Workflow", but not the "Advanced Engine".

So I'm going to swap "Drools 5.0 Domain Specific Workflow" which is on the thursday to the Wednesday and "Drools 5.0 Advanced Engine" will move to the Thursday.

Do other people think that's ok, any objections? That means the talks would now look as follows:
Drools 5.0 Primer : Monday 1st of June 10.00 to 13.00
  • The new features in Drools 5.0 will be covered at an end user level. This includes all the drools projects, Guvnor, Flow, Fusion and Expert. This is suitable for anyone with minimal previous Drools experience who just want to know "what's new".
Community Lightening Talks : Monday 1st of June 13.30 to 14.30
  • 20 minute community lightening talks about their experiences with drools.
Drools 5.0 Guvnor Internals : Tuesday 10.00 to 12.00
  • The internals of Guvnor will be discussed and how all the parts come together and current issues and directions we wish to take the project. This is suitable for anyone with minimal previous Drools experience, but ideally you should be aware of GWT, JCR and Guvnor in general. This is targetted at people who wish to extend Guvnor with new features or re-use/embed existing aspects of Guvnor.
Drools 5.0 Domain Specific Workflow : Wednesday 10.00 to 12.00
  • We will show how Drools Flow can be extended for domain specific workflow, with a focus on the pluggable Work Items and Eclipse. We will also cover the pluggable workflow framework for customised execution behaviour, such as is used to provide OSWorkflow compatability. This is suitable for anyone with a java and eclipse background, ideally you should have some understanding of what Drools and especially Drools Flow is.
Drools 5.0 Advanced Engine : Thursday 10.00 to 13.00
  • This will be a deep dive for the technical on Rete enhancements. We will cover the asymmetrical Rete implementation, as compared to the traditional symmetrical approach, and how we enhanced it for event processing and workflow. This is targetted at experienced people, who already have an understanding of Rete and wish to understand the latest research and innovations - not for the feint hearted.




Mark
_______________________________________________
rules-dev mailing list
rules-dev <at> lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
Mark Proctor | 2 Apr 2009 05:57

[rules-dev] idea for heat maps indicating usage

If someone wanted some fun with AOP here is a nice idea. Each node can 
track which rule and which part of the rule it was originaly from. Use 
AOP to log the number of propations in a node and then produce a heat 
map output, intially as a scale, you can click on a colour and it shows 
the rules in that range. Further to that the rules themsleves should 
have the patterns and even the indivual constraints annotated with a 
background constraint indicating their usage rate. If anyone gives this 
a go, please do use SWT so we can embed it in Eclipse, but a GWT 
equivalent would be good too :)

This could be extrapolated further with drill downs, recording the 
heatmap over time, and with a break down for which fact or field changes 
causes what usage rates.

Mark

_______________________________________________
rules-dev mailing list
rules-dev <at> lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

Abu Rasheed | 3 Apr 2009 01:28
Favicon

[rules-dev] Drools + Spring

Are there any plans to have Spring support in drools-api? The last mail that I saw in searching the topic is dated last year, and there are no new postings related to this.

Does anyone have any success in injecting KnowledgeBase into their apps using Spring? Is there any examples out there that I can refer to?

Thanks

_______________________________________________
rules-dev mailing list
rules-dev <at> lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
Steven Williams | 3 Apr 2009 01:43
Picon

Re: [rules-dev] Drools + Spring

Here's what I do:

We inject KnowledgeBases into our app using Spring. It was a simple matter of just implementing a builder class that takes a bunch of drools Resources and adding a build() method to create the KnowledgeBase and then creating a class that implements Spring FactoryBean and InitializingBean to construct the builder and convert Spring resources to Drools ones and calling the builder.build() method in the afterPropertiesSet().

There is one currently open bug in drools that means we have to cast to a class from the old api to add accumulate functions.

cheers
Steve


2009/4/3 Abu Rasheed <aburasheed <at> studentmasjid.com>
Are there any plans to have Spring support in drools-api? The last mail that I saw in searching the topic is dated last year, and there are no new postings related to this.

Does anyone have any success in injecting KnowledgeBase into their apps using Spring? Is there any examples out there that I can refer to?

Thanks


_______________________________________________
rules-dev mailing list
rules-dev <at> lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev


_______________________________________________
rules-dev mailing list
rules-dev <at> lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
Mark Proctor | 3 Apr 2009 02:08

Re: [rules-dev] Drools + Spring

Abu Rasheed wrote:
Are there any plans to have Spring support in drools-api? The last mail that I saw in searching the topic is dated last year, and there are no new postings related to this.

Does anyone have any success in injecting KnowledgeBase into their apps using Spring? Is there any examples out there that I can refer to?
i've got some prototype code for this for drools-api, but it's not committed, I'll work on it after 5.0.

Mark

Thanks

_______________________________________________ rules-dev mailing list rules-dev <at> lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-dev

_______________________________________________
rules-dev mailing list
rules-dev <at> lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
glasscat | 3 Apr 2009 02:14
Favicon

Re: [rules-dev] Drools + Spring


Thank you very much Steven, I really appreciate it.

Steven Williams-5 wrote:
> 
> Here's what I do:
> 
> We inject KnowledgeBases into our app using Spring. It was a simple matter
> of just implementing a builder class that takes a bunch of drools
> Resources
> and adding a build() method to create the KnowledgeBase and then creating
> a
> class that implements Spring FactoryBean and InitializingBean to construct
> the builder and convert Spring resources to Drools ones and calling the
> builder.build() method in the afterPropertiesSet().
> 
> There is one currently open bug in drools that means we have to cast to a
> class from the old api to add accumulate functions.
> 
> cheers
> Steve
> 
> 
> 2009/4/3 Abu Rasheed <aburasheed <at> studentmasjid.com>
> 
>> Are there any plans to have Spring support in drools-api? The last mail
>> that I saw in searching the topic is dated last year, and there are no
>> new
>> postings related to this.
>>
>> Does anyone have any success in injecting KnowledgeBase into their apps
>> using Spring? Is there any examples out there that I can refer to?
>>
>> Thanks
>>
>>
>> _______________________________________________
>> rules-dev mailing list
>> rules-dev <at> lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>
>>
> 
> package xxxxx;
> 
> import java.io.IOException;
> import java.util.Map;
> 
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> import org.drools.KnowledgeBase;
> import org.drools.KnowledgeBaseFactory;
> import org.drools.builder.KnowledgeBuilder;
> import org.drools.builder.KnowledgeBuilderConfiguration;
> import org.drools.builder.KnowledgeBuilderError;
> import org.drools.builder.KnowledgeBuilderErrors;
> import org.drools.builder.KnowledgeBuilderFactory;
> import org.drools.builder.ResourceType;
> import org.drools.compiler.PackageBuilderConfiguration;
> import org.drools.io.Resource;
> 
> /**
>  * Given the appropriate resources builds the rule base. Expected usage:
> <code> 
>  * RuleBaseBuilder builder = new RuleBaseBuilder();
>  * builder.set*List(arg); 
>  * RuleBase b = builder.build();
>  * </code> Since the build() method creates a new RuleBase each
> invocation, the builder instance can be reused as long
>  * as the lists are set/reset.
>  */
> public class KnowledgeBaseBuilder
> {
>    private static final Log LOG =
> LogFactory.getLog(KnowledgeBaseBuilder.class);
>    private Map<Resource, ResourceType> resourceList;
>    private Map<String, String> accumulateFunctionMap;
> 
>    /**
>     * List of rule resources that should be used in the Rule Base.
>     * 
>     *  <at> param aResourceList
>     */
>    public void setResourceList(final Map<Resource, ResourceType>
> aResourceList)
>    {
>       this.resourceList = aResourceList;
>    }
> 
>    /**
>     * Builds the rule base.
>     * 
>     *  <at> return the configured RuleBase object.
>     *  <at> throws Exception
>     *         on error, e.g. no rule lists configured, or bad lists.
>     */
>    public KnowledgeBase build() throws Exception
>    {
>       // create default configuration.
>       KnowledgeBuilderConfiguration configuration =
> KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
>       // config.setJavaLanguageLevel("1.5");
>       // config.setCompiler(PackageBuilderConfiguration.ECLIPSE);
>       return build(configuration);
>    }
> 
>    /**
>     * Builds the rule base with the provided configuration for the
> builder.
>     * 
>     *  <at> return the configured RuleBase object.
>     *  <at> throws Exception
>     *         on error, e.g. no rule lists configured, or bad lists. if
> config is null
>     */
>    public KnowledgeBase build(final KnowledgeBuilderConfiguration config)
> throws Exception
>    {
>       verifyBuilder();
>       addAccumulateFunctions(config);
>       KnowledgeBuilder builder =
> KnowledgeBuilderFactory.newKnowledgeBuilder(config);
>       addPackagesFromList(builder);
>       KnowledgeBuilderErrors errors = builder.getErrors();
>       if (errors.size() > 0)
>       {
>          for (KnowledgeBuilderError error : errors)
>          {
>             LOG.error(error);
>          }
>          throw new IllegalArgumentException("Could not parse knowledge.");
>       }
>       KnowledgeBase knowledgeBase =
> KnowledgeBaseFactory.newKnowledgeBase();
>       knowledgeBase.addKnowledgePackages(builder.getKnowledgePackages());
> 
>       return knowledgeBase;
>    }
> 
>    private void verifyBuilder()
>    {
>       if (!rulesExist())
>       {
>          throw new IllegalStateException("No rule lists provided!");
>       }
>    }
> 
>    private void addAccumulateFunctions(final KnowledgeBuilderConfiguration
> config)
>    {
>       if (accumulateFunctionMap != null)
>       {
>          for (Map.Entry<String, String> entry :
> accumulateFunctionMap.entrySet())
>          {
> //            TODO: uncomment code below when adding of accumlate function
> bug is fixed in drools
> //            config.setProperty("drools.accumulate.function." +
> entry.getKey(), entry.getValue());
>             ((PackageBuilderConfiguration)
> config).addAccumulateFunction(entry.getKey(), entry.getValue());
>          }
>       }
>    }
> 
>    private void addPackagesFromList(final KnowledgeBuilder builder) throws
> IOException
>    {
>       for (Map.Entry<Resource, ResourceType> entry :
> resourceList.entrySet())
>       {
>          builder.add(entry.getKey(), entry.getValue());
>       }
>    }
> 
>    /**
>     * Checks that at least one rule resource list is not empty.
>     * 
>     *  <at> return true if at least one rule list is populated, false if all
> empty.
>     */
>    public boolean rulesExist()
>    {
>       return (this.resourceList != null && !this.resourceList.isEmpty());
>    }
> 
>    public void setAccumulateFunctionMap(Map<String, String>
> aAccumulateFunctionMap)
>    {
>       this.accumulateFunctionMap = aAccumulateFunctionMap;
>    }
> }
> 
> package xxxxx;
> 
> import java.util.LinkedHashMap;
> import java.util.Map;
> 
> import org.drools.KnowledgeBase;
> import org.drools.builder.ResourceType;
> import org.drools.io.ResourceFactory;
> import org.springframework.beans.factory.FactoryBean;
> import org.springframework.beans.factory.InitializingBean;
> import org.springframework.core.io.Resource;
> 
> /**
>  * Factory for Drools KnowledgeBase.
>  *  <at> author Steve
>  *
>  */
> public class KnowledgeBaseFactoryBean implements FactoryBean,
> InitializingBean
> {
>    private KnowledgeBaseBuilder builder = new KnowledgeBaseBuilder();
>    private KnowledgeBase knowledgeBase;
>    
>    /**
>     * List of DRL rules to include in the rule base.
>     *  <at> param drlResourceList
>     */
>    public void setResourceList(Map<Resource, ResourceType> resourceList)
> throws Exception
>    {
>       Map<org.drools.io.Resource, ResourceType> resources = new
> LinkedHashMap<org.drools.io.Resource, ResourceType>();
>       for (Map.Entry<Resource, ResourceType> entry :
> resourceList.entrySet())
>       {
>         
> resources.put(ResourceFactory.newInputStreamResource(entry.getKey().getInputStream()),
> entry.getValue());
>       }
>       builder.setResourceList(resources);
>    }
>    
>    /**
>     *  <at> param accumulateFunctionMap
>     */
>    public void setAccumulateFunctionMap(Map<String, String>
> accumulateFunctionMap)
>    {
>       builder.setAccumulateFunctionMap(accumulateFunctionMap);
>    }
> 
>    /**
>     *  <at> {inheritDoc}
>     */
>     <at> Override
>    public Object getObject() throws Exception
>    {
>       return knowledgeBase;
>    }
> 
>    /**
>     *  <at> {inheritDoc}
>     */
>     <at> Override
>    public Class<?> getObjectType()
>    {
>       return KnowledgeBase.class;
>    }
> 
>    /**
>     *  <at> {inheritDoc}
>     */
>     <at> Override
>    public boolean isSingleton()
>    {
>       return true;
>    }
> 
>    /**
>     *  <at> {inheritDoc}
>     */
>     <at> Override
>    public void afterPropertiesSet() throws Exception
>    {
>       knowledgeBase = builder.build();
> 
>    }
> 
> }
> 
> _______________________________________________
> rules-dev mailing list
> rules-dev <at> lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
> 
> 

--

-- 
View this message in context: http://www.nabble.com/Drools-%2B-Spring-tp22859117p22859609.html
Sent from the drools - dev mailing list archive at Nabble.com.

_______________________________________________
rules-dev mailing list
rules-dev <at> lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

Greg Barton | 6 Apr 2009 04:21
Picon
Favicon

[rules-dev] Trouble in stream mode


I'm trying out stream mode and having some trouble.  I'm setting drools.eventProcessingMode to stream and
using an entry point for inserting some objects.  Sometimes (but not all of the time) the rule that matches
on objects from the entry point (currently the only rule in the ruleset) will get a null reference for the
object retrieved from the entry point.  Here's the drl:

declare Incoming
     <at> role( event )
     <at> expires( 15s )
end

rule "entry"
no-loop true
when
  i: Incoming() from entry-point "Incoming";
  e: Existing(matcher == i.matcher);
then
  if(i == null) { 
    System.err.println("NULL MATCHED WITH " + e.getMatcher());
  } else {
    if(e.incorporate(i)) {
      update(e);
      System.out.println(e);
    }
  }
end

Sometimes (not not all of the time) I get these in stderr:

NULL MATCHED WITH Matcher1
NULL MATCHED WITH Matcher12
NULL MATCHED WITH Matcher3
NULL MATCHED WITH Matcher9

The Incoming objects are added at a high rate (sometimes thousands per second) so my guess was that they
weren't being processed fast enough and were being expired before the rule action could fire.  I changed
their  <at> expires value to "1d" and then got one of the two exceptions below when I ran the application. 

Some more details: I use WorkingMemoryEntryPoint.insert() to add the Incoming objects.  The
StatefulKnowledgeSession runs in a separate thread, blocking on fireUntilHalt().  

Here are the exceptions I often incur on calling WorkingMemoryEntryPoint.insert() with the long
expiration.  Rule execution halts after the exception:

Exception in thread "Thread-5" java.lang.NullPointerException
        at org.drools.util.RightTupleList.matches(RightTupleList.java:167)
        at org.drools.util.RightTupleIndexHashTable.get(RightTupleIndexHashTable.java:292)
        at org.drools.util.RightTupleIndexHashTable.getFirst(RightTupleIndexHashTable.java:87)
        at org.drools.reteoo.JoinNode.assertLeftTuple(JoinNode.java:112)
        at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:117)
        at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:28)
        at org.drools.reteoo.JoinNode.assertObject(JoinNode.java:175)
        at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:42)
        at org.drools.reteoo.PropagationQueuingNode$AssertAction.execute(PropagationQueuingNode.java:326)
        at org.drools.reteoo.PropagationQueuingNode.propagateActions(PropagationQueuingNode.java:221)
        at org.drools.reteoo.PropagationQueuingNode$PropagateAction.execute(PropagationQueuingNode.java:394)
        at org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:1464)
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:156)
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:120)
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:78)
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:26)
        at org.gregcode.stuff.analysis.Analyzer.add(Analyzer.java:108)
        at org.gregcode.stuff.Simulator$1.run(Simulator.java:69)
        at java.lang.Thread.run(Thread.java:619)

Exception in thread "Thread-3" java.lang.NullPointerException                                                                                                               
        at org.drools.util.LeftTupleList.add(LeftTupleList.java:48)                                                                                                         
        at org.drools.reteoo.RuleTerminalNode.assertLeftTuple(RuleTerminalNode.java:245)                                                                                    
        at org.drools.reteoo.RuleTerminalNode.assertLeftTuple(RuleTerminalNode.java:165)                                                                                    
        at
org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:117)

        at
org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:28)

        at org.drools.reteoo.JoinNode.assertLeftTuple(JoinNode.java:116)                                                                                                    
        at
org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:117)

        at
org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:28)

        at org.drools.reteoo.JoinNode.assertObject(JoinNode.java:175)                                                                                                       
        at
org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:42)

        at
org.drools.reteoo.PropagationQueuingNode$AssertAction.execute(PropagationQueuingNode.java:326)

        at
org.drools.reteoo.PropagationQueuingNode.propagateActions(PropagationQueuingNode.java:221)

        at
org.drools.reteoo.PropagationQueuingNode$PropagateAction.execute(PropagationQueuingNode.java:394)

        at
org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:1464)

        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:156)                                                                                               
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:120)                                                                                               
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:78)                                                                                                
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:26)                                                                                                
        at org.gregcode.stuff.analysis.Analyzer.add(Analyzer.java:108)                                                                                                   
        at org.gregcode.stuff.Simulator$1.run(Simulator.java:69)                                                                                                         
        at java.lang.Thread.run(Thread.java:619) 

Thanks!
GreG

      
_______________________________________________
rules-dev mailing list
rules-dev <at> lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

Greg Barton | 6 Apr 2009 04:23
Picon
Favicon

[rules-dev] Re: Trouble in stream mode


Sorry, I forgot to mention the drools version: current snapshot build, 5.0.0.20090403.045040-189

Thanks,
GreG

      
_______________________________________________
rules-dev mailing list
rules-dev <at> lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev


Gmane