본 번역은 검증되지 않았습니다. AIP를 통해 영문원문으로부터 번역되었습니다.

16 - 온톨로지 편집 기능 작성하기

이 내용은 learn.palantir.com ↗에서도 확인할 수 있으며, 접근성을 위해 여기에 제공되고 있습니다.

📖 작업 소개

Workshop 모듈은 분석가에게 알림 할당 및 (재)우선 순위 결정에 도움이 되는 다양한 데이터와 시각화를 제공합니다. 이제 알림의 심각도에 대한 정성적 평가를 기반으로 보상 바우처 또는 고객 편지를 제공할 수 있도록 하려고 합니다.

일부 그룹은 파이프라인 또는 백그라운드 Function에 인코딩된 일련의 규칙에 기반하여 바우처 프로세스를 완전히 자동화하려고 할 수 있습니다. 그러나 우리의 구현은 분석가의 손에 그 결정을 두고, 각각 비즈니스 로직을 고려하여 바우처 액션을 트리거하는 세 가지 가능한 심각도 수준 중에서 선택할 수 있게 할 것입니다. 이는 승객의 비행 상태 속성을 고려합니다(즉, Platinum 상태의 승객이 Silver 상태의 승객보다 큰 바우처를 받을 것으로 예상됩니다). 그 후 바우처 결정은 승객의 status 속성에 배치되어 다운스트림에서 추가 액션을 위해 사용됩니다.

📚 추천 독서 (~2분 독서)

Function이 온톨로지에서 데이터를 변경하고자 할 때(일시적인, 프리젠테이션 수준의 변경과는 반대로), @OntologyEditFunction() 데코레이터와 몇 가지 다른 요구사항을 사용해야 합니다. 아래의 지시사항을 명확하게 이해하는 데 도움이 되도록 이러한 요구사항에 대해 여기에서 읽어보세요.

🔨 작업 지시사항

  1. Functions 저장소에서 ../src/index.ts 파일을 엽니다.

  2. MyFunctions 클래스 내부의 하단에(그러나 여전히 내부에) 새로운 Function을 위한 공간을 만듭니다.

  3. 아래에 참조된 코드 블록을 삽입하고, @Function() 데코레이터와 public... 라인이 위의 Function과 정렬되도록 합니다. 또한 다음과 같은 교체를 수행합니다:

    • jmeierAlertVoucher: jmeier 함수 이름을 당신의 이름으로 교체합니다.
    • JmeierFlightAlert: 이 API 이름을 당신의 비행 알림 오브젝트 유형의 API 이름으로 교체합니다.
    • jmeierPassenger: 이것을 OMA에서 당신의 비행 알림과 당신의 승객 오브젝트 유형 사이의 링크에 대한 API 이름으로 교체합니다. 아래의 확대 가능한 이미지에서 확인할 수 있습니다.

  4. Code Assist가 실행 중이라면, @OntologyEditFunction이 인식되지 않는다는 것을 즉시 알게 될 것입니다. 이전의 연습에서는 수동으로 누락된 유형을 Functions API import 문에 추가했지만, Code Assist 기능을 사용하여 자동으로 추가할 수도 있습니다.

    • 빨간색 밑줄이 그어진 텍스트 위로 마우스를 가져가고, 아래 이미지에서 보이는 것처럼 왼쪽의 노란색 전구(💡) 아이콘을 클릭합니다.
  5. 팝업 메뉴에서 import '@OntologyEditFunction' from module "foundry/functions-api"를 선택합니다. 데코레이터가 import 문에 추가됩니다.

    • Code Assist가 실행되지 않거나 💡 아이콘을 보지 못한다면, OntologyEditFunction을 수동으로 Functions API import 문에 추가하세요.

    @OntologyEditFunction()
            // 입력값은 1) "alert"로 별칭이 지정된 단일 비행 알림과 2) "severity" 등급입니다. OntologyEditFunctions에서는 "void" 유형을 반환해야 합니다. 
            public jmeierAlertVoucher(alert : JmeierFlightAlert, severity : string): void {
    
                // 주어진 알림과 관련된 승객을 얻습니다. 여기서 jmeierPassenger는 오브젝트 유형 API 이름이 아니라 링크 유형의 API 이름입니다. 승객과 비행 알림 오브젝트 유형 사이의 링크에 대한 API 이름을 얻기 위해 OMA를 참조하세요. 
                const passengers = alert.jmeierPassengers.all();
    
                // 각 승객에 대해 비행 상태 + 제공된 "severity"의 조합을 평가하고, 비즈니스 로직에 따라 바우처 결정을 "status" 속성에 푸시합니다. 
                for (const passenger of passengers) {
    
                    if (severity === "Max" && ((passenger.flyerStatus === "Platinum") || (passenger.flyerStatus === "Gold"))) {
                        passenger.status = "Provide $500 Travel Voucher";
                    }
                    else if (severity === "Med" && ((passenger.flyerStatus === "Platinum") || (passenger.flyerStatus === "Gold")) 
                                || severity === "Max" && passenger.flyerStatus === "Silver") {
                        passenger.status = "Provide $250 Travel Voucher";
                    }
                    else if (severity === "Min" && ((passenger.flyerStatus === "Platinum") || (passenger.flyerStatus === "Gold")) 
                                || severity === "Med" && passenger.flyerStatus === "Silver") {
                        passenger.status = "Provide Upgrade Voucher";
                    }
    
                    // 위의 기준을 충족하지 않는 고객(예: "None" 상태인 경우)은 편지를 받게 됩니다.
                    else passenger.status = "Provide Customer Letter";
                }
    
            }