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

バッチエンジンAPIの基本 - データのエクスポート

Liferayのヘッドレスバッチエンジンは、データのインポートやエクスポートを行うためのREST APIを提供します。 これらのサービスを呼び出して、Liferayにデータをエクスポートします。

データのエクスポート

Liferay DXP の新しいインスタンスを起動するには、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/dxp:2026.q1.9-lts

http://localhost:8080 に、メールアドレス test@liferay.com とパスワード test を使用して Liferay にサインインします。 プロンプトが表示されたら、パスワードを learn に変更してください。

次に、以下の手順に従ってください。

  1. バッチエンジンAPIの基本 をダウンロードして解凍します。

    curl https://resources.learn.liferay.com/examples/liferay-g4j2.zip -O
    
    unzip liferay-g4j2.zip
    
  2. データをエクスポートするには、エクスポートするエンティティの完全修飾クラス名が必要です。 クラス名は、インストール先の API エクスプローラー /o/api から取得できます。 Schemas セクションまでスクロールダウンし、エクスポートしたいエンティティの x-class-name フィールドをメモします。

  3. Liferayインスタンスからアカウントをエクスポートするには、以下のcURLスクリプトを使用してください。 コマンドラインで、 curl フォルダーに移動します。 ExportTask_POST_ToInstance.sh スクリプトを、完全修飾クラス名 Account と json をパラメータとして実行します。 json パラメータは、エクスポートされたデータのフォーマットを示します。 また、 jsont、 jsonl 、および csv フォーマットもサポートしています。

    ./ExportTask_POST_ToInstance.sh com.liferay.headless.admin.user.dto.v1_0.Account json
    

    JSONレスポンスには、新しいエクスポートタスクの作成が示されています。 タスクの ID に注目してください。

    {
       "className" : "com.liferay.headless.admin.user.dto.v1_0.Account",
       "contentType" : "JSON",
       "errorMessage" : ""、
       "executeStatus" : "INITIAL"、
       "externalReferenceCode" : "6c5286a2-aa28-175b-041e-eacca4a54d3b"、
       "id" : 1234、
       "processedItemsCount" : 0、
       "totalItemsCount" : 0
    }
    
    重要

    jsont は、バッチ クライアント拡張機能と組み合わせて使用する場合、 *.batch-engine-dat.json ファイルに必要な形式です。

    出力形式として json または jsonl を使用する場合、すべてのフィールドがデフォルトでエクスポートされます。 フィールドを指定するには、エクスポートするフィールドを含む追加のクエリ パラメータ (fieldNames) を指定する必要があります。 各フィールドはカンマ(,)で区切る必要があります。 エクスポート形式として csv を使用する場合、これは必須のクエリ パラメータです。

  4. 現在の 実行ステータス は INITIAL です。 これは、タスクがバッチエンジンに送信されたことを示します。 データをダウンロードするには、これが 完了 になるまで待つ必要があります。 コマンドラインで ExportTask_GET_ById.sh スクリプトを実行し、 1234 をエクスポートタスクの ID に置き換えます。

    ./ExportTask_GET_ById.sh 1234
    
    {
       "className" : "com.liferay.headless.admin.user.dto.v1_0.Account",
       "contentType" : "JSON",
       "endTime" : "2022-10-19T14:13:58Z"、
       "errorMessage" : ""、
       "executeStatus" : "完了"、
       "externalReferenceCode" : "6c5286a2-aa28-175b-041e-eacca4a54d3b"、
       "id" : 1234、
       "processedItemsCount" : 8,
       "startTime" : "2022-10-19T14:13:58Z",
       "totalItemsCount" : 8
    }
    

    の実行ステータス が 完了の場合、エクスポートされたデータをダウンロードできます。 そうでない場合は、コマンドを再度実行して、タスクの実行が完了したことを確認してください。 executeStatus に FAILEDと表示されている場合、 errorMessage フィールドを確認して、何が問題だったのかを理解してください。

  5. executeStatus が COMPLETEDになったら、 ExportTaskContent_GET_ById.sh スクリプトを実行し、 1234 をエクスポート タスクの ID に置き換えることで、エクスポートされたデータをダウンロードできます。

    ./ExportTaskContent_GET_ById.sh 1234
    

    これにより、エクスポートされたデータが現在のディレクトリに .zip ファイルとしてダウンロードされます。 データを抽出して、適切なアプリケーションを使用して表示してください。

  6. Javaクライアントを使用してRESTサービスを呼び出すこともできます。 curl フォルダから java フォルダに移動します。 ソースファイルをコンパイルします。

    javac -classpath .:* *.java
    
  7. ExportTask_POST_ToInstance クラスを実行します。 を に置き換えて、クラスの完全修飾名を指定してください。

    java -classpath .:* -DclassName=able ExportTask_POST_ToInstance
    

    例えば、 アカウント のデータをエクスポートします。

    java -classpath .:* -DclassName=com.liferay.headless.admin.user.dto.v1_0.Account ExportTask_POST_ToInstance
    

    JSONレスポンスからエクスポートタスクの ID に注目してください。

  8. 以下のコマンドで ExportTask_GET_ById クラスを実行します。 1234 をエクスポートタスクの ID に置き換えてください。

    java -classpath .:* -DexportTaskId=1234 ExportTask_GET_ById
    
  9. executeStatus に COMPLETEDが表示されたら、 ExportTaskContent_GET_ById クラスを実行してデータをダウンロードできます。 1234 をエクスポートタスクの ID に置き換えてください。

    java -classpath .:* -DexportTaskId=1234 ExportTaskContent_GET_ById
    

