온톨로지FunctionsFunctions on objectsAPI: 오브젝트와 링크

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

API: 오브젝트와 링크

프로젝트에 가져온 모든 오브젝트 유형이 TypeScript API로 변환되어 Foundry에서 사용 가능한 오브젝트에 쉽게 접근하고 조작할 수 있습니다.

속성

각 오브젝트 유형의 속성은 오브젝트 유형 각각에 대해 생성된 TypeScript 인터페이스에 필드로 변환됩니다. 생성된 필드 이름은 온톨로지에서 지정한 API 이름을 사용합니다.

다음과 같이 간단한 점 표기법으로 각 속성의 필드에 접근할 수 있습니다:

Copied!
1 2 // 직원의 이름을 변수에 할당합니다. const firstName = employee.firstName;

속성이 구체적인 값을 설정하지 않을 수 있으므로, 속성 값을 액세스할 때 반환되는 유형은 undefined일 수 있습니다. TypeScript 컴파일러는 undefined 경우를 명시적으로 처리하지 않으면 오류를 발생시킵니다. 이에 대한 자세한 내용은 이 가이드를 참조하십시오.

배열 속성

오브젝트 유형에서의 배열 속성은 ReadOnlyArray 유형으로 변환됩니다. 이는 배열 속성을 편집하는 의미가 명확하도록 하기 위함입니다 - 배열 속성의 값을 수정하는 유일한 방법은 전혀 새로운 배열 값으로 업데이트하는 것입니다.

배열 속성의 값을 조작하려면 복사본을 만드십시오:

Copied!
1 2 3 4 // 새 배열에 복사 let arrayCopy = [...myObject.myArrayProperty]; // 이제 복사된 배열을 수정할 수 있습니다 arrayCopy.push(newItem);

링크 유형

링크 유형은 오브젝트 유형 간에도 TypeScript 인터페이스의 각 오브젝트 유형에 대한 필드로 변환됩니다. 링크를 탐색하려면 해당 필드에 접근한 다음 객체를 불러오는 데 사용되는 메소드 중 하나를 호출합니다. 링크 유형 필드 이름은 온톨로지에서 지정된 API 이름을 사용하여 생성됩니다.

Foundry 온톨로지는 1대1, 1대다, 다대다 링크 유형을 정의하는 것을 지원합니다. 링크의 1 측에 접근할 때 생성된 필드는 SingleLink 유형입니다. get() 또는 getAsync() 메소드를 사용하여 연결된 오브젝트에 접근할 수 있습니다:

Copied!
1 2 // 직원의 매니저 정보를 가져오는 코드입니다. const manager = employee.manager.get();

속성과 마찬가지로 1대1 또는 다대1 링크를 따라갈 때 연결된 오브젝트가 없는 경우 반환 값이 undefined일 수 있습니다. 이러한 링크에 대한 undefined 값을 처리하는 방법에 대한 가이드를 참조하세요.

링크의 many 측에 액세스할 때 생성된 필드는 MultiLink 유형입니다. all() 또는 allAsync() 메서드를 사용하여 연결된 오브젝트의 배열에 액세스할 수 있습니다. 연결된 오브젝트가 없으면 이러한 메서드는 빈 배열을 반환합니다.

Copied!
1 2 // "employees" 변수는 "employee" 객체의 "reports" 속성의 "all" 메서드를 호출하여 모든 직원을 가져옵니다. const employees = employee.reports.all();

링크를 순회하는 것은 백엔드에서 연결된 오브젝트를 로드해야 하므로 비용이 많이 들 수 있습니다. 링크 순회를 더 효율적으로 수행하는 방법에 대한 자세한 내용은 이 섹션을 참조하십시오.

.all() 또는 .allAsync()를 호출하여 반환된 연결된 오브젝트의 배열은 ReadOnlyArray입니다. 배열을 수정하려면 먼저 배열의 복사본을 만드십시오:

