Custom Object APIs
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

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 を使用してエントリの履歴を表示するには、エントリに対して ViewObject 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の永続監査メッセージプロセッサを有効にします。 次に、オブジェクト定義を作成して公開します。

永続監査メッセージプロセッサの有効化

  1. グローバルメニュー (Global Menu) → コントロールパネル タブ、→ システム設定 を開きます。

  2. セキュリティの下で、 監査 をクリックし、 永続メッセージ監査メッセージプロセッサ タブに移動します。

  3. チェック 有効

  4. [Save(保存)]をクリックします。

    「永続メッセージ監査メッセージプロセッサ」タブに移動し、「有効」にチェックを入れます。

オブジェクト定義の作成

  1. グローバルメニューGlobal Menu)を開き、[コントロールパネル]タブに移動し、[オブジェクト]をクリックします。

  2. オブジェクトドラフトを作成する

    項目
    ラベルAble
    複数形のラベルAbles
    名前Able
  3. この項目を下書きに追加してください。

    ラベル項目名種類必須
    Namenameテキストボックス
  4. 詳細タブで、 エントリ履歴を有効にする を切り替えます。

  5. オブジェクトを公開します。

公開後は、ヘッドレス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 を選択します。

サンプルコードを使用する

  1. curl フォルダーの liferay-g4m3 に移動します。

    cd liferay-g4m3/curl
    
  2. 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"
    }
    
  3. Ables_PATCH_ByExternalReferenceCodeable-one ERC で実行します。

    ./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"
    }
    
  4. Ables_GET_ByExternalReferenceCodeable-one ERC で実行します。

    ./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: イベントタイプ (例: ADDUPDATEDELETE)。
  5. 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"