1.3.1 ワークフローの特定のステップに対応するアクティビティの担当者を変更する

(1)ワークフローのコンテキストIDを取得する

<% ctx().st2.action_execution_id %>で取得したワークフローのExecution IDを使用して、実行中のワークフローのコンテキストIDを取得します。API実行例を以下に示します。

<実行例> api/v1/practice-contexts

# curl -XGET "Ops IのURL/api/v1/practice-contexts?filterBy=executionId%3Aeq%3AワークフローのExecution ID" ¥
-H "X-OpsI-Token: Ops Iトークン"

コンテキストIDはAPIのレスポンスに含まれる「id」から取得できます。詳細は「標準提供API(v1)」のAPIの詳細「GET /practice-contexts」のレスポンスの詳細「dtos.ContextDTO」を参照してください。

※詳細についてはStackStorm公式ページを参照してください。
https://docs.stackstorm.com/3.8/orquesta/stackstorm.html#stackstorm-context


(2)ワークフローの詳細情報を取得する

コンテキストIDを使ってワークフローの詳細情報を取得し親のscheduleオブジェクトのIDを取得します。API実行例を以下に示します。

<実行例> api/v1/practice-contexts/{id}

# curl -XGET "Ops IのURL/api/v1/practice-contexts/コンテキストID" ¥
-H "X-OpsI-Token: Ops Iトークン"

親のscheduleオブジェクトのIDはAPIのレスポンスに含まれる「schedule」から取得できます。詳細は「標準提供API(v1)」のAPIの詳細「GET /practice-contexts/{id}」のレスポンスの詳細「dtos.ContextDTO」を参照してください。

(3)スケジュールの情報を取得する

親のscheduleオブジェクトのIDを使ってスケジュールの詳細情報を取得します。
親のscheduleオブジェクトはワークフローにひもづいたスケジュールで、親アクティビティと呼ばれるものです。
スケジュールの詳細情報には、各ステップのアクティビティに対応する子スケジュールの情報も含まれます。担当者を更新したいステップに対応する子スケジュールを特定し、IDを取得します。API実行例を以下に示します。

<実行例> /api/v1/schedules/{id}

# curl -XGET "Ops IのURL/api/v1/schedules/親のscheduleオブジェクトのID" ¥
-H "X-OpsI-Token: Ops Iトークン"

親のscheduleオブジェクトの詳細に含まれる、更新対象のスケジュールの詳細はAPIのレスポンスに含まれる「children」で取得できます。
担当者を更新したいステップを特定するには、レスポンスの「children」の配下にある「dtos.ChildSchedule」の「activity」が更新対象のアクティビティ名になっていることを確認してください。特定したステップの「dtos.ChildSchedule」の「id」が更新対象のscheduleオブジェクトのIDです。詳細は「標準提供API(v1)」のAPIの詳細「GET /schedules/{id}」のレスポンスの詳細「dtos.ScheduleDTO」、「dtos.ChildSchedule」を参照してください。

(4)スケジュールの情報からワークフローの担当者を変更する

変更対象のscheduleオブジェクトのIDを使って、変更対象スケジュールの担当者フィールドにユーザーIDをセットして、アクティビティの担当者を変更します。API実行例を以下に示します。

<実行例> api/v1/schedules/{id}

# curl -XPUT "Ops IのURL/api/v1/schedules/更新対象のscheduleオブジェクトのID" ¥
-H "X-OpsI-Token: Ops Iトークン" ¥
-H "Content-Type: application/json" -d @sample.json

ここでAPIのリクエストボディのdtos.ScheduleDTOの「assignedTo」(変更対象スケジュールの担当者フィールド)に、ユーザーIDを指定してください。詳細は「標準提供API(v1)」のAPIの詳細「PUT /schedules/{id}」のリクエストの詳細「dtos.UpdateScheduleDTO」を参照してください。

特定のユーザー名のユーザーIDはGET /api/v1/users APIで取得します。API実行例を以下に示します。

<実行例> api/v1/users

GET /api/v1/users?filterBy=username:like:admin

ユーザーIDはレスポンスに含まれる「id」で取得できます。詳細は「標準提供API(v1)」のAPIの詳細「GET /users」のレスポンスの詳細「dtos.UserDTO」を参照してください。