RunBase Framework in Microsoft Dynamics AX 2012

Overview

RunBase framework provides a common software platform for data manipulation in Microsoft Dynamics AX. It provides a standardized pathway to create batch jobs and periodic processes.

RunBase framework can be used to run a process periodically or to manipulate some data over a period of time.

Using RunBase framework has the following advantages:

  1. All future updates are integrated automatically
  2. Common layout of dialog
  3. Remembering the user selections from the last run
  4. Easy to implement

To implement RunBase framework, extend a class with RunBaseBatch.

Pre-requisites

  1. Microsoft Dynamics AX 2012
  2. Batch server must be configured

Important Methods

  1. Run

    Run is the central method of the RunBase framework and is where all business logic is written. All data manipulation statements are placed in this method.

  2. Description

    Description is a static method that returns a descriptive name of a batch job. This name is then shown as a caption on the batch job dialog to identify the specific job in batch queue.

  3. Main

    Main is a static method which provides the entry point for a batch job. This method calls the prompt method, which calls the RunBase dialog, and run method which processes the batch job.

Scenario

As part of this tutorial, the RunBase class will mark all customers on-hold who have exceeded their credit limit.

Steps

  1. First create a new class. Open AOT àClasses

  2. Right click on Classes, select New Class, and create a new RunBaseDemo class

  3.  

  4. Open the class declaration by right clicking on the RunBaseDemo class and selecting View Code
  5.  

  6. Write the following code:
  7. class RunBaseDemo extendsRunBaseBatch
    {

    }
     

  8. Add a new method and name it as description. Write the following code in the method:

    client server static ClassDescription description()
    {
        return “Mark customers on-hold”;
    }

  9.  

  10. Add a new method and name it as main. Write the following code in the method:

    static void main(Args _args)
    {
        RunBaseDemo objClass = new RunBaseDemo();

        //prompt for runbase framework dialog
        if (objClass.prompt())
        {
           //run the process
           objClass.run();
        }
    }

  11.  

  12. Override the run method and write the following code:

    public void run()
    {
        CustTable custTable;

        //start transaction
        ttsbegin;

        try
        {
            //select all customers
            while select forUpdate * from custTable
            {

                //if credit limit is reached, placed on-hold
                if(custTable.CreditMax && custTable.balanceMST() > custTable.CreditMax)
                {
                    custTable.Blocked = CustVendorBlocked::Invoice;
                    custTable.update();
                }
            }

            //end transaction
            ttsCommit;
        }
        catch
        {
            //throw error of failure
            error(“Process failed”);
        }
    }

  13.  

  14. Run the job by right clicking on the RunBaseDemo class and select Open. Alternatively, the job can also be called from a menu item
  15.  

  16. The RunBase framework dialog will open
  17.  

  18. There are two ways to run the batch job, only once and periodically
    1. If once, click OK. Use this option if you want to run the job just this time
    2. If periodically, schedule the batch job. Use this option if you want to run the job periodically. Follow the following steps to schedule the batch job
      • Check the Batch processing box
      • Select the respective batch group from the Batch group drop down
      • Click on the Recurrence button
      •  

      • In the Recurrence dialog, set an appropriate schedule and click OK
      •  

      • Click OK to schedule. It will now run the job according to the inputted schedule
      •  

      • Batch job history can be viewed from System administration à Inquiries à Batch jobs à Batch job history
February 10, 2015