Объединить 2 коллекции при условии заполнения вложенной коллекции - PullRequest
0 голосов
/ 22 мая 2019

У меня есть 2 коллекции, в которые я получаю данные из БД.

Имена столбцов коллекции 1: A_id, Bid, PCid, Bname ==> все текстовые поля

Имена столбцов коллекции 2: A_ref, Cid, Cname, value ==> все текстовые поля

Коллекция 1 и 2 связаны на основе collection1.A_id = collection2.A_ref

У меня есть 3-я коллекция, которая является вложенной:

Коллекция 3 Названия столбцов: действие (текст), colA (коллекция)

имена столбцов colA: Bid (текст), PCid (текст), Bname (текст), colB (сборник)

имена столбцов colB: Cid, Cname, value ==> все текстовые поля

Я хочу объединить коллекцию 1 и коллекцию 2 на основе упомянутого условия для загрузки вложенной коллекции 3.

Пожалуйста, помогите.

Я пытался использовать коллекцию VBO, но безуспешно. Я также попытался использовать стадию вложенного цикла и счетчики с этапом принятия решения, но мой код не может добавить пустую строку во вложенную коллекцию перед заполнением значений.

Использование этапов Blueprism

Я хочу объединить коллекцию 1 и коллекцию 2 на основе упомянутого условия для загрузки вложенной коллекции 3.

Я использую этап вложенного цикла и счетчики с этапом принятия решения, но мой код не может добавить строку во вложенную коллекцию.

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Асвин, пожалуйста, проверьте решение ниже:

enter image description here

Для получения дополнительной информации я передам XML-файл, который вы должны будете импортировать в Blue Prism, и проверять каждый этап, поскольку для объяснения всего этого потребуется много времени и снимки экрана. Кроме того, у вас будет четкое понимание каждого шага в вашей среде.

Загрузите файл XML из моей ссылки на репозиторий github:

Объединение коллекций Blue Prism для заполнения вложенной коллекции

Надеюсь, эта информация будет полезна.

0 голосов
/ 24 мая 2019

Я полагаю, что вы ищете то, что я называю «объединением ящиков».Вам понадобится этап кода.

Входные данные:

  • Основной (коллекция)
  • Вложенный (коллекция)
  • Главный ключ (текст)
  • Вложенный ключ (текст)
  • Новое имя поля (текст)

Выходы:

  • Выходная коллекция

Код:

' Check for requirements: key columns exist, and that the new field to create in the main
' collection does not already exist.
If Not Main.Columns.Contains(Main_Key) Then
    Throw New Exception("Main Collection does not contain the key column '" & Main_Key & "'")
Else If Not Nested.Columns.Contains(Nested_Key) Then
    Throw New Exception("Nested Collection does not contain the key column '" & Nested_Key & "'")
Else If Main.Columns.Contains(New_Field_Name) Then
    Throw New Exception("Main Collection already contains a field named '" & New_Field_Name & "'")
End If

' Add the column containing the DataTable which will be populated with data from the Nested collection.
Main.Columns.Add(New_Field_Name, GetType(DataTable))

For Each MainRow As DataRow In Main.Rows
    ' Create the new nested table for this row and populate the column names.
    Dim Table As New DataTable
    For Each NestedColumn As DataColumn In Nested.Columns
        Table.Columns.Add(NestedColumn.ColumnName, NestedColumn.DataType)
    Next

    ' Because we don't want to copy the key column.
    Table.Columns.Remove(Nested_Key)

    ' Check each row in the Nested collection to see if it matches current key.
    For Each NestedRow As DataRow In Nested.Rows
        If MainRow(Main_Key) = NestedRow(Nested_Key) Then
            ' Got a match; add the row from Nested into the new table.
            Dim NewRow As DataRow = Table.NewRow
            For Each TableColumn As DataColumn In Table.Columns
                NewRow(TableColumn.ColumnName) = NestedRow(TableColumn.ColumnName)
            Next
            Table.Rows.Add(NewRow)
        End If
    Next

    ' Set the nested collection
    MainRow(New_Field_Name) = Table
Next

Output_Collection = Main

Используя пример из вопроса, вы захотите передать следующее во входные данные этапа кода:

  • [Сборник 1] -> Основной
  • [Коллекция 2] -> Вложенный
  • "A_id" -> Главный ключ
  • "A_ref" -> Вложенный ключ
  • "colB"-> Новое имя поля

Полученная выходная коллекция будет содержать поля из коллекции 1 с добавленным столбцом «colB», который содержит поля (исключая ключ) из коллекции 2. ОттудаЭтап вычисления можно получить результаты в коллекцию 3.

...