変更不可能なシステムオブジェクトの拡張
Liferay 7.4 U86+/GA86+
Liferay Objectを使用すると、サポートされているシステムサービスを拡張することができます。 これらのサービスは、オブジェクトフレームワークに 変更不可能なシステムオブジェクト として統合されています。
- アカウント
- コマース注文
- コマースの注文メモ
- コマース製品
- コマース製品グループ
- 組織
- 住所
- ユーザー
郵便住所オブジェクトには、アカウントの住所が格納されます。 このため、[Accounts]オブジェクトに関連するカスタムオブジェクトにのみ関連付けることができます。 詳細については、 カスタムオブジェクトでのシステムアカウントの使用 を参照してください。

システム オブジェクトを拡張する場合、 フィールド、 リレーションシップ、 アクション、および バリデーション をそれらに追加できます。
| 機能 | システムオブジェクト | カスタムオブジェクト |
|---|---|---|
| 項目 | ✔ | ✔ |
| 関連 | ✔ | ✔ |
| レイアウト | ✔ | |
| 操作 | ✔ | ✔ |
| 閲覧数 | ✔ | |
| 検証 | ✔ | ✔ |
フィールドの追加
システムオブジェクトにフィールドを追加することができます。 追加のデータベースカラムは、サービスの元のテーブル名に_xを付加したものを使用する別のデータベーステーブルに追加されます(例: AccountEntry_x)。 システムオブジェクトは、利用可能なすべてのフィールドタイプ( )をサポートしています。 システムオブジェクトはカスタムレイアウトやビューをサポートしないため、これらのカスタムフィールドにはHeadless APIを介してのみアクセスできます。 詳細については、 オブジェクトへのフィールドの追加 を参照してください。
システム オブジェクトにフィールドを追加すると、フィールド構成に 検索可能な 構成が表示されます。 しかし、システムオブジェクトはオブジェクトのインデックス作成コードをバイパスするため、そのカスタムフィールドは検索対象になりません。
Commerce Order Itemのようなシステムオブジェクトにフィールドを追加すると、Liferay API Explorer のサンプル JSON にフィールドが表示される場合があります。 ただし、実際のAPIレスポンスに表示されるのは、値が含まれている場合のみです。 レスポンスにフィールドが表示されるようにするには、更新されたスキーマを使用してオブジェクトエントリを作成または更新する際に、カスタムフィールドに値を割り当ててください。
Liferay の Custom Fields アプリケーションは、 Expando フレームワークを使用して、ほとんどの Liferay システム アプリケーションにフィールドを追加するためのものです。 Objects は Expando ベースのカスタム フィールドをサポートしていないため、Objects の機能 (例: リレーションシップ、 アクション、および 検証) では使用できません。
リレーションシップの追加
システムオブジェクトとカスタムオブジェクトの間にリレーションシップを追加することで、それらのエンティティをリンクさせることができます。 システムオブジェクトは、1対多と多対多の両方のリレーションシップをサポートしています。 詳細については、 オブジェクト関係の定義 を参照してください。
システム・オブジェクトはカスタムレイアウトや カスタムビューをサポートしていないため、システム・オブジェクトのUIにリレーションシップを追加することはできません。 ヘッドレスAPIを介してのみ、それらとやり取りできます。
リレーションシップAPI
システムオブジェクトが多対多の関係にある場合、または一対多の関係の親側にある場合、Liferay は関係を照会および管理するための REST エンドポイント を生成します。 これには、関連オブジェクトエントリを返すためのGETエンドポイント、エントリを関連付けるためのPUTエンドポイント、および関連エントリの関連付けを解除するためのDELETEエンドポイントが含まれます。
この例では、User システム オブジェクト (userRequests) はカスタム オブジェクト (timeOffRequest ) と一対多の関係にあります。 これらのエンドポイントは、 headless-admin-user サービスに表示されます。

入門チュートリアルについては、 リレーションシップ REST API の使用 を参照してください。
アクションの追加
システムオブジェクトにアクションを追加することができ、そのアクションはエントリの追加、更新、削除などのイベントをトリガーとして実行されます。 下の表は、システムオブジェクトがサポートするアクションを示したものです。
| アクションの種類 | システムオブジェクトでのサポートの有無 |
|---|---|
| Webhook | ✔ |
| Groovy スクリプト | ✔ |
| 通知 | ✔ |
| オブジェクトエントリーを追加 | ✔ |
| オブジェクトエントリーを更新 | ✔ |
詳細については、 オブジェクトアクションの定義 を参照してください。
バリデーションの追加
Groovyおよびエクスプレッションビルダーの検証機能をシステムオブジェクトに追加できます。 トリガーされると、これらのバリデーションは、フィールドエントリーが有効かどうかを確認し、無効なエントリーに対してはカスタムエラーメッセージを表示します。 現在、オブジェクトはシステムオブジェクトのデフォルトフィールドに対する検証のみをサポートし、そのカスタムフィールドに対する検証はサポートしていません。 詳細については、 フィールド検証の追加 を参照してください。
追加の設定オプション
システムオブジェクトを編集する際には、 詳細 タブで以下の設定を構成することもできます。
| 項目 | 説明 | システムオブジェクトでのサポートの有無 |
|---|---|---|
| タイトルフィールド | オブジェクトエントリのタイトルとして使用されるフィールドを決定します。 | ✔ |
| パネルリンク | アプリケーションがユーザーインターフェースのどこに表示されるかを決定します。 | ✖ |
| ページビルダーのウィジェット | オブジェクトのページウィジェットがサイトで利用可能かどうかを判断します。 | ✖ |
| オブジェクトエントリの分類 | オブジェクトエントリに対して分類ツールが利用可能かどうかを判断します。 | ✖ |
| ページビルダーのコメント | ユーザーがオブジェクトのエントリにコメントを追加できるかどうかを判断する。 | ✖ |
| 監査フレームワークのエントリー履歴 | オブジェクトイベントが監査履歴に表示されるかどうかを判断します。 | ✖ |