온톨로지를 기반으로 파생 값들을 반환하는 Functions를 작성하는 것 외에도, 온톨로지 내의 오브젝트들 사이의 속성과 링크를 편집하는 Functions를 작성할 수 있습니다. 이 페이지에서는 Functions에서 사용할 수 있는 오브젝트 편집 API에 대해 설명합니다. 편집 Function이 어떻게 작동하는지 더 자세히 알고 싶다면, 개요 페이지를 참조하십시오.
실제 운영 상황에서 사용하려면, 온톨로지 편집 Function은 액션으로 설정되어야 합니다, 이를 Function-backed 액션이라고 합니다. 이러한 방식으로 액션을 설정하면 추가 메타데이터를 제공하고, 권한을 설정하고, 여러 운영 인터페이스에서 액션에 접근할 수 있습니다. 문서에서 언급한 바와 같이, 액션 외부에서 편집 Function을 실행하면 실제로는 어떤 오브젝트 데이터도 수정되지 않습니다.
편집한 후 오브젝트를 검색하면 예상치 못한 결과가 반환될 수 있습니다. 자세한 내용은 Caveats 섹션을 참조하십시오.
온톨로지를 편집하는 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;
기존 오브젝트의 기본 키 속성 값을 업데이트할 수 없습니다.
SingleLink
와 MultiLink
인터페이스는 링크를 업데이트할 수 있는 다양한 메서드를 가지고 있습니다:
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());