Carbon 모듈 사이의 입력과 탐색
Carbon의 탐색 프레임워크는 한 모듈에서 선택한 객체나 객체 집합을 다른 모듈의 입력으로 전달합니다. 결과 목록, 함수 결과 또는 한 유형의 전체 객체 집합처럼 온톨로지 연산으로 표현할 수 있는 대상을 사용할 수 있습니다. 받는 모듈은 수용할 매개변수와 객체 유형 제약을 정합니다.
이동하면 받는 모듈을 새 Carbon 탭으로 엽니다. 원래 모듈의 상태를 유지하면서 같은 결과에서 여러 조사 경로를 열 수 있습니다.
여러 단계의 업무
탐색 단계 수에는 별도 제한이 없으며, 같은 모듈을 다른 입력으로 다시 사용할 수도 있습니다. 그림의 항공 분석 예는 다음 순서입니다.
- aircraft를 검색하면 검색어를 입력으로 Search를 엽니다.
- Aircraft 객체 유형을 선택하면 해당 유형을 입력으로 Object Explorer를 엽니다.
- 결과의 Aircraft 185개를 Single Aisle Aircrafts Quiver 대시보드에 전달합니다.
- Q-AGM 항공기를 선택하여 객체 뷰에서 조사합니다.
- 같은 Quiver 대시보드를 이번에는 Q-AGM 하나로 다시 열어 링크나 시계열을 분석합니다.
Carbon 밖의 독립 객체 애플리케이션에서도 이 탐색을 사용할 수 있습니다. 이때는 Carbon 탭 대신 새 브라우저 탭으로 받는 애플리케이션을 엽니다.
탐색할 모듈 지정
Object Explorer와 객체 뷰의 Open in에는 현재 출력이 입력 제약을 충족하는 모듈만 표시합니다. Workshop처럼 제작자가 버튼에 특정 이동을 지정하는 경로도 있습니다.
/workspace/carbon/edit의 General에서 Discoverable Modules를 구성합니다. Add an element로 Module Type을 선택하고 Open Compass dialog에서 리소스를 지정합니다.
Carbon 안에서는 현재 작업 공간의 목록을 사용합니다. Carbon 밖에서는 다음 순서로 결정합니다.
- 사용자의 기본 조직과 게스트로 접근하는 조직을 포함합니다.
- 접근 가능한 승격 작업 공간들의 검색 가능한 모듈을 합칩니다.
- 현재 출력 객체나 집합에 적용할 수 있는 입력 제약으로 거릅니다.
기본 조직과 게스트 조직 예
Zayna가 Primary Org의 구성원이고 Guest Org에는 게스트로 접근한다고 가정합니다.
Primary Org의 Claims Workspace에는 Claim Alert Application과 Claim Investigator Application이 있습니다.
같은 조직의 Actuary Workspace에는 Claim Cohorts Application이 있습니다.
Guest Org의 Flight Workspace에는 Flight Tracker가 있습니다.
각 작업 공간 안에서는 그 공간의 항목만 보입니다.
Carbon 밖에서는 입력 제약을 충족하는 네 모듈을 함께 볼 수 있습니다.
사용자가 Carbon을 직접 사용하지 않는 경우
독립 객체 앱 사이에 Open in만 제공할 때도 작업 공간을 구성할 수 있습니다. 대상 사용자가 접근할 수 있는 프로젝트에 Carbon 파일과 모듈을 두고, 작업 공간을 조직에서 승격하여 검색 가능한 모듈을 등록합니다.
다음 예는 조직 전체에 제공하기 위해 프로젝트 기본 역할을 Viewer로 둡니다. 일부 사용자만 대상이라면 그 범위에 맞는 그룹 권한을 사용합니다. 작업 공간 파일은 Carbon에서 만든 뒤 프로젝트에 저장하며 프로젝트에서 직접 생성하지 않습니다.
My inbox를 Discoverable modules에 추가합니다.
작업 공간을 조직의 Promoted 항목으로 승격합니다.
그러면 Object Explorer의 Open in에서 My inbox를 사용할 수 있습니다.
기본 모듈과 동적 모듈
Object View, Object Explorer와 Search는 별도의 Foundry 파일 리소스가 없는 기본 모듈입니다. 입력과 출력이 정해져 있고 Discoverable modules에 따로 등록하지 않습니다.
Workshop, Slate, Quiver나 Map처럼 제작자가 리소스로 구성하는 동적 모듈은 변수나 매개변수로 입력과 출력을 정하며, 발견 메뉴에 쓰려면 명시적으로 등록합니다.
Object View
객체 유형과 관계없이 단일 객체를 입력으로 받습니다. 선택한 객체의 메뉴에서 객체 뷰를 여는 기본 동작을 제공하며, 이 동작을 작업 공간의 발견 목록에서 비활성화하거나 별도 등록할 수는 없습니다.
Workshop에서는 Open Object view 이벤트를 구성합니다.
Slate에서는 독립 객체 뷰 URL을 향한 일반 HTML 링크를 Carbon이 해석하여 객체 RID를 입력으로 새 탭을 엽니다.
객체 뷰의 출력은 현재 표시하는 객체입니다.
Object Explorer
버전 유무에 관계없이 객체 집합 하나를 입력으로 받을 수 있습니다. 집합을 선택한 메뉴나 집합 링크에서 열며, 이 기본 탐색 동작 역시 작업 공간의 발견 목록에 따로 등록하거나 비활성화하지 않습니다.
Search에서 저장 탐색, 저장 객체 목록, 객체 유형의 새 탐색 또는 모듈 바로가기를 열 수도 있습니다.
Workshop에서는 Open Object explorer 이벤트를 사용합니다.
Slate에서는 탐색 URL의 집합 RID를 Carbon이 해석합니다.
출력은 Object Explorer에서 현재 선택한 객체 집합입니다.
Search
Search는 키워드로 객체 유형과 속성을 찾고 탐색, 목록과 모듈 등의 리소스를 여는 진입점입니다. 작업 공간의 모듈 바로가기 또는 홈 검색창에서 열 수 있으며, 홈에서 입력한 검색어가 매개변수로 전달됩니다.
| 선택한 리소스 | 열리는 화면 |
|---|---|
| 객체 유형 | 그 유형을 기준으로 새 Object Explorer 탐색 |
| 저장 탐색 | 해당 탐색의 버전 있는 객체 집합을 기준으로 새 탐색 |
| 목록 | 목록의 객체를 포함한 새 탐색 |
| 비교 | 비교 뷰를 기준으로 비교 모드의 탐색 |
| 모듈 리소스 | 선택한 모듈 자체 |
Workshop
객체 집합 타입의 모듈 인터페이스 변수가 적어도 하나 있어야 발견 대상으로 구성할 수 있습니다. 변수 Settings에 external ID를 지정하고 필요한 객체 유형 제약을 설정합니다.
Workshop 안에서는 Open Workshop 이벤트를 사용할 수 있습니다.
Slate의 독립 Workshop URL 링크도 Carbon이 해석하여 새 모듈 탭으로 엽니다.
매개변수 이름
같은 external ID라도 전달 경로에 따라 이름이 다릅니다.
| 경로 | 이름 예 |
|---|---|
| 독립 Workshop URL | orderInput 같은 external ID |
| Carbon 모듈의 parameterValues | external ID 앞에 variable.를 붙인 variable.orderInput |
| Carbon의 Workshop URL | 쿼리 키에 param.variable.를 붙인 param.variable.orderInput |
아래 작업 공간 RID는 가상 예이며 실제 대상 값으로 바꿉니다. flight_id와 route는 대상 모듈이 공개한 external ID여야 합니다.
/workspace/carbon/ri.carbon.main.workspace.11111111-1111-4111-8111-111111111111/ri.workshop.main.module.25b772f5-a095-48c6-a889-a960eeb93ce1?param.variable.flight_id=1000,1001¶m.variable.route=100,200
Carbon 탐색에서 지원하지 않는 모듈 인터페이스 값은 빈 객체 집합, NaN 숫자, 시계열 집합, geoshape, geopoint, Struct와 Scenario입니다.
다른 모듈로 출력
Workshop의 Open Application 이벤트는 Workshop, Object View, Object Explorer, 읽기 전용 Notepad와 Vertex exploration으로 이동하는 경로를 제공합니다.
동적 모듈은 Resource Selector로 리소스를 선택하고 입력으로 전달할 변수를 정합니다.
이벤트가 발생하면 선택한 변수의 현재 값으로 새 Carbon 탭을 엽니다.
Slate
Carbon은 Slate를 iframe으로 표시합니다. 다른 모듈로 이동할 때 브라우저 메시지로 저장을 요청하고, Slate가 알려 준 저장 뷰 식별값을 Carbon 매개변수로 유지합니다. 이 통신은 HTTP POST 요청이 아닙니다.
상태 저장 이벤트
Slate 문서에 다음 두 이벤트 연결을 구성합니다. 아래 코드는 Slate의 템플릿 표현식 입력에 사용하는 내용이며 일반 YAML 문서가 아닙니다.
첫 연결은 Event를 slate.getMessage, Action을 slate.saveView로 지정합니다. Carbon 저장 요청이 아닌 메시지에는 중지 값을 반환합니다.
const type = {{slEventValue}}['type'];
if (type !== "carbon-save-view-request") {
return {{slDisableAction}};
}
두 번째 연결은 Event를 slate.viewSaved, Action을 slate.sendMessage로 지정합니다. 저장 뷰의 이벤트 값을 부모 Carbon에 전달합니다.
return {
type: "viewSaved",
payload: {{slEventValue}}
};
저장 범위는 Slate 공유 뷰를 따릅니다. Home 페이지의 로컬 변수를 저장하며 Shared 변수나 다른 페이지 전체의 상태를 저장하는 기능으로 확장해서는 안 됩니다.
변수의 자료형
Slate 변수는 Carbon 매개변수로 변환할 때 기본값을 기준으로 자료형을 추론합니다. 예를 들어 객체 RID가 기본값인 v_var3는 객체 매개변수로 인식합니다.
기본값을 둘 수 없다면 다음 이름은 기본값과 관계없이 지정된 타입으로 해석합니다.
| 변수 이름 | Carbon 타입 |
|---|---|
v_objectSetPassedFromCarbon | objectSet |
v_objectPassedFromCarbon | object |
발견 메뉴를 통해서는 단일 객체 또는 단일 객체 집합을 입력으로 받습니다. 객체 집합은 버전 유무를 모두 지원합니다. Carbon이 그 타입으로 해석할 수 있는 변수가 정확히 하나 있어야 하며, 그렇지 않으면 해당 탐색 동작을 제공하지 않습니다.
Slate를 여는 전용 UI 탐색 연동은 다른 Slate의 링크를 사용하는 경로를 지원합니다. 다른 동적 모듈의 전용 UI에서 Slate로 이동하는 연동은 지원하지 않습니다.
링크의 해석
Slate에서 링크를 선택하면 Carbon이 독립 앱 URL을 해석하여 대응하는 모듈을 새 탭으로 엽니다. 식별자는 대상 환경의 실제 값으로 바꿉니다.
객체 뷰에는 링크의 객체 RID를 전달합니다.
/workspace/hubble/objects/ri.phonograph2-objects.main.object.4202d614-bb6e-471d-80d2-2cf9c735caf3
Workshop에는 URL의 모듈 RID와 orderInput 값을 전달합니다.
/workspace/module/view/latest/ri.workshop.main.module.25b772f5-a095-48c6-a889-a960eeb93ce1?orderInput=ri.object-set.main.object-set.63417288-3e8d-4b34-a995-d6c2c6054e27
Slate 링크는 permalink에 해당하는 문서를 엽니다.
/workspace/slate/documents/another-slate-doc
Quiver 링크는 해당 대시보드 모듈을 엽니다.
/workspace/quiver/dashboard/view/ri.quiver.main.dashboard.b5597828-d4a2-4fec-964f-304a3ad7f1a9
저장 탐색 링크는 그 버전 있는 객체 집합을 Object Explorer에 전달합니다.
/workspace/hubble/exploration/saved/ri.object-set.main.versioned-object-set.ba21a7b3-3407-4bb1-ae9f-aae3d70c4a40
Slate에는 위젯 상태 전체를 대표하는 단일 출력이 없습니다. 각 사용자 링크 동작의 대상이 탐색 출력을 결정합니다.
중첩 iframe
중첩 iframe 안의 링크는 그 iframe 자체를 이동시키거나, 바깥 Slate iframe을 대상으로 하여 Carbon 탭을 열 수 있습니다. 바깥으로 전달하려면 target을 carbon-navigation-target으로 지정합니다.
<a
href="/workspace/hubble/objects/ri.phonograph2-objects.main.object.4202d614-bb6e-471d-80d2-2cf9c735caf3"
target="carbon-navigation-target"
>
View object in Carbon
</a>
Carbon이 최상위 Slate iframe에 이 이름을 지정하므로 iframe이 여러 단계 중첩되어도 같은 target을 사용할 수 있습니다.
Quiver
Carbon 모듈로 사용하는 Quiver 리소스는 분석 자체가 아니라 대시보드입니다. 객체 또는 객체 집합을 입력으로 받을 수 있으며, 대시보드의 변환이 사용하는 객체 유형과 맞아야 합니다.
대시보드의 기준 유형은 탐색 입력 제약이 됩니다. Aircraft 대시보드를 발견 목록에 등록하면 Aircraft 결과에서 Open in 항목을 제공합니다.
Order 결과에서는 그 제약을 충족하지 않으므로 항목을 표시하지 않습니다.
비어 있지 않은 Quiver 대시보드는 발견 대상으로 구성할 수 있습니다. 동적 모듈의 전용 UI 연동에서는 Slate의 대시보드 링크를 사용합니다.
Quiver의 출력 연동은 카드의 객체를 팝오버로 조사하고 거기서 객체 뷰를 여는 방식입니다.