X++ in AX7: Static event subscription

In AX2012 we introduced events. Unfortunately, we got the subscription part of static events upside down. In the meta model you were forced to change the publisher when adding a subscriber. This resulted in an intrusive customization. And thus defeats most of the purpose.

In AX7 this has been corrected. You can now subscribe to events using the SubscribesTo attribute.

Extending the singleton example from my previous post, we can now implement the flush method.

Note: Subscribing to the SysTest.postInvokeTearDown event to flush a singleton is overkill. This event will fire for all tests, and thus slow down every test execution (a little bit). An alternative implementation could be to use dynamic event subscription to only hook up the event as needed.

Dynamic event subscriptions work in exactly the same way as in AX2012.

THIS POST APPLIES TO MICROSOFT DYNAMICS AX7 PREVIEW; IS PROVIDED AS-IS AND CONFERS NO RIGHTS.

The attribute based subscriptions solves a hen-and-egg problem. If you want to make a truly unintrusive customization you cannot change any existing logic. That means you have no place to do the first dynamic event subscribtion using += notion.

The subscribesTo attribute offers an elegant way of solving that problem.

I hope this explains the value – it is one of my favorite new features.