Re: More complicated scenario for camel-bam

2012-01-11 Thread Łukasz Dywicki
Time is the best teacher. :)

I've found a way to do a processing message after activity receives it - with 
interceptors. There some exceptions, but both persistence and processing works.

Solutions looks next:
interceptFrom("activemq:incoming")
.split(body())
.multicast()
.to(sys1.getEndpoint())
.to(sys2.getEndpoint())
.end()
 .end();


Łukasz Dywicki
--
Code-House
http://code-house.org



Wiadomość napisana przez Łukasz Dywicki w dniu 2012-01-11, o godz. 11:48:

> Hey Hadrian,
> I started investigating the camel-bam code and one from statements I wrote is 
> not true. The Process name can be set by calling the ProcessBuilder 
> constructor. The Process-N name is a default behaviour.
> 
> Also, if it makes a sense to support delaying the activity? Eg making an 
> activity suspended? I don't see use of it in my case so far, but that's might 
> be required by other processes.
> 
> Łukasz Dywicki
> --
> Code-House
> http://code-house.org
> 
> 
> Wiadomość napisana przez Hadrian Zbarcea w dniu 2012-01-11, o godz. 03:29:
> 
>> Lukasz, do you mind opening a jira with your findings?
>> Thanks, Hadrian
>> 
>> On 01/10/2012 06:36 PM, Łukasz Dywicki wrote:
>>> Hey everyone,
>>> I tried yo use camel-bam and it works for very basic example shown in 
>>> documentation. It works well for correlating the files without any middle 
>>> processing steps.
>>> 
>>> The process I try to monitor looks following
>>> 
>>> - receive incoming JMS message - split - multicast (queue1, queue2)
>>> 
>>> So I've build a following configuration for the process:
>>> ValueBuilder correlation = header("JMSCorrelationID");
>>> ActivityBuilder incoming = 
>>> activity("activemq:incoming").correlate(correlation).name("incoming");
>>> 
>>> ActivityBuilder sys1 = 
>>> activity("amq2:queue1").correlate(correlation).name("system1");
>>> ActivityBuilder sys2 = 
>>> activity("amq2:queue2").correlate(correlation).name("system2");
>>> 
>>> sys1.starts().after(incoming.starts());
>>> sys2.starts().after(incoming.starts());
>>> 
>>> But after receiving messages and initializing a process instance nothing 
>>> happens. Er it happens, the activity is created. I can not reuse a 
>>> incoming.getEndpoint to create an from statement and process message. 
>>> Multiple consumers on same destination are not allowed.
>>> 
>>> Issues I've discovered:
>>> - Lack of support for parallel activities.
>>> - No support for processing received message. Usually a incoming message is 
>>> only a entry point for a process.
>>> - No support for a custom process names. Not everyone are happy with 
>>> Proces-N name. A ProcessBuilder extensions can't change a naming schema.
>>> - Activity definition is not put into the database as long as it is not 
>>> called by flow. Process is created and the activities are known, but 
>>> they're not persisted before processing. So whole definitions are useless 
>>> if we would like display process definitions somewhere else.
>>> - Hard coded dependency to JPA, can't be replaced by alternative way of 
>>> storing process definitions eg like in IdempotentRepository.
>>> 
>>> These issues makes a camel-bam useless in my case. Should I use an 
>>> alternative tool like activiti-camel integration? It's fine but I don't 
>>> need whole BPMN, diagraming. I want to track a flow between systems in an 
>>> easy way, there is no human tasks, only service calls and camel logic.
>>> 
>>> Łukasz Dywicki
>>> --
>>> Code-House
>>> Krasiczyńska 3/80
>>> 03-379 Warszawa
>>> 
>>> 
>>> 
>> 
>> -- 
>> Hadrian Zbarcea
>> Principal Software Architect
>> Talend, Inc
>> http://coders.talend.com/
>> http://camelbot.blogspot.com/
> 



Re: More complicated scenario for camel-bam

2012-01-11 Thread Łukasz Dywicki
Hey Hadrian,
I started investigating the camel-bam code and one from statements I wrote is 
not true. The Process name can be set by calling the ProcessBuilder 
constructor. The Process-N name is a default behaviour.

Also, if it makes a sense to support delaying the activity? Eg making an 
activity suspended? I don't see use of it in my case so far, but that's might 
be required by other processes.

Łukasz Dywicki
--
Code-House
http://code-house.org


Wiadomość napisana przez Hadrian Zbarcea w dniu 2012-01-11, o godz. 03:29:

