ワークフロー定義リンク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に変更します。
次に、以下の手順に従います。
-
ワークフロー定義リンク API の基礎をダウンロードして解凍します。
curl https://resources.learn.liferay.com/examples/liferay-z8b3.zip -Ounzip liferay-z8b3.zip -
ワークフロー定義リンクを投稿するには、ワークフロー定義の外部参照コード (ERC) が必要です。 システム内のワークフロー定義を取得します。
curl -X 'GET' \ 'http://localhost:8080/o/headless-admin-workflow/v1.0/workflow-definitions' \ --user 'test@liferay.com:learn'応答から単一承認者定義の ERC をコピーします。
-
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.

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-definitions | RESTサービスのエンドポイント |
--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 コマンドにパラメータとして渡します。
ワークフロー定義リンク_GET_FromWorkflowDefinition.sh
コマンド:
./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"
ワークフロー定義リンク_GET_FromWorkflowDefinition.java
コマンド:
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 に置き換えてください。
ワークフロー定義リンク_PUT_ByExternalReferenceCode.sh
コマンド:
./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"
ワークフロー定義リンク_PUT_ByExternalReferenceCode.java
コマンド:
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 サービスとスキーマが表示され、各サービスを試すためのインターフェースがあります。