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

API: 온톨로지 편집하기

온톨로지를 기반으로 파생 값들을 반환하는 Functions를 작성하는 것 외에도, 온톨로지 내의 오브젝트들 사이의 속성과 링크를 편집하는 Functions를 작성할 수 있습니다. 이 페이지에서는 Functions에서 사용할 수 있는 오브젝트 편집 API에 대해 설명합니다. 편집 Function이 어떻게 작동하는지 더 자세히 알고 싶다면, 개요 페이지를 참조하십시오.

실제 운영 상황에서 사용하려면, 온톨로지 편집 Function은 액션으로 설정되어야 합니다, 이를 Function-backed 액션이라고 합니다. 이러한 방식으로 액션을 설정하면 추가 메타데이터를 제공하고, 권한을 설정하고, 여러 운영 인터페이스에서 액션에 접근할 수 있습니다. 문서에서 언급한 바와 같이, 액션 외부에서 편집 Function을 실행하면 실제로는 어떤 오브젝트 데이터도 수정되지 않습니다.

경고

편집한 후 오브젝트를 검색하면 예상치 못한 결과가 반환될 수 있습니다. 자세한 내용은 Caveats 섹션을 참조하십시오.

편집 Function 선언하기

온톨로지를 편집하는 Functions는 다음과 같아야 합니다:

  • @foundry/functions-api에서 가져온 @OntologyEditFunction() 데코레이터로 장식되어야 합니다.
  • 편집될 오브젝트 유형을 명시하기 위해 @foundry/functions-api에서 가져온 @Edits([object type]) 데코레이터로 장식되어야 합니다.
  • 명시적인 void 반환 유형을 가져야 합니다.

속성 업데이트하기

오브젝트의 속성 값을 간단히 재할당함으로써 속성 값을 편집할 수 있습니다. 예를 들어:

Copied!
1 employee.lastName = newName; // employee의 성(lastName)을 newName으로 변경한다.

같은 Function 실행 중에 lastName 속성 값을 나중에 액세스하면, 방금 설정한 새 값이 반환됩니다.

오브젝트의 배열 속성ReadOnlyArray 타입으로 생성됩니다. 배열을 수정하려면 이를 복사하여 수정한 다음 속성을 업데이트하십시오:

Copied!
1 2 3 4 5 6 // 새 배열에 복사 let arrayCopy = [...myObject.myArrayProperty]; // 이제 복사된 배열을 수정할 수 있습니다 arrayCopy.push(newItem); // 그런 다음 속성 값을 덮어쓰기 myObject.myArrayProperty = arrayCopy;

기존 오브젝트의 기본 키 속성 값을 업데이트할 수 없습니다.

링크 업데이트

SingleLinkMultiLink 인터페이스는 링크를 업데이트할 수 있는 다양한 메서드를 가지고 있습니다:

Copied!
1 2 3 4 5 6 7 8 9 10 11 // 직원의 상사를 설정합니다 employee.supervisor.set(newSupervisor); // 직원의 상사를 제거합니다 employee.supervisor.clear(); // 주어진 직원에게 새로운 보고서를 추가합니다 employee.reports.add(newReport); // 주어진 직원과 관련된 이전 보고서를 제거합니다 employee.reports.remove(oldReport);

속성을 업데이트하는 것처럼, 업데이트가 완료된 링크에 액세스하면 업데이트된 내용을 확인할 수 있습니다.

오브젝트 생성

@foundry/ontology-api에서 사용할 수 있는 Objects.create() 인터페이스를 사용하여 새로운 오브젝트를 생성할 수 있습니다. 새 오브젝트를 생성할 때 기본 키 값이 지정되어야 합니다.

이 예제에서는 주어진 ID로 새로운 Ticket 오브젝트를 생성하고 dueDate 속성을 설정한 다음 주어진 Employee에 할당합니다(assignedTickets 링크를 수정함으로써).

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import { OntologyEditFunction, Edits } from "@foundry/functions-api"; import { Employee, Objects, Tickets } from "@foundry/ontology-api"; export class TicketActionFunctions { // Employee와 Tickets에 대한 수정사항을 관리합니다. @Edits(Employee, Tickets) // Ontology 수정 기능을 정의합니다. @OntologyEditFunction() // 새로운 티켓을 생성하고, 해당 티켓을 직원에게 할당하는 함수입니다. public createNewTicketAndAssignToEmployee(employee: Employee, ticketId: Integer): void { // 새로운 티켓 객체를 생성합니다. const newTicket = Objects.create().ticket(ticketId); // 티켓의 마감일을 현재로부터 7일 후로 설정합니다. newTicket.dueDate = LocalDate.now().plusDays(7); // 생성된 티켓을 직원의 할당 티켓 리스트에 추가합니다. employee.assignedTickets.add(newTicket); } }

오브젝트 삭제하기

.delete() 메서드를 호출하여 오브젝트를 삭제할 수 있습니다.

이 예시에서는 주어진 직원에게 할당된 모든 티켓을 삭제합니다.

Copied!
1 2 3 4 // 'employee' 객체의 'tickets' 속성에서 모든 티켓을 가져옵니다. const tickets = employee.tickets.all(); // 'forEach' 함수를 사용하여 각 티켓에 대해 'delete' 함수를 호출하고 티켓을 삭제합니다. tickets.forEach(ticket => ticket.delete());