Studio
2023.10
バナーの背景画像
Studio ガイド
最終更新日 2024年4月26日

はじめに

Coded automations allow you to create automations using code instead of drag-and-drop activities, allowing collaborative work on complex projects. In coded workflows and test cases, you can use UiPath® services (equal to activity packages), APIs (similar to activities), external .NET NuGet packages, and your custom C# classes in UiPath Studio. This makes it easy to integrate with external systems, databases, APIs, and other services.

コード化されたワークフローは標準ワークフローと同じように動作します。つまり、[ワークフロー ファイルを呼び出し] アクティビティを使用して標準の UiPath ワークフローから呼び出すことも、その逆も可能です。

さらに、コードで定義された型 (列挙型など) は、標準の UiPath ワークフローの入力として使用できます。

コード化されたオートメーションには、以下の 3 種類があります。

  • コード化されたワークフロー – コードを使用してワークフローを設計するために使用します。
  • コード化されたテスト ケース – テスト ケースの設計に使用されます。
  • コード ソース ファイル – 他の種類のコード化されたファイルで後から呼び出すことのできるコードを作成するために使用します。


コード化されたオートメーションを使用する

プロジェクトでコード化されたオートメーションを作成するために、通常、UiPath.CodedWorkflows パッケージがあらかじめインストールされています。パッケージには、CodedWorkflowBase 基本クラスと CodedWorkflow 部分クラスが付属しています。

パッケージは、次の場合に事前インストールされます。

  • v23.10 以降の System.ActivitiesTesting.ActivitiesUIAutomation.Activities、またはコード化されたワークフローがサポートされているその他のアクティビティ パッケージを使用して、新しいプロジェクトを作成する場合
  • プロジェクトで、コード化されたワークフローコード化されたテスト ケース、または コード ソース ファイルを新規作成する場合

指定したシナリオでコード化されたオートメーションを使用できない場合は、[パッケージを管理] メニューからパッケージをダウンロードします。

メリット

コード化されたオートメーションを使用するメリットをいくつか以下に示します。

  1. 生産性の向上 – コーディングやスクリプティングに精通している場合は、そのスキルを活かして生産性を向上させることができます。慣れ親しんだコーディング環境で作業することで、より効率的なオートメーションを開発できます。
  2. 複雑さの管理 – コード化されたオートメーションは、複雑なオートメーション シナリオを管理するための柔軟なソリューションを提供します。コードを使用して、カスタム ロジックの実装、例外の管理、および再利用可能な関数の作成が可能です。
  3. ハイブリッド オートメーション – コード化されたオートメーションは、ローコードのオートメーションと同様に使用できます。これにより、2 つのアプローチがシームレスに統合され、柔軟なオートメーション ソリューションを作成できるようになります。
  4. パフォーマンスの向上 – コード化されたオートメーションを使用すると、オートメーション ワークフローを最適化してパフォーマンスを向上させることができます。コードを使用することで、特定のアルゴリズムを実装してオートメーションの実行を高速化できます。
  5. 読みやすさ – コード化されたオートメーションを使用すると、構造化されたコードを作成できるため、コードが読みやすくなります。コードを整理して文書化すると、管理や他の共同作業者への共有がしやすくなります。

構造

コード化されたオートメーションは、名前空間、ヘルパー クラス、およびエントリ ポイントのメソッドを使用した構造化されたデザインを特徴とします。コード化されたオートメーションのフレームワークを使用すると、C# プログラミング言語を使用してオートメーションを記述できます。

コード化されたオートメーションの詳細な構造は、以下のセクションに記載されています。

名前空間

コード化されたオートメーションを作成すると、Studio プロジェクトの名前を使用して名前空間が自動的に生成されます。たとえば、Studio プロジェクトの名前が「My project」である場合、コード化されたすべてのオートメーションの名前空間は「Myproject」になります。