> Lukasz, do you mind opening a jira with your findings?
> Thanks, Hadrian
> 
> On 01/10/2012 06:36 PM, Łukasz Dywicki wrote:
>> Hey everyone,
>> I tried yo use camel-bam and it works for very basic example shown in 
>> documentation. It works well for correlating the files without any middle 
>> processing steps.
>> 
>> The process I try to monitor looks following
>> 
>> - receive incoming JMS message - split - multicast (queue1, queue2)
>> 
>> So I've build a following configuration for the process:
>> ValueBuilder correlation = header("JMSCorrelationID");
>> ActivityBuilder incoming = 
>> activity("activemq:incoming").correlate(correlation).name("incoming");
>> 
>> ActivityBuilder sys1 = 
>> activity("amq2:queue1").correlate(correlation).name("system1");
>> ActivityBuilder sys2 = 
>> activity("amq2:queue2").correlate(correlation).name("system2");
>> 
>> sys1.starts().after(incoming.starts());
>> sys2.starts().after(incoming.starts());
>> 
>> But after receiving messages and initializing a process instance nothing 
>> happens. Er it happens, the activity is created. I can not reuse a 
>> incoming.getEndpoint to create an from statement and process message. 
>> Multiple consumers on same destination are not allowed.
>> 
>> Issues I've discovered:
>> - Lack of support for parallel activities.
>> - No support for processing received message. Usually a incoming message is 
>> only a entry point for a process.
>> - No support for a custom process names. Not everyone are happy with 
>> Proces-N name. A ProcessBuilder extensions can't change a naming schema.
>> - Activity definition is not put into the database as long as it is not 
>> called by flow. Process is created and the activities are known, but they're 
>> not persisted before processing. So whole definitions are useless if we 
>> would like display process definitions somewhere else.
>> - Hard coded dependency to JPA, can't be replaced by alternative way of 
>> storing process definitions eg like in IdempotentRepository.
>> 
>> These issues makes a camel-bam useless in my case. Should I use an 
>> alternative tool like activiti-camel integration? It's fine but I don't need 
>> whole BPMN, diagraming. I want to track a flow between systems in an easy 
>> way, there is no human tasks, only service calls and camel logic.
>> 
>> Łukasz Dywicki
>> --
>> Code-House
>> Krasiczyńska 3/80
>> 03-379 Warszawa
>> 
>> 
>> 
> 
> -- 
> Hadrian Zbarcea
> Principal Software Architect
> Talend, Inc
> http://coders.talend.com/
> http://camelbot.blogspot.com/



Re: More complicated scenario for camel-bam

2012-01-10 Thread Hadrian Zbarcea

Lukasz, do you mind opening a jira with your findings?
Thanks, Hadrian

On 01/10/2012 06:36 PM, Łukasz Dywicki wrote:

Hey everyone,
I tried yo use camel-bam and it works for very basic example shown in 
documentation. It works well for correlating the files without any middle 
processing steps.

The process I try to monitor looks following

- receive incoming JMS message - split - multicast (queue1, queue2)

So I've build a following configuration for the process:
ValueBuilder correlation = header("JMSCorrelationID");
ActivityBuilder incoming = 
activity("activemq:incoming").correlate(correlation).name("incoming");

ActivityBuilder sys1 = 
activity("amq2:queue1").correlate(correlation).name("system1");
ActivityBuilder sys2 = 
activity("amq2:queue2").correlate(correlation).name("system2");

sys1.starts().after(incoming.starts());
sys2.starts().after(incoming.starts());

But after receiving messages and initializing a process instance nothing 
happens. Er it happens, the activity is created. I can not reuse a 
incoming.getEndpoint to create an from statement and process message. Multiple 
consumers on same destination are not allowed.

Issues I've discovered:
- Lack of support for parallel activities.
- No support for processing received message. Usually a incoming message is 
only a entry point for a process.
- No support for a custom process names. Not everyone are happy with Proces-N 
name. A ProcessBuilder extensions can't change a naming schema.
- Activity definition is not put into the database as long as it is not called 
by flow. Process is created and the activities are known, but they're not 
persisted before processing. So whole definitions are useless if we would like 
display process definitions somewhere else.
- Hard coded dependency to JPA, can't be replaced by alternative way of storing 
process definitions eg like in IdempotentRepository.

These issues makes a camel-bam useless in my case. Should I use an alternative 
tool like activiti-camel integration? It's fine but I don't need whole BPMN, 
diagraming. I want to track a flow between systems in an easy way, there is no 
human tasks, only service calls and camel logic.

Łukasz Dywicki
--
Code-House
Krasiczyńska 3/80
03-379 Warszawa





--
Hadrian Zbarcea
Principal Software Architect
Talend, Inc
http://coders.talend.com/
http://camelbot.blogspot.com/


More complicated scenario for camel-bam

2012-01-10 Thread Łukasz Dywicki
Hey everyone,
I tried yo use camel-bam and it works for very basic example shown in 
documentation. It works well for correlating the files without any middle 
processing steps.

The process I try to monitor looks following

- receive incoming JMS message - split - multicast (queue1, queue2)

So I've build a following configuration for the process:
ValueBuilder correlation = header("JMSCorrelationID");
ActivityBuilder incoming = 
activity("activemq:incoming").correlate(correlation).name("incoming");

ActivityBuilder sys1 = 
activity("amq2:queue1").correlate(correlation).name("system1");
ActivityBuilder sys2 = 
activity("amq2:queue2").correlate(correlation).name("system2");

sys1.starts().after(incoming.starts());
sys2.starts().after(incoming.starts());

But after receiving messages and initializing a process instance nothing 
happens. Er it happens, the activity is created. I can not reuse a 
incoming.getEndpoint to create an from statement and process message. Multiple 
consumers on same destination are not allowed.

Issues I've discovered:
- Lack of support for parallel activities.
- No support for processing received message. Usually a incoming message is 
only a entry point for a process.
- No support for a custom process names. Not everyone are happy with Proces-N 
name. A ProcessBuilder extensions can't change a naming schema.
- Activity definition is not put into the database as long as it is not called 
by flow. Process is created and the activities are known, but they're not 
persisted before processing. So whole definitions are useless if we would like 
display process definitions somewhere else.
- Hard coded dependency to JPA, can't be replaced by alternative way of storing 
process definitions eg like in IdempotentRepository.

These issues makes a camel-bam useless in my case. Should I use an alternative 
tool like activiti-camel integration? It's fine but I don't need whole BPMN, 
diagraming. I want to track a flow between systems in an easy way, there is no 
human tasks, only service calls and camel logic.

Łukasz Dywicki
--
Code-House
Krasiczyńska 3/80
03-379 Warszawa