== Using the Transfer Event Model == Transfer has an event model that can be taken advantage of to notify other CFC's of updates, creates and deletes within the Transfer system, and essentially, the database. Since Coldfusion 7 does not have interfaces (and we don't really ''need'' to have them anyway), the methods required are set by convention. The object that is added as an observer must have the appropriate method defined as set below for it to work correctly. Each event action method, takes an argument of type [http://docs.transfer-orm.com/html/transferapi/transfer/com/events/TransferEvent.html transfer.com.events.TransferEvent] as an argument. This gives them access to the TransferObject that the event has fired for. === AfterNew === This event is fired after a TransferObject is created. This is after 'init()' and 'configure()' have been called on the TransferObject. Required method on the observer:

	
	

To add or remove a Observer for a AfterNewEvent: [http://docs.transfer-orm.com/html/transferapi/transfer/com/Transfer.html#addAfterNewObserver() Transfer.addAfterNewObserver(component) ] [http://docs.transfer-orm.com/html/transferapi/transfer/com/Transfer.html#removeAfterNewObserver() Transfer.removeAfterNewObserver(component) ] === BeforeCreate === This event is fired just before a TransferObject is inserted into the database. Required method on the observer:

 	
 	

To add or remove a Observer for a BeforeCreateEvent: [http://docs.transfer-orm.com/html/transferapi/transfer/com/Transfer.html#addBeforeCreateObserver() Transfer.addBeforeCreateObserver(component)] [http://docs.transfer-orm.com/html/transferapi/transfer/com/Transfer.html#removeBeforeCreateObserver() Transfer.removeBeforeCreateObserver(component)] === AfterCreate === This event is fired after a TransferObject is inserted into the database. Required method on the observer:

 	
 	

To add or remove an Observer for a AfterCreateEvent: [http://docs.transfer-orm.com/html/transferapi/transfer/com/Transfer.html#addAfterCreateObserver() Transfer.addAfterCreateObserver(component)] [http://docs.transfer-orm.com/html/transferapi/transfer/com/Transfer.html#removeAfterCreateObserver() Transfer.removeAfterCreateObserver(component)] === BeforeUpdate === This event is fired just before a TransferObject is updated in the database. Required method on the observer:

 	
 	

Do note, that if there is no change to the updated TransferObject, it will not be updated, and therefore the BeforeUpdate Event will not be fired. To add or remove a Observer for a BeforeUpdateEvent: [http://docs.transfer-orm.com/html/transferapi/transfer/com/Transfer.html#addBeforeUpdateObserver() Transfer.addBeforeUpdateObserver(component)] [http://docs.transfer-orm.com/html/transferapi/transfer/com/Transfer.html#removeBeforeUpdateObserver() Transfer.removeBeforeUpdateObserver(component)] === AfterUpdate === This event is fired after a TransferObject is updated in the database. Required method on the observer:

 	
 	

Do note, that if there is no change to the updated TransferObject, it will not be updated, and therefore the AfterUpdate Event will not be fired. To add or remove a Observer for a AfterUpdateEvent: [http://docs.transfer-orm.com/html/transferapi/transfer/com/Transfer.html#addAfterUpdateObserver() Transfer.addAfterUpdateObserver(component)] [http://docs.transfer-orm.com/html/transferapi/transfer/com/Transfer.html#removeAfterUpdateObserver() Transfer.removeAfterUpdateObserver(component)] === BeforeDelete === This event is fired just before a TransferObject is deleted in the database. Required method on the observer:

 	
 	

To add or remove a Observer for a BeforeDeleteEvent: [http://docs.transfer-orm.com/html/transferapi/transfer/com/Transfer.html#addBeforeDeleteObserver() Transfer.addBeforeDeleteObserver(component)] [http://docs.transfer-orm.com/html/transferapi/transfer/com/Transfer.html#removeBeforeDeleteObserver() Transfer.removeBeforeDeleteObserver(component)] === AfterDelete === This event is fired after a TransferObject is deleted in the database. Required method on the observer:

 	
 	

To add or remove a Observer for a AfterDeleteEvent: [http://docs.transfer-orm.com/html/transferapi/transfer/com/Transfer.html#addAfterDeleteObserver() Transfer.addAfterDeleteObserver(component)] [http://docs.transfer-orm.com/html/transferapi/transfer/com/Transfer.html#removeAfterDeleteObserver() Transfer.removeAfterDeleteObserver(component)] ===See Also=== * [http://www.fancybread.com/blog/index.cfm/2008/1/3/Working-with-Transfer-ORM-An-Event-Model-Example Working with Transfer ORM: An Event Model Example] (Paul Marcotte)
Paul gives a good overview on how to use the Transfer Event model to provide basic dependency injection * [http://www.silverwareconsulting.com/index.cfm/2008/5/21/My-Take-on-Transfer-ORM-Event-Model-Examples--BeforeCreate-Example My Take on Transfer ORM Event Model - BeforeCreate Example] (Bob Silverberg)
Utilising the Transfer Event Model to set Created and Updated dates on Transfer Objects automatically. [[Category:Events]]