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

ライブラリに Web サービスを読み込む

Studio では、[サービス エディター] ウィンドウを通じて SOAP あるいは REST Web サービス、または Postman コレクションからアクティビティを直接生成できます。

SOAP および REST Web サービス

指定されたリンクにサービスの定義 (Swagger または WSDL) が含まれている限り、このウィンドウを使用すると、特定の Web サービスのすべてのメソッドまたはエンドポイント (REST または SOAP) を自動的にロードできます。

読み込まれたら、アクティビティを自動的に作成するエンドポイントまたはメソッドを選択します。選択されたすべての項目は、[アクティビティ] パネルの [サービス エディター] ウィンドウで指定した [名前空間] の下に表示されます。

これらのライブラリを .nupkg ファイルとしてパッケージ化し、Orchestrator またはカスタムの場所にパブリッシュできます。その結果、新しく定義したアクティビティを協力する他の開発者と簡単に共有できます。
注: Windows プロジェクトおよびクロスプラットフォーム プロジェクトでは、SOAP Web サービスはサポートされていません。この連携は、Windows - レガシ プロジェクトでのみ使用できます。

サービスを追加する

Web サービスからアクティビティを生成するには、次の手順を行います。

  1. Studio でライブラリを作成します (手順については、「ライブラリについて」ページを参照)。
  2. [デザイナー] タブで [新しいサービス] をクリックするか、[プロジェクト] パネルで [サービス] を右クリックしてから [新しいサービス] をクリックします。[サービス エディター] ウィンドウが表示されます。


  3. Swagger または WSDL リソースへのファイル パスまたはリンクを追加します。[読み込み] をクリックします。Web サービスから定義されたすべてのエンドポイントが [サービス エディター] ウィンドウに読み込まれます。


  4. [操作を検索します] 検索ボックスに必要なメソッドまたは操作を入力します。以下のような結果が表示されます。Swagger の場合、各エンドポイントにおいて、メソッドが色付きで表示されます。[すべて解除] チェックボックスを使用して、すべてのエンドポイントの選択を解除し、読み込みたいエンドポイントを選択します。名前空間は自動生成されます。これは、新しい名前を入力すれば変更できます。
  5. [保存] をクリックします。これで、サービスがプロジェクト ツリーと連携するようになります。


  6. デザイナー パネルで生成したアクティビティを使用するには、[アクティビティ] パネルに移動します。[使用可能] のアクティビティのセクションでサービスの名前空間を検索し、それぞれのアクティビティをパネルにドラッグします。
    注:
    SOAP サービスについては、SOAP クライアントのみを読み込むことを推奨します (HttpGet または HttpPost クライアントは読み込みません)。

    Swagger サービスについては、サービスがサーバーからの応答を逆シリアル化できない場合、Swagger スキーマを調べ、モデル定義に必須のプロパティがあるかどうかを検索することを推奨します。

サービスを編集するには、[プロジェクト] パネルの [サービス] で該当するサービスを右クリックして、[サービスを編集] を選択します。

プロジェクトがソース管理下にある場合、ライブラリの project.json ファイルのみをチェックアウトすると、SOAP や REST Web サービスがロードされた .xaml ファイルで編集サービスオプションが有効化されます。
サービスを追加したり編集したりすると、ライブラリの定義を含む project.json ファイルとサービスドキュメントに反映されます。project.json ファイルに webServices ノードが追加されます。それぞれのサービスは次の要素によって特定されます。


パラメーター

説明

namespace

[サービス エディター] ウィンドウで入力したサービス名です。

serviceDocument

SOAP または Swagger サービスのメタデータを含む .json ファイルへのパスです。このファイルは、サービスの修復時に使用されます。また、プロジェクトの一部としてバージョン管理の対象となります。

webDocumentUri

Swagger または SOAP リソース ([サービス エディター] ウィンドウでサービス作成時に入力) へのファイル パスまたはリンクです。

uniqueReference

サービスのバージョン管理に必要な参照です。

サービスを修復する

dll files generated from SOAP or REST web services are not pushed to source control repositories. Therefore, when checking out libraries that contain services, the projects have unresolved activities in the Designer panel.
これらのアクティビティを修復してサービスの .dll ファイルを再生成するには、[プロジェクト] パネルでサービス ノードを右クリックし、コンテキスト メニューで [サービスを修復] を選択します。


