Thursday 6 December 2012

Unit Of Work Implementation in Dynamics AX


UNIT OF WORK:

Unit of work keeps track of everything you do during a transaction that can effect the database. It keeps track of everything that needs to be done to alter the database as a result of your work.

There is a system class called UnitOfWork Class in X++ that implements the Unit Of Work Framework. Some of it's details are given below.

Clear
 Clears all the changes
DeleteonSaveChanges
 Deletes the record on commit/save changes
InsertOnSaveChanges
 Inserts the record on commit /save changes
UpdateOnSaveChanges
 Updates the record on commit /save changes
SaveChanges
 Save the changes on the server

Implementing the Unit Of Work:

In this example we will perform bulk insertion on tables , this is where the role of Unit of work comes into play . By means of it we can insert lines against a header record without creating the header first on the basis of the Rec Id that comes as a foreign key in the child table.

Example:


In this example you can see we have created two tables :
  • Candidate 
  • Exam
Where the Exam table behaves as the header table and the Candidate tables acts as the Lines.The Screen shot below shows the relation between them.


After this step we need to set the CreateNavigationPropertyMethods Property to Yes.  As Shown in the screen shot below.


After that we need to create a new class and add a Method in it that will perform all the calculations and insertions , as shown in the screen shot below.



 Finally we need to call this method in a job. The results can be seen by opening the tables.



In this way the DataSources can be grouped as a unit of work and Ax Client has great support for it.

I believe it was helpful.  


Tuesday 4 December 2012

Work Flow in Dynamics Ax 2012


WORKFLOW:


A Work Flow can be defined as a sequence of steps where each steps follows the precedent without any gap or delay.It can also be defined as a movement of tasks within a process. The Dynamics AX Work Flow infrastructure enables user configurable workflows in Dynamics Ax application modules with specific focus on tasks and approval workflows.



A Work Flow is designed based on the company requirements then Configured by the administrator , and run by the user.

BASIC CONCEPTS:

Work Flow Type:

It is the basic building block that can be used to create customized workflows that enforce business policies. A Work Flow type defines :
  • The Work Flow document to use.
  • Tasks and approvals that can be configured by the User.
  • Workflow categories used to assign a workflow type to a specific module.
  • Menu item and Event Handlers to be used.

Work Flow Configurations:

These are created by the application administrators that use Dynamics Ax Work Flow editor. The administrator configures the:
  • Work Flow
  • Workflow Elements.
  • Approval elements to control the flow of business document through workflow process.

Work Flow Instances:

Created by the Work Flow run time when the workflow is activated.

Work Flow Elements:

These are created in the AOT and configured by the administrator. A Work Flow structure consists of a sequence of Work Flow elements that includes:
  • Tasks
  • Approval
  • Sub-Work Flow

Developer's Role:

A Developer adds Work Flow to an existing business document or Creates new document that support Work Flow. A developer performs these steps :
  • Creates a Query for Work Flow.
  • Creates a Work Flow Category.
  • Creates a Work Flow Type.
  • Creates Work Flow elements.
  • Enables Work Flow on a Form.

Creating Query For Work Flow:

An AOT Query can be simply created under the Queries node in AOT. Right click on the queries node and  Create New Query.


for further information on queries see  here

Creating Work Flow Category:

Expand the Work Flow node and right click on the Work Flow categories node to create a new Category.


In the Property Sheet for the newly created module set it's name and module properties.

Creating Work Flow Type:

To create Work Flow type we need to run a Workflow Type wizard.
AOT--> Work Flows--> Work Flow Type  right click and then go to addins and run Work Flow Type wizard.


Create Work Flow Elements:

To Create Work Flow elements we have multiple ways . For (e.g) In order to create an Approval Element for the workflow we can run an Approval wizard as shown below.


Or you can create tasks by these steps:
AOT--> Work Flow-->Tasks-->New Task

Enabling Work Flow on a Form:

Expand the form , expand it's designs node and on the design node right click properties. On the Properties window set the following properties:

Work Flow Enabled       :        ( Yes ) 
Work Flow Data Source:        (Data Source for the Query)
Work Flow Type            :        (Work Flow Type Created)








Thursday 22 November 2012

Exceptions in Dynamics AX 2012



Exceptions:

       
A Situation in which the flow of a program is interrupted is called exception . A program must handle them For example: If a user requests a record to be fetched and that record doesn't exists then in that case system must throw an exception. There are many types of exceptions thrown depending upon it's cause . All of them can be caught so it's a developer's decision to decide which exceptions must be handled by the system.

Some common exceptions are listed below:







Try , Throw ,Catch & Retry Statements :


Try: 

       These statements indicate the start of the block of code that you are going to handle with X++ Exception handling system . Any exception thrown in this block can be caught in the associated catch statements.

Throw:

       These statements are used to explicitly throw an exception that can be caught by the Catch statement.

