オブジェクトエントリバージョンの管理
Liferay DXP 2025年第4四半期以降 / ポータル 2026年第1四半期以降
オブジェクトエントリのバージョン管理は、Liferay の コンテンツ管理システム (CMS)で使用されます。 カスタム オブジェクトのエントリでバージョン管理を使用するには、API を使用してオブジェクト定義でバージョン管理を有効にする必要があります。そのためには、 objectEntryVersioning 属性を trueに設定します。 その後、バージョン管理 API エンドポイントを呼び出すことができます。 バージョン管理の統合は、コレクション、フォーム コンテナー、データ セット マネージャーなどのすぐに使用できるオブジェクト エントリ管理や表示機能では使用できません。
オブジェクト定義を公開すると、そのエントリを管理するための REST API が生成されます。 これらの API にはバージョン管理エンドポイントが含まれています。 オブジェクト定義でバージョン管理が有効になっている場合は、バージョン管理エンドポイントを使用できます。
定義でバージョン管理が有効になっている場合、PATCH または PUT を使用してエントリを更新すると、オブジェクト エントリの新しいバージョンが作成されます。 個々のエントリのバージョン管理エンドポイントの概要は次のとおりです。
| 操作 | エンドポイントの例 | バージョン管理の動作 |
|---|---|---|
| PATCH または PUT を使用してエントリを更新します。 | /o/c/ables/外部参照コード/ | 新しいエントリ バージョンが作成されます。 |
| エントリのバージョンを取得する | /o/c/ables/by-external-reference-code//versions | ERC を渡して、エントリの既存のバージョンをすべて取得します。 |
| バージョンを取得する | /o/c/ables/外部参照コード別//バージョン別/ | 単一のバージョンを取得するには、ERC とバージョン番号を渡します。 |
| 特定のバージョンを復元する | /o/c/ables/外部参照コード別//バージョン別//復元 | 以前のバージョンを復元して最新のものにします。 これにより、古いバージョンに基づいてエントリの新しいバージョンが作成されます。 復元中にエントリのフィールドを更新することはできません。 |
| バージョンをコピーします。 | /o/c/ables/外部参照コード別//バージョン別//コピー | エントリ バージョンに基づいて、一意の ERC を持つ新しいエントリを作成します。 |
| バージョンを削除します。 | /o/c/ables/外部参照コード別//バージョン別/ | 以前のバージョンが最新バージョンになりました。 存在しない場合はエントリが削除されます。 |
さらに、 /o/c/ables/approved エンドポイントを使用して、定義の最新の承認済みバージョンをすべて取得できます。
エンドポイントをテストできます。 まず、Liferay インスタンスをセットアップします。
Liferayの準備
新しいLiferay インスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.132-ga132
http://localhost:8080でLiferayにサインインします。 メールアドレス test@liferay.com とパスワード testを使用してください。 プロンプトが表示されたら、パスワードを learnに変更します。
以下のコマンドを実行して、提供されたサンプルコードをダウンロードし、解凍してください。
curl https://resources.learn.liferay.com/examples/liferay-j5b2.zip -O
unzip liferay-j5b2.zip
次に、 liferay-j5b2/curl に移動し、次のスクリプトを実行してデータを入力します。
./populate_j5b2.sh
これにより、バージョン管理が有効になっているオブジェクト定義が作成され、3 つのエントリが作成され、PUT 呼び出しで 1 つが更新されて新しいバージョンが作成されます。 エントリの 1 つはドラフト状態です。

バージョン管理APIの呼び出し
curl コマンドを実行するシェル スクリプトを実行して、これらの GET エンドポイントを調べることができます。
-
ERC に一致するエントリのすべてのバージョンを取得します。
./Ables_GET_Versions_ByExternalReferenceCode.sh ABLE_1ABLE_1には、Able 1.0 と Able 1.1 という 2 つのバージョンがあります。 -
次に、バージョン番号を指定してエンドポイントを使用して 1 つのバージョンを返します。
./Ables_GET_Version_ByExternalReferenceCode.sh ABLE_1 1Able 1.0 という名前の
ABLE_1バージョンのみが返されます。 -
次に、オブジェクト定義の最新の承認済みバージョンをすべて取得します。
./Ables_GET_Approved.shAble 1.1 と Able 2.0 という名前の 2 つの Able エントリ バージョンが返されます。 Able 3.0 には、ステータスが
ドラフトのバージョンが 1 つあるため、返されません。 Able 1 には 2 つのバージョンがありますが、このエンドポイントは最新の承認済みバージョンのみを返します。
これらの呼び出しは、オブジェクト エントリ バージョンに対する追加のアクションを示します。
-
Able 1.0 を最新バージョンに復元します。
./Ables_PUT_Restore_ByExternalReferenceCode.sh ABLE_1 1この呼び出しで古いバージョンを復元することはできますが、同時にフィールドを更新することはできません。
-
Able 1.1 (つまり、
ABLE_1エントリのバージョン 2) をコピーします。./Ables_POST_Copy_ByExternalReferenceCode.sh ABLE_1 2これにより、バージョンが新しいドラフト エントリとしてコピーされます (オブジェクト定義でドラフトが有効になっている場合)。

-
ABLE_1からバージョン2を削除します。
./Ables_DELETE_Version.sh ABLE_1 2 -
最初の
ABLE_1バージョンのステータスを 期限切れに設定します:./Ables_POST_Expire_ByExternalReferenceCode.sh ERC 1最新バージョンを期限切れにすると、ステータスが期限切れ (3) としてマークされ、エントリの有効期限が現在の日付に設定されます。