コレクション

コレクションは、複数のデータアイテムを1つにまとめたものです。通常、コレクションは、ビジネスオブジェクトから多数の異なる情報を1回のトランザクションで取得するために使用されます。情報が取り込まれたら、ループステージを使用してコレクション内の情報にシーケンシャルにアクセスできます。

コレクションのコンテンツは、行と列を含むテーブルとして考えると便利です。列はフィールドと呼ばれます。フィールドの名前は、ユーザーによって指定されるか、対応するビジネスオブジェクト内で定義されます。

フィールドは、式内で「ドット」構文(「コレクション名.フィールド名」)を使用してアクセスします。例:「Person」というステージで定義されているコレクション内の「Name」フィールドの場合は、計算ステージまたは決定ステージ で参照([Person.Name])を使用してアクセスできます。

フィールド名に角括弧やドットを含めることはできません。これは参照先のコレクションの構造とフィールド名が衝突しないようにするためです。

定義済みと未定義

フィールドの名前とデータ型コレクションステージのプロパティフォームで明示的に定義されている場合、コレクションは定義済みと言われます。このフィールド定義は、ユーザーによって考案される場合もあれば、コレクションが使用されるビジネスオブジェクトの設計者によって事前に決定されている場合もあります。

同様に、フィールドがプロパティフォームで定義されていない場合、コレクションは未定義と言われます。このような状況は、構造が変化する可能性のあるデータを含むシステムとやりとりするときに頻繁に発生します。例として、スプレッドシートに含まれるデータ(表形式)の取得などがあります。スプレッドシート内の表の列について何もわからない場合、コレクションの列(またはフィールド)にあらかじめラベルやデータ型をアタッチできません。コレクションのフィールドは実行時にのみ利用可能になります。

次のビデオでは、Blue Prismで未定義のコレクションを作成して使用する方法について説明しています。

入れ子のコレクション

コレクションはそれ自体にコレクションを含むことができます。これらのコレクションもまた、コレクションステージ内で定義済みになることや、データが入力されるまで未定義になることがあります。

入れ子のコレクションは、式内で上よりもさらに高いレベルの「ドット」構文を使用して参照できます。例:「Person」というステージに、「Type」、「Name」、「Grade」という3つのフィールドを持つ「Qualifications」というコレクションがある場合、これらのフィールドには、参照 [Person.Qualifications.Type][Person.Qualifications.Name][Person.Qualifications.Grade]を使用してアクセスできます。

同様に、ループの開始ステージでは、同じ構文を使用して入れ子のコレクションを直接ループできます。そのため、上の例の個人の資格をループするには、ループの開始ステージでコレクションをPerson.Qualificationsに設定します。これは通常、Personコレクションを反復処理するループステージ内でのみ意味があります。

ただし、内部コレクションビジネスオブジェクトは、入れ子のコレクションをサポートしません。内部アクションで参照する前に、まず入れ子のコレクションをコレクションステージに移動する必要があります。

現在の行

コレクションの行へのアクセスは、ループステージを使用して行う必要があります。ループステージは、コレクションの現在の行を自動的に更新し、ある行から次の行に順番に移動します。この変更は、ループの終了ステージに達するたびに発生します。ループステージに入る前に、コレクションは最初の行になります。ループステージは、コレクションの最後の行に到達するまで行を反復します。この時点でループは終了し、現在の行はなくなります。現在の行がないときにコレクションにアクセスしようとするとエラーになります。データに再度アクセスするには、何らかのアクションを実行して「現在の行」をもう一度設定する必要があります。該当するアクションの例として以下があります。

  • 新しいループに入る。
  • 新しい行をコレクションに追加する(これが現在の行になり、データの入力準備が整います)。

コレクションを操作する

