ジョブの実行方法をワークフローの中で判定する方法

:white_question_mark: Question

ジョブの実行をAssistantとOrchestratorのどちらから実行したかを判定する方法を教えてください。

:light_bulb: Answer

以下のような方法が考えられます。

A. Orchestrator APIの /odata/jobs のリクエストからジョブの実行方法を取得する

概要

/odata/jobsのレスポンスに、ジョブの実行方法を示す "SourceType"のフィールドが含まれています。実行中のジョブの情報を上記のエンドポイントから取得し、 "SourceType"の値を参照することでジョブの実行方法を取得します。

ジョブの実行方法によって、当該フィールドの値が下表のようになります。

Assistantから実行 Agent
Orchestratorから手動実行 Manual
タイムトリガーによる実行 Schedule
キュートリガーによる実行 Queue
イベントトリガーによる実行 IntegrationTrigger
APIトリガーによる実行 HttpTrigger

尚、実行方法を取得するジョブの特定のため、『現在のジョブの情報を取得』アクティビティを使用し、ジョブの"Key"の値を取得の上、HTTP要求のフィルタ条件に使用します。

設定手順例

  1. ワークフローに『現在のジョブの情報を取得』アクティビティを配置し、出力変数をjobDataとします。
  2. 『OrchestratorへのHTTP要求』アクティビティを配置します。設定は以下のようにします。
    メソッド:GET
    相対エンドポイント:“/odata/jobs?$filter=Key%20eq%20” + jobData.Key
    JSON応答:jobsResponse
  3. 『JSONを逆シリアル化』アクティビティを配置し、入出力変数を以下のように設定します。
    入力変数:jobsResponse
    出力変数:jobsResponseJobj
  4. 『代入』アクティビティ等を配置し、以下の構文で実行方法を示す値を文字列として取得します。
    jobsResponseJobj(“value”)(0)(“SourceType”).ToString()

前提条件

  • JSONの逆シリアル化のためにUiPath.WebAPI.Activitesパッケージのインストールが必要です。

参考

サンプルのワークフローはこちらです。
GetJobInfo_OC-API.zip (2.7 KB)

B. コード化されたワークフローのGetRunningJobInformationメソッドから取得する

概要

GetRunningJobInformationメソッドを使用してジョブの実行方法を取得します。InitiatedByのフィールドからジョブの実行元の情報を取得できます。

ジョブの実行方法によって、取得した値が下表のようになります。

Studioからの実行 Studio
Assistantからの実行 Assistant
Orchestratorからの実行 Orchestrator

設定手順例

  1. コード化されたワークフロー(GetJobInfo.cs)をプロジェクト(例:GetJobInfo_CodedWF)に追加します。

  2. 以下のような処理を記載します。
    GetJobInfo

using UiPath.CodedWorkflows;
 
namespace GetJobInfo_CodedWF
{
    public class GetJobInfo : CodedWorkflow
    {
        [Workflow]
        public string Execute()
        {
            UiPath.Robot.Activities.Api.IRunningJobInformation Infomation = GetRunningJobInformation();
            return Infomation.InitiatedBy;
        }
    }
}
  1. 呼び出し元のワークフローに『ワークフローファイルを呼び出し』アクティビティを配置し、出力変数としてジョブの実行方法を示す文字列を受け取ります。

前提条件

コード化されたワークフローがUiPath Studio/Robot v23.10以降で実装された機能であるため、ご利用頂くためにはそれ以降のバージョンである必要があります。

参考

サンプルのワークフローはこちらです。
GetJobInfo_CodedWF.zip (2.7 KB)