This is one in a series of posts related to the Microsoft Dynamics AX 2012 POS application. There is a lot to learn and a lot to cover. I will start with a simple example to demonstrate how Application Triggers in AX 2012 work.
Application Triggers are called before and after certain operations when the Microsoft Dynamics AX 2012 POS application is running. This is the first assembly that AX 2012 POS looks at when starting.
In addition, you can override the default Application Triggers’ operations by using the IApplicationTrigger interface provided by the Microsoft.Dynamics.Retail.Pos.Contracts.Triggers namespace in Visual Studio 2010.
It is important to understand AX 2012 Retail POS development lies heavily on using interfaces. Most operations that interact with AX 2012 POS are executed through interfaces. For example, the following picture depicts the use of the ICustomer interface.
NOTE: The dll for this namespace can be found in the AX 2012 POS Fiscal Form. For more information on this, you can download the AX 2012 POS Fiscal Sample from Partner Source.
Let’s start by setting up the environment in Visual Studio 2010. Please note that to complete this tutorial you will need to have the AX 2012 POS application running in a machine you can work on.
Open the Visual Studio Solution Fiscal Sample and do the following:
1- Right click on the ApplicationTriggers project and choose properties.
2- In the Application tab make sure both the Assembly Name and Default Namespace have the name ApplicationTriggers. In addition, make sure your Output Type is set to Class Library.
3- In the Build tab chose All Configurations from the Configuration drop-down list and click the browse button. Navigate to the AX 2012 POS application and look for a folder called Triggers.
4- In the Debug tab, choose All Configurations from the Configuration drop-down list. In addition, navigate to the AX 2012 POS application and look for the POS executable. This is really cool as by doing this, we can accomplish two things: (1) Start the AX 2012 POS application when debugging, and (2) we can debug all the code we want straight from our cozy chair in front of our Visual Studio 2010.
5- All the assemblies need to be signed. The Fiscal Sample comes with an assembly called FiscalSample.snk. I’m using my own, which does not make any difference for the purposes of this tutorial. In fact, for this tutorial, you can create your own.
6- In the Signing tab, check the Sign the assembly and choose New. A new window will appear and just give it any name you want. This will create an assembly file in your Visual Studio solution. You can then copy it and paste it to other projects.
7- We need to add a few references. So right click in references and choose the one depicted in the figure in step 8.
8- Import the following references.
9- Add the references depicted above to your .cs file as seen in the following picture. Also, the following picture shows the IApplicationTriggers interface being implemented by our class. This is actually very important as without it, nothing will happen and you will not be able to run your AX 2012 POS application. Make sure your code looks as the one below.
10- Build the solution. By doing this, you are overriding the default ApplicationTriggers.dll dynamics library with the code in step 9. Make sure you don’t have any build errors.
11- Run the solution and you should see the following two messages.
The messages above are executed from the following two methods:
a- Public void ApplicationStart()
b- Public void LoginWindowVisible()
12- Before the login windows appears you should see the following message.
The message above is executed from the public void PreLogon() method.
13- Enter the user name and password and you should see the following message.
The messages above are executed from the public void PreLogon() method.
14- Click the Log Off button and you should see the following message:
The message above is executed from the public void LogOff() method.
As I mentioned at the beginning of this post, there is a lot to learn. I also think the Microsoft team did an excellent job simplifying the POS development from the AX 2009 POS version. Unfortunately, there is not a lot of information available for AX 2012 POS development in Partner Source and/or TechnNet, and it is my hope that Microsoft can start releasing some of it soon. Until then, let’s work together on discovering the new features in AX 2012 POS.