📜  ax 2012 中的控制器类 (1)

📅  最后修改于: 2023-12-03 14:59:26.668000             🧑  作者: Mango

AX 2012中的控制器类

在 AX 2012中,控制器类是MVC模式中的控制器。它是一个X++类,用于控制视图类和模型类之间的数据流并处理应用程序的业务逻辑。

创建控制器类

要创建一个控制器类,需要继承SysOperationServiceController类,并实现以下方法:

public void operationStarted()
{
    super();
    // 在操作开始时执行的代码
}

public void validate()
{
    super();
    // 在验证操作前执行的代码
}

public void run()
{
    super();
    // 在执行操作时执行的代码
}

public void operationCompleted()
{
    super();
    // 在操作完成后执行的代码
}
控制器类的作用

控制器类的作用是将视图类和模型类分离。视图类负责显示数据和处理用户输入,而模型类负责处理数据。在控制器类中,我们可以访问视图类和模型类。控制器类负责将视图类和模型类连接起来,并执行应用程序的业务逻辑。

控制器类的方法

控制器类提供了一些方法,使我们能够与视图类和模型类交互。

  • setView - 设置视图类
  • getView - 获取当前视图类
  • setModel - 设置模型类
  • getModel - 获取当前模型类
  • getParameter - 获取传递给操作的参数
  • getSettings - 获取操作的设置
示例

以下示例将控制器类用于在AX 2012中创建销售订单。这个控制器类包含了视图类和模型类,并处理了创建订单的业务逻辑。

class SalesOrderController extends SysOperationServiceController
{
    SalesOrderView salesOrderView;
    SalesOrderModel salesOrderModel;
    SalesTable salesTable;

    public void operationStarted()
    {
        super();
        salesOrderView = this.getCaller() as SalesOrderView;
        salesOrderModel = new SalesOrderModel();
        salesOrderModel.init();
    }

    public void validate()
    {
        super();
        salesOrderModel.validate();
    }

    public void run()
    {
        super();
        salesOrderModel.loadFromSalesOrderView(salesOrderView);
        salesTable = salesOrderModel.createSalesOrder();
    }

    public void operationCompleted()
    {
        super();
        salesOrderView.showSalesOrderNumber(salesTable.salesId);
    }
}

class SalesOrderView
{
    // 视图类代码
}

class SalesOrderModel
{
    public void init()
    {
        // 初始化模型类
    }

    public void validate()
    {
        // 验证模型类
    }

    public void loadFromSalesOrderView(SalesOrderView salesOrderView)
    {
        // 从视图类中读取数据
    }

    public SalesTable createSalesOrder()
    {
        // 处理业务逻辑并创建销售订单
    }
}

在这个示例中,我们定义了一个SalesOrderController类,它包含了SalesOrderViewSalesOrderModel类。在operationStarted方法中,我们获取了当前的视图类,并初始化了模型类。在validate方法中,我们进行了模型类的验证。在run方法中,我们从视图类中加载数据,并处理了创建销售订单的业务逻辑。在operationCompleted方法中,我们显示了销售订单号。