注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
プロジェクトにインポートされたすべてのオブジェクトタイプは、Foundryで利用可能なオブジェクトを簡単にアクセスし、操作できるようにTypeScript APIに変換されます。
各オブジェクトタイプのプロパティは、各オブジェクトタイプに対して生成されたTypeScriptインターフェースのフィールドに変換されます。生成されたフィールド名は、オントロジーで指定されたAPI名を使用します。
プロパティの各フィールドには、シンプルなドット記法でアクセスできます:
Copied!1 2
// 従業員の名前を取得します。 const firstName = employee.firstName;
プロパティが具体的な値を持っていない場合があるため、プロパティ値にアクセスする際に返される型は undefined
になる可能性があります。TypeScript コンパイラは、undefined
のケースを明示的に処理しない限り、エラーが発生します。これに関する詳細は、このガイドを参照してください。
オブジェクトタイプの配列プロパティは、ReadOnlyArray
タイプに変換されます。これにより、編集 配列プロパティのセマンティクスが明確になります。配列プロパティの値を変更する唯一の方法は、新しい配列値でそれを更新することです。
配列プロパティの値を操作したい場合は、それをコピーしてください。
Copied!1 2 3 4
// 新しい配列にコピー let arrayCopy = [...myObject.myArrayProperty]; // これで、コピーした配列を変更することができます arrayCopy.push(newItem);
オブジェクトタイプ間のリンクタイプも、各オブジェクトタイプの TypeScript インターフェースにフィールドとして変換されます。リンクをたどるには、フィールドにアクセスし、オブジェクトをロードするために使用されるメソッドのいずれかを呼び出します。リンクタイプのフィールド名は、オントロジーで指定された API 名を使用して生成されます。
Foundry オントロジーは、1 対 1、1 対多、および多対多のリンクタイプを定義することをサポートしています。リンクの 1
側にアクセスすると、生成されたフィールドは SingleLink
タイプになります。get()
または getAsync()
メソッドを使用して、リンクされたオブジェクトにアクセスできます。
Copied!1 2
// 従業員のマネージャーを取得する const manager = employee.manager.get();
プロパティと同様に、1対1または多対1のリンクをたどる場合、リンクされたオブジェクトがない場合、戻り値は undefined
になる場合があります。これらのリンクに対して undefined
値を処理するための ガイド を参照してください。
リンクの many
側にアクセスすると、生成されるフィールドは MultiLink
タイプになります。all()
または allAsync()
メソッドを使用して、リンクされたオブジェクトの配列にアクセスできます。リンクされたオブジェクトがない場合、これらのメソッドは空の配列を返します。
Copied!1 2
// 従業員の全リポートを取得する const employees = employee.reports.all();
リンクのトラバースは、バックエンドでリンクされているオブジェクトをロードする必要があるため、コストがかかることがあります。リンクのトラバースをより効率的に行う方法については、このセクションを参照してください。
.all()
または.allAsync()
を呼び出して返されるリンクされたオブジェクトの配列は、ReadOnlyArray
です。配列を変更したい場合は、まずそのコピーを作成してください。
Copied!1 2
// 従業員のレポートを全てコピーして、新しい配列に格納します。 let copiedEmployees = [...employee.reports.all()];
ObjectSet
としてリンクをたどることで、リンクされたオブジェクトのインスタンスをメモリにロードせずに済みます。オントロジーでリンクが作成されると、このタイプのオブジェクトセットに対して、他のリンクされたオブジェクトセットに"周囲を検索"するAPIが生成されます。
Copied!1 2 3 4 5 6 7 8
import { ObjectSet, Employee } from "@foundry/ontology-api"; // 以下のようにオブジェクトセットが利用可能だと仮定します: // const employee_id = "123"; // const employeeObjectSet : ObjectSet<Employee> = Objects.search().employee().filter(exactMatch(employee_id)); // その他のオブジェクトタイプに対して検索を行うためのオブジェクトセットを作成します const linkedObjs: ObjectSet<OtherObjectType> = employeeObjectSet.searchAroundToOtherObjectType();
オブジェクトの単一インスタンスで操作し、そこから検索すると、MultiLink<objectType>
が得られます。このMultiLink
をObjectSet
に変換することはできません;他のオブジェクトセットにピボットするには、オブジェクトインスタンスをオブジェクトセットに変換する必要があります。
Copied!1 2 3 4 5 6 7 8 9 10 11
// 仮定: // const employee: Employee // MultiLinkはメモリにロードして、さらに処理を進めることができます。 const linkedObjs: MultiLink<objectType> = employee.reports // 単一のオブジェクトインスタンスをオブジェクトセットに変換します。この文は、`employee().filter()`文よりも実行に時間がかかります。 const employeeObjectSet : ObjectSet<Employee> = Objects.search().employee([employee]) // そこから、上記の "searchAroundToOtherObjectType" を使用して、オブジェクトセットのみを処理することができます。
Functions は、オブジェクトとプロパティのリストを提供することで利用可能なオントロジーへのアクセスを提供します。オントロジーのメタデータ情報は、各オブジェクトタイプの定数タイプにアクセスすることで利用できます。詳細については、以下のセクションを参照してください。
オブジェクトプロパティには、タイプメタデータも含まれており、プロパティのタイプごとにプログラムでアクセスできます。この機能を使用して、特定のタイプのすべてのプロパティを識別したり、指定されたプロパティ名が特定のタイプを持っていることを検証したりするような高度なワークフローを実現できます。
例えば、従業員オブジェクト タイプ が含まれるオントロジーの場合、そのオブジェクト タイプ のプロパティのタイプ情報に以下のようにアクセスできます。
// 英語から日本語への翻訳
import { Employee } from "@foundry/ontology-api";
...
// 従業員の名前のタイプを取得します
const type = Employee.properties.firstName;
この場合、Employee
オブジェクトタイプのfirstName
が文字列プロパティである場合、そのタイプはStringPropertyBaseType
になります。
以下のプロパティタイプが利用可能です:
BooleanPropertyBaseType
BytePropertyBaseType
DatePropertyBaseType
FloatPropertyBaseType
TimestampPropertyBaseType
ShortPropertyBaseType
GeohashPropertyBaseType
DecimalPropertyBaseType
StringPropertyBaseType
LongPropertyBaseType
IntegerPropertyBaseType
DoublePropertyBaseType
ArrayPropertyBaseType
VectorPropertyBaseType