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

通知APIの基礎

Liferay のヘッドレス配信アプリケーションは、複数のデフォルト アプリケーションにわたるプラットフォーム イベントの通知をサブスクライブまたはサブスクライブ解除するための REST および GraphQL サービスを提供します。 cURL コマンドや Java クラスなどのメソッドを使用してこれらのサービスにアクセスします。

ブログ、ドキュメント フォルダー、ナレッジ ベース記事、メッセージ ボード メッセージ、メッセージ ボード セクション、メッセージ ボード スレッド、構造化コンテンツ フォルダー、構造化コンテンツ、Wiki ノード、および Wiki ページなどのアプリケーションの通知は、 headless-delivery 名前空間で管理できます。

まず環境を設定し、必要な情報を収集します。

環境の設定

新しい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に変更します。

サインインすると、 サイト IDを取得します。 この ID を複数のサービス呼び出しで使用します。 この例では、IDは 20117です。

次に、以下の手順に従います。

  1. サンプルプロジェクトをダウンロードして解凍します。

    curl https://resources.learn.liferay.com/examples/liferay-v3g2.zip -O
    
    unzip liferay-v3g2.zip
    
  2. Subscriptions_GET_FromMyUserAccount.sh スクリプトを実行して、ユーザー アカウントでアクティブなサブスクリプションを確認します。

    ./Subscriptions_GET_FromMyUserAccount.sh
    

    アクティブなサブスクリプションがないため、応答は空になります。

    {
       "actions": {},
       "facets": [],
       "items": [],
       "lastPage": 1,
       "page": 1,
       "pageSize": 20,
       "totalCount": 0
    }
    
    重要

    --user オプションで指定されたメールアドレスとパスワードが、スクリプトで使用されているものと一致していることを確認します。

通知の購読

headless-delivery 名前空間の下にあるさまざまなアプリケーションの通知をサブスクライブします。

