노드 함수는 계층적 데이터 구조 매핑을 단순화합니다
MapForce 노드 기능은 XML 노드, CSV, JSON, EDI 또는 데이터베이스 필드와 같이 계층적인 데이터를 매핑하는 작업을 단순화합니다. 사용자가 노드 수준에서 데이터 처리 함수를 정의하고, 이를 모든 하위 항목에 재귀적으로 적용할 수 있도록 지원합니다.
마찬가지로, 노드에 기본값을 할당할 수도 있으며, 이 기본값이 자동으로 하위 노드에 적용될 수 있습니다.
기본 설정과 노드 함수는 특히 다음과 같은 경우에 유용합니다 데이터 매핑 및 변환 특정 작업은 구조 내의 여러 하위 항목에 대해 동일한 처리 로직을 적용해야 하는 경우를 의미하며, 예를 들어 다음과 같습니다
- 널(null) 값들을 다른 값으로 대체하고, 이를 모든 하위 항목에 대해 재귀적으로 적용합니다
- 특정 값(예: "N/A")을 모든 하위 항목에 대해 재귀적으로 다른 값으로 대체합니다
- 데이터베이스 테이블에서 데이터를 읽을 때, 모든 데이터베이스의 NULL 값을 대체합니다
- 소스 데이터베이스의 모든 값에서 뒤에 붙는 공백을 제거합니다
- 대상 파일이나 데이터베이스에 기록되는 모든 값의 앞에 사용자 정의 접두사 또는 뒤에 사용자 정의 접미사를 추가합니다
- 출력 값의 서식 지정
- 그리고 다른 많은 경우들도 있습니다
기본 설정과 노드 함수는 계층적 데이터를 매핑하는 과정을 단순화합니다. 동일한 함수를 매핑 과정에서 여러 번 복사하여 붙여넣을 필요가 없도록 만들어줍니다. 동일한 함수를 불필요하게 반복하면 매핑 레이아웃이 복잡해지고, 이해하거나 수정하기 어려워집니다.
예시를 하나 살펴봅시다.

아래에 제시된 XML에서 CSV로의 변환 예시는 MapForce 예제 프로젝트에 포함된 "OrderinUSD.mfd" 파일이며, 노드 함수의 효율성과 유연성을 보여주는 예시입니다.

이 예제에서는 소스 XML 파일의 주문 정보를 CSV 텍스트 형식으로 변환합니다. 추가적으로, 소스 파일 내의 "Price" 요소에 포함된 유로화 금액은 달러로 변환되어야 하며, 주문된 각 품목의 이름은 모두 대문자로 변환되어야 합니다.
노드 함수는 요구 사항을 모두 충족하며, 이는 "매핑 창" 위에 나타나는 "노드 함수 정의" 대화 상자에서 해당 노드 옆에 표시된 함수 기호를 통해 확인할 수 있습니다. 함수 기호를 더블 클릭하면 해당 노드 함수의 정의를 설정할 수 있습니다

이 단일 노드 함수는 두 가지 MapForce 작업을 결합하여 필요한 통화 변환과 문자열 변환을 모두 수행합니다. 노드 함수에 기본값 또는 함수 행을 추가하려면 왼쪽의 아이콘을 클릭하여 더 많은 행을 추가할 수 있습니다.
각 행의 첫 번째 열은 해당 행이 단일 자녀 레벨에 적용되는지, 아니면 부모 모드의 모든 자손에 적용되는지를 나타냅니다.
두 번째 필드는 어떤 데이터 유형이 수정될 것인지 정의합니다. "..." 버튼을 클릭하면 데이터 유형을 선택할 수 있는 대화 상자가 나타납니다

제시된 예제는 두 가지 데이터 유형에 대한 행만 포함하고 있지만, 노드 함수는 모든 가능한 데이터 유형에 대한 행을 정의할 수 있습니다. 부모 노드의 각 자식 노드에 대해, 해당 데이터 유형과 일치하는 행이 실행됩니다.
세 번째 항목은 해당 행이 함수를 사용하는지, 아니면 기본값을 사용하는지를 지정합니다. 어떤 경우든 "편집" 버튼을 클릭하면 해당 행의 설정 내용을 변경할 수 있습니다

노드 함수를 정의하는 방법은 다음과 같습니다. 함수 라이브러리 창에서 함수를 끌어서 배치하거나, 함수에 필요한 상수 값을 정의한 다음, 이를 소스(입력)와 출력에 연결하는 방식으로 이루어집니다.
제공된 예제 입력 파일에서 "Amount" 항목은 실제로 각 품목에 대해 주문된 수량을 나타내며, 노드 함수에 정의된 통화 변환 계수로 곱해서는 안 됩니다. "Amount" 항목을 예외로 지정하려면, 해당 함수 기호를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 "출력 노드 함수 상속" 옵션을 선택 해제하면 됩니다.

CSV 출력 파일에 대한 또 다른 요구 사항이 있습니다. 각 품목별 개별 가격과 소계 가격은 반드시 앞에 달러 기호($)를 붙여서 제공해야 합니다. 출력 파일 정의에 따르면 "SinglePrice" 및 "Price" 열은 문자열 데이터로 정의되어 있으며, MapForce는 소스 데이터의 소수점 값을 자동으로 문자열로 변환합니다.
출력 구성 요소의 "행(Rows)" 노드에 추가적인 노드 함수를 적용하여 각 항목 앞에 달러 기호를 추가할 수 있습니다. (위 그림 참조)

이 노드 함수가 문자 데이터가 포함된 모든 열에 적용되는 것을 방지하기 위해, "회사" 및 "항목" 열에는 예외 처리가 적용되었습니다. 이제 노드 함수를 사용하여 계층적 데이터를 매핑하는 예제는 완료되었습니다.
다른 MapForce 예제와 마찬가지로, 이 매핑 작업을 시연하기 위해 원본 데이터 파일이 제공됩니다. 다음은 XMLSpy XML 편집기에서 확인한 원본 파일입니다

온라인 주문 처리 시스템과 같이 반복적인 변환이 필요한 MapForce 매핑은 MapForce Advanced Server를 통해 자동화할 수 있습니다. 테스트 또는 일회성 변환을 위해 매핑을 실행하려면, 매핑 디자인 창 아래의 "출력" 버튼을 클릭하십시오.
어떤 방법을 사용하든, 저희가 제시한 예시를 통해 다음과 같은 결과를 얻을 수 있습니다

본 게시글에서 설명된 데이터 매핑 외에도, MapForce는 다양한 노드 함수 예제를 제공합니다. 또한, MapForce의 통합 도움말 시스템에는 노드 함수 매핑을 처음부터 구축하는 방법에 대한 단계별 튜토리얼도 포함되어 있습니다.
계층적 데이터를 매핑하는 과정을 노드 기능이 어떻게 간소화하는지 직접 확인해 보시려면, 여기를 클릭하여 완전한 기능을 갖춘 MapForce 체험 버전을 무료로 다운로드 받으세요.
업데이트: 다음 게시물을 확인하시면, 노드 이름, 노드 길이, 노드 데이터 유형의 정확도, 사용자 정의 노드 설명 등 노드 메타데이터를 기반으로 노드 함수를 적용하는 또 다른 방법을 알아보실 수 있습니다.