Buduję obiekt BP, który wykonuje następujące czynności:

  1. Oddaje tekst z niektórych wierszy w pliku Excel do kolekcji Blueprism przy użyciu standardowego Excel VBO.
  2. Umieszcza zawartość tej kolekcji za pośrednictwem etapu kodu regex.match w celu wyodrębnienia określonej wartości z każdego wiersza w kolekcji.
  3. Etap kodu ma następnie wypełnić kolejną kolekcję (wyjście) z wyodrębnionymi wartościami.

Pluprism wydaje się używać obiektów Datatable C # dla kolekcji? Próbowałem użyć listy & lt; & gt; Obiekty, ale BP nie potwierdzimy tych (lub nic innego w tej sprawie), więc zgaduję, że muszę użyć danych.
Zmienne wejściowe i wyjściowe w poniższym kodzie (pierwsze i ostatnie linie), są opakowania dla rzeczywistych kolekcji BP w obiekcie BP.

        DataTable localList = input;
        DataTable localOutput = new DataTable();
        DataRow[] rows = localList.Select();


        while (localList != null)
        {
            for (int i = 0; i < rows.Length; i++)
            {
                string indexValue = Convert.ToString(localList.Rows[i]);

                //example Regex
                string sPattern1 = "[0-9]{5,8}[A-Z][A-Z]";
                Match match1 = Regex.Match(indexValue, sPattern1);

                ///same thing with sPattern2, 3, 4, 5 & 6... with corresponding match2, 3, etc...


                if (match1.Success || match2.Success || match3.Success || match4.Success ||
                match5.Success || match6.Success)
                {
                    localOutput.NewRow();
                    localOutput.Rows.Add(indexValue);
                }
                else
                {
                    localOutput.NewRow();
                    localOutput.Rows.Add("Not Found");
                }
            }
        }
              output = localOutput.Select();

Więc ten kod kompiluje się OK, tj. Nie rzuca żadnych błędów odlewanych typu lub nic podobnego, kiedy próbowałem użyć listy <>, ale wtedy, gdy uruchomię obiekt BP rzuca następujący wyjątek wykonawczego:

Internal : Could not execute code stage because exception thrown by code stage: Input array is longer than the number of columns in this table.  

Co ja robię źle? Byłbym wdzięczny za wszelką pomoc w tym, dziękuję.

0
Badda_Bing 14 grudzień 2019, 10:43

1 odpowiedź

Najlepsza odpowiedź

Po pierwsze, musisz zdefiniować kolumny:

DataTable localOutput = new DataTable();
localOutput.Columns.Add("Column1", typeof (string));

Następnie możesz dodać nowe wiersze.

1
Hasta Tamang 14 grudzień 2019, 09:03