サブスクリプション可能なアプリケーションを見つけるには、[server]:[port]/o/api (例: http://localhost:8080/o/api) にある Liferay API Explorer を使用します。

API エクスプローラーで、 REST アプリケーション をクリックし、 headless-delivery/v1.0 オプションを選択します。

エンドポイント パスに subscribe または unsubscribe が含まれる PUT メソッドを探します。 たとえば、ブログ投稿のサブスクリプションアクションの場合は、 /v1.0/sites/{siteId}/blog-postings/subscribe のようなエンドポイントがあります。

Liferay API Explorer を使用して、サブスクライブできるアプリケーションを見つけます。

RESTサービスの使用

REST API を使用して、 BlogPostings_PUT_Subscribe_ToSites.sh スクリプトでアプリケーションをサブスクライブします。 このスクリプトは、サイト上のブログ投稿に関する通知をサブスクライブします。

curl \
   "http://localhost:8080/o/headless-delivery/v1.0/sites/${1}/blog-postings/subscribe" \
   --header "Content-Type: application/json" \
   --request "PUT" \
   --user "test@liferay.com:learn"
ヒント

他のアプリケーションをサブスクライブするにはエンドポイント パスを変更します。 たとえば、ドキュメント フォルダーからの通知をサブスクライブするには、 http://localhost:8080/o/headless-delivery/v1.0/document-folders/{documentFolderId}/subscribeを使用します。 API エクスプローラーでは、利用可能なエンドポイントとその要件に関する詳細情報が提供されます。

  1. コマンドラインで、curlフォルダに移動します。 サイト ID をパラメータとして BlogPostings_PUT_Subscribe_ToSites.sh を実行します。

    BlogPostings_PUT_Subscribe_ToSites.sh [site-ID]
    
  2. この呼び出しは出力を返しません。 Subscriptions_GET_FromMyUserAccount.shを実行してサブスクリプションを確認します。 結果には、サブスクリプションの contentTypeid が含まれます。

    {
       "actions" : { },
       "facets" : [ ],
       "items" : [ {
          "contentId" : 20117,
          "contentType" : "BlogPosting",
          "dateCreated" : "2024-09-09T21:56:12Z",
          "dateModified" : "2024-09-09T21:56:12Z",
          "frequency" : "instant",
          "id" : 32471,
          "siteId" : 20117
       } ],
       "lastPage" : 1,
       "page" : 1,
       "pageSize" : 20,
       "totalCount" : 1
    }
    
  3. RESTサービスは、Javaクラスで呼び出すこともできます。 curl フォルダから、 java フォルダに移動します。 ソースファイルをコンパイルします。

    javac -classpath .:* *.java
    
  4. BlogPostings_PUT_Subscribe_ToSites Java クラスを実行します。 siteId の値をサイト ID に置き換えます。

java -classpath .:* -DsiteId=1234 BlogPostings_PUT_Subscribe_ToSites
ヒント

他のアプリケーションをサブスクライブするには、対象アプリケーションに対応するクラスを識別します。 たとえば、ドキュメント フォルダーの場合は DocumentFolderResource を使用します。 新しいリソースの正しいサブスクリプション メソッドと一致するようにメソッド呼び出しを更新します。

  1. Subscriptions_GET_FromMyUserAccount クラスを実行して、アクションが成功したことを確認します。
{"actions": {}, "items": [{"contentId": "20117", "contentType": "BlogPosting", "dateCreated": "2024-09-10T09:53:32-0300", "dateModified": "2024-09-10T09:53:32-0300", "frequency": "instant", "id": 32471, "siteId": 20117}], "page": 1, "pageSize": 10, "totalCount": 1}

cURLコマンドの検証

BlogPostings_PUT_Subscribe_ToSites.sh スクリプトは、 ヘッドレス配信 アプリケーション REST サービスを呼び出して、特定のサイトのブログ投稿に関する通知をサブスクライブします。

ここでは、コマンドの引数を紹介します。

引数説明
"http://localhost:8080/o/headless-delivery/v1.0/sites/${1}/blog-postings/subscribe"RESTサービスエンドポイント。 サイトIDのパラメーターが${1}に置き換わります。
--header "Content-Type: application/json" \サーバーに送信されたリソースのメディア タイプ (MIME タイプ) は JSON です。
--request "PUT"指定されたエンドポイントで呼び出すHTTPメソッド。
--user "test@liferay.com:learn"基本認証の資格情報。

ここでは、デモのために基本的な認証を使用しています。 本番環境では、 OAuth 2.0経由でユーザーを認証する必要があります。 OAuth2 を使用するサンプル React アプリケーションについては、 OAuth2 を使用してユーザーを承認する を参照してください。

Javaクラスを調べる

BlogPostings_PUT_Subscribe_ToSites.java クラスは、特定のサイトのブログ投稿に関する通知をサブスクライブします。

行(省略形)説明
BlogPostingResource.Builder builder = ...Builderを取得し、BlogPostingResourceサービスインスタンスを生成します。
BlogPostingResource blogPostingResource = builder.authentication(...).build();基本認証を指定し、BlogPostingResourceサービスインスタンスを生成します。
blogPostingResource.putSiteBlogPostingSubscribe(...);blogPostingResource.putSiteBlogPostingSubscribe メソッドを呼び出し、サイト ID を渡します。

プロジェクトには、依存関係としてcom.liferay.headless.delivery.client.jarファイルが含まれていることに注意してください。 すべてのRESTアプリケーションのクライアントJAR依存関係情報は、/o/apiでインストール先のAPIエクスプローラーで確認できます。

重要

サービスの詳細については、 BlogPostingResource を参照してください。

GraphQL サービスの使用

通知用の GraphQL サービスは、REST のサービスと同様に動作します。 このアクションを実行するには、Liferay API Explorer にアクセスしてください。 GraphQL クエリとミューテーションの詳細については、 GraphQL API の使用 をお読みください。

  1. 右上隅の GraphQL をクリックし、次のミューテーション クエリを左の列に追加して、 siteKey をサイト ID に置き換えます。

    mutation {
       headlessDelivery_v1_0 {
          updateSiteBlogPostingSubscribe(siteKey: "20117")
       }
    }
    
  2. クエリの実行をクリックします。 応答には、サブスクリプションが成功したかどうかを示すブール値が含まれます。

    {
       "data": {
          "headlessDelivery_v1_0": {
             "updateSiteBlogPostingSubscribe": true
          }
       }
    }
    
  3. 次のクエリでサブスクリプションを確認します。

    {
       headlessAdminUser_v1_0 {
          myUserAccountSubscriptions {
             items {
             contentType
             dateCreated
             dateModified
             frequency
             id
             siteId
             }
          }
       }
    }
    

    応答では、ブログ投稿の購読を確認する必要があります。

    {
       "data": {
          "headlessAdminUser_v1_0": {
             "myUserAccountSubscriptions": {
             "items": [
                {
                   "contentType": "BlogPosting",
                   "dateCreated": "2024-09-09T21:56:12Z",
                   "dateModified": "2024-09-09T21:56:12Z",
                   "frequency": "instant",
                   "id": 32471,
                   "siteId": 20117
                }
             ]
             }
          }
       }
    }
    

通知の購読解除

headless-delivery 名前空間の下にあるアプリケーションの通知の登録を解除します。

RESTサービスの使用

REST API を使用して登録解除するには、登録解除アクションを含むエンドポイントを使用します。 これは、通知に使用されるサブスクライブ エンドポイントに対応します。 この例では、 ./BlogPostings_PUT_Unsubscribe_ToSites.sh スクリプトが、サイト上のブログ投稿に関する通知の登録を解除します。

curl \
	"http://localhost:8080/o/headless-delivery/v1.0/sites/${1}/blog-postings/unsubscribe" \
	--header "Content-Type: application/json" \
	--request "PUT" \
	--user "test@liferay.com:learn"

[site-ID] を自分のサイトIDに置き換えて、 BlogPostings_PUT_Unsubscribe_ToSites.shを実行します。

BlogPostings_PUT_Unsubscribe_ToSites.sh [site-ID]

この呼び出しは応答を返しません。 Subscriptions_GET_FromMyUserAccount.shを実行して、サブスクリプションが削除されたことを確認します。 結果は空になるはずです:

{
   "actions" : { },
   "facets" : [ ],
   "items" : [ ],
   "lastPage" : 1,
   "page" : 1,
   "pageSize" : 20,
   "totalCount" : 0
}

あるいは、対応する Java クラスを実行します。

java -classpath .:* -DsiteId=1234 BlogPostings_PUT_Unsubscribe_ToSites

Subscriptions_GET_FromMyUserAccount.java を実行して、登録解除が成功したことを確認します。

{"actions": {}, "items": [], "page": 1, "pageSize": 10, "totalCount": 0}

GraphQL サービスの使用

GraphQL サービスを使用して通知の登録を解除します。 このタスクを実行するには、Liferay API Explorer にアクセスします。

  1. 右上隅の GraphQL をクリックします。 次のミューテーション クエリを左の列に追加し、 siteKey をサイト ID に置き換えます。

    mutation {
       headlessDelivery_v1_0 {
          updateSiteBlogPostingUnsubscribe(siteKey: "20117")
       }
    }
    
  2. クエリの実行をクリックします。 応答は、ユーザーが登録解除されているかどうかを示します。

    {
       "data": {
          "headlessDelivery_v1_0": {
             "updateSiteBlogPostingUnsubscribe": true
          }
       }
    }
    

サブスクリプションの削除

headless-admin-user 名前空間を使用して、 Subscriptions_GET_FromMyUserAccount.shに使用されているものと同様のエンドポイントを使用してサブスクリプションを削除します。 Subscriptions_DELETE_FromMyUserAccount.sh スクリプトを実行し、[subscription-ID] を特定のサブスクリプション ID に置き換えます。

操作が成功した場合、サーバーは本文のない 204 No Content 応答を返します。

次のコマンドを実行します。

./Subscriptions_DELETE_FromMyUserAccount.sh [subscription-ID]

Subscriptions_GET_FromMyUserAccount.shを実行して削除を確認します。

または、 Subscriptions_DELETE_FromMyUserAccount Java クラスを実行し、 -DsubscriptionId を特定のサブスクリプション ID に置き換えて、サブスクリプションを削除します。

java -classpath .:* -DsubscriptionId=1234 Subscriptions_DELETE_FromMyUserAccount

Subscriptions_GET_FromMyUserAccount.javaを実行して削除を確認します。

GraphQL サービスの使用

GraphQL サービスを使用してサブスクリプションを削除します。 このタスクを実行するには、Liferay API Explorer にアクセスします。

  1. 右上隅の GraphQL をクリックします。 次のミューテーション クエリを左の列に追加し、 subscriptionId をサブスクリプション ID に置き換えます。

    mutation {
       headlessAdminUser_v1_0 {
          deleteMyUserAccountSubscription(subscriptionId: 32672)
       }
    }
    
  2. クエリの実行をクリックします。 応答は、サブスクリプションが削除されたかどうかを示します。

    {
       "data": {
          "headlessAdminUser_v1_0": {
             "deleteMyUserAccountSubscription": true
          }
       }
    }