Copied!
1 2 // "employee.reports.all()"의 모든 요소를 복사하여 "copiedEmployees" 변수에 할당합니다. let copiedEmployees = [...employee.reports.all()];

링크를 ObjectSet으로 순회하여 메모리에 링크된 오브젝트 인스턴스를 로드하는 것을 피할 수 있습니다. 온톨로지에서 링크가 생성되면, 이 유형의 오브젝트셋에 대해 다른 링크된 오브젝트셋을 "주변 검색"하기 위한 API가 생성됩니다.

Copied!
1 2 3 4 5 6 7 8 import { ObjectSet, Employee } from "@foundry/ontology-api"; // 가정하자면 다음과 같은 오브젝트 세트가 있습니다: // const employee_id = "123"; // const employeeObjectSet : ObjectSet<Employee> = Objects.search().employee().filter(exactMatch(employee_id)); // 연결된 객체들을 탐색하여 다른 타입의 객체들을 찾습니다. const linkedObjs: ObjectSet<OtherObjectType> = employeeObjectSet.searchAroundToOtherObjectType();

오브젝트의 단일 인스턴스에서 작업하고 거기서부터 검색할 경우, MultiLink<objectType>을 얻게 됩니다. 이 MultiLinkObjectSet으로 변환할 수 없습니다. 다른 오브젝트셋으로 피벗하려면 오브젝트 인스턴스를 오브젝트셋으로 변환해야 합니다.

Copied!
1 2 3 4 5 6 7 8 9 10 11 // 가정: // const employee: Employee // MultiLink는 메모리에 로드하여 추가로 처리할 수 있습니다. const linkedObjs: MultiLink<objectType> = employee.reports // 단일 객체 인스턴스를 객체 세트로 변환합니다. 이 구문은 `employee().filter()` 구문보다 시간이 더 걸립니다. const employeeObjectSet : ObjectSet<Employee> = Objects.search().employee([employee]) // 그런 다음 위의 "searchAroundToOtherObjectType"를 사용하여 객체 세트만 처리할 수 있습니다.

온톨로지 메타데이터

Functions는 각 오브젝트 유형의 상수 유형에 접근함으로써 사용 가능한 온톨로지 목록을 제공합니다. 온톨로지 메타데이터 정보는 아래 섹션에서 자세히 설명하겠습니다.

오브젝트 속성 메타데이터

오브젝트 속성에는 유형 메타데이터가 포함되어 있어, 각 속성의 유형에 프로그래밍 방식으로 접근할 수 있습니다. 이 기능은 주어진 유형의 모든 속성을 식별하거나 주어진 속성 이름이 특정 유형을 가지고 있는지 확인하는 것처럼 고급 워크플로에 사용할 수 있습니다.

예를 들어, 직원 오브젝트 유형이 포함된 온톨로지의 경우, 해당 오브젝트 유형의 속성에 대한 유형 정보에 다음과 같이 접근할 수 있습니다:

Copied!
1 2 3 import { Employee } from "@foundry/ontology-api"; // "@foundry/ontology-api"에서 Employee를 가져옵니다. ... const type = Employee.properties.firstName; // Employee의 속성 중 'firstName'을 type에 저장합니다.

이 경우, firstNameEmployee 오브젝트 유형의 스트링 속성이라면, 그 유형은 StringPropertyBaseType이 될 것입니다.

다음의 속성 유형들이 사용 가능합니다:

  • BooleanPropertyBaseType
  • BytePropertyBaseType
  • DatePropertyBaseType
  • FloatPropertyBaseType
  • TimestampPropertyBaseType
  • ShortPropertyBaseType
  • GeohashPropertyBaseType
  • DecimalPropertyBaseType
  • StringPropertyBaseType
  • LongPropertyBaseType
  • IntegerPropertyBaseType
  • DoublePropertyBaseType
  • ArrayPropertyBaseType
  • VectorPropertyBaseType