また、Studio プロジェクトのフォルダー内にコード化されたオートメーションを作成した場合、名前空間はプロジェクトの名前とフォルダーの名前の組み合わせになります。たとえば、Studio プロジェクトの名前が「My project」でフォルダーの名前が「place」である場合、名前空間は「Myproject.place」になります。

基本クラス

コード化されたワークフローコード化されたテスト ケースのオートメーションはどちらも、UiPath.CodedWorkflows パッケージの CodedWorkflow 部分クラスを使用します。このクラスは、プロジェクトにインストールされているアクティビティ パッケージに基づいて、サービスに必要なインターフェイス (アクティビティ パッケージと同じ) へのアクセス権をオートメーションに付与します。
注: UiPath.System.Activities 23.10 以降などの、コード化されたオートメーションをサポートするアクティビティ パッケージをインポートするときには、UiPath.CodedWorkflows パッケージが自動的に含まれます。

CodedWorkflow

コード化されたオートメーションは、部分クラス CodedWorkflow を継承し、CodedAutomationExample : CodedWorkflow 型のリレーションシップを作成します。つまり、クラス CodedAutomationExample は、クラス CodedWorkflow から属性、メソッド、および機能を継承します。これにより、コード化されたオートメーションの基盤となるクラス CodedWorkflow で定義されている機能にアクセスして利用できるため、オートメーションの動作が構築・カスタマイズしやすくなります。
CodedWorkflow クラスは部分クラスとして宣言され、コード ソース ファイルで同じ部分クラス CodedWorkflow を定義することで機能を拡張できます。これにより、新しいフィールドやメソッドを追加して、コード化されたオートメーションの動作をさらにカスタマイズできます。この方法を使用すると、コード化されたテスト ケースのためのBefore インターフェイスと After インターフェイスを実装できます。
さらに、CodedWorkflow 部分クラスは CodedWorkflowBase クラスを継承します。


CodedWorkflowBase

