Miklix

Dynamics AX 2012 SysOperation 프레임워크 빠른 개요

게시됨: 2025년 2월 15일 오후 10시 35분 25초 UTC

이 문서에서는 Dynamics AX 2012 및 Dynamics 365 for Operations의 SysOperation 프레임워크에서 처리 클래스와 일괄 작업을 구현하는 방법에 대한 간단한 개요(또는 요약표)를 제공합니다.


이 페이지는 가능한 한 많은 사람이 이용할 수 있도록 영어에서 기계 번역되었습니다. 안타깝게도 기계 번역은 아직 완성된 기술이 아니므로 오류가 발생할 수 있습니다. 원하시는 경우 여기에서 영어 원문을 보실 수 있습니다:

Dynamics AX 2012 SysOperation Framework Quick Overview

이 게시물의 정보는 Dynamics AX 2012 R3에 기반합니다. 다른 버전에는 유효할 수도 있고 그렇지 않을 수도 있습니다. (업데이트: 이 기사의 정보는 Dynamics 365 for Operations에도 유효하다는 것을 확인할 수 있습니다.)


이 게시물은 간단한 개요와 치트시트로만 구성되어 있습니다. SysOperation 프레임워크를 처음 사용하는 경우 Microsoft의 백서도 읽어보시기를 강력히 권장합니다. 이 프레임워크로 작업을 개발하는 데 관련된 다양한 클래스에 대한 간단한 복습이 필요한 경우 여기의 정보가 유용할 수 있습니다.

변형은 있지만 프레임워크를 사용할 때 일반적으로 세 가지 클래스를 구현합니다.

  • 데이터 계약(SysOperationDataContractBase를 확장해야 함)
  • 서비스(SysOperationServiceBase를 확장해야 함)
  • 컨트롤러(SysOperationServiceController를 확장 해야 함 )

추가적으로, UIBuilder 클래스를 구현할 수도 있습니다(SysOperationUIBuilder를 확장 해야 함 ). 하지만 이는 어떤 이유에서든 대화 상자가 프레임워크에서 자동으로 생성하는 것보다 더 고급이어야 하는 경우에만 필요합니다.


데이터 계약

데이터 계약은 작업에 필요한 데이터 멤버를 보유합니다. RunBase 프레임워크에서 정의된 일반적인 CurrentList 매크로와 비교할 수 있지만 대신 클래스로 구현됩니다. 데이터 계약은 SysOperationDataContractBase를 확장해야 하지만 확장하지 않아도 작동합니다. 슈퍼 클래스를 확장하는 이점은 유용할 수 있는 일부 세션 정보를 제공한다는 것입니다.

[DataContractAttribute]
class MyDataContract extends SysOperationDataContractBase
{
    ItemId itemId;
}

이 예에서 itemId는 데이터 멤버입니다. 각 데이터 멤버에 대한 parm 메서드를 구현하고 DataMemberAttribute로 태그를 지정하여 프레임워크가 무엇인지 알 수 있도록 해야 합니다. 이렇게 하면 프레임워크가 자동으로 대화 상자를 빌드할 수 있습니다.

[DataMemberAttribute]
public ItemId parmItemId(ItemId _itemId = itemId)
{
    ;

    itemId = _itemId;
    return itemId;
}


서비스

서비스 클래스는 실제 비즈니스 로직을 포함하는 클래스입니다. 대화 상자 표시, 일괄 처리 또는 이와 유사한 것과 관련이 없습니다. 이는 컨트롤러 클래스의 책임입니다. 이를 분리하면 코드를 잘 설계하고 재사용 가능한 코드를 만들 가능성이 더 높습니다.

데이터 계약 클래스와 마찬가지로 서비스 클래스는 특별히 어떤 것도 상속할 필요가 없지만, 적어도 서비스가 배치 작업으로 실행될 것으로 예상하는 경우 SysOperationServiceBase 클래스에서 상속해야 합니다. 슈퍼 클래스가 배치 컨텍스트에 대한 정보를 제공하기 때문입니다. 작업을 시작하는 메서드(즉, 비즈니스 로직을 실행하는 메서드)는 데이터 계약 클래스의 객체를 입력으로 가져와야 하며 [SysEntryPointAttribute]로 장식해야 합니다. 예를 들어:

class MyService extends SysOperationServiceBase
{
}

run이라는 메서드를 사용하여:

[SysEntryPointAttribute]
public void run(MyDataContract _dataContract)
{
    // run business logic here
}


제어 장치

컨트롤러 클래스는 작업의 실행 및 일괄 처리를 처리합니다. 또한 최대 성능을 위해 코드가 CIL에서 실행되도록 합니다. 컨트롤러 클래스는 일반적으로 SysOperationServiceController 클래스에서 상속하지만 다른 옵션도 있습니다.

class MyController extends SysOperationServiceController
{
}

슈퍼 클래스의 생성자는 클래스 이름, 메서드 이름, (선택적으로) 실행 모드를 매개변수로 사용합니다. 클래스 및 메서드 이름은 서비스 클래스의 이름과 해당 서비스 클래스에서 실행해야 하는 메서드여야 합니다. 따라서 컨트롤러의 생성 메서드를 다음과 같이 구현할 수 있습니다.

public static MyController construct()
{
    ;

    return new MyController(classStr(MyService),
    methodStr(MyService, run));
}

그러면 MyController 클래스의 주요 메서드는 다음과 같이 간단할 수 있습니다.

public static void main(Args _args)
{
    ;

    MyController::construct().startOperation();
}

그리고 기본적으로 끝났습니다. 위의 내용은 분명히 매우 간단한 예이고 프레임워크에는 다른 옵션과 가능성이 많이 포함되어 있지만, 프레임워크를 잠시 사용하지 않았을 때 다시 살펴봐야 할 때를 대비해 간략하게 살펴보는 것이 좋습니다.

블루스카이에서 공유하기페이스북에서 공유하기LinkedIn에서 공유하기Tumblr에 공유하기X에서 공유LinkedIn에서 공유하기Pinterest에 고정

미켈 방 크리스텐슨

저자 소개

미켈 방 크리스텐슨
남자 이름은 miklix.com의 창시자이자 소유자입니다. 전문 컴퓨터 프로그래머/소프트웨어 개발자로 20년 이상 경력을 쌓았으며 현재 유럽의 대형 IT 기업에서 정규직으로 근무하고 있습니다. 블로그를 운영하지 않을 때는 여가 시간을 다양한 관심사, 취미, 활동으로 보내며 이 웹사이트에서 다루는 다양한 주제에 어느 정도 반영되어 있습니다.