はじめに
以前、Integration Serviceを使用して、外部のSaaSをトリガーにしたUiPathのジョブ起動の方法を記事にしました。
今回は、ワークフロー内からIntegration Serviceを使用してみます。
つかうもの
※クラウド環境は2022年5月時点のもの
- UiPath Automation Cloud(Integration Service) Enterprise版
- UiPath Studio 2022.4.1
コネクションを作る
前回と同様です。今回もSalesforceのコネクションを作ります。
アクティビティパックをインストールする
ワークフローからIntegration Serviceを使用するには、専用のアクティビティが必要です。
パッケージ管理から「IntegrationService」で検索すると、SaaS個別にいくつかのアクティビティパックがヒットするので、今回使用するSalesforceのアクティビティ(UiPath.Salesforce.IntegrationService.Activities)をインストールします。
インストールすると以下のようなアクティビティが追加されます。
アクティビティ | 説明 |
---|---|
Delete Record | 特定のレコードを削除します |
Get Record | 特定のレコードを取得します |
Insert Record | レコードを新規作成します |
List All Records | 条件に合致するレコードを全件取得します |
List Records | 条件に合致するレコードを全件取得します(ページ分割します) |
Update Record | 特定のレコードを更新します |
Salesforce Scope | 上記アクティビティはこのアクティビティの中で使用します |
Salesforce以外のアクティビティも基本構成は似た感じです(以下は、Service Nowのアクティビティ)。
アクティビティを使う
インストールしたアクティビティを使ってみます。
Scopeアクティビティ
まずは、SaaS別のアプリケーションスコープアクティビティを配置します。Salesforceの場合は、「Salesforce Scope」アクティビティとなります。
アクティビティの「Configure」ボタンを押すと、コネクションを選択できるダイアログが表示されるので、先ほど作成しておいたコネクションを指定します。
ListRecordsアクティビティ
ListRecordsアクティビティは、SaaSからデータを取り出すだめのアクティビティです。GetRecordとは異なり、複数件数のレコードを取得することができます。
SQLみたいに指示することができます。
ListRecordsアクティビティの「Configure」ボタンを押すと、クエリを設定できるダイアログが表示されます。
whereの箇所はSQLのように条件式を書くことができます。なお、フィールドの物理名を知っている必要があります。
取得するフィールド(SQLでいうSelect)は選択できないようです。全フィールドを取ってくる仕様のようです。
項目 | 方向 | 説明 |
---|---|---|
Select Object | IN | 取得対象のオブジェクト。カスタムオブジェクトも指定可能 |
includeDeleted | IN | 論理削除されたレコードを取得対象に含めるかどうか |
nullsLast | IN | Null値のソート順。Null値を先頭にするか最後尾にするか |
orderBy | IN | ソート順。Asc(昇順)、Desc(降順) |
Page Token | IN | 取得したいページのトークン値。Next Page Tokenで得られた値を使用する |
pageSize | IN | 1回のクエリで取得できる最大件数 |
where | IN | クエリの検索条件。SQLのように書ける |
List | OUT | 取得されたレコードが格納されるDataTable型変数 |
Next Page Token | OUT | 1回のクエリで取りきれなかった場合の次ページを表すトークン値 |
上記、スクリーンショットのように、取引先(Account)を取得してみます。
条件は、業種(Industry)が「Energy」で、従業員数(NumberOfEmployees)が5,000人を超えるレコードとし、ソート順は従業員数の降順とします。
上手くいけば、下のように2件(Y株式会社、ダミー株式会社の順)が取得できるはずです。
おわりに
ListRecordsアクティビティを使ってみましたが、SQLライクな書き方ができるのはプログラマなら分かりやすい反面、プログラマでないエンドユーザには少々ハードルが高いかもしれません。さらにSalesforce上のオブジェクトやフィールド名(物理名)を知っていないといけないので、UiPathだけでなくSaaSサービス側の知識も必要になります(この辺を楽に実装できれば申し分ないです)。
しかしながら、今までのようにAPIを使ったロジックをイチから組み上げる必要はないため、大きな前進かと思います。今後のサービス改善にも期待したいです。