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

オブジェクト定義の作成
-
グローバルメニュー(
)を開き、[コントロールパネル]タブに移動し、[オブジェクト]をクリックします。 -
オブジェクトドラフトを作成する。
項目 値 ラベル Able複数形のラベル Ables名前 Able -
この項目を下書きに追加してください。
ラベル 項目名 種類 必須 Namenameテキストボックス ✔ -
詳細タブで、 エントリ履歴を有効にする を切り替えます。
公開後は、ヘッドレスAPIを介してオブジェクトにアクセスできます。
サンプルコードを準備する
サンプルコードをダウンロードして解凍してください。
curl https://resources.learn.liferay.com/examples/liferay-g4m3.zip -O
unzip liferay-g4m3.zip
サンプルコードには、オブジェクトエントリの作成、更新、および照会を行うためのシェルスクリプトが含まれています。
サイトおよび会社オブジェクト用に生成された API の完全なリストについては、 オブジェクト ヘッドレス フレームワーク統合 を参照してください。 Liferay API Explorer を介してカスタムオブジェクト API を表示およびテストできます。 [server]:[port]/o/api (例: localhost:8080/o/api)。 REST アプリケーション をクリックして、API を選択します。
サンプルコードを使用する
-
curlフォルダーのliferay-g4m3に移動します。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 パラメータが含まれます。
監査イベント付き外部参照コードによるGET Able
curl \
"http://localhost:8080/o/c/ables/by-external-reference-code/${1}?nestedFields=auditEvents" \
--user "test@liferay.com:learn"
監査イベントを含むインスタンスからアブルを取得する
curl \
"http://localhost:8080/o/c/ables/?nestedFields=auditEvents" \
--user "test@liferay.com:learn"