A use case I have mentioned earlier on this list is a MetaModel validator. Such 
a component should be triggered on transaction success to validate the 
added/deleted relationships, nodes and properties, and the updated property 
values. It's an open question to me, whether every change event should be 
logged by the validator, or if the validator can somehow get a set of 
nodes/relationship/properties from Transaction with those entities that have 
been touched within that transaction. 

The nicest solution from my point of view would be that the onSuccess event has 
a property touchedNodes, which is a list of node facades, where only the 
immutable methods of Node are implemented, and where the return value of each 
method returns an immutable value. 

The book keeping with respect to transactions is already done within the 
transactions, so logging all changes once more for a validator seems a waste of 
cycles and memory. So, to me an event with a reference to this change log, 
would seem the nicest solution.

Kind regards,
Niels Hoogeveen

> From: tobias.ivars...@neotechnology.com
> Date: Wed, 31 Mar 2010 12:39:25 +0200
> To: user@lists.neo4j.org
> Subject: [Neo] Requirements for an event framework for Neo4j
> 
> Fellow developers!
> 
> The time has come to start the work on an event framework for Neo4j. In
> order to do a good work at this we would get input on what requirements you
> have on an event framework. We would like to get a list of use cases for
> which you would use an event framework, along with the features you think
> the use case would need from the event framework (i.e. which events you
> would like to receive notification about, and when). We would also like you
> to motivate why these features are required by the use case. Events can
> easily degrade performance if the framework is ill designed, so we would
> like to keep things very lean.
> 
> We have made some early analysis and arrived at the following conclusions:
> 
> * There can be two kinds of event handlers: Proactive event handlers and
> Reactive event handlers.
> Proactive event handlers have the ability to preempt operations and Reactive
> event handlers simply react to an event and cannot cause the event to not
> succeed.
> 
> * There are three kinds of events in Neo4j kernel:
>   - Lifecycle events, such as shutdown.
>   - Transactional events, such as start commit, commit successful, rollback,
> etc.
>   - Data modification events, such as node created, property changed,
> relationship removed, etc.
> 
> It might be possible that other components, such as the indexing component,
> would want to add more events to the event framework.
> 
> These are of course just some initial input to get your thoughts going, feel
> free to think outside of the constraints above. Our ultimate goal is to
> create an event framework that is as useful as possible while maintaining
> 
> -- 
> Tobias Ivarsson <tobias.ivars...@neotechnology.com>
> Hacker, Neo Technology
> www.neotechnology.com
> Cellphone: +46 706 534857
> _______________________________________________
> Neo mailing list
> User@lists.neo4j.org
> https://lists.neo4j.org/mailman/listinfo/user
                                          
_________________________________________________________________
New Windows 7: Find the right PC for you. Learn more.
http://windows.microsoft.com/shop
_______________________________________________
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to