SOAP または REST サービスのメタデータと追加情報は、Studio に読み込まれる各サービスの .json ファイルに格納されます。読み込まれたサービスに関連する .json ファイルがない場合は、サービス ノードに関する [修復サービス] コンテキスト メニューのオプションによって、サービス作成時に入力されたドキュメント記述子へのリンクを使用して欠損している .json ファイルが生成されます。その結果、サービスが最初に生成された際に適用されていたフィルターは、それ以降適用されなくなり、前述のパスまたはリンクにより提供されるすべてのリソースがインポートされます。
一括更新コマンド ライン パラメーター」ページに記載されている UiPath.Studio.CommandLine.exe コマンド ライン ユーザー インターフェイスを使用したライブラリのパブリッシュでは、Web サービスは考慮されていません。
注: SOAP または REST サービスから生成されたアクティビティは、Studio ではローカライズできません。

Web サービスで生成されるアクティビティをループ内で複数回呼び出すには、メイン ライブラリ ファイルから別のワークフローを作成し、その中でサービス メソッドを呼び出します。さらに、メイン ワークフローの[繰り返し (コレクションの各要素)] アクティビティ内で[ワークフロー ファイルを呼び出し] アクティビティを使用して、先ほど作成したワークフローを呼び出します。

Web サービスから生成されたアクティビティについて詳しくは、「Web サービスから生成されたアクティビティ」をご覧ください。

名前空間をインポートする

Studio v2020.4 では、インポートされた Swagger サービスを伴うライブラリという観点で、重大な変更が加えられました。Studio が Swagger サービスからの .json ファイルを解釈する方法が変更されたため、既存のサービスを [サービスを編集] ウィンドウから編集する場合にかぎり、後方互換性の問題が発生します。

以下の例では、Petstore デモ Web サービスを例に、この変更について説明します。

Studio v2020.4 より前では、ライブラリ プロジェクトにサービスを追加した後、コンテキスト メニューの [型の参照…] を使用すると、SwaggerPetstore アセンブリ名に次の名前空間が表示されます。



UiPath.WebClient._ClientNamespace をドリルダウンすると、次の型が表示されます。


つまり、[AddPet] アクティビティを Studio ライブラリの xaml ファイルで使用した場合、それは UiPath.WebClient._ClientNamespace に含まれていたということです。次の抜粋のように、要求の生成には _ClientAddPetRequest 型を使用していました。
xmlns:uw_="clr-namespace:UiPath.WebClient.<em>ClientNamespace;assembly=SwaggerPetstore" 
...
<uw</em>:AddPetActivity BearerToken="{x:Null}" ClientCertificate="{x:Null}" ClientCertificatePassword="{x:Null}" Headers="{x:Null}" OAuth2Token="{x:Null}" Password="{x:Null}" Username="{x:Null}" DisplayName="AddPet" Endpoint="["https://petstore.swagger.io/v2"]" sap:VirtualizedContainerService.HintSize="200,22.4" sap2010:WorkflowViewState.IdRef="AddPetActivity_1" TimeoutMS="30000">
      <uw_:AddPetActivity.Request>
        <uw_:<em>ClientAddPetRequest Body="{x:Null}" />
      </uw</em>:AddPetActivity.Request>
    </uw_:AddPetActivity>
  </Sequence>
</Activity>xmlns:uw_="clr-namespace:UiPath.WebClient.<em>ClientNamespace;assembly=SwaggerPetstore" 
...
<uw</em>:AddPetActivity BearerToken="{x:Null}" ClientCertificate="{x:Null}" ClientCertificatePassword="{x:Null}" Headers="{x:Null}" OAuth2Token="{x:Null}" Password="{x:Null}" Username="{x:Null}" DisplayName="AddPet" Endpoint="["https://petstore.swagger.io/v2"]" sap:VirtualizedContainerService.HintSize="200,22.4" sap2010:WorkflowViewState.IdRef="AddPetActivity_1" TimeoutMS="30000">
      <uw_:AddPetActivity.Request>
        <uw_:<em>ClientAddPetRequest Body="{x:Null}" />
      </uw</em>:AddPetActivity.Request>
    </uw_:AddPetActivity>
  </Sequence>
</Activity>

Studio v2020.4 を使用する場合、同じ Web サービスをインポートすると、次の名前空間が表示されます。



UiPath.WebClient.PetClientNamespace を展開すると、次の型が表示されます。


