On Wed, Jul 21, 2010 at 9:53 PM, Patrik Nordwall
<patrik.nordw...@gmail.com> wrote:
> PaloT wrote:
>>
>> Than after event reply aren't some events duplicated (one from replay
>> and one from service)?
>>
> I'm not sure that I understand the question.
> If you are using EventSourcing and the replay mechanism it is always the
> CommandEvents that are replayed and if they result in additional
> DomainEvents to be published they will be published again during replay.
> This can definitely be unwanted and must be handled by the application.
> Fowler describes this issue and talkes about gateways that must be aware of
> replay mode and avoid interaction with external parties. Currently we have
> not done anything about this.
Can't we "tag" event that it's reaction event and than we don't have
to store/reply it? This mean, framework will handle it without
necessity to write specific code in application. We can also store for
example module name which created event and events coming from system
which is replaying event will be not replayed. I guess we can make
something what will result in higher quality of EDA and mechanisms
which will work better in "default" mode.

> PaloT wrote:
>>
>> If we can't fire CommandEvent from service do we have some well know
>> patter which will bridge two services - for example service will fire
>> DomainEvent and some integration code will generate CommandEvent as
>> reaction to DomainEvent?
>>
> That is possible to do. We will write more examples in the blog.
I can imagine with existing infrastructure but I guess this is higher
level logic than Service. It's integration or orchestration code. I
guess we have to split somehow this code from standard services and
apply some constraint about this code. Something like - not possible
to inject such kind of "service" to standard service (you can't call
it from standard service), or maybe more strict and disallow injection
of services to integration layer and allow invoking services from
integration layer only with Events. It will also mean that such events
and integration code will be invoked in another technical transaction,
...
Many things appear in my hand which could be useful and necessary if
we want use it in enterprise environment.

>> Don't we have to store some information about event like
>> module/application where it was created, ... for replay?
>>
> The EventSourcing mechanism operate on CommandEvents, which are persistent
> and stored with the ordinary persistence mechanism in Sculptor, i.e. in the
> same db as the business component where the specific CommandEvent is
> defined.
This was meant for better reply mechanism which can use this
information and work better out of box.

>From my experience, we have to find way how to layer services and way
how to constraint communication between this layers. I mean something
like this: http://en.wikipedia.org/wiki/File:SOA_Metamodel.svg
In our system we have everything as Service. It's not bad, it's more
flexible but in enterprise environment we have to layer and constrain
service invocations. I would like to see it explicit in our DSL.

Regards

Pavel

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Fornax-developer mailing list
Fornax-developer@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fornax-developer

Reply via email to