Catch:

       These statements define what code is going to be executed in case of an exception being thrown . These statements come after the Try statement. It is not necessary to catch each try statement But each Try statement must have a corresponding Catch statement.

Retry:

       These statements tell the system to go back to the Try statement and attempt to execute the code again , any data loaded before the Try statement remains the same where as any data loaded after the Try statement will be refreshed.

Optimistic Concurrency Control ( OCC ) :


It is a performance enhancing function within Dynamics AX . It assumes that a record retrieved from the database is not updated , until it is proven to be updated by the database which means that in case of updating a record the system compares the rec Version field of the record with the actual record in the database. The rec Version field is updated each time a record is successfully updated. There are two exceptions thrown in case of a record been updated in a transaction using Optimistic Concurrency Control.


 Handling Exception in Code:





























In the above example in the Try block an exception is thrown if the user lefts any dialogue field empty or if the AccountNum already exists. This Exception is then caught in the Catch Block later in the code .

I believe it was helpful.

  

Tuesday 6 November 2012

Dynamics Ax 2012 Security


SECURITY :


       Role based security defines the access to Microsoft Dynamics Ax 2012 application and data . It relates to the job role that an end user has with in an organization . The role includes the duties, privileges and permissions required by that role.
  
        The maintenance of roles and duties is typically undertaken by the system administrator  where as the maintenance of privileges and permissions is performed by the developer.

BASIC CONCEPTS:


 Security Roles:

          It depicts the behavior that a person in an organization can play. A Security role includes one or more duties.
   

 Duties:

       A responsibility to perform one or more tasks. A duty requires one or more privileges in order to perform that duty.

 Privileges:

         The access required to perform a duty. A privilege includes one or more permissions.
  

 Permissions:

         The level of access associated with one or more securable objects that are required to perform the function associated with an entry point.

 Designing Role Based Security:         

  1.  First of all we need to set up a new user .
  2.  The end user is assigned one or more security roles.
  3.  Security role is assigned one or more duties.
  4.  Duties require one or more privileges.
  5.  A privilege contains one or more permissions.
Have a look at this example:



According to the above diagram the Accounts Receivable Manager Role has the duties of maintaining customer master and to inquire chart of accounts for which it requires privileges (i.e) delete access to customer form display menu item and create new address action menu item But in order to know the level of access it requires permissions on that form  (i.e) Read , Update , Create , Delete. 

I believe it was helpful ..

For further reading you can refer other useful links like:
  

Dynamics Ax 2012 FactBoxes


FactBoxes:

              A FactBox is used to display the data related to the currently selected record in the list page.
  
 There are three types of  Factboxes :

1) InfoPart.
2) FormPart.
3) Cues.

  • InfoPart: 
 It is very simple to create and can display limited number of controls. It has its own data source and can also be displayed in Enterprise Portal.  

  • FormPart:                                         

             It is a link to a Form and can  have the same controls as an standard form .It is displayed in the FactBox Section , So adding too many controls can crowd the form.

  • Cues:

               It is used to display the Count of number of records related to the current record in the list page.
                           
 For Further information you can read from here:
               http://msdn.microsoft.com/en-us/library/gg847986.aspx 
                    

Friday 12 October 2012

Full Text Index


Full Text Indexes:

           
 Full text index are very helpful in searching for words that are embedded in the midlle of string fields . This information can be used by queries to run more efficiently and bring more accurate results. This index can also be used on MEMO and EDT's .
There Can be only one Full Text Index per table.

 

How To Create a Full Text Index:

  • First we need to create a table and the table must contain string fields.
  • Set the Table group property of the table to Main.
  • Expand the table and right click on it's Full Text Index node and create new Full Text Index.
  • Drag and drop the table's string fields on the newly created Full Text Index.
Your project should look like this.


    
   

Using Full Text Index In Queries:


In order to Use Full Text index in queries we need to create a simple job like this.





Hope it was helpful to you.....






                                                                        




Tuesday 2 October 2012

Ax 2012 Queries


Queries in AX2012


There are three types of queries in Dynamics Ax.

1.       INLINE QUERIES

2.       AOT QUERIES

3.       QUERY BUILD API

Each of them has their different usage and conditions in which they are suitable to use.

Usage of Inline Queries:

·         They are used when we require a query that isn’t reusable or is used for a specific condition or scenario.

Usage of AOT Queries:

·         They are used when we require a query that has to be reused on multiple scenarios.

     Usage Of Query Build API:

·         Mostly Used when we have to run existing AOT Queries with modification.

   

     EXAMPLE:     

                 In this Example I will Show simple jobs demonstrating a Single Query in all three Forms.

         

     Inline Query:
                           


