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の永続監査メッセージプロセッサを有効にします。 次に、オブジェクト定義を作成して公開します。
永続監査メッセージプロセッサの有効化
-
グローバルメニュー (
) → コントロールパネル → システム設定 を開きます。 -
セキュリティの下で、 監査 をクリックし、 永続メッセージ監査メッセージプロセッサ タブに移動します。
-
チェック 有効。
-
をクリックして保存します。

オブジェクト定義の作成
-
グローバルメニュー (
) を開き、 コントロールパネル → オブジェクト に移動します。 -
オブジェクトドラフトを作成する。
分野 値 ラベル できる複数形ラベル エイブルズ名前 できる -
この項目を下書きに追加してください。
ラベル フィールド名 タイプ 必須 名前名前文章 ✔ -
詳細タブで、 エントリ履歴を有効にする を切り替えます。
公開後は、ヘッドレス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、 ... "名前" : "エイブル 1 - フー" } { ... "externalReferenceCode" : "able-two"、 "id" : 47514、 ... "名前" : "エイブル 2 - フー" } { ... "externalReferenceCode" : "able-three"、 "id" : 47516、 ... "名前" : "エイブル 3 - フー" } -
Ables_PATCH_ByExternalReferenceCodeをable-oneERC で実行します。./Ables_PATCH_ByExternalReferenceCode.sh able-oneこれにより、エントリの名前フィールドが2回更新されます。
{ ... "externalReferenceCode" : "able-one"、 "id" : 47512、 ... "名前" : "エイブル 1 - バー" } { ... "externalReferenceCode" : "able-one"、 "id" : 47512、 ... "名前" : "エイブル 1 - グー" } -
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" : [ { "名前" : "名前"、 "新しい値" : "エイブル 1 - バー"、 "古い値" : "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、 ... "名前" : "エイブル 1 - グー" }auditEvents配列には、以下の要素が含まれます。auditFieldChanges: 更新されたフィールドと、その新しい値および古い値。dateCreated: イベントの日時。eventType: イベントタイプ (例:ADD、UPDATE、DELETE)。
-
Ables_GET_FromCompanyを実行します。./Ables_GET_FromCompany.sh able-oneこれにより、最新のイベントから順に、すべてのAbleエントリとそのイベント履歴が返されます。
{ ... "アイテム" : [ { ... "auditEvents" : [ { "auditFieldChanges" : [ { "name" : "name", "newValue" : "Able 2 - Foo" } ], "dateCreated" : "2023-05-04T06:15:50Z", "eventType" : "ADD" } ], ... "externalReferenceCode" : "able-two"、 "id" : 47514、 ... "名前" : "エイブル 2 - フー" }, { ... "auditEvents" : [ { "auditFieldChanges" : [ { "name" : "name", "newValue" : "Able 3 - Foo" } ], "dateCreated" : "2023-05-04T06:15:51Z", "eventType" : "ADD" } ], ... "externalReferenceCode" : "able-three"、 "id" : 47516、 ... "名前" : "エイブル 3 - フー" }, { ... "auditEvents" : [ { "auditFieldChanges" : [ { "name" : "name", "newValue" : "Able 1 - Goo"、 "oldValue" : "Able 1 - Bar" } ]、 "dateCreated" : "2023-05-04T06:16:25Z"、 "eventType" : "UPDATE" }、 { "auditFieldChanges" : [ { "名前" : "名前"、 "新しい値" : "エイブル 1 - バー"、 "古い値" : "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、 ... "名前" : "エイブル 1 - グー" } ], "最終ページ" : 1, "ページ" : 1, "ページサイズ" : 20、 "合計数" : 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"