Transakcja: /role_sys/import_xml.aspx

Transakcja import XML pozwala na zaimportowanie do bazy danych informacji z pliku XML o ustalonym przez Software Studio szablonie.

Przygotowany szablon jest uniwersalny i pozwala przechowywać dowolne informacje w formie tabelarycznej.

Spis treści

Szablon pliku XML.

Źródło pliku XML.

Z serwera FTP.

Ze ścieżki w katalogu aplikacji WWW…

Procesowanie pliku.

Procesowanie danych.

Ograniczenia.

Szablon pliku XML

Aby plik XML mógł zostać zaimportowany poprzez transakcję uniwersalną musi posiadać ustalony schemat.

<?xml version=”1.0″?>

<Workbook id=”0″>

    <Table>

        <Row id=”0″>

            <Cell>KOL1</Cell>

            <Cell>KOL2</Cell>

            <Cell>KOL3</Cell>

            <Cell>KOL4</Cell>

            <Cell>KOL5</Cell>

        </Row>

        <Row id=”1″>

            <Cell>VAL11</Cell>

            <Cell>VAL21</Cell>

            <Cell>VAL31</Cell>

            <Cell>VAL41</Cell>

            <Cell>VAL51</Cell>

        </Row>

        <Row id=”2″>

            <Cell>VAL12</Cell>

            <Cell>VAL22</Cell>

            <Cell>VAL32</Cell>

            <Cell>VAL42</Cell>

            <Cell>VAL52</Cell>

        </Row>

    </Table>

</Workbook>

! Należy zachować powyższą strukturę.

! Element Row o parametrze id=0 jest traktowany jako wiersz nagłówkowy, powinien zawierać nazwy kolumn.

Workbook (zawsze 1 element)
       Table (Zawsze 1 element)
             Row (dowolna ilość elementów)

Źródło pliku XML

Plik może by importowany:

Z serwera FTP

Aby importować plik należy podać następujące parametry do wywołania transakcji:

  • FTP_UID

UID zapytania z tabeli _code_sql, które w kolumnach: URL, USER, PASS zwróci kolejno adres serwera ftp, login użytkownika, hasło użytkownika.

  • INSERT_UID

UID zapytania z tabeli _code_sql, które zostanie wykonane dla każdego wiersza z pliku XML.

  • SOURCE

Wartość stała: SS-FTP

Pobierany jest pierwszy plik z katalogu /IN na serwerze FTP.

Ze ścieżki w katalogu aplikacji WWW

Aby importować plik należy podać następujące parametry do wywołania transakcji:

  • PATH_UID

UID zapytania z tabeli _code_sql, które w kolumnie PATH zwróci adres folderu źródłowego – adres względy (w folderze aplikacji, np. SELECT ‚App_FTP\TST\’ AS PATH)

  • INSERT_UID

UID zapytania z tabeli _code_sql, które zostanie wykonane dla każdego wiersza z pliku XML.

  • SOURCE

Wartość stała: SS-LOC

Procesowanie pliku

  1. Wyszukany zostaje plik z rozszerzeniem .XML we wskazanym w parametrze adresie.
  2. Plik jest pobierany do ścieżki /App_Import/XML/  a w lokalizacji źródłowej jego nazwa zostaje zmieniona – dodane zostaje rozszerzenie .arch – plik nie zostanie więcej razy zaimportowany.
  3. Plik jest odczytywany i jego struktura przekładana na obiekt C#.  Jeśli wystąpi błąd – struktura będzie niezgodna – to informacja zostanie zapisana w error logu.

Procesowanie danych

Dane z pliku są przetwarzane na obiekt typu DataTable a następnie każdy wiersz jest przesyłany do bazy danych za pomocą polecenia odczytanego z tabeli _code_sql. Transakcja odczytuje nazwy kolumn z pliku XML i zamienia wartości z zapytania na odczytane z DataTable. Podmieniane są również zmienne:

@_WORKBOOK_ID – parametr ID z elementu Workbook
@_REFNO_IMPORT – refno nadane na początku transakcji, wspólne dla wszystkich pozycji oraz zapisów w logu
@_USERNAME – login użytkownika wywołującego transakcję
@_FILE_NAME – ścieżka do pliku

Np. Zapytanie w _code_sql:

EXEC dbo.insertImport(‘@_ID’, ‘@_REFNO_IMPORT’, ‘@KOL1’, ‘@KOL2’, ‘@KOL3’)

Zaowocuje dla podanego wyżej pliku wywołaniem dla pierwszego wiersza:

EXEC dbo.insertImport(‚0’, ‚677354627567’, ‚VAL11’, ‚VAL21’, ‚VAL31’)

Ograniczenia

  1. Należy przygotować funkcję wgrywania plików przez WWW jako źródło danych.
  2. Dla źródeł SS-FTP i SS-LOC należy przygotować opcję jednoczesnego importu wszystkich znalezionych plików.
  3. Należy dodać parametryzację opcji usuwania plików ze ścieżki źródłowej.