Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

사용자에게 보여 줄 함수 오류

UserFacingError는 Workshop이나 액션을 사용하는 사람에게 원인과 조치를 설명하는 오류입니다. 함수가 기대하는 업무 조건을 충족하지 못했을 때 구체적인 메시지를 제공할 수 있습니다.

다섯 객체를 받는 예제

다음 예제는 선택한 직원 다섯 명의 표시 문자열을 쉼표로 연결하여 반환합니다. 정확히 다섯 명이라는 조건은 이 예제의 업무 규칙입니다. 가상의 Employee 유형에는 조회 가능한 String 속성 label이 있다고 가정하고, 해당 유형을 저장소 또는 생성된 OSDK에 가져와야 합니다.

TypeScript v1

import { Function, UserFacingError } from "@foundry/functions-api";
import { Employee } from "@foundry/ontology-api";

export class EmployeeFunctions {
    @Function()
    public formatExactlyFiveEmployees(employees: Employee[]): string {
        if (employees.length !== 5) {
            throw new UserFacingError(`Pass in exactly 5 employees. Received ${employees.length}.`);
        }
        return employees.map(employee => {
            if (employee.label === undefined) {
                throw new UserFacingError("직원의 label을 조회할 수 없습니다.");
            }
            return employee.label;
        }).join(", ");
    }
}

클래스를 index.ts에서 내보냅니다.

TypeScript v2

formatExactlyFiveEmployees.ts에서 작성합니다.

import { Osdk } from "@osdk/client";
import { Employee } from "@ontology/sdk";
import { UserFacingError } from "@osdk/functions";

export default function formatExactlyFiveEmployees(
    employees: Array<Osdk.Instance<Employee>>
): string {
    if (employees.length !== 5) {
        throw new UserFacingError(`Pass in exactly 5 employees. Received ${employees.length}.`);
    }
    return employees.map(employee => {
        if (employee.label == null) {
            throw new UserFacingError("직원의 label을 조회할 수 없습니다.");
        }
        return employee.label;
    }).join(", ");
}

Python

from functions.api import function, UserFacingError
from ontology_sdk.ontology.objects import Employee


@function
def format_exactly_five_employees(employees: list[Employee]) -> str:
    if len(employees) != 5:
        raise UserFacingError(f"Pass in exactly 5 employees. Received {len(employees)}.")
    labels: list[str] = []
    for employee in employees:
        if employee.label is None:
            raise UserFacingError("직원의 label을 조회할 수 없습니다.")
        labels.append(employee.label)
    return ", ".join(labels)

잘못된 개수를 전달하면 오류 메시지에 요구 개수와 받은 개수가 표시됩니다.

이 문자열 반환 예제는 값 계산용입니다. 함수 기반 액션에서는 온톨로지 편집을 수행하는 함수 안에서도 같은 예외를 사용할 수 있습니다. 함수 기반 내보내기에서 UserFacingError를 발생시키면 실패 알림에도 메시지가 표시됩니다.