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를 확장해야 하지만 확장하지 않아도 작동합니다. 슈퍼 클래스를 확장하는 이점은 유용할 수 있는 일부 세션 정보를 제공한다는 것입니다.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
이 예에서 itemId는 데이터 멤버입니다. 각 데이터 멤버에 대한 parm 메서드를 구현하고 DataMemberAttribute로 태그를 지정하여 프레임워크가 무엇인지 알 수 있도록 해야 합니다. 이렇게 하면 프레임워크가 자동으로 대화 상자를 빌드할 수 있습니다.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
서비스
서비스 클래스는 실제 비즈니스 로직을 포함하는 클래스입니다. 대화 상자 표시, 일괄 처리 또는 이와 유사한 것과 관련이 없습니다. 이는 컨트롤러 클래스의 책임입니다. 이를 분리하면 코드를 잘 설계하고 재사용 가능한 코드를 만들 가능성이 더 높습니다.
데이터 계약 클래스와 마찬가지로 서비스 클래스는 특별히 어떤 것도 상속할 필요가 없지만, 적어도 서비스가 배치 작업으로 실행될 것으로 예상하는 경우 SysOperationServiceBase 클래스에서 상속해야 합니다. 슈퍼 클래스가 배치 컨텍스트에 대한 정보를 제공하기 때문입니다. 작업을 시작하는 메서드(즉, 비즈니스 로직을 실행하는 메서드)는 데이터 계약 클래스의 객체를 입력으로 가져와야 하며 [SysEntryPointAttribute]로 장식해야 합니다. 예를 들어:
{
}
run이라는 메서드를 사용하여:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
제어 장치
컨트롤러 클래스는 작업의 실행 및 일괄 처리를 처리합니다. 또한 최대 성능을 위해 코드가 CIL에서 실행되도록 합니다. 컨트롤러 클래스는 일반적으로 SysOperationServiceController 클래스에서 상속하지만 다른 옵션도 있습니다.
{
}
슈퍼 클래스의 생성자는 클래스 이름, 메서드 이름, (선택적으로) 실행 모드를 매개변수로 사용합니다. 클래스 및 메서드 이름은 서비스 클래스의 이름과 해당 서비스 클래스에서 실행해야 하는 메서드여야 합니다. 따라서 컨트롤러의 생성 메서드를 다음과 같이 구현할 수 있습니다.
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
그러면 MyController 클래스의 주요 메서드는 다음과 같이 간단할 수 있습니다.
{
;
MyController::construct().startOperation();
}
그리고 기본적으로 끝났습니다. 위의 내용은 분명히 매우 간단한 예이고 프레임워크에는 다른 옵션과 가능성이 많이 포함되어 있지만, 프레임워크를 잠시 사용하지 않았을 때 다시 살펴봐야 할 때를 대비해 간략하게 살펴보는 것이 좋습니다.