cURLコマンドを調べてみましょう

ExportTask_POST_ToInstance.sh スクリプトは、cURL コマンドを使用して REST サービスを呼び出します。

curl \
	"http://localhost:8080/o/headless-batch-engine/v1.0/export-task/${1}/${2}" \
	--header "Content-Type: application/json" \
	--request "POST" \
	--user "test@liferay.com:learn"

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

引数説明
-H "Content-Type: application/json"リクエストボディのフォーマットがJSONであることを示します。
-X POST指定されたエンドポイントで起動するHTTPメソッド
"http://localhost:8080/o/headless-batch-engine/v1.0/export-task/${1}/${2}"RESTサービスのエンドポイント
-u "test@liferay.com:learn"基本的な認証情報
注記

ここでは、デモンストレーション目的で基本認証を使用しています。 本番環境では、 OAuth2 を介してユーザーを認証する必要があります。 OAuth2 を使用する React アプリケーションの例については、 OAuth2 を使用してユーザーを認証する を参照してください。

Javaクラスを調べます

ExportTask_POST_ToInstance.java クラスは、 ExportTaskResource サービスを呼び出すことでデータをエクスポートします。

public static void main(String[] args) throws Exception {
	ExportTaskResource.Builder builder = ExportTaskResource.builder();

	ExportTaskResource exportTaskResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	ExportTask exportTask = exportTaskResource.postExportTask(
		String.valueOf(System.getProperty("className")), "json", null, null,
		null, "");

	System.out.println(exportTask);
}

このクラスは、次の3行のコードのみを使用してRESTサービスを呼び出します。

行(省略形)説明
ExportTaskResource.Builder builder = ...ExportTaskResource サービスインスタンスを生成するための Builder を取得します。
ExportTaskResource exportTaskResource = builder.authentication(...).build();基本認証を指定し、 ExportTaskResource サービスインスタンスを生成します。
exportTaskResource.postExportTask(...);exportTaskResource.postExportTask メソッドを呼び出し、post にデータを渡します。

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

注記

main メソッドのコメントは、クラスを実行する方法を示しています。

他の例の Java クラスはこれに似ていますが、異なる ExportTaskResource メソッドを呼び出します。

重要

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

以下は、cURLとJavaを使用して他のBatch EngineエクスポートRESTサービスを呼び出す例です。

ExportTaskのステータスを取得する