The Image above shows a Simple Query in which there is a join between HcmBenefit & HcmBenefitPlan Tables.


     AOT Queries:

              We need to create a new Query under the Query node of the AOT.

                                     
                  
    Then to run this query we need to create a simple job as follows.


                

                                       

  Query Build API:

   Now to produce the same query with Query Build API we have to create a Job as shown below.

  
                               
    I hope It was helpful.                                    

Monday 3 September 2012

How to Highlight or Color Records



   Highlight or Color Records:

       Today I will share something that you may find interesting. First have a look at this form.

 


      In the same CustTrans Form now the records are colored hence making that form more user friendly.

Ø  This is done simply by just overriding the displayOption method of the form dataSource.



                                 


                               
 
          

 

 

 

Friday 31 August 2012

SSRS Security Deployment Issue in AX2012




 

I was getting this error while deploying SSRS reports.

 


 

I found a very useful Solution here:


 

I believe it was Helpful…

 

Thursday 30 August 2012

Automatic Events in Dynamics AX 2012




Introduction:


Automatic Events are those events that are triggered by the environment.

Types:


PreEvent:


The pre-event handlers are called before the execution of the designated method. Each of the pre-event handlers can access the original values of the parameters and modify them as required.

PostEvent:


Post-event handlers are called after the method call has ended. The post-event handlers can modify the return value of the called method.

Implementation:

Below is a sample project that shows how to implement Pre and Post Event Handlers in Dynamics Ax 2012.


This Project contains two Classes PrePostEvents and PrePostSample .  In PrePostSample Class there is a DemoMethod that contains Pre and Post Event handlers.



This Method takes an integer values passed from the Main method and has Pre and Post Event Handlers associated with it. The Properties Window of Pre and Post Event handler looks like this.


                            
                                          

 

The CalledWhen Property in the above Figure has the Value Pre Which Shows that it’s a PreEvent Handler.

 

                                         

 

Similarly, the CalledWhen Property shows that it is a PostEventHandler.

                                        

 
This method simply gets the _args passed by the Main Method.

 

                                       

This method gets the _args passed by the Main Method and replaces its value.

 

                                       


This method passes the value to the PreEvent Handler and the DemoMethod.

Wednesday 29 August 2012

Dynamics AX 2012 Eventing Framework



Introduction:


In Dynamics AX each customer has a set of requirements in the product which are customized by the partners. These Customizations can be broken when a newer version is released by Microsoft. The use of events has the potential to lower the cost of creating and upgrading customizations.

Key Terms:


 Producer:


 The producer is the logic that contains the code that causes a change. It is an entity that emits events.

 Consumer:


The consumer is the application code that represents an interest in being notified when a specific event occurs. It is an entity that receives events.

 

Event:

An event is a representation of a change having happened in the producer.

 

Event Payload:

 
The event payload is the information that the event carries with it.

 

Delegate:

 
 
A delegate is the definition of the information passed from the producer to the consumer when an event takes place.

 
Events provide the following benefits:


Observation:

 Events can be used to generate alerts on any specific behavior.

 Information dissemination:

 Events can deliver the right information to the right consumers at the right time.

Decoupling:
Events produced by one part of the application can be consumed by a completely different part of the application. There is no need for the producer to be aware of the consumers, nor do the consumers need to know details about the producer. One producer's event can be acted upon by any number of consumers. Conversely, consumers can act upon any number of events from many different producers

 

 Coded Events:


  Delegates can be added as members of class.  The syntax for defining a delegate is the same as the syntax used for defining a    method, except that:

1.    The "delegate" keyword is used.

2.    Neither "public" nor any other accessibility specifier is allowed.

3.    The return type must be "void."

4.    The body must be empty; that is, it can contain neither declarations nor statements.

 

Implementation of Coded Events:

 
The picture below shows a simple example of implementing Coded Events in Ax.

 
 


 

 
 
 
 
 


In the above project there are two classes EmployeeSelector and Employee.

Ø  In the Employee class EmployeeSelected is the delegate and EmployeeSelected_SelectedEmployee is the Event handler subscribed to it.

Ø  Adding a delegate is as simple as adding a new method.

 



 
 
 
 
 
 
 
 
 
 
 
 
 
 


Ø  This is how the EmployeeSelected delegate looks like.

 



 

 
 
 
 
 

 
 
Ø  The properties of EmployeeSelected_SelectedEmployee Event handler should be changed like this.
 
 

 



 

 

 

 
 
Ø  Here EmployeeSelector is the class that the EmployeeSelected_SelectEmployee Event Handler points to and SelectEmployee is the method.

      Ø In the AddEmployee Method   this. EmployeeSelected (employee) is a call to
            the EmployeeSelected delegate.

     

 

 

 

 
 
 
 
 
Ø  This is how the SelectEmployee method looks like. The method pointed by the EventHandlerSubscriber should be Static and its return type should be similar to the delegate as shown below.
 


 

 

 

 
 
 
Hope it was helpful to you…