온톨로지FunctionsFunctions on objects오브젝트 식별자

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

오브젝트 식별자

Foundry에서 오브젝트의 정체성은 몇 가지 다른 방식으로 표현되며, 이러한 다양한 표현을 이해하는 것은 Functions에서 올바른 코드를 작성하는 데 중요할 수 있습니다. 이 섹션에서는 오브젝트가 어떻게 식별되는지와 코드에 대한 영향을 설명합니다.

식별자의 종류

오브젝트 RID

"RID"는 Resource Identifier를 나타냅니다. 이것은 Palantir의 오픈 소스 명세로, 엔티티를 식별하는 데 사용됩니다. 온톨로지 오브젝트는 백업 데이터셋을 색인화하거나 액션의 일부로 생성될 때 RID가 할당됩니다.

Functions에서 모든 온톨로지 오브젝트에는 string | undefined 형식의 rid 필드가 있습니다. RID가 정의되지 않은 이유는 Functions에서 오브젝트 생성 API를 사용하여 새 오브젝트를 생성할 수 있기 때문입니다. 새로 생성된 오브젝트는 항상 rid 값이 undefined이고, 기존 오브젝트는 항상 정의된 rid를 가지고 있습니다.

기본 키

오브젝트는 오브젝트 유형과 기본 키에 의해 고유하게 식별될 수도 있습니다. 기본 키는 고유한 propertyId와 값 쌍입니다. 예를 들어, Employee 오브젝트 유형은 employeeId라는 스트링 속성으로 고유하게 식별될 수 있습니다.

모든 온톨로지 오브젝트에는 항상 존재하는 typeIdprimaryKey 필드가 있습니다. 이는 새 오브젝트를 생성할 때 기본 키를 제공해야 하기 때문입니다.

코드에 대한 함의

동일성 확인

Functions 내에서 각 온톨로지 오브젝트는 JavaScript 오브젝트를 사용하여 표현됩니다. 하나의 온톨로지 오브젝트가 여러 개의 JavaScript 오브젝트로 표현될 수 있습니다. 예를 들어, 오브젝트 검색에서 온톨로지 오브젝트를 여러 번 로드하거나, 오브젝트 검색에서 오브젝트를 로드하고 매개변수로 전달된 것 외에도 이를 로드하는 경우에 이런 현상이 발생할 수 있습니다:

Copied!
1 2 3 4 5 6 7 8 9 public myFunction(employee: Employee): void { // 객체에서 직원을 찾아서 employee2 변수에 할당합니다. const employee2 = Objects.search().employee() .filter(e => e.id.exactMatch(employee.id)) // employee의 ID와 일치하는 직원을 필터링합니다. .all()[0]; console.log(employee == employee2); // false (두 직원 객체가 값은 같지만 서로 다른 참조를 가지므로 false) console.log(employee === employee2); // false (두 직원 객체가 값은 같지만 서로 다른 참조를 가지므로 false) console.log(employee.id === employee2.id); // true (두 직원의 ID는 같습니다) }

위 예제에서 employeeemployee2는 동일한 개념적 온톨로지 오브젝트를 참조하지만, ===== 연산자를 사용하여 비교하면 두 변수가 서로 다른 자바스크립트 오브젝트를 참조하기 때문에 false가 반환됩니다. rid 필드를 비교하는 것은 새로 생성된 오브젝트의 ridundefined이기 때문에 문제가 될 수 있습니다.

결과적으로, 두 온톨로지 오브젝트를 동일성을 비교하는 가장 좋은 방법은 typeIdprimaryKey를 비교하는 것입니다:

Copied!
1 2 3 4 5 6 // OntologyObject 두 개를 비교하여 같은지 확인하는 함수 function isEqual(o1: OntologyObject, o2: OntologyObject) { // 두 객체의 typeId가 같고 primaryKey 값도 같으면 true를 반환 return o1.typeId === o2.typeId && JSON.stringify(o1.primaryKey) == JSON.stringify(o2.primaryKey); }

오브젝트 매핑

오브젝트에서 일부 값으로의 매핑을 저장하는 것은 종종 유용할 수 있습니다. 예를 들어, 오브젝트 배열을 반복하고 보다 효율적인 조회를 위해 값들을 저장하려는 경우가 이에 해당합니다.

위에서 설명한 동일성 체크 문제로 인해, 각 오브젝트에 대한 값을 저장하기 위해 단순히 자바스크립트 Map을 사용할 수 없습니다. 대신, OntologyObjects를 키로 지원하도록 특별히 설계된 FunctionsMap을 사용할 수 있습니다.