There are two classes:
- MyPostingRoutine is the class that does the main work.
- PostingLogger provides an event handler that will be attached and run after the posting has completed.
Class MyPostingRoutine
This is the class that the event is attached to. In real terms this could be something like SalesFormLetter, used to post sales documents. In the picture above, you can see that a new event subscription has been attached to the doPost method (by right-clicking the method and selecting new -> post event handler subscription).static void main(Args args)
{
new MyPostingRoutine().run();
}
public void run()
{
setPrefix("Starting process");
this.doPost('PostingTransID00021');
info("Process has been completed");
}
private void doPost(str someParameter)
{
setPrefix("Posting");
info("Transaction A posted");
info("Transaction B posted");
info("Transaction C posted");
info("Posting complete");
}
Class PostingLogger
This defines a method that does some additional work, such as logging information to an extra table, or possibly sending a document electronically.The _args passed in (of type XppPrePostArgs) allows the event handler to access the parameters passed into the original function - In this example MyPostingRoutine.doPost.
public static void postHandler(XppPrePostArgs _args)
{
str paramFromParentArgs = _args.getArg('someParameter');
setPrefix("Post logger - Event handler");
info(strFmt("Posting information for '%1' logged",paramFromParentArgs));
}
Because of the event subscription, method postHandler will be called once doPost has completed.
There's a good series of articles covering this in much more detail at http://daxmusings.blogspot.com/2011/07/ax-2012-models-events-part1-model.html
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.