>It is not good to let your business logical aware the low level of  camel API.
Yes, it's bad. if there are other ways, we will prefer to it;
> It could be more handy if you let camel to call a customer bean.

...unfortunately, I still haven't thought out a way to resolve the 
example(query user-info example , which illustrated in previous mail) while 
using injected endpoint with bean; The diffcult is how to deal with the dynamic 
address in bean. 

> Then you can do what you want with it :)


----- Original Message ----- 
From: "Willem Jiang" <willem.ji...@gmail.com>
To: <users@camel.apache.org>
Cc: "xuhb" <x...@tongtech.com>
Sent: Tuesday, November 08, 2011 4:02 PM
Subject: Re: Should camel extend the way of custom logical of camel route?


> On Tue Nov  8 14:37:59 2011, xuhb wrote:
>> Thanks Hadrian Zbarcea:
>>
>> ..... it seems the discuss has stray away from my original question.
>> the original question is :
>>
>> when execution logic of route cannot be expressed by camel's built in MEP.
>> Is there  method which could be used to define a  custom execution logic 
>> which can invoke not only endpoint , but also other built in processors?
>>
>> Here is a  example:
>>      there are some web services which could be used to query a person's 
>> infomation; we need try them one by one, until one webservice has return a 
>> given person's info.
>> pseudocode expressed as following:
>>
>> Person queryinfo(String name){
>>      String[] addresses = readFromCfg();
>>      for(String address : addresses){
>>          person = new webservice(address).queryInfo(name);
>>          if(person != null)
>>              return person;
>>      }
>> }
>>
>> But using camel, I dont know how to write a route do same things;
>> Although recipeint list could do likeness. but I dont know how to  stop 
>> execution when a person infomation is got. (although I could raise a 
>> exception to force receipent list stop, but it's not reason-able);
>>
>> So I am wonderring if camel could provide some mechanis which enable I write 
>> a custom logic to schedule execution of camel processor. it may looks like:
>>
>> <route>
>>      <...>
>>      <setHeader name="addresses>  <bean "readAddress"></setHeader>
>>      <customExecution ref="customExecution ">
>>          <recipientList>  <header>singleAddress</header>  </recipientList>
>>      </customExecution>
>> </route>
>>
> It is not good to let your business logical aware the low level of 
> camel API.
> It could be more handy if you let camel to call a customer bean.
> Then you can do what you want with it :)
> 
>> class customExecution {
>> void process(Exchange ex){
>>    String[] addresses = ex.getIn().getHeader("addresses");
>>    for(String address : addresses){
>>        ex.getIn().setHeader("singleAddress", address);
>>        getChildProcessor(0).process(ex);
>>        if(containsPerson(ex.getOut().getBody())){
>>          return;
>>        }
>>    }
>> }
>> ----- Original Message -----
>> From: "Hadrian Zbarcea"<hzbar...@gmail.com>
>> To:<users@camel.apache.org>
>> Sent: Tuesday, November 08, 2011 12:53 PM
>> Subject: Re: Should camel extend the way of custom logical of camel route?
>>
>>
>>> Sure you can, there is also a loop [1] you could use for repetitive
>>> invocations. You can also define your own interceptor, which could also
>>> use a builder if you want to configure any kind of custom logic you
>>> might dream of. There's only so much we can provide out of the box.
>>>
>>> Cheers,
>>> Hadrian
>>>
>>> [1] http://camel.apache.org/loop.html
>>>
>>>
>>>
>>> On 11/07/2011 10:09 PM, xuhb wrote:
>>>> Thanks Willem:
>>>>      It seems the intercept is a extension of interceptor which enable 
>>>> user to define intercept logic with camel description language;
>>>> Although camel provide predefined control logic: stop route&   skip ;  But 
>>>>  if we need other executing logic, could I define it?
>>>>
>>>> for example: could I define how many times the processor will be executed 
>>>> with intercept?
>>>>
>>>>
>>>> ----- Original Message -----
>>>> From: "Willem Jiang"<willem.ji...@gmail.com>
>>>> To:<users@camel.apache.org>
>>>> Sent: Monday, November 07, 2011 6:44 PM
>>>> Subject: Re: Should camel extend the way of custom logical of camel route?
>>>>
>>>>
>>>>> I think you can do the same thing with Intercept[1].
>>>>>
>>>>> [1]http://camel.apache.org/intercept.html
>>>>>
>>>>> On 11/7/11 1:51 PM, xuhb wrote:
>>>>>> When the application's execution logic is sophisticate , we can using 
>>>>>> endpoint and java bean  to define a custom logic ;
>>>>>>
>>>>>> Here is a limitation: " only endpoint could be invoked in the custom 
>>>>>> execution logic", so how about to support another mechanism which enable 
>>>>>> user to define custom logical which could invoke processors defined in 
>>>>>> route (also endpoint can be invoked)?
>>>>>>
>>>>>> Is this worth to do for camel?
>>>>>>
>>>>>> Following is a proto-type (which is not good, because the implementation 
>>>>>> way violate the natural usage of camel's component);
>>>>>>
>>>>>> 1)extending a policy ,the policy enable user to retrieve the child 
>>>>>> processor with index or processor id; and the end-user could invoke the 
>>>>>> child processor as they want;
>>>>>> 2) change Pipeline , enable populate all child processors;
>>>>>
>>>>>
>>>>> --
>>>>> Willem
>>>>> ----------------------------------
>>>>> FuseSource
>>>>> Web: http://www.fusesource.com
>>>>> Blog:    http://willemjiang.blogspot.com (English)
>>>>>            http://jnn.javaeye.com (Chinese)
>>>>> Twitter: willemjiang
>>>>> Weibo: willemjiang
>>>>>
>> >
> 
> 
> 
> -- 
> Willem
> ----------------------------------
> FuseSource
> Web: http://www.fusesource.com
> Blog:    http://willemjiang.blogspot.com (English)
>         http://jnn.javaeye.com (Chinese)
> Twitter: willemjiang 
> Weibo: willemjiang 
> 
>

Reply via email to