つまり、[AddPet] アクティビティを v2020.4 で作成した Studio ライブラリの xaml ファイルで使用すると、それは UiPath.WebClient.PetClientNamespace に含まれ、要求の生成には PetClientAddPetRequest 型を使用するということです。これらは、v2020.4 より前のバージョンで作成されたライブラリのものとは異なる名前空間と型です。

以下に、v2020.4 で作成した、そのようなライブラリの抜粋を示します。

xmlns:uwp="clr-namespace:UiPath.WebClient.PetClientNamespace;assembly=SwaggerPetstore"
...
<uwp:AddPetActivity BearerToken="{x:Null}" ClientCertificate="{x:Null}" ClientCertificatePassword="{x:Null}" Headers="{x:Null}" OAuth2Token="{x:Null}" Password="{x:Null}" Username="{x:Null}" DisplayName="AddPet" Endpoint="["https://petstore.swagger.io/v2"]" sap:VirtualizedContainerService.HintSize="200,22.4" sap2010:WorkflowViewState.IdRef="AddPetActivity_1" TimeoutMS="30000">
      <a href="uwp:AddPetActivity.Request">uwp:AddPetActivity.Request</a>
        <uwp:PetClientAddPetRequest Body="{x:Null}" />
      </uwp:AddPetActivity.Request>
    </uwp:AddPetActivity>
  </Sequence>
</Activity>xmlns:uwp="clr-namespace:UiPath.WebClient.PetClientNamespace;assembly=SwaggerPetstore"
...
<uwp:AddPetActivity BearerToken="{x:Null}" ClientCertificate="{x:Null}" ClientCertificatePassword="{x:Null}" Headers="{x:Null}" OAuth2Token="{x:Null}" Password="{x:Null}" Username="{x:Null}" DisplayName="AddPet" Endpoint="["https://petstore.swagger.io/v2"]" sap:VirtualizedContainerService.HintSize="200,22.4" sap2010:WorkflowViewState.IdRef="AddPetActivity_1" TimeoutMS="30000">
      <a href="uwp:AddPetActivity.Request">uwp:AddPetActivity.Request</a>
        <uwp:PetClientAddPetRequest Body="{x:Null}" />
      </uwp:AddPetActivity.Request>
    </uwp:AddPetActivity>
  </Sequence>
</Activity>

Postman コレクション

Postman アプリケーションを使用して、API の定義を作成したり、それらの定義をグループ化してコレクションにしたりできます。これにより、要求をまとめて整理し、連鎖させることができます。Postman では API 要求間でデータを渡すスクリプトがサポートされています。コレクションの作成について詳しくは、Postman のオンライン ドキュメントをご覧ください。

Postman のコレクションが既に存在する場合は、その要求を Studio に読み込んでアクティビティを生成できます。このコレクションのメンテナンスは Postman で行い、変更はすべてワークフローにも反映されます。

Studio は Postman コレクションへのアクセス権限を API キーにより受け取ります。このキーは、[サービス エディター] ウィンドウの [ファイルまたはリンク] フィールドに追加する必要があります。API キーは、Postman のプロファイル設定の [API keys] ページで生成されるアカウント全体のキーであり、コレクションを共有することによって生成される API キーではありません。したがって、要求の変更も Postman のみで行い、Studio では行いません。

Studio はコレクションに定義されたすべての要求を読み込み、リクエストは個別には実行できません。Studio 内のコレクションの編集と修復は、SOAP または REST Web サービスと同じ方法で行います。

Postman コレクションを使用する前提条件

Newman のインストール後は、マシンを再起動することを推奨します。

Postman コレクションを使用する例

下記の例では、ある通貨の価値を get して Studio の [出力] パネルに表示するために、Postman コレクションを使用しています。

この例では、受信したデータを繰り返し処理するテスト スクリプトを作成しました。グローバル変数をスクリプト内で直接宣言していますが、Postman のグローバル変数の設定スニペットも使用できます。詳細は、こちらをご覧ください。



入力引数で通貨 EUR の価値を出力引数に渡しています。これはライブラリの [プロパティ] パネル > [入力] > [コレクション] で確認できます。出力引数も、同じパネルの [出力] セクションに表示されています。


アクティビティの出力引数は、変数にマッピングされ、その値が [出力] パネルに書き込まれます。

変数の戻り値を検証するために、[条件分岐 (if)] アクティビティを使用できます。この例では、値が返されることを検証し、それを [出力] パネルに書き込みました。

Was this page helpful?

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