エクスポートタスクのステータスは、以下のcURLコマンドまたはJavaコマンドを実行することで取得できます。 1234 をエクスポートタスクの ID に置き換えてください。

ExportTask_GET_ById.sh

コマンド:

./ExportTask_GET_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-batch-engine/v1.0/export-task/${1}" \
	--user "test@liferay.com:learn"

ExportTask_GET_ById.java

ExportTask_GET_ById クラスを実行します。 1234 をエクスポートタスクの ID に置き換えてください。

コマンド:

java -classpath .:* -DexportTaskId=1234 ExportTask_GET_ById

コード:

public static void main(String[] args) throws Exception {
	ExportTaskResource.Builder builder = ExportTaskResource.builder();

	ExportTaskResource exportTaskResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	System.out.println(
		exportTaskResource.getExportTask(
			Long.valueOf(System.getProperty("exportTaskId"))));
}

サイトからデータをエクスポートする

以下のcURLコマンドまたはJavaコマンドを実行することで、サイトからデータをエクスポートできます。 以下の例は、サイトからブログ記事をエクスポートするものです。 サイトの ID を見つけて、 1234 をそれに置き換えます。 別のエンティティを使用する場合は、cURLスクリプト内の完全修飾クラス名パラメータも更新する必要があります。

注記

Liferay DXP 2025.Q3以降では、サイトIDの代わりにサイトのキー(デフォルト言語でのサイト名)または 外部参照コード を使用することもできます。

ExportTask_POST_ToSite.sh

コマンド:

./ExportTask_POST_ToSite.sh com.liferay.headless.delivery.dto.v1_0.BlogPosting json 1234

コード:

curl \
	"http://localhost:8080/o/headless-batch-engine/v1.0/export-task/${1}/${2}?siteId=${3}" \
	--header "Content-Type: application/json" \
	--request "POST" \
	--user "test@liferay.com:learn"

ExportTask_POST_ToSite.java

ExportTask_POST_ToSite クラスを実行します。 1234 をサイトの ID に、 able をエクスポートしたいクラスの完全修飾名に置き換えてください。

java -classpath .:* -DsiteId=1234 -DclassName=able ExportTask_POST_ToSite

例えば、 BlogPosting のデータをエクスポートします。

java -classpath .:* -DsiteId=1234 -DclassName=com.liferay.headless.delivery.dto.v1_0.BlogPosting ExportTask_POST_ToSite

コード:

public static void main(String[] args) throws Exception {
	ExportTaskResource.Builder builder = ExportTaskResource.builder();

	ExportTaskResource exportTaskResource = builder.authentication(
		"test@liferay.com", "learn"
	).parameter(
		"siteId", String.valueOf(System.getProperty("siteId"))
	).build();

	ExportTask exportTask = exportTaskResource.postExportTask(
		String.valueOf(System.getProperty("className")), "json", null, null,
		null, "");

	System.out.println(exportTask);
}
注記

2 番目のパラメータは json であり、エクスポートされたデータの出力形式を示します。 ここでは、 jsonl と csv も使用できます。 CSVを使用する場合は、エクスポートするフィールドをカンマ区切りの文字列として指定し、それを exportTaskResource.postExportTask() メソッドの5番目のパラメータとして渡すことが必須です。

JSONレスポンスには、新しく作成されたエクスポートタスクの情報が表示されます。 id に注目して、その 実行ステータス を追跡してください。 完了したら、エクスポートタスク ID を使用して ExportTaskContent_GET_ById.[java|sh] を実行してデータをダウンロードできます。

データエクスポートのフィルタリング

バッチエクスポートのデータをフィルタリングするには、URL の末尾に検索語句とともに フィルタ パラメータを含めます。

例えば、このバッチコマンドは、タイトル Able でフィルタリングされたブログ投稿をエクスポートします (クエリ headline eq 'Able' を使用)。

curl \
     "http://localhost:8080/o/headless-batch-engine/v1.0/export-task/com.liferay.headless.delivery.dto.v1_0.BlogPosting/json?filter=headline%20eq%20%27Able%27" \
     --header "Content-Type: application/json" \
     --request "POST" \
     --user "test@liferay.com:learn"
注記

カスタムオブジェクトをフィルター付きでエクスポートするには、Liferay DXP 2025.Q1+/Portal GA132+が必要です。 カスタムオブジェクトを指定するには、 フィルター パラメーターと taskItemDelegateName パラメーターの両方を含めることを忘れないでください。

カスタムオブジェクトのエクスポート

カスタムオブジェクトエントリをエクスポートするには、URLに ObjectEntry クラス名を指定し、クエリパラメータ taskItemDelegateName にオブジェクト名を渡す必要があります。 例えば、このコマンドはインスタンススコープの Ableのエントリをエクスポートします。

curl \
     "http://localhost:8080/o/headless-batch-engine/v1.0/export-task/com.liferay.object.rest.dto.v1_0.ObjectEntry/json?taskItemDelegateName=C_Able" \
     --header "Content-Type: application/json" \
     --request "POST" \
     --user "test@liferay.com:learn"

権限付きでオブジェクトをエクスポートする

Liferay DXP 2025.Q1+/Portal GA132+

カスタムオブジェクト(および変更可能なシステムオブジェクト)は、 権限 フィールドで割り当てられた権限のリストとともにエクスポートできます。 各オブジェクトとともに権限をエクスポートすることを指示するには、URL のオプションの batchNestedFields パラメータに値 permissions を追加します。

エクスポートされる各オブジェクトの権限は、次のような JSON 文字列で指定されます (デフォルト):

{
   "actionIds":
      ["DELETE","PERMISSIONS","UPDATE","VIEW"],
      "roleName": "Owner"
}

例えば、このコマンドは batchNestedFields パラメーターを使用して、インスタンススコープの Able オブジェクトのエントリとその権限をエクスポートします。

curl \
    "http://localhost:8080/o/headless-batch-engine/v1.0/export-task/com.liferay.object.rest.dto.v1_0.ObjectEntry/json?taskItemDelegateName=C_Able&batchNestedFields=permissions" \
    --header "Content-Type: application/json" \
    --request "POST" \
    --user "test@liferay.com:learn"

その後、ダウンロードしたデータもインポートすることができ、インポートされたオブジェクト・エントリーは割り当てられたパーミッションを維持します。

警告

権限付きでエクスポートされたオブジェクトエントリをインポートする場合、ターゲットインスタンスにそれぞれのエントリに対して同じロールが含まれていないと、インポート時にエラーが発生します。

エクスポートされたデータのコンテンツを取得する

エクスポートされたデータは、以下のcURLコマンドとJavaコマンドを使用してダウンロードできます。 1234 をエクスポートタスクの ID に置き換えてください。 その後、現在のディレクトリに .zip ファイルとしてダウンロードされます。

ExportTaskContent_GET_ById.sh

コマンド:

./ExportTaskContent_GET_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-batch-engine/v1.0/export-task/${1}/content" \
	--output file.zip \
	--user "test@liferay.com:learn"

ExportTaskContent_GET_ById.java

コマンド

java -classpath .:* -DexportTaskId=1234 ExportTaskContent_GET_ById

コード:

public static void main(String[] args) throws Exception {
	ExportTaskResource.Builder builder = ExportTaskResource.builder();

	ExportTaskResource exportTaskResource = builder.authentication(
		"test@liferay.com", "learn"
	).build();

	HttpInvoker.HttpResponse httpResponse =
		exportTaskResource.getExportTaskContentHttpResponse(
			Long.valueOf(System.getProperty("exportTaskId")));

	try (FileOutputStream fileOutputStream = new FileOutputStream(
			"file.zip")) {

		fileOutputStream.write(httpResponse.getBinaryContent());
	}
}

API Explorer には、すべての Headless Batch Engine サービスとスキーマが一覧表示され、各サービスを試すためのインターフェースがあります。