Hi, guys.

I agree.

As for my use case - I have several custom components which should be used
in the one flow. The set of components is different between different
customers and each customer have a little different flow between components.
Drools looks very good for routing in this situation.

Best regards,
    Oleg Atamanenko.


2008/8/6 Andrea Zoppello <[EMAIL PROTECTED]>

> Hi Lars,
>
> I've doubt that a customer that don't want to code java will manually
> coding drools file :-)
>
> BTW i've this type of problems every day so i say how i've solved.
>
> I give customer i high level process designer, and let him to generate
> service assembly.
> If he wants to chnage rules, he can simply change visually the process and
> regenerate code.
>
> In our platform we've code generators where the user design routing rules
> visually and we get the drools file automatically generated, the only thing
> you need to provide are xpath rule.
>
> Have you take a look at the spagic platform???
>
>
> Andrea
>
>
>
> Lars Heinemann ha scritto:
>
>> Andrea,
>>
>> look at following situation:
>> You got a installation of your smx stuff at customers site. The customer
>> wants to influence the routing mechanism. He is not aware of Java and also
>> has no time and manpower to code a bean SU nor to code anything with smx.
>> So how can this customer now solve this? Everytime calling a consulting
>> company doing coding etc?
>> The drools file is in the data folder of smx. He can easily go there and
>> adapt the rules and targets without the need of recompiling/redeployment
>> etc.
>>
>> And btw. if a customer wants the router to be done with drools, you can't
>> tell him to use servicemix-bean instead ;)
>>
>> Regards
>> Lars
>>
>>
>>
>> Am Mittwoch 06 August 2008 11:09:26 schrieb Andrea Zoppello:
>>
>>
>>> Hi Lars,
>>>
>>> What you're saing it's right nothing prevent to route an InOut Exchange,
>>> but in my opinion in that case you have other better choices than drools
>>> component.
>>>
>>> I'm doing something similar processing, as you described and i've done
>>> better for example with servicemix-bean than that drools.
>>>
>>> In my opininion the original idea of the JbiHelper was to provide an
>>> helper class, that could help user to route messages not to write
>>> complex MEP exchange inside the route method, for this reason for me
>>> make sense to have a class with two methods where:
>>>
>>> 1) route is used to route InOnly or RobustInOnly exchange
>>>
>>> 2) answer instead if you want to answer on the out message when an InOut
>>> Exchage.
>>>
>>>
>>> Andrea
>>>
>>> Lars Heinemann ha scritto:
>>>
>>>
>>>> Andrea,
>>>>
>>>> just some thoughts....
>>>>
>>>> Am Mittwoch 06 August 2008 10:48:02 schrieb Andrea Zoppello:
>>>>
>>>>
>>>>> Hi Gert,
>>>>>
>>>>> The route method in my opinion is to handle inonly or robust inonly
>>>>> exchange, if you want to answer you could use the answer method.
>>>>>
>>>>>
>>>> --> what prevents a user to not route InOut exchanges and why doesn't it
>>>> makes sense? If you use the drools as a simple router this makes imho
>>>> sense. You are right if all your processing logic is done in your drools
>>>> script, then you can just process it and send the answer.
>>>>
>>>> Regards
>>>> Lars
>>>>
>>>>
>>>>
>>>>> In my opinion you must choose what you want to do when you write drools
>>>>> file.
>>>>>
>>>>> If you need to forward ( creating another exhange ) an InOnly exchange
>>>>> use helper.route instead you need to use helper.answer.
>>>>>
>>>>> This should cover all the case.
>>>>>
>>>>> Andrea
>>>>>
>>>>> Gert Vanthienen ha scritto:
>>>>>
>>>>>
>>>>>> Andrea,
>>>>>>
>>>>>> Actually, I was just looking at applying that.  If the code in your
>>>>>> last comment goes into the routeTo method, isn't this a step back from
>>>>>> where we were?  It uses send() instead of sendSync(), but I no longer
>>>>>> see any possibility of handling an InOut or RobustInOnly with a Fault
>>>>>> message, or am I missing something there?
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> Gert
>>>>>>
>>>>>> Andrea Zoppello wrote:
>>>>>>
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I had the same problem, take a look to mine last comment on
>>>>>>> https://issues.apache.org/activemq/browse/SM-1248
>>>>>>>
>>>>>>> Andrea
>>>>>>>
>>>>>>> gigeril ha scritto:
>>>>>>>
>>>>>>>
>>>>>>>> Hi @ all.
>>>>>>>> I've following following setup of Servicemix:
>>>>>>>>
>>>>>>>>
>>>>>>>> TCP Client -----> TCP BC-->drools BC ------> TCP BC ---> TCP Server
>>>>>>>>
>>>>>>>>                                                          |____>HTTP
>>>>>>>>
>>>>>>>> BC -->
>>>>>>>> HTTP Server
>>>>>>>>
>>>>>>>> If I connect (target Service) my own written TCP BC to the HTTP BC
>>>>>>>> or the
>>>>>>>> TCP BC it works fine (sync, async, Pattern: Inout, InOnly).
>>>>>>>> I get a problem if the drools engine get into the message chain.
>>>>>>>> Then I only
>>>>>>>> can send 23 Messages (always 23!!) until my tcp client reports me a
>>>>>>>> connection timeout and the connectors get stuck. I can only press
>>>>>>>> STRG+C in
>>>>>>>> the Servicemix Console Window to restart Servicemix and send 23
>>>>>>>> Messages.
>>>>>>>> This sending of this 23 Messages work fine. They take the way I
>>>>>>>> defined in
>>>>>>>> my .drl where it depends on the message content if it is send to the
>>>>>>>> tcp or
>>>>>>>> the http server. I also get the response back to the client.
>>>>>>>>
>>>>>>>> This is the output when I press STRG+C. This whole stacktrace is
>>>>>>>> printed out
>>>>>>>> 23 times.
>>>>>>>>
>>>>>>>> INFO  - ServiceAssemblyLifeCycle       - Shutting down service
>>>>>>>> assembly:
>>>>>>>> droolsrouter-sa
>>>>>>>> INFO  - ServiceUnitLifeCycle           - Shutting down service unit:
>>>>>>>> droolsrouter-su
>>>>>>>> INFO  - ServiceUnitLifeCycle           - Shutting down service unit:
>>>>>>>> httpprovider-su
>>>>>>>> INFO  - ServiceUnitLifeCycle           - Shutting down service unit:
>>>>>>>> tcpconsumer-su
>>>>>>>> INFO  - ServiceUnitLifeCycle           - Shutting down service unit:
>>>>>>>> tcpprovider-su
>>>>>>>> INFO  - JBIContainer                   - ServiceMix JBI Container
>>>>>>>> (ServiceMix) stopped
>>>>>>>> [Fatal Error] :1:89: Content is not allowed in trailing section.
>>>>>>>> ERROR - DroolsComponent                - Error processing exchange
>>>>>>>> InOut[
>>>>>>>>  id: ID:10.22.20.113-11b93600c6f-4:0
>>>>>>>>  status: Active
>>>>>>>>  role: provider
>>>>>>>>  service: 
>>>>>>>> {http://knapp.com/tcphttp}myRouter<http://knapp.com/tcphttp%7DmyRouter>
>>>>>>>>  endpoint: myRouter
>>>>>>>>  in: <?xml version="1.0" encoding="UTF-8"?><message
>>>>>>>> type="http"><text>hallo</text></message>
>>>>>>>>  out: Unable to display: org.xml.sax.SAXParseException: Content is
>>>>>>>> not allowed in trailing section.
>>>>>>>> ]
>>>>>>>> org.drools.spi.ConsequenceException:
>>>>>>>> javax.jbi.messaging.MessagingException:
>>>>>>>> java.lang.InterruptedException
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.drools.base.DefaultConsequenceExceptionHandler.handleException(De
>>>>>>>> fa ultConsequenceExceptionHandler.java:13
>>>>>>>>
>>>>>>>> )
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:558
>>>>>>>> ) at
>>>>>>>> org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:518)
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingM
>>>>>>>> em ory.java:475)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingM
>>>>>>>> em ory.java:439)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.drools.DroolsEndpoint.drools(DroolsEndpoint.jav
>>>>>>>> a: 183)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.drools.DroolsEndpoint.process(DroolsEndpoint.ja
>>>>>>>> va
>>>>>>>>
>>>>>>>> :177)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLi
>>>>>>>> fe Cycle.java:597)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(Async
>>>>>>>> Ba seLifeCycle.java:548)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(Asy
>>>>>>>> nc BaseLifeCycle.java:502)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(S
>>>>>>>> yn cLifeCycleWrapper.java:60)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBoun
>>>>>>>> d( DeliveryChannelImpl.java:610)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlo
>>>>>>>> w. java:172)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.j
>>>>>>>> av a:168)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.jav
>>>>>>>> a: 134)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
>>>>>>>> ut or.java:885)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
>>>>>>>> .j ava:907)
>>>>>>>>
>>>>>>>>        at java.lang.Thread.run(Thread.java:619)
>>>>>>>> Caused by: javax.jbi.messaging.MessagingException:
>>>>>>>> java.lang.InterruptedException
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(Deli
>>>>>>>> ve ryChannelImpl.java:498)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(Deli
>>>>>>>> ve ryChannelImpl.java:442)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.common.EndpointDeliveryChannel.sendSync(Endpoin
>>>>>>>> tD eliveryChannel.java:102)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.drools.model.JbiHelper.routeTo(JbiHelper.java:1
>>>>>>>> 51 )
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.drools.model.JbiHelper.route(JbiHelper.java:109
>>>>>>>> ) at
>>>>>>>>
>>>>>>>> org.apache.servicemix.drools.Rule_tcphttp_http_0.consequence(Rule_tcp
>>>>>>>> ht tp_http_0.java:14)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.drools.Rule_tcphttp_http_0ConsequenceInvoker.ev
>>>>>>>> al uate(Rule_tcphttp_http_0ConsequenceInv
>>>>>>>>
>>>>>>>> oker.java:20)
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:554
>>>>>>>> ) ... 16 more
>>>>>>>> Caused by: java.lang.InterruptedException
>>>>>>>>        at java.lang.Object.wait(Native Method)
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.waitForExchan
>>>>>>>> ge (DeliveryChannelImpl.java:699)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(Deli
>>>>>>>> ve ryChannelImpl.java:472)
>>>>>>>>
>>>>>>>>        ... 23 more
>>>>>>>> ERROR - DroolsComponent                - Error setting exchange
>>>>>>>> status to
>>>>>>>> ERROR
>>>>>>>> java.lang.IllegalStateException: component is not owner when trying
>>>>>>>> to set
>>>>>>>> error: org.drools.spi.ConsequenceException: j
>>>>>>>> avax.jbi.messaging.MessagingException:
>>>>>>>> java.lang.InterruptedException
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.setError(Mess
>>>>>>>> ag eExchangeImpl.java:264)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(Asy
>>>>>>>> nc BaseLifeCycle.java:516)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(S
>>>>>>>> yn cLifeCycleWrapper.java:60)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBoun
>>>>>>>> d( DeliveryChannelImpl.java:610)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlo
>>>>>>>> w. java:172)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.j
>>>>>>>> av a:168)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.jav
>>>>>>>> a: 134)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
>>>>>>>> ut or.java:885)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
>>>>>>>> .j ava:907)
>>>>>>>>
>>>>>>>>        at java.lang.Thread.run(Thread.java:619)
>>>>>>>> Caused by: org.drools.spi.ConsequenceException:
>>>>>>>> javax.jbi.messaging.MessagingException:
>>>>>>>> java.lang.InterruptedException at
>>>>>>>>
>>>>>>>> org.drools.base.DefaultConsequenceExceptionHandler.handleException(De
>>>>>>>> fa ultConsequenceExceptionHandler.java:13
>>>>>>>>
>>>>>>>> )
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:558
>>>>>>>> ) at
>>>>>>>> org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:518)
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingM
>>>>>>>> em ory.java:475)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingM
>>>>>>>> em ory.java:439)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.drools.DroolsEndpoint.drools(DroolsEndpoint.jav
>>>>>>>> a: 183)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.drools.DroolsEndpoint.process(DroolsEndpoint.ja
>>>>>>>> va
>>>>>>>>
>>>>>>>> :177)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLi
>>>>>>>> fe Cycle.java:597)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(Async
>>>>>>>> Ba seLifeCycle.java:548)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(Asy
>>>>>>>> nc BaseLifeCycle.java:502)
>>>>>>>>
>>>>>>>>        ... 8 more
>>>>>>>> Caused by: javax.jbi.messaging.MessagingException:
>>>>>>>> java.lang.InterruptedException
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(Deli
>>>>>>>> ve ryChannelImpl.java:498)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(Deli
>>>>>>>> ve ryChannelImpl.java:442)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.common.EndpointDeliveryChannel.sendSync(Endpoin
>>>>>>>> tD eliveryChannel.java:102)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.drools.model.JbiHelper.routeTo(JbiHelper.java:1
>>>>>>>> 51 )
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.drools.model.JbiHelper.route(JbiHelper.java:109
>>>>>>>> ) at
>>>>>>>>
>>>>>>>> org.apache.servicemix.drools.Rule_tcphttp_http_0.consequence(Rule_tcp
>>>>>>>> ht tp_http_0.java:14)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.drools.Rule_tcphttp_http_0ConsequenceInvoker.ev
>>>>>>>> al uate(Rule_tcphttp_http_0ConsequenceInv
>>>>>>>>
>>>>>>>> oker.java:20)
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:554
>>>>>>>> ) ... 16 more
>>>>>>>> Caused by: java.lang.InterruptedException
>>>>>>>>        at java.lang.Object.wait(Native Method)
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.waitForExchan
>>>>>>>> ge (DeliveryChannelImpl.java:699)
>>>>>>>>
>>>>>>>>        at
>>>>>>>>
>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(Deli
>>>>>>>> ve ryChannelImpl.java:472)
>>>>>>>>
>>>>>>>>        ... 23 more
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> So my rule.drl looks like:
>>>>>>>>
>>>>>>>> package org.apache.servicemix.drools
>>>>>>>>
>>>>>>>> import org.apache.servicemix.drools.model.Exchange;
>>>>>>>>
>>>>>>>> global org.apache.servicemix.drools.model.JbiHelper jbi;
>>>>>>>>
>>>>>>>>
>>>>>>>> rule "tcphttp:http"
>>>>>>>>    when
>>>>>>>>        me : Exchange( status == Exchange.ACTIVE, inmsg : in != null
>>>>>>>> ); eval( inmsg.xpath("/message/@type = \"http\""))
>>>>>>>>    then
>>>>>>>>
>>>>>>>> System.out.println("!!!!!!!!!!!!!!!!!!!!!http!!!!!!!!!!!!!!!!!!!!!!!
>>>>>>>> ");
>>>>>>>>        jbi.route( "service:http://knapp.com/tcphttp/dhttp_provider";
>>>>>>>> ); end
>>>>>>>>
>>>>>>>> rule "tcphttp:tcp"
>>>>>>>>    when
>>>>>>>>        me : Exchange( status == Exchange.ACTIVE, inmsg : in != null
>>>>>>>> ); eval( inmsg.xpath("/message/@type = \"tcp\""));
>>>>>>>>    then
>>>>>>>>
>>>>>>>> System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!tcp!!!!!!!!!!!!!!!!!!
>>>>>>>> "); jbi.route( "service:http://knapp.com/tcphttp/dtcp_provider"; );
>>>>>>>> end
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> My xbean.xml for the drools su:
>>>>>>>>
>>>>>>>> <beans xmlns:drools="http://servicemix.apache.org/drools/1.0";
>>>>>>>>       xmlns:tcphttp="http://knapp.com/tcphttp";
>>>>>>>>       xmlns="http://www.springframework.org/schema/beans";
>>>>>>>>       xmlns:xsi="http://http://www.w3.org/2001/XMLSchema-instance";
>>>>>>>>       xsi:schemaLocation="http://servicemix.apache.org/drools/1.0
>>>>>>>> http://servicemix.apache.org/schema/servicemix-drools-3.2.2.xsd
>>>>>>>>       http://www.springframework.org/schema/beans
>>>>>>>> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd";>
>>>>>>>>
>>>>>>>>  <drools:endpoint service="tcphttp:myRouter"
>>>>>>>>                   endpoint="myRouter"
>>>>>>>>                   ruleBaseResource="classpath:rule.drl"
>>>>>>>>                   namespaceContext="#nsContext" />
>>>>>>>>
>>>>>>>>
>>>>>>>>  <drools:namespace-context id="nsContext">
>>>>>>>>    <drools:namespaces>
>>>>>>>>      <drools:namespace
>>>>>>>> prefix="tcphttp">http://knapp.com/tcphttp</drools:namespace>
>>>>>>>>    </drools:namespaces>
>>>>>>>>  </drools:namespace-context>
>>>>>>>>
>>>>>>>> </beans>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>
>>
>>
>
>

Reply via email to