온톨로지FunctionsTypeScript basics데코레이터

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

데코레이터

TypeScript Functions는 TypeScript 클래스의 메소드로 선언됩니다. Function이 발견되고 게시되기 위해서는 몇 가지 요구 사항이 있습니다:

  • 메소드는 public이어야 합니다.
  • 메소드가 속한 클래스는 functions-typescript/src/index.ts 파일에서 내보내야 합니다.
  • 메소드는 @foundry/functions-api 패키지에서 가져온 다음 데코레이터 중 하나로 데코레이트되어야 합니다:
    • 일반 Functions의 경우 @Function().
    • @OntologyEditFunction() 액션을 지원할 Functions의 경우.
      • @Edits([object type]) 데코레이터를 사용하여 @OntologyEditFunction() 메소드를 사용할 때 객체 출처 정보를 선택적으로 지정할 수 있습니다.
      • @Edits([object type]) 데코레이터가 없으면 코드의 정적 분석을 사용하여 객체 출처 정보가 최선의 노력을 기울여 추론됩니다.
    • Foundry API를 통해 실행하려는 읽기 전용 쿼리의 경우 @Query({ apiName: "userDefinedAPIName"}).

다음은 이와 같은 방식으로 올바르게 내보낸 Functions의 예입니다:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import { Function, OntologyEditFunction, Integer, Edits } from "@foundry/functions-api"; import { Employee } from "@foundry/ontology-api"; export class MyUsefulFunctions { // 정수를 입력받아 1을 더하여 반환하는 함수 @Function() public incrementNumber(x: Integer): Integer { return x + 1; } // 직원의 이름을 업데이트하는 함수 @Edits(Employee) @OntologyEditFunction() public updateName(employee: Employee, newName: string): void { employee.firstName = newName; } // 이름으로 직원 목록을 검색하는 쿼리 함수 @Query({ apiName: "getEmployeesByName" }) public async getEmployeesByName(name: string): Promise<ObjectSet<Employee>> { return Objects.search().employee().filter(employee => employee.firstName.exactMatch(name)); } }

개인적인 방법이나 관련 장식으로 꾸미지 않은 메서드는 Function Registry에 게시되지 않습니다. 이를 통해 사용자는 도움 함수와 유틸리티를 재사용하거나 구성할 수 있습니다.

재게시

TypeScript 리포지토리의 각 Function은 클래스 이름과 메서드 이름으로 고유하게 정의됩니다. 클래스 또는 메서드의 이름을 변경하면, Function이 새 식별자로 게시됩니다.