사용자에게 보여 줄 함수 오류
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를 발생시키면 실패 알림에도 메시지가 표시됩니다.