Data Service
最新
バナーの背景画像
Data Service ユーザー ガイド
最終更新日 2024年3月15日

エンティティをプロジェクトで使用する

Data Service で作成したエンティティを使用すれば、単一のオブジェクトにデータを集約して管理・操作することができ、煩雑な作業が不要になります。そのためには、Studio の v2020.8 以降が必要です。

以下のサンプルでは、オリンピック大会とメダルに関するデータのうち、競技の各カテゴリにおける上位 10 か国と、それらの国々が獲得したメダルのデータを収集します。

Data Service のエンティティ

エンティティを作成する」ページに詳細に記載された手順を実行して、参加国、開幕日と閉幕日、各国が獲得したメダルに関する情報を保存するエンティティを作成しました。

Olympics」(オリンピック) エンティティには、名前 (Name)、参加国 (Nations)、開幕日 (Opening Date)、閉幕日 (Closing Date) といったフィールドがあります。「Medals」(メダル) エンティティには、国 (Country)、金 (Gold)、銀 (Silver)、銅 (Bronze)、総メダル数 (Total) といったフィールドがあります。これら 2 つのエンティティは、Relationship タグによって互いにリンクされています。



Studio にインポートされるエンティティ

Studio のワークフロー内にエンティティをインポートします。

次のワークフローは、特定のオリンピック大会に関する情報をスクレイピングし、データを引数にマッピングして、それらをメイン ワークフローに渡します。



そのために、収集する情報の種類ごとに引数を定義しました。その結果、インポートされる引数は 5 つになりました。



エンティティを使用することで、データの収集に必要な作業は 2 つの引数のインポートと処理だけになりました。

注: エンティティは、使用前に New 演算子を使用して初期化されるか、Data Service から読み取られるか、ワークフロー内の入力引数を介して渡される必要があります。そうしないと、エンティティの値を代入したり読み出したりしたときにエラーが発生する可能性があります。


収集されたデータは、2 つの引数 inOlympics YearoutOlympics および対応するプロパティにマッピングされます。これらは、エンティティ内で定義されたフィールドと同じです。エンティティを使用し、対応するエンティティ フィールドにデータを適切にマッピングすることで、情報を渡すために必要な引数の数を減らすことができます。

データ レコードを作成する

データの収集が完了したら [エンティティ レコードを作成] アクティビティを使用して、情報を Data Service に追加できます。

この例では、収集した情報を Data Service に渡すために、インポートした引数を使用しました。[入力] レコードおよび [出力] レコードは、データを渡すために使用される Olympics 型の変数の値です。



プロジェクトの実行後、以下のレコードが Data Service 内に作成されました。



構造化データでレコードを作成する

データ テーブルに構造化されたレコードは、[繰り返し (各行)] アクティビティを使用して Data Service に渡すことができます。この例では、各国が獲得したメダル数に関する構造化データを収集し、それらのレコードを Data Service に渡す、ワークフローを呼び出しています。



ワークフローの実行後、以下のデータが Data Service に保存されます。



Olympics」エンティティと「Medals」エンティティ間に設定されたリレーションシップによって、一方のデータ レコードを他方で使用することができます。たとえば、「Medals」エンティティ内の「Olympics」フィールドの値は、関連エンティティ内の値と同じになります。

クエリ関連のレコード

[エンティティ レコードにクエリを実行] アクティビティを使用して Data Service からレコードのリストを抽出できます。次の例で使用しているアクティビティでは、「Olympics」エンティティのデータ レコードに対してクエリを実行し、ユーザーがオリンピックの特定の大会を選択して、「Medals」エンティティから各参加国が獲得したメダル数を書き出せるようにしています。



Olympics」の表にクエリを実行するために、クエリ ビルダーName != NULL 条件を使用しました。これは、「Name」列のすべてのレコードを順に listOlympics 変数に出力し、[入力ダイアログ] アクティビティで使用できるようにします。
オプションとしてレコードのリストを表示するために、[入力ダイアログ] アクティビティでは、ラムダ式 listOlympics.Select(Function (o as Olympics) o.Name).ToArray を使用します。代わりに [繰り返し (コレクションの各要素)] アクティビティを使用する方法もあります。
選択は selectedOlympics 変数にマッピングされ、もう一つの [エンティティ レコードにクエリを実行] アクティビティで、特定の大会で獲得したメダルのリストを順に調べるために使用されます。この条件は、クエリ ビルダーequals オプションを使用して設定されました。


クエリは選択したエンティティと、その関連エンティティのレコードに対して実行できます。

ページネーション

Data Service には多数のレコードが格納されている可能性があります。特定の数のレコードに対してのみクエリを実行するには、[エンティティ レコードに対してクエリを実行] アクティビティの [ページネーション] プロパティを使用します。[上限] プロパティの値は最大 1,000 まで対応しています。つまり、一度に 1,000 件のレコードに対してクエリを実行できるということです。

この例では、最初の 5 件のレコードに対してクエリを実行してから、次の 5 件に対して実行するという方法を、リストの最後のレコードが取得されるまで繰り返します。



これを実行するために、Int64 型の skip 変数に初期値 0 を代入してから、その値を各ループの後でインクリメントし、それを最後のレコードが取得されるまで繰り返します。


最初の 5 つのメダルを取得した後、[繰り返し (コレクションの各要素)] アクティビティを使用して、参加国およびそれらの国々が獲得したメダル数をメモ帳ファイルに書き出します。

エンティティ レコードを更新する

以下のシナリオでは、Data Service 内のエンティティ レコードを更新してから、そのデータを Studio と同期させる方法を説明します。

Data Service 内の「Medals」エンティティに移動してから、[新しいフィールドを作成] をクリックし、新しい列として [Yes/No] 型の「HostCountry」(開催国) を追加します。[保存] をクリックします。



Studio の [エンティティを管理] をクリックしてから、[更新] ボタンをクリックします。「Medals」エンティティの変更が検出されたことが [変更箇所] 列に示されています。[保存] をクリックすると、Studio でエンティティが更新されます。



レコードをクエリおよび更新する

[エンティティ レコードを更新] アクティビティを使用すると、Data Service のレコードをワークフローから直接更新できます。

この例では、「Medals」エンティティの特定のレコードに対してクエリを実行し、上記のアクティビティを使用してそれらを自動的に更新しています。

Medals」エンティティでは、各大会の開催国を、国名の横にアスタリスクを付加して示しています。たとえば、2012 年大会の場合、開催国が「Olympics」列に「Great Britain (GBR)*」(英国) として記録されています。



[エンティティ レコードに対してクエリを実行] アクティビティを使用して、アスタリスク (*) を含むすべてのレコードを順に調べ、それらのレコードを listMedals 変数に取得します。次に、[繰り返し (コレクションの各要素)] アクティビティを使用して各項目をループし、その特定の大会が開催された国の横の「HostCountry」列に「True」値を代入します。

[エンティティ レコードを更新] アクティビティは、他のさまざまな状況においても、Data Service にデータを渡したり、レコードを更新したりするために使用できます。

Was this page helpful?

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