CodedWorkflowBase クラスは、コード化されたオートメーションが継承する組み込み機能を保持します。このクラスには、ワークフロー インスタンスの管理、ランタイム アクセス、サービス コンテナーの処理、および環境コンテキストの構成を行うためのメソッドと特定のプロパティが含まれています。CodedWorkflowBase クラスには、ユーザー自身がカスタマイズできるログ用メソッドも別途用意されています。
注: [コード エディターの設定] で、[ソースの逆コンパイルを有効化] を選択して CodedWorkflowBase クラスを表示します。
以下の表の CodedWorkflowBase メソッドの説明を確認してください。
メソッド説明
serviceContainer(ICodedWorkflowServiceContainer)現在のコード化されたワークフローに固有の依存関係インジェクション コンテナーにアクセスできるようにします。このコンテナーは、サービス コンテナーと呼ばれ、コンテナー内に登録されているサービスのインスタンスを取得できるようにします。
GetRunningJobInformation()コード化されたワークフローのコンテキスト内で現在実行中のジョブに関する情報を取得します。このメソッドは、ジョブのステータス、進行状況、パラメーター、およびタイムスタンプに関する情報を保持する executorRuntime オブジェクトの RunningJobInformation プロパティにアクセスします。
Log(string message, LogLevel level = LogLevel.Info, IDictionary<string, object>additionalLogFields = null)指定した属性を持つログ メッセージにログ フィールドを追加します。
RunWorkflow(string workflowFilePath,IDictionary<string, object> inputArguments = null,TimeSpan? timeout = null, bool isolated = false, InvokeTargetSession targetSession = InvokeTargetSession.Current)特定のワークフロー ランタイムのコンテキスト内でワークフローを実行するための構造を提供します。パラメーターの設定、潜在的な分離の処理、ワークフローの実行開始が可能です。返されるタスクは、実行されたワークフローの結果 (出力および入力/出力引数を含む) を示します。
RunWorkflowAsync(string workflowFilePath,IDictionary<string, object> inputArguments = null, TimeSpan?timeout = null, bool isolated = false, InvokeTargetSession targetSession = InvokeTargetSession.Current)特定のワークフロー ランタイムのコンテキスト内でワークフローを非同期的に実行するための構造を提供します。パラメーターの設定、潜在的な分離の処理、ワークフローの実行開始が可能です。返されるタスクは、実行されたワークフローの結果 (出力および入力/出力引数を含む) を示します。
DelayAsync(TimeSpan time) ] と [ DelayAsync(int delayMs)指定された時間、非同期的に実行を中断します。
Delay(TimeSpan time) ] と [ Delay(int delayMs)指定した期間、実行を中断します。
HttpClient BuildClient(string scope = "Orchestrator", bool force = true)指定されたスコープとアクセス トークンを使用して HTTP クライアントを構築します。
RegisterServices(ICodedWorkflowsServiceLocator serviceLocator)コード化されたワークフローのサービス ロケーターにサービス (アクティビティ パッケージ) を登録します。これは、カスタム サービスを依存関係インジェクション コンテナーに挿入するときにオーバーライドできます。カスタム サービス (コード化されたアクティビティ パッケージ) の作成および使用方法については、こちらをご覧ください。

エントリ ポイント

コード化されたワークフローとコード化されたテスト ケースの両方のエントリ ポイント メソッドの名前は Execute() であり、Workflow または TestCase のいずれかに属性付けされています。メソッドの名前は、Workflow または TestCase のいずれかに属性付けする限り変更できます。
ファイル内で使用できるのは、Coded Workflow クラスを継承する 1 つの Execute() メソッド ([TestCase] または [Workflow]) のみです。

このメソッドでは、入力引数または出力引数を追加できます。これらの引数は、ローコード オートメーションの入力出力、または入力/出力引数に相当します。コード化されたオートメーションでの引数の使用方法については、「入力引数と出力引数を使用する」のチュートリアルをご覧ください。

このエントリ ポイント メソッドは、オートメーションを実行するための開始点として機能します。そのため、コード化されたワークフローやテスト ケースが Execute() メソッドによりエントリ ポイントとして簡単に識別されるようになります。


プロジェクトの対応 OS

コード化されたオートメーションは、Windows プロジェクトとクロスプラットフォーム プロジェクトでのみ使用できます。

サービス

コード化されたオートメーションの設計には、アクティビティ パッケージと同一のサービスを使用できます。たとえば、System.Activities はローコード オートメーションのアクティビティ パッケージであるだけでなく、コード化されたオートメーションのサービスでもあります。アクティビティ パッケージ内のアクティビティと同様に、サービスにもコード化されたオートメーションの作成に使用できる API があります。

コード化されたオートメーション内で使用できるサービスは次のとおりです。

サービスバージョン
System.Activities23.10 以降
UiAutomation.Activities23.10.7 以降
Testing.Activities23.10 以降

コード化されたオートメーションでアクティビティ パッケージを使用するには、次の手順を実行します。

  1. ローコードのオートメーションの場合と同様に、サービスと同一のアクティビティ パッケージをダウンロードします。それにより、コードで使用する API のコレクションが提供されます。
  2. サービス内の API を、サービス.API という形式で呼び出します。たとえば、 GetAsset API を使用する場合は、 system.GetAsset のように指定して呼び出します。
  3. API には、プロパティの代わりにパラメーターがあります。API を呼び出した後、かっこで囲んだ値を指定して、パラメーターを設定できます。たとえば、接続先の Orchestrator インスタンスに Email Address というアセットがある場合、このアセットの名前を String として API に渡すことができます: system.GetAsset("Email Address")
ヒント: コード化されたオートメーション内では、nuget.org フィードからダウンロードできる任意の .NET クラス ライブラリを使用することもできます。

Was this page helpful?

サポートを受ける
RPA について学ぶ - オートメーション コース
UiPath コミュニティ フォーラム
UiPath ロゴ (白)
信頼とセキュリティ
© 2005-2024 UiPath. All rights reserved.