コレクションは、「Internal - Collections」ビジネスオブジェクトを使用して操作できます。内部ビジネスオブジェクトの詳細については、「内部ビジネスオブジェクトの概要」を参照してください。以下のアクションでは、必ず入力パラメーターとしてコレクションの名前を指定する必要があります。この名前は、コレクション型ではなくデータ型テキストです。名前付きのコレクションを使用するには、そのコレクションにアクセスできなければなりません(つまり、別のページにあったり、非表示になっていたりしてはなりません)。

  • 行を追加 – このアクションは、コレクションに新しい行を追加します。新しい行が現在の行になり、新しいデータを入力できるようになります。
  • 行を削除 – このアクションは、現在の行をコレクションから削除します。行が削除されると、現在の行はなくなります。ループの反復処理中に行が削除された場合、ループはループの終了ステージに到達したときに(本来進むはずであった行の)次の行に進みます。その間に現在の行にアクセスしようとすると、エラーが発生します。
  • すべての行を削除 – このアクションは、コレクションからすべての行を削除します。行が削除されると、現在の行はなくなります。ループの反復処理中にすべての行が削除された場合、ループの終了ステージに達したときにループが新しい行に進むことはありません。その間に現在の行にアクセスしようとすると、エラーが発生します。
  • 行をカウント – このアクションは、コレクション内の行数を取得します。このアクションは、行数を取得するためにデータアイテムにマップする必要がある「count」という追加の出力パラメーターを持つという点で他の2つのアクションとは異なります。

単一行コレクション

「単一行」コレクションには常に1つの行があり、その行は自動的に現在の行として設定されます。コレクションビジネスオブジェクトの行操作アクションが単一行コレクションで呼び出されると、エラーが発生します。この場合、カウント行は常に1を返します。

未定義のコレクション

Microsoft Excelワークシートのコンテンツ全体を取得するとします。

  1. 準備

    CommonAutomationビジネスオブジェクトのCommonAutomation.clsExcelがインストールされていることを確認したら、Process Studioを開き、以下のステージを追加します。

    • コレクションステージ - これはデータを入力するコレクションです。
    • 2つのアクションステージ - 議論の対象になるのはこれらのうちの一方だけです。もう一方は実際に必要なステージです。
  2. データを取得するアクションを構成する

    アクションステージを使用してコレクションにデータを入力する必要があります。2つのアクションステージのうちの2番目のプロパティページを開きます。ドロップダウンメニューからビジネスオブジェクトとして[Microsoft Office - Excelアクション]を選択します(これが表示されない場合、ビジネスオブジェクトは正常にインストールされていません)。アクションとして[ワークシートをコレクションとして取得]を選択します。出力タブで、コレクションステージの名前を「Col1」という出力にドラッグアンドドロップします。これは、選択したコレクションに収集したデータを配置するようアクションに指示します。

  3. 前提条件に対処する

    プロセスが機能する前に、アクションステージで指定されたすべての前提条件を満たす必要があります。現在のアクションプロパティの前提条件タブに「ワークブックがアクティブである必要があります」と表示されていることを確認します。これがその他のアクションステージの理由です。そのアクションステージのプロパティを開き、ビジネスオブジェクト「Microsoft Office - Excelアクション」からアクション[ワークブックを開く]を選択します。既存のMicrosoft Excelワークブックのパスを入力します。

  4. 完了する

    最後に、リンクを使用してアクションステージを参加させます(コレクションステージを何かに参加させる必要はありません)。プロセスを実行すると、2番目のステージが実行された後にコレクションにデータが入力されます。

定義済みのコレクション

変更されないフィールドヘッダーを持つテーブルのコンテンツ全体を取得するとします。

  1. 準備

    コレクションを返すビジネスオブジェクトが使用可能であることを確認したら、Process Studioを開き、以下のステージを追加します。

    • コレクションステージ - これはデータを入力するコレクションです。
    • 1つのアクションステージ - これはコレクションにデータを入力するステージです。
  2. コレクションを定義する

    コレクションステージのプロパティを開きます。[フィールド]タブで[フィールドを追加]ボタンをクリックし、データを入力するコレクションのフィールドと完全に一致するフィールドを追加します。コレクション内の各フィールドのデータ型も選択します。これらもデータを入力するコレクションと完全に一致する必要があります。

  3. データを取得するアクションを構成する

    アクションステージを使用してコレクションにデータを入力する必要があります。アクションステージの[プロパティ]ページを開きます。コレクションを返すビジネスオブジェクトアクションを選択し、[出力]タブでその出力を「Coll1」というコレクションステージに設定します。

  4. 完了する

    最後に、リンクを使用してアクションステージを参加させます(コレクションステージを何かに参加させる必要はありません)。プロセスを実行すると、アクションステージ以降にコレクションにデータが入力されます。