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

ワークフロー定義リンクAPIの基本

Liferay DXP 2025.Q1+/ポータル GA132+

Liferay UI または Liferay の REST API を使用してワークフロー定義リンクを管理できます。 Liferay では、コントロールパネル → プロセスビルダー → 構成アプリケーションがインスタンス全体の特定のアセットタイプへのワークフロー定義リンクを構成し、サイト管理 → 構成 → ワークフローアプリケーションがサイトスコープでリンクを構成します。 バッチ API を使用すると、これらの構成を 1 つの環境から エクスポート し、別の環境に インポート して、新しい環境でワークフローとアセットのリンクを保持することができます。

ワークフロー定義をサイトまたはインスタンス スコープのアセットにリンクできます。

ワークフロー定義リンクを作成および管理するには、これらのサービスを呼び出します。

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

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

  1. ワークフロー定義リンク API の基礎をダウンロードして解凍します。

    	curl https://resources.learn.liferay.com/examples/liferay-z8b3.zip -O
    
    	unzip liferay-z8b3.zip
    
  2. ワークフロー定義リンクを投稿するには、ワークフロー定義の外部参照コード (ERC) が必要です。 システム内のワークフロー定義を取得します。

    curl -X 'GET' \
        'http://localhost:8080/o/headless-admin-workflow/v1.0/workflow-definitions' \
        --user 'test@liferay.com:learn'
    

    応答から単一承認者定義の ERC をコピーします。

  3. JournalArticle モデル (つまり、Web コンテンツ記事) を単一承認ワークフローにリンクするには、cURL スクリプトを呼び出して新しい WorkflowDefinitionLinkを投稿し、単一承認者の ERC をパラメーターとして渡します。

    	./WorkflowDefinitionLinks_POST_ToInstance.sh [workflow-definiton-erc]
    
curl \
    "http://localhost:8080/o/headless-admin-workflow/v1.0/workflow-definitions/by-external-reference-code/4d5690f0-9176-98be-2957-62df1f8e2b71/workflow-definition-links" \
    --data-raw '
        {
          "className": "com.liferay.journal.model.JournalArticle",
          "groupId": 0
        }' \
    --header "Content-Type: application/json" \
    --request "POST" \
    --user "test@liferay.com:learn"
{
  "className": "com.liferay.journal.model.JournalArticle",
  "externalReferenceCode": "eaf0fc24-4922-71e2-d555-24806bf338bb",
  "groupExternalReferenceCode": "L_GUEST",
  "groupId": 20117,
  "workflowDefinitionName": "Single Approver",
  "workflowDefinitionVersion": 1
}

JSON 応答には、新しいワークフロー定義リンクが追加されたことが示されています。

{
  "actions" : { },
  "facets" : [ ],
  "items" : [ {
    "className" : "com.liferay.journal.model.JournalArticle",
    "externalReferenceCode" : "e6a75adc-4d47-2d72-797e-94931d754ed7",
    "groupExternalReferenceCode" : "",
    "groupId" : 0,
    "id" : 34149,
    "workflowDefinitionName" : "Single Approver",
    "workflowDefinitionVersion" : 1
  } ],
  "lastPage" : 1,
  "page" : 1,
  "pageSize" : 20,
  "totalCount" : 2
}
	```

1. Open the *Global Menu* and navigate to *Applications* → *Process Builder*. Go to the second page and see that the web content article asset is linked to the single approver workflow definition.

![Web content articles are linked with the single approver workflow definition.](./workflow-definition-link-api-basics/images/02.png)

1. The REST service can also be called using the Java client. Navigate out of the `curl` folder and into the `java` folder. Compile the source files:

	```bash
	javac -classpath .:* *.java
	```

1. Run the `WorkflowDefinitionLinks_POST_ToInstance.java` class:

!!! important
    If you're using an older version of Liferay on Java 8, remove `--add-opens java.base/java.net=ALL-UNNAMED` in the subsequent sections.

## Examine the cURL Command

The `WorkflowDefinitionLinks_POST_ToInstance.sh` script calls the REST service with a cURL command.

```bash
curl \
	"http://localhost:8080/o/headless-admin-workflow/v1.0/workflow-definitions/by-external-reference-code/${1}/workflow-definition-links" \
	--data-raw '
		{
			"className": "com.liferay.journal.model.JournalArticle",
			"groupId": 0
		}' \
	--header "Content-Type: application/json" \
	--request "POST" \
	--user "test@liferay.com:learn"

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

引数説明
--header "Content-Type: application/json"リクエストボディのフォーマットがJSONであることを示します。
--request "POST"指定されたエンドポイントで起動するHTTPメソッド
http://localhost:8080/o/headless_admin_change_this/v1.0/workflow-definitionsRESTサービスのエンドポイント
--data-raw '{ add_data_here }お客様が掲載を希望するデータ
--user "test@liferay.com:learn"基本的な認証情報

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

他のcURLコマンドも同様のJSON引数を使用しています。

Javaクラスを調べる

WorkflowDefinitionLinks_POST_ToInstance.java クラスは、 WorkflowDefinitionLinkResource サービスを呼び出してワークフロー定義リンクを追加します。

	WorkflowDefinitionLink workflowDefinitionLink =
		workflowDefinitionLinkResource.
			postWorkflowDefinitionByExternalReferenceCodeWorkflowDefinitionLink(

このクラスは、わずか3行のコードでRESTサービスを呼び出します。

行(省略形)説明
WorkflowDefinitionLinkResource.Builder builder = ...Builder を取得して、 WorkflowDefinitionLinkResource サービス インスタンスを生成します。
WorkflowDefinitionLinkResource workflowdefinitionlinkResource = builder.authentication(...).build();基本認証を指定し、 WorkflowDefinitionLinkResource サービス インスタンスを生成します。
WorkflowDefinitionLink workflowDefinitionLink = workflowDefinitionLinkResource.postWorkflowDefinitionByExternalReferenceCodeWorkflowDefinitionLink(...);workflowDefinitionLinkResource.postWorkflowDefinitionByExternalReferenceCodeWorkflowDefinitionLink メソッドを呼び出し、データを post に渡します。

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

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

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

重要

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

以下は、cURL と Java を使用して他の WorkflowDefinitionLink REST サービスを呼び出す例です。

ワークフロー定義のワークフロー定義リンクを一覧表示できます。 ワークフロー定義の ERC を次の cURL または Java コマンドにパラメータとして渡します。

コマンド:

./WorkflowDefinitionLinks_GET_FromWorkflowDefinition.sh [workflow-definition-erc]

コード:

curl \
	"http://localhost:8080/o/headless-admin-workflow/v1.0/workflow-definitions/by-external-reference-code/${1}/workflow-definition-links" \
	--header "Accept: application/json" \
	--user "test@liferay.com:learn"

コマンド:

java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DworkflowDefinitionExternalReferenceCode=[workflow-definition-erc] WorkflowDefinitionLinks_GET_FromWorkflowDefinition

コード:

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

	WorkflowDefinitionLinkResource workflowDefinitionLinkResource =
		builder.authentication(
			"test@liferay.com", "learn"
		).build();

	Page<WorkflowDefinitionLink> workflowDefinitionLink =
		workflowDefinitionLinkResource.
			getWorkflowDefinitionByExternalReferenceCodeWorkflowDefinitionLinksPage(
				System.getProperty(
					"workflowDefinitionExternalReferenceCode"),
				Pagination.of(1, 2));

	System.out.println(workflowDefinitionLink);
}

}

インスタンスの WorkflowDefinitionLink オブジェクトは JSON 形式で表示されます。

次の cURL および Java コマンドを使用して、既存のワークフロー定義リンクを完全に上書きします。 注意: [外部参照コード] をワークフロー定義リンクの ERC に置き換えてください。

コマンド:

./WorkflowDefinitionLinks_PUT_ByExternalReferenceCode.sh [external-reference-code]

コード:

curl \
	"http://localhost:8080/o/headless-admin-workflow/v1.0/workflow-definition-links/by-external-reference-code/${1}" \
	--data-raw '
		{
			"className": "com.liferay.blogs.model.BlogsEntry",
			"groupId": 0,
			"workflowDefinitionName": "Single Approver",
			"workflowDefinitionVersion": 1
		}' \
	--header "Content-Type: application/json" \
	--request "PUT" \
	--user "test@liferay.com:learn"

コマンド:

java --add-opens java.base/java.net=ALL-UNNAMED -classpath .:* -DworkflowDefinitionLinkId=[external-reference-code] WorkflowDefinitionLinks_PUT_ByExternalReferenceCode

コード:

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

	WorkflowDefinitionLinkResource workflowDefinitionLinkResource =
		builder.authentication(
			"test@liferay.com", "learn"
		).build();

	WorkflowDefinitionLink workflowDefinitionLink =
		workflowDefinitionLinkResource.
			putWorkflowDefinitionLinkByExternalReferenceCode(
				System.getProperty(
					"workflowDefinitionLinkExternalReferenceCode"),
				new WorkflowDefinitionLink() {
					{
						className = "com.liferay.blogs.model.BlogsEntry";
						groupId = 0L;
						workflowDefinitionName = "Single Approver";
						workflowDefinitionVersion = 1;
					}
				});

	System.out.println(workflowDefinitionLink);
}

}

API エクスプローラー には、すべての WorkflowDefinitionLink サービスとスキーマが表示され、各サービスを試すためのインターフェースがあります。