オブジェクトエントリバージョンの管理
Liferay DXP 2025.Q4+/Portal 2026.Q1+
オブジェクトエントリのバージョン管理は、Liferay の コンテンツ管理システム (CMS) で使用されています。 バージョン管理機能は、CMS機能フラグを有効にした後にのみ利用可能です。 ヘッドレス CMS をアクティブ化するには、 Liferay CMS のアクティブ化 を参照してください。
カスタム オブジェクトのエントリでバージョン管理を使用するには、API を使用してオブジェクト定義でバージョン管理を有効にする必要があります。そのためには、 objectEntryVersioning 属性を true に設定します。 その後、バージョン管理APIのエンドポイントを呼び出すことができます。 バージョン管理機能は、コレクション、フォームコンテナ、データセットマネージャなどの標準搭載のオブジェクトエントリ管理機能や表示機能には対応していません。
オブジェクト定義を公開すると、そのエントリを管理するためのREST APIが生成されます。 これらのAPIには、バージョン管理エンドポイントが含まれています。 オブジェクト定義でバージョン管理が有効になっている場合は、バージョン管理エンドポイントを使用できます。
定義でバージョン管理が有効になっている場合、PATCHまたはPUTを使用してエントリを更新すると、オブジェクトエントリの新しいバージョンが作成されます。 個々のエントリのバージョン管理エンドポイントの概要は以下のとおりです。
| 操作 | エンドポイントの例 | バージョン管理の動作 |
|---|---|---|
| PATCHまたはPUTを使用してエントリを更新します。 | /o/c/ables/by-external-reference-code/ | 新しいエントリーバージョンが作成されます。 |
| エントリのバージョンを取得する | /o/c/ables/by-external-reference-code//versions | ERCを渡すと、エントリの既存のすべてのバージョンを取得できます。 |
| バージョンを取得する | /o/c/ables/by-external-reference-code//by-version/ | ERCとバージョン番号を渡すと、単一のバージョンが取得されます。 |
| 特定のバージョンを復元する | /o/c/ables/by-external-reference-code//by-version//restore | 以前のバージョンを復元して、最新バージョンにします。 これは、古いバージョンに基づいてエントリの新しいバージョンを作成します。 エントリを復元している間は、エントリのフィールドを更新することはできません。 |
| バージョンをコピーする。 | /o/c/ables/by-external-reference-code//by-version//copy | エントリのバージョンに基づいて、固有のERCを持つ新しいエントリを作成します。 |
| バージョンを削除します。 | /o/c/ables/by-external-reference-code//by-version/ | 以前のバージョンが最新バージョンになりました。 該当するエントリが存在しない場合は、削除されます。 |
さらに、 /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つのエントリが作成され、そのうちの1つがPUT呼び出しによって更新され、新しいバージョンが作成されます。 応募作品のうち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)のステータスが付けられ、エントリの有効期限が現在の日付に設定されます。