nestedFields を使用してエントリ履歴を監査する
ライフレイ 7.4 U72+/GA72+
オブジェクト定義に対して エントリ履歴を有効にする と、REST API で nestedFields パラメータを使用してエントリ イベントを監査できます。 GET リクエストのパスに nestedFields=auditEvents を追加します (例: http://localhost:8080/o/c/tickets/?nestedFields=auditEvents)。
開始するには、 新しい Liferay 7.4 インスタンスをセットアップ し、提供されているチュートリアル コードを 準備 します。 次に、 スクリプト を実行してエントリを作成し、更新し、 nestedFields パラメータを使用してそれらの変更を照会します。
REST API を使用してエントリの履歴を表示するには、エントリに対する 表示 権限と オブジェクト エントリ履歴 権限の両方が必要です。 権限フレームワークの統合を参照してください。
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に変更します。
次に、Liferay の永続監査メッセージプロセッサを有効にします。 次に、オブジェクト定義を作成して公開します。
永続監査メッセージプロセッサの有効化
-
グローバル メニュー (
) → コントロール パネル タブ、 → システム設定を開きます。 -
[セキュリティ] の下で、 [監査] をクリックし、 [永続メッセージ監査メッセージ プロセッサ] タブに移動します。
-
有効をチェックします。
-
[保存]をクリックします。

オブジェクト定義の作成
-
グローバル メニュー (
) を開き、 コントロール パネル タブに移動して、 オブジェクトをクリックします。 -
オブジェクトの下書きを 作成します。
項目 値 ラベル Able複数形のラベル Ables名前 Able -
このフィールドを下書きに追加します。
ラベル 項目名 種類 必須 Namenameテキストボックス ✔ -
詳細タブで、 エントリ履歴を有効にするを切り替えます。
公開されると、ヘッドレス API 経由でオブジェクトにアクセスできるようになります。
サンプルコードを準備する
サンプルコードをダウンロードして解凍します。
curl https://resources.learn.liferay.com/examples/liferay-g4m3.zip -O
unzip liferay-g4m3.zip
サンプル コードには、オブジェクト エントリを作成、更新、および照会するためのシェル スクリプトが含まれています。
サイトおよび会社オブジェクト用に生成された API の完全なリストについては、 オブジェクト ヘッドレス フレームワーク統合を参照してください。 Liferay API Explorer の [server]:[port]/o/api (例: localhost:8080/o/api)からカスタムオブジェクト API を表示およびテストできます。 REST アプリケーション をクリックし、API を選択します。
サンプルコードを使用する
-
liferay-g4m3プロジェクトのcurlフォルダに移動します。cd liferay-g4m3/curl -
Ables_POST_ToCompanyを実行して、3 つのAbleエントリを作成します。./Ables_POST_ToCompany.sh{ ... "externalReferenceCode" : "able-one", "id" : 47512, ... "name" : "Able 1 - Foo" } { ... "externalReferenceCode" : "able-two", "id" : 47514, ... "name" : "Able 2 - Foo" } { ... "externalReferenceCode" : "able-three", "id" : 47516, ... "name" : "Able 3 - Foo" } -
Ables_PATCH_ByExternalReferenceCodeをable-oneERC で実行します。./Ables_PATCH_ByExternalReferenceCode.sh able-oneこれにより、エントリの名前フィールドが 2 回更新されます。
{ ... "externalReferenceCode" : "able-one", "id" : 47512, ... "name" : "Able 1 - Bar" } { ... "externalReferenceCode" : "able-one", "id" : 47512, ... "name" : "Able 1 - Goo" } -
Ables_GET_ByExternalReferenceCodeをable-oneERC で実行します。./Ables_GET_ByExternalReferenceCode.sh able-oneこれは、
able-oneエントリをauditEvents配列とともに返します。この配列は、最新のイベントから始まり、エントリの作成で終わるエントリ イベントの履歴です。{ ... "auditEvents" : [ { "auditFieldChanges" : [ { "name" : "name", "newValue" : "Able 1 - Goo", "oldValue" : "Able 1 - Bar" } ], "dateCreated" : "2023-05-04T05:44:41Z", "eventType" : "UPDATE" }, { "auditFieldChanges" : [ { "name" : "name", "newValue" : "Able 1 - Bar", "oldValue" : "Able 1 - Foo" } ], "dateCreated" : "2023-05-04T05:44:40Z", "eventType" : "UPDATE" }, { "auditFieldChanges" : [ { "name" : "name", "newValue" : "Able 1 - Foo" } ], "dateCreated" : "2023-05-04T05:44:37Z", "eventType" : "ADD" } ], ... "externalReferenceCode" : "able-one", "id" : 47512, ... "name" : "Able 1 - Goo" }auditEvents配列には次の要素が含まれます。auditFieldChanges: 更新されたフィールドと、その新しい値と古い値。dateCreated: イベントの日時。eventType: イベントの種類 (例:ADD、UPDATE、DELETE)。
-
Ables_GET_FromCompanyを実行します。./Ables_GET_FromCompany.sh able-oneこれにより、最新のイベントから始まるすべての Able エントリとそのイベントの監査が返されます。
{ ... "items" : [ { ... "auditEvents" : [ { "auditFieldChanges" : [ { "name" : "name", "newValue" : "Able 2 - Foo" } ], "dateCreated" : "2023-05-04T06:15:50Z", "eventType" : "ADD" } ], ... "externalReferenceCode" : "able-two", "id" : 47514, ... "name" : "Able 2 - Foo" }, { ... "auditEvents" : [ { "auditFieldChanges" : [ { "name" : "name", "newValue" : "Able 3 - Foo" } ], "dateCreated" : "2023-05-04T06:15:51Z", "eventType" : "ADD" } ], ... "externalReferenceCode" : "able-three", "id" : 47516, ... "name" : "Able 3 - Foo" }, { ... "auditEvents" : [ { "auditFieldChanges" : [ { "name" : "name", "newValue" : "Able 1 - Goo", "oldValue" : "Able 1 - Bar" } ], "dateCreated" : "2023-05-04T06:16:25Z", "eventType" : "UPDATE" }, { "auditFieldChanges" : [ { "name" : "name", "newValue" : "Able 1 - Bar", "oldValue" : "Able 1 - Foo" } ], "dateCreated" : "2023-05-04T06:16:24Z", "eventType" : "UPDATE" }, { "auditFieldChanges" : [ { "name" : "name", "newValue" : "Able 1 - Foo" } ], "dateCreated" : "2023-05-04T06:15:49Z", "eventType" : "ADD" } ], ... "externalReferenceCode" : "able-one", "id" : 47512, ... "name" : "Able 1 - Goo" } ], "lastPage" : 1, "page" : 1, "pageSize" : 20, "totalCount" : 3 }
GETリクエストの調査
これらの GET リクエストの URL には、 nestedFields=auditEvents パラメータが含まれています。
Ables_GET_ByExternalReferenceCode
curl \
"http://localhost:8080/o/c/ables/by-external-reference-code/${1}?nestedFields=auditEvents" \
--user "test@liferay.com:learn"
Ables_GET_FromCompany
curl \
"http://localhost:8080/o/c/ables/?nestedFields=auditEvents" \
--user "test@liferay.com:learn"