注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Carbon ワークスペースの利点の1つは、単一のモジュールだけでなく、複数のモジュールにまたがってワークフローを実行できることです。これにより、ユーザーには孤立したアプリケーションの集合ではなく、統一されたワークフローが提供されます。
ワークフローを実行する際、ユーザーは特定の製品、モジュール、インターフェースを意識する必要はありません。代わりに、ユーザーは自分の仕事をスムーズに進めることができるべきです。Carbon では、オブジェクトやオブジェクトのセットを1つのモジュールから別のモジュールにパラメータとして渡すことができるナビゲーションフレームワークが提供されています。
Carbon のビルダーとして、各モジュールの入力および出力を定義し、現在実行可能なオブジェクトやオブジェクトのセットを指定できます。実行可能なオブジェクトやオブジェクトのセットは、リスト上の選択、関数の結果、特定のタイプのすべてのオブジェクト、またはオントロジーのプリミティブを使用してエンコードできるその他のオブジェクトのセットなど、さまざまなものがあります。受信側では、別のモジュールが(適切な制約を持つ)どのパラメータが上記の出力を受け入れることができるかを指定できます。
ユーザーが1つのモジュールから別のモジュールにナビゲーションアクションを実行することを決定した場合(通常はアクションメニュー内のボタンや、フロントエンドコンポーネントからトリガーされる他のアクションを介して)、Carbon は受信モジュールを新しいタブで開き、ユーザーがワークフローをステップバイステップで進めることができるようにします。これにより、元のモジュールで維持されている状態を失わずに、ワークフローを進めることができます。
これは、1つのモジュールの結果を別のモジュールの複数のインスタンスに分岐させることで、複雑なワークフローを構築するのを容易にします。たとえば、オブジェクトエクスプローラーのリストの結果を、オブジェクトビュータブとして独立して開いて検査することができます。
モジュール間のナビゲーションアクションの数に制限はありません。これは、ナビゲーションフレームワークを使用して、任意の数のワークフローステップを容易にすることができるためです。次のモジュールからの出力が別のモジュールへの入力となることができます。同じモジュールがワークフローに複数回登場することさえあります。以下に示すように、可能性は異なる入力があるたびに現れます。
以下に示すワークフローでは、Carbon ワークスペースで利用可能なツールを使用して、特定のシングルアイル機の航空機から Quiver 分析を開始することに興味があります。
まず、キーワード aircraft
を検索します。ナビゲーションフレームワークが aircraft
を入力として検索モジュールに移動します。
検索結果から Aircraft object type
を選択します。ナビゲーションフレームワークが Aircraft object type
を入力としてオブジェクトエクスプローラーモジュールに移動します。
次に、シングルアイル航空機 Quiver モジュールでオブジェクトの結果セット全体を分析したいと考えています。ナビゲーションフレームワークが、Aircraft
タイプの 185 のオブジェクトを入力として シングルアイル航空機 Quiver モジュールを開きます。
このモジュールから、Q-AGM
航空機をさらに調査するために選択します。ナビゲーションフレームワークが、Q-AGM Aircraft
を入力としてオブジェクトビューモジュールを開きます。
この時点で、このオブジェクトに対してさらなる分析が必要だと判断します。たとえば、オブジェクトのリンクを調べたり、関連する時系列データを調べたりすることができます。これを達成するために、ナビゲーションフレームワークを再度使用して、今回は Q-AGM Aircraft
オブジェクトを入力として シングルアイル航空機 Quiver モジュールを開きます。
ナビゲーションフレームワークは、主に Carbon の運用ユースケース向けに設計されていることに注意してくださいが、ナビゲーションフレームワークは、オブジェクト領域のスタンドアロンのフロントエンドアプリケーションでも使用されています。Carbon の外部でこれらのアプリケーションを使用する場合、ナビゲーションアクションは受信アプリケーションを新しいブラウザタブで開く(Carbon のタブで開くのではなく)が、すべての利点は依然として適用されます。その結果、エンドユーザーやビルダーは、Carbon 内と Carbon 外のユースケースを区別する必要はありません。
Carbon で高品質な運用インターフェースを作成するために、ビルダーはナビゲーションに使用できるモジュールを指定して、エンドユーザーのワークフローのステップに合わせたワークスペースを作成することができる必要があります。
これらの使用可能なモジュールは、発見可能なモジュールと呼ばれ、対応するナビゲーションアクションは、オブジェクトエクスプローラーやオブジェクトビューなどのモジュールで表示される Open in メニューでアクセスできます(ただし、制約が満たされているアクションのみが表示されます)。ワークショップのような他のモジュールでは、ユーザーのインタラクション(ボタンのクリックなど)後にトリガーされる具体的なナビゲーションアクションを指定できます。各モジュールタイプがナビゲーションアクションをどのように処理するかについての詳細と例は、以下の Carbon Modules のナビゲーションフレームワークとの統合 セクションで確認できます。
モジュールの発見の挙動 - つまり、Open in メニューに表示されるオプション - は、ユーザーが Carbon の中で作業しているか、Carbon ワークスペースの外で作業しているかによって異なります。これは、[以下のドキュメントで説明されています](#Carbon の外部でのナビゲーション)。
/workspace/carbon/edit
でアクセス)で、General タブに移動し、Discoverable Modules のリストにモジュールを追加します。モジュールの発見の挙動 - つまり、Open in メニューに表示されるオプション - は、ユーザーが Carbon の中で作業しているか、Carbon ワークスペースの外で作業しているかによって異なります。
Carbon ワークスペースで作業している場合、Open in メニューには、現在選択されているワークスペースで設定されている発見可能なモジュールのみが表示されます。これにより、各ワークスペースは、明確でキュレーションされたナビゲーションアクションのセットを持つ、特定の運用ワークフロー向けのスペースとして機能します。
Carbon の外部で作業している場合、Open in ボタンには、ユーザーがアクセスできるすべてのプロモートされたワークスペースにまたがるすべての発見可能なモジュールが表示されます。これにより、特定の Carbon ワークスペースの外部で操作している場合でも、ユーザーは Foundry のすべての機能を利用できます。すべての発見可能なモジュールのセットは、以下のようなユニオン演算によって決定されます。
次の例は、Carbon 内と Carbon 外でのモジュール発見の違いを示しています。
ザイナのプライマリ組織は Primary Org で、Guest Org にもゲストアクセスがあります。
ザイナは、Primary Org の2つの異なる Carbon ワークスペースのメンバーです。
ザイナは、Guest Org の単一の Carbon ワークスペースである Flight Workspace のメンバーでもあります。
この設定のため、ザイナは、彼女が働いている場所に応じて、Open in ボタンに異なるモジュールのセットが表示されます。
場合によっては、Carbon ワークスペースに対する運用ユーザーやユースケースがないことがあります。しかし、Carbon ワークスペースでの統合モジュールの使用方法、またはモジュールの発見方法で以前に説明したように、スタンドアロンのオブジェクトアプリケーション間でナビゲートするための Open in アクションを設定することができます。
お勧めの解決策は、所望のユーザーセットにアクセス可能な Carbon ワークスペースを作成し(できればプロジェクトレベルのアクセス権を使用して)、そこで発見可能なモジュールを設定することです。ワークスペースは、Carbon の外部での Open in アクションに発見可能なモジュールが表示されるように、プロモートされたワークスペースである必要があります。
発見可能なモジュールがユーザー自身にアクセス可能であることを確認することをお勧めします。最も簡単な方法は、Carbon ワークスペース自体と同じプロジェクトの中にそれらを入れることです。
次の例は、このプロセスを示しています。
My inbox
モジュールを追加します。
prominent
に設定します。
My inbox
モジュールは、現在、オブジェクトエクスプローラーの Open in メニューで Carbon の外部でアクセスできます。
このセクションでは、各タイプの Carbon モジュールがナビゲーションフレームワークとどのように統合できるかについての情報が含まれています。各モジュールタイプのコンテキストでナビゲーションアクションの出力とされるものや、Carbon パラメータがナビゲーションアクションの入力となる方法についての詳細が記載されています。
関連する Foundry リソースがないモジュール(オブジェクトビュー、オブジェクトエクスプローラ、検索)の場合、入力と出力は事前に定義されており、変更や設定ができません。たとえば、オブジェクトビューは常に任意の単一オブジェクトを入力として受け入れ、オブジェクトエクスプローラの出力は、ユーザーのエクスプロレーションの現在の結果に設定されています。このようなモジュールをビルトインと呼びます。ビルトインモジュールは、明示的に発見可能にする必要はありません。
ビルダーが作成できるモジュール(ワークショップ、スレート、クイバー、マップなど)は、通常、そのようなモジュールのコンテキストで定義された変数やパラメータを通じて、入力および出力を指定するより複雑で堅牢な方法があります。このようなモジュールをダイナミックと呼び、明示的に発見可能にする必要があります。
オブジェクトビューモジュールは、任意のオブジェクトタイプの単一オブジェクトを入力としてサポートしています。オブジェクトビューモジュールを開くナビゲーションアクションは、デフォルトで単一の選択オブジェクトに関連するほとんどのコンテキストまたはアクションメニューに存在します。このナビゲーションアクションを無効にしたり、ワークスペース設定エディタでオブジェクトビューモジュールを発見可能に設定することはできません。
動的モジュールでは、オブジェクトビューにナビゲーションアクションをトリガーするUI要素を作成することができます。
オブジェクトビューで現在表示されているオブジェクトは、モジュールの出力です。
オブジェクトエクスプローラモジュールは、単一のオブジェクトセット(バージョン管理されているかどうか)を入力としてサポートしています。オブジェクトエクスプローラモジュールを開くナビゲーションアクションは、単一の選択オブジェクトセットに関連するほとんどのコンテキストまたはアクションメニューや、オブジェクトセットへのリンクがある場所に存在します(以下の画像は、オブジェクトのプロパティがオブジェクトセットへのリンクとしてレンダリングされる例です)。このアクションを無効にすることや、ワークスペース設定エディタでオブジェクトエクスプローラモジュールを発見可能に設定することはできません。
また、Searchモジュールからオブジェクトエクスプローラモジュールに複数の方法で移動することができます。たとえば:
動的モジュールでは、オブジェクトエクスプローラにナビゲーションアクションをトリガーするUI要素を作成することができます。
オブジェクトエクスプローラで現在選択されているオブジェクトセットが、モジュールの出力です。
検索モジュールは、オントロジー作成物を開くためのゲートウェイであり、キーワードを使用してオブジェクトタイプとそのプロパティをフィルター処理する機能や、エクスプロレーション、リスト、モジュールなどのリソースのリストを閲覧する機能を提供しています。
検索モジュールは、ワークスペース内のモジュールショートカットまたはCarbonホームモジュールの検索バー(以下参照)を介して直接アクセスできます。
Carbonホームモジュールは、検索バーを表示するように設定できます。検索バーに入力されたクエリは、検索モジュールを開くために使用されるパラメータ値になります。
検索モジュールでユーザーが特定のリソースに対してアクションを実行すると、対応するモジュールがCarbonの新しいタブで開かれます。モジュール作成物の場合(選択されたモジュールのみが開かれる)を除いて、オブジェクトエクスプローラは入力オブジェクトセットを受け取ります。
オブジェクトセットタイプのモジュールインターフェース変数が少なくとも1つある任意のWorkshopモジュールは、モジュールディスカバリの設定、Workshopモジュール、セクションで説明されているように、発見可能に設定することができます。
動的モジュールでは、WorkshopモジュールにナビゲーションアクションをトリガーするUI要素を作成することができます。
Workshop変数は、変数の設定パネル内のモジュールインターフェイスに追加でき、Workshopモジュールのパラメータ化を可能にします。モジュールインターフェイス変数の値は、URLを介したスタンドアロンのWorkshopアプリケーションまたは、CarbonのWorkshopモジュールのパラメータとして渡すことができます。
Carbonパラメータとして使用される場合(例:上部バーのモジュールショートカット内)、パラメータの名前は、変数の外部IDに文字列 variable.
(ドットを含む)がプレフィックスとして付けられたものでなければなりません。Workshop変数の外部IDは、変数エディタの設定パネルで設定できます。
Workshopモジュールでは、上記の段落で説明した変数の概念を使用して、複数のオブジェクトセットが同時にアクションを実行される場合があります。Workshopイベントのアプリケーションを開くタイプを使用して、そのようなオブジェクトセットを他の多くのタイプのモジュールへのナビゲーションアクションの入力として渡すことができます。
現在、次のタイプのモジュールがサポートされています。
アプリケーションまたはモジュールの開くタイプが選択されると(動的モジュールの場合、リソースセレクタを介してモジュールが選択される)、特定の変数が入力として選択されることができます。
Workshopモジュール内で設定されたイベントがトリガーされると、選択した変数の現在の値でナビゲーションアクションが構築され、新しいCarbonタブが開かれます。
Carbonは、Slateモジュールをインラインフレーム(iframe)で表示できます。Slateは、ドキュメントAPIを使用して、ドロップダウンで選択された値を覚えておくなど、ウィジェットの状態を保持します。
Slateウィジェットの状態を保持するには、CarbonとSlateモジュール間の通信が必要です。ユーザーがCarbon内のSlateモジュールから移動すると、CarbonはSlateモジュールのiframeにPOSTメッセージを送信し、基本的なSlateドキュメントに状態を保存し、対応する識別子をCarbonに報告するように通知します。この識別子はCarbonモジュールパラメータに変換されます。SlateモジュールがCarbonからのPOSTメッセージを理解し、ナビゲーション中に正常に状態を保存するためには、モジュールをバックアップするSlateドキュメントに以下に示す2つの小さなイベントを追加する必要があります。
Carbonのリクエストに応じてビューを保存するイベント
Copied!1 2 3 4 5 6 7 8
Event: slate.getMessage Action: slate.saveView # 「slEventValue」から「type」を取得 const type = {{slEventValue}}['type']; # もし「type」が "carbon-save-view-request" でなければ、アクションを無効にする if (type !== "carbon-save-view-request") { return {{slDisableAction}}; }
保存したビューの識別子をiframeの親(Carbon)にメッセージするイベント
Copied!1 2 3 4 5 6
Event: slate.viewSaved # イベント:スレートが保存されたビュー Action: slate.sendMessage # アクション:スレートからメッセージを送る return { type: "viewSaved", # 型:保存されたビュー payload: {{slEventValue}} # ペイロード:スレートイベントの値 };
Slateモジュール入力ではSlate変数を使用し、これらはCarbonモジュールのパラメーターに変換されて、メニューバーアイテムなどのCarbon機能を指定します。次のセクションでは、Slate変数をCarbonが受け入れる形式に変換して型付けする方法について詳しく説明します。
Slate変数:
Slateメニューバーアイテム:
Slateパラメーター
Slate変数のCarbonパラメータータイプ決定
Slate変数は型がなく、特定の変数が文字列、数値、またはオブジェクトであることを宣言するメカニズムはありません。そのため、Carbonは変数のデフォルト値をチェックしてそのタイプを決定します。上記のスクリーンショットでは、v_var3
はデフォルト値としてオブジェクトRIDを持っています。これにより、対応するCarbonパラメーターの値としてオブジェクトを指定することができます。あなたのSlateドキュメントの変数にデフォルト値を持たせることが適切でない場合、Carbonが自動的に型付けを行う2つの変数名があります:
Copied!1 2
v_objectSetPassedFromCarbon # Carbonから渡されるobjectSetとして自動的に型指定されます。 v_objectPassedFromCarbon # Carbonから渡されるobjectとして自動的に型指定されます。
Slateドキュメントで定義されている場合、これらの変数はデフォルト値に関係なく、上記のように常に型付けされます。これは、Slateモジュールを発見可能にし、オブジェクトの選択肢(または単一のオブジェクト)を別のモジュールやObject ExplorerのようなアプリケーションからCarbonのパラメーターを通じてモジュールに渡したい場合に特に役立ちます。
Slateモジュールは、単一のオブジェクトまたは単一のオブジェクトセット(バージョン管理されているかどうか)を入力としてサポートします。Slateドキュメントの変数がCarbonパラメーターとして解釈されることを確認することが重要で、そうでなければ対応するナビゲーションアクションは利用できません。
現在、別のSlateモジュール以外のUI要素からSlateモジュールへの移動をサポートしていません(以下のOutputセクションを参照)。
Slateモジュールは特定の方法でナビゲーションフレームワークと統合されています。Slateドキュメントでナビゲーションが発生すると(例えば、リンクをクリックすると)、Carbonはそのナビゲーションを妨害し、解釈しようとします。ナビゲーションが発生したアドレスがスタンドアロンのフロントエンドアプリケーションとして認識でき、そのアプリケーションに対応するCarbonモジュールがある場合、そのモジュールは新しいCarbonタブで開かれます。例えば:
workspace/hubble/objects/ri.phonograph2-objects.main.object.4202d614-bb6e-471d-80d2-2cf9c735caf3
は、Object ViewモジュールをオブジェクトRIDri.phonograph2-objects.main.object.4202d614-bb6e-471d-80d2-2cf9c735caf3
で開くと解釈されます。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
は、WorkshopモジュールをモジュールRIDri.workshop.main.module.a1838b32-448d-43f6-beff-3c9e40a34929
とパラメーターorderInput
がri.object-set.main.object-set.63417288-3e8d-4b34-a995-d6c2c6054e27
と等しい状態で開くと解釈されます。workspace/slate/documents/another-slate-doc
は、Slate permalink another-slate-doc
に対応するモジュールRIDを持つSlateモジュールを開くと解釈されます。workspace/quiver/template/view/ri.quiver.main.artifact.b5597828-d4a2-4fec-964f-304a3ad7f1a9
は、Quiver TemplateモジュールをモジュールRIDri.quiver.main.artifact.b5597828-d4a2-4fec-964f-304a3ad7f1a9
で開くと解釈されます。workspace/hubble/exploration/saved/ri.object-set.main.versioned-object-set.ba21a7b3-3407-4bb1-ae9f-aae3d70c4a40
は、Object ExplorerモジュールをオブジェクトセットRIDri.object-set.main.versioned-object-set.ba21a7b3-3407-4bb1-ae9f-aae3d70c4a40
で開くと解釈されます。したがって、Slateモジュールの出力はSlateドキュメント内のウィジェットの状態に基づいているわけではなく、各ナビゲーションアクションはユーザーのアクションの結果であり、出力はそのアクションに基づいて決定されます。
Slateには、ドキュメント内にiframeを埋め込む機能があります。そのようなiframe内のリンクを介した任意のナビゲーションは、次のカテゴリーのいずれかに該当します:
後者の場合、Slateモジュールのoutputセクションで説明されているメカニズムが有効になるためには、ネストされたiframe内のリンクは、最も外側のSlate iframe(CarbonがトップレベルのSlateモジュールを表示するもの)をそのtarget
として指定する必要があります。Carbonはそのiframeの名前をcarbon-navigation-target
と設定します。リンクのHTMLスニペットの例は以下の通りです:
<a
href="/workspace/hubble/objects/ri.phonograph2-objects.main.object.4202d614-bb6e-471d-80d2-2cf9c735caf3"
target="carbon-navigation-target"
>
<!-- target="carbon-navigation-target" を持つオブジェクトへのリンク -->
Link to an object with target="carbon-navigation-target"
</a>
この方法は、iframe のネスティング深度に関係なく正しく機能します。例えば、Carbon によって作成されたトップレベルの Slate モジュール iframe の中に二つ目の iframe を埋め込み、その中にさらに三つ目の iframe を埋め込むことができます。
Quiver の作成物の中で、Quiver テンプレートのみが Carbon モジュールとして使用できます。テンプレートと分析の違いやテンプレートの作成方法については、Quiver のドキュメンテーションでテンプレートを作成し、埋め込むを参照してください。
Quiver テンプレートは、オブジェクトテンプレートまたはオブジェクトセットテンプレートのいずれかになることができます。
どちらの場合でも、テンプレートの基本として選択するオブジェクトタイプが必要です。これは、パラメーター(オブジェクトまたはオブジェクトセット)がテンプレートにパイプされるたびに、すべての定義済みの変換がうまく機能することを保証するためです(例えば、同じオブジェクトプロパティとオントロジーリンクが常に考慮されます)。
その結果、テンプレートが基づくオブジェクトタイプは、可能な入力に対する 制約 に変換されます。制約が Quiver モジュールへのナビゲーションアクションの利用可能性にどのように影響するかの詳細については、モジュールの発見または Carbon ワークスペース内での統合モジュールの使用を参照してください。
例えば、Single Aisle Aircrafts
テンプレートが Aircraft
オブジェクトタイプに基づいているとします。
ナビゲーションアクションの推測された制約は、オブジェクトセットの入力は Aircraft
オブジェクトのみを含む必要があるというものです。Carbon ワークスペースでは、Single Aisle Aircrafts
モジュールは 設定の Discoverable Modules セクションに追加されます。
Object Explorer モジュールで Aircraft
オブジェクトタイプの結果セットを調査すると、アクションの制約が満たされているため(オブジェクトセットが Aircraft
タイプのオブジェクトを含むため)、ナビゲーションアクションが Open in メニューに表示されます。
Object Explorer モジュールで Order
オブジェクトタイプの結果セットを調査すると、オブジェクトセットが Aircraft
とは異なるタイプのオブジェクトを含み、ナビゲーションアクションの制約が満たされていないため、ナビゲーションアクションは Open in メニューに表示されません。
空でない Quiver テンプレートモジュールは、前のセクションで説明したように、発見可能に設定することができます。
現在、動的 モジュールの中で、Quiver テンプレートモジュールは Slate の UI 要素から開くことができます。Slate モジュールでは、通常の HTML リンクを通じた単独の Quiver アプリケーションへのナビゲーションは Carbon によって妨げられ、代わりに新しい Quiver テンプレートモジュールが開かれます。詳細については、Slate モジュールのドキュメンテーションを参照してください。
Quiver テンプレートは、出力 側でナビゲーションフレームワークと非常に基本的な統合を提供します。カードに表示される各オブジェクトは、ポップオーバーで調査することができ、そこから Object View へのナビゲーションアクションをトリガーすることができます。