- 基本情報
- セットアップと構成
- Data Service を使用する
- 参照
- 例とチュートリアル
エンティティをプロジェクトで使用する
Data Service で作成したエンティティを使用すれば、単一のオブジェクトにデータを集約して管理・操作することができ、煩雑な作業が不要になります。そのためには、Studio の v2020.8 以降が必要です。
以下のサンプルでは、オリンピック大会とメダルに関するデータのうち、競技の各カテゴリにおける上位 10 か国と、それらの国々が獲得したメダルのデータを収集します。
「エンティティを作成する」ページに詳細に記載された手順を実行して、参加国、開幕日と閉幕日、各国が獲得したメダルに関する情報を保存するエンティティを作成しました。
「Olympics」(オリンピック) エンティティには、名前 (Name)、参加国 (Nations)、開幕日 (Opening Date)、閉幕日 (Closing Date) といったフィールドがあります。「Medals」(メダル) エンティティには、国 (Country)、金 (Gold)、銀 (Silver)、銅 (Bronze)、総メダル数 (Total) といったフィールドがあります。これら 2 つのエンティティは、Relationship タグによって互いにリンクされています。
Studio のワークフロー内にエンティティをインポートします。
次のワークフローは、特定のオリンピック大会に関する情報をスクレイピングし、データを引数にマッピングして、それらをメイン ワークフローに渡します。
そのために、収集する情報の種類ごとに引数を定義しました。その結果、インポートされる引数は 5 つになりました。
エンティティを使用することで、データの収集に必要な作業は 2 つの引数のインポートと処理だけになりました。
inOlympics Year
と outOlympics
および対応するプロパティにマッピングされます。これらは、エンティティ内で定義されたフィールドと同じです。エンティティを使用し、対応するエンティティ フィールドにデータを適切にマッピングすることで、情報を渡すために必要な引数の数を減らすことができます。
データの収集が完了したら [エンティティ レコードを作成] アクティビティを使用して、情報を Data Service に追加できます。
この例では、収集した情報を Data Service に渡すために、インポートした引数を使用しました。[入力] レコードおよび [出力] レコードは、データを渡すために使用される Olympics 型の変数の値です。
プロジェクトの実行後、以下のレコードが Data Service 内に作成されました。
データ テーブルに構造化されたレコードは、[繰り返し (各行)] アクティビティを使用して Data Service に渡すことができます。この例では、各国が獲得したメダル数に関する構造化データを収集し、それらのレコードを Data Service に渡す、ワークフローを呼び出しています。
ワークフローの実行後、以下のデータが Data Service に保存されます。
「Olympics」エンティティと「Medals」エンティティ間に設定されたリレーションシップによって、一方のデータ レコードを他方で使用することができます。たとえば、「Medals」エンティティ内の「Olympics」フィールドの値は、関連エンティティ内の値と同じになります。
[エンティティ レコードにクエリを実行] アクティビティを使用して Data Service からレコードのリストを抽出できます。次の例で使用しているアクティビティでは、「Olympics」エンティティのデータ レコードに対してクエリを実行し、ユーザーがオリンピックの特定の大会を選択して、「Medals」エンティティから各参加国が獲得したメダル数を書き出せるようにしています。
Name != NULL
条件を使用しました。これは、「Name」列のすべてのレコードを順に listOlympics
変数に出力し、[入力ダイアログ] アクティビティで使用できるようにします。
listOlympics.Select(Function (o as Olympics) o.Name).ToArray
を使用します。代わりに [繰り返し (コレクションの各要素)] アクティビティを使用する方法もあります。
selectedOlympics
変数にマッピングされ、もう一つの [エンティティ レコードにクエリを実行] アクティビティで、特定の大会で獲得したメダルのリストを順に調べるために使用されます。この条件は、クエリ ビルダーの equals
オプションを使用して設定されました。
クエリは選択したエンティティと、その関連エンティティのレコードに対して実行できます。
Data Service には多数のレコードが格納されている可能性があります。特定の数のレコードに対してのみクエリを実行するには、[エンティティ レコードに対してクエリを実行] アクティビティの [ページネーション] プロパティを使用します。[上限] プロパティの値は最大 1,000 まで対応しています。つまり、一度に 1,000 件のレコードに対してクエリを実行できるということです。
この例では、最初の 5 件のレコードに対してクエリを実行してから、次の 5 件に対して実行するという方法を、リストの最後のレコードが取得されるまで繰り返します。
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 にデータを渡したり、レコードを更新したりするために使用できます。