legacy-knowledge-base
公開されました Jun. 30, 2025

ヘッドレス管理者ワークフローAPIがスクリプトによるタスク割り当てのためにgroovyスクリプトを実行する

written-by

Kanchan Bisht

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text

問題

Environment

  • Liferay DXP 7.4

解決策

  • これは期待された動作である。というのも、前述のエンドポイントへのリクエストを実行するとき、レスポンス内のアクションを取得して、 HATEOASを提供する必要があるからである。そのため、このユーザー(この場合はuser1)に対してそのようなアクションが利用可能かどうかを知るために、タスクの担当者(または担当者候補)を取得する。この場合、この情報を知るためにスクリプトを評価する必要があり、これが5回実行している理由である。

    また、ユーザーがコードを理解したい場合は、 このこのを参照してください。

    さて、以下は多くのログを回避するのに役立つステップである:
    Navigate to Control Panel > System Settings > CONTENT AND DATA > Workflow > Workflow Task Script
    ここでユーザーは、スクリプト化された割り当てによって取得された最初の情報を保存するための有効期限を定義することができます。

追加情報

  • テストのためのステップ:
    1. DXP 7.4 アップデートの開始 86
    2. 新しいユーザー "user1 "を作成し、システム内に2人のユーザー(testとuser1)を持つようにする。
    3. アプリケーションに移動する> ワークフロー> プロセス・ビルダー
    4. 提供された .XMLを追加して、新しいワークフローを追加する。
    <?xml version="1.0"?>
    <workflow-definition
    xmlns="urn:liferay.com:liferay-workflow_7.4.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:liferay.com:liferay-workflow_7.4.0 http://www.liferay.com/dtd/liferay-workflow-definition_7_4_0.xsd"
    >
    <version>17</version>
    <state>
    <name>668db35c-b4b4-4317-bfc9-61305beb094d</name>
    <description>Begin a workflow.</description>
    <metadata>
    <![CDATA[
    {
    "xy": [
    -69,
    87
    ]
    }
    ]]>
    </metadata>
    <initial>true</initial>
    <labels>
    <label language-id="en_US">
    Start
    </label>
    </labels>
    <transitions>
    <transition>
    <labels>
    <label language-id="en_US">
    Transition Label
    </label>
    </labels>
    <name>b261d801-9ee4-4f82-983a-6148137128bd</name>
    <target>6acf1f13-c895-4904-a2e7-9c68e6d9c045</target>
    <default>true</default>
    </transition>
    </transitions>
    </state>
    <state>
    <name>822e1b6b-fec6-4b9e-849c-579b8f5914b4</name>
    <description>Conclude the workflow.</description>
    <metadata>
    <![CDATA[
    {
    "xy": [
    624.1597166683956,
    348.18265251631755
    ],
    "terminal": true
    }
    ]]>
    </metadata>
    <labels>
    <label language-id="en_US">
    End
    </label>
    </labels>
    </state>
    <task>
    <name>6acf1f13-c895-4904-a2e7-9c68e6d9c045</name>
    <description>Ask a user to work on the item.</description>
    <metadata>
    <![CDATA[
    {
    "xy": [
    332.903564453125,
    116.55914306640625
    ]
    }
    ]]>
    </metadata>
    <assignments>
    <scripted-assignment>
    <script>
    <![CDATA[
    import com.liferay.portal.kernel.workflow.WorkflowConstants;
    import com.liferay.portal.kernel.util.GetterUtil;
    import com.liferay.portal.kernel.service.UserLocalServiceUtil;
    import com.liferay.portal.kernel.model.User;
    import com.liferay.portal.kernel.log.Log;
    import com.liferay.portal.kernel.log.LogFactoryUtil;
    Log LOGGER = LogFactoryUtil.getLog(User.class);
    long companyId = GetterUtil.getLong((String) workflowContext.get(WorkflowConstants.CONTEXT_COMPANY_ID));
    LOGGER.info("added-task");
    println("user");
    User l1User = UserLocalServiceUtil.getUserByScreenName(companyId, "user1");
    users = new ArrayList<>();
    LOGGER.info("added-task011");
    users.add(l1User);
    ]]>
    </script>
    <script-language>groovy</script-language>
    </scripted-assignment>
    </assignments>
    <labels>
    <label language-id="en_US">
    Task
    </label>
    </labels>
    <transitions>
    <transition>
    <labels>
    <label language-id="en_US">
    Transition Label
    </label>
    </labels>
    <name>fe0273df-7cc7-4bbc-a8fd-40037a6db5bd</name>
    <target>822e1b6b-fec6-4b9e-849c-579b8f5914b4</target>
    <default>true</default>
    </transition>
    </transitions>
    </task>
    </workflow-definition>
    1. 情報 レベルでカテゴリーを追加: com.liferay.portal.kernel.model.User user1 に割り当てられたワークフロー時のロガーを取得する。
    2. 次に、コントロールパネル> 「オブジェクト」に移動し、「テキスト」タイプのカスタムフィールドを1つ持つオブジェクトを1つ作成する。
    3. Applications> Workflow> Process Builder> Workflows>Configuration に移動し、作成されたオブジェクトに対してこの作成されたワークフローを有効にします。
    4. ページに移動し、オブジェクト・ウィジェットを追加して、この動作をテストする。
    5. ここでオブジェクトが作成されると、保留状態になり、コンソールでロガーを確認できる。

    アウトカム: ワークフローがトリガーされると、コンソールにハードコードされたメッセージとログが表示されます。

    1. localhost:8080/o/api にアクセスし、ヘッドレスAPIを取得する: http://localhost:8080/o/headless-admin-workflow/v1.0/workflow-tasks/assigned-to-me
    2. ユーザ名: user1@gmail.com, パスワード: test (私のローカルと同じ)
    3. リクエスト(Get: http://localhost:8080/o/headless-admin-workflow/v1.0/workflow-tasks/assigned-to-me)を送信すると、200ステータスのレスポンスが返ってきます。

    成果: このAPIを実行するたびに、コンソールに複数のロガーが表示される。あるいは、このタスクがすでにuser1に割り当てられているにもかかわらず、呼び出しのたびにコンソールにハードコードされたメッセージが表示される。

did-this-article-resolve-your-issue

legacy-knowledge-base