Dotyczy wersji 2016.1.x; Autorzy: Piotr Bagazja i Karol Woźniak
Ograniczenia i założenia
Dostarczony WSDL
Opis Web Service`u (plik WSDL – definicja interfejsu) może zostać dostarczony lokalnie z dysku lub poprzez protokół HTTP/HTTPS. W obu przypadkach musi spełniać kilka wymagań:
- W przypadku HTTP/HTTPS jeśli wymagana jest autentykacja, użytkownik musi dostarczyć poprawny login i hasło
- W przypadku występowania odwołań w pliku WSDL do plików zewnętrznych (np.: do plików XSD) maszyna na której uruchomione jest BPS STUDIO musi mieć dostęp do ich lokalizacji oraz login i hasło musi być to samo
- W przypadku pliku z dysku najlepiej aby był to pojedynczy plik (singleWSDL). W przypadku gdy tak nie jest, odwołania do innych plików powinny być poprawnymi ścieżkami w ramach maszyny udostępniającej Web Service, lub odwołaniem do zewnętrznej lokalizacji sieciowej do której mamy dostęp.
- W przypadku gdy powiązania na pliki nie są dostępne w powyższy sposób Akcja/Źródło danych spróbuje dobrać odpowiednie ścieżki i typy ale nie gwarantuje to poprawnego odnalezienia powiązanych plików i w konsekwencji oczekiwanego działania akcji
Wystawiony Web service
Akcja oraz źródło obsługuje protokoły HTTP oraz HTTPS. W przypadku szyfrowanego połączenia HTTPS, wymagane jest posiadanie ważnego certyfikatu wystawionego przez zaufane źródło. Alternatywnie można też zaznaczyć checkbox „Nie waliduj certyfikatów HTTPS”, jednak takie rozwiązanie jest z przeważnie niezalecane i powinno być zarezerwowane dla szczególnych przypadków. Dla Web Service’ów w których konieczne jest periodyczne podtrzymywanie połączenie dostępny jest checkbox „keep-alive”.
Obsługa pól oraz typów
Akcja oraz źródło analizując plik WSDL generują na jego podstawie interfejs dostępu do Web Service`u. Proces ten jest automatyczny, korzysta z narzędzi i reguł platformy .NET w celu wygenerowania kodu dla Web Service`u. Poniżej zostaną wylistowane obsługiwane przypadki, oraz takie które nie będą działać. Należy zaznaczyć że tylko scenariusze przetestowane przez nas zostały wymienione – nie są to wszystkie możliwości użycia, ale w przypadku innych scenariuszy należy się upewnić że ich działanie jest zgodne z oczekiwaniem.
– Typy Tekstowe ‘System.string’
Pole takie przyjmuje dowolną wartość tekstowa, dowolną zmienną z formularza (poza listą pozycji) oraz zapytanie SQL, którego wartość zostanie pobrana z pierwszego wiersza pierwszej kolumny.
– Pole liczbowe ‘system.int32’ ‘System.Double’ ‘System.Decimal’
Liczby muszą zostać przekazanie w formacie 123 lub 123.123456
Wartość taka może zostać wpisana ręcznie, zostać zwrócona przez zapytanie SQL jak w polu tekstowym lub przekazania przy użyciu odpowiedniej zmiennej. W przypadku zmiennej, nawet jeśli liczba na formularzu ma format ‘123,123’ (tj. z przecinkiem jako separatorem dziesiętnym) to jeśli jest oznaczona jako liczba zmiennoprzecinkowa – system zadba aby została przekazana w poprawnym formacie.
– Pole Prawda/fałsz ‘system.boolean’
Wartości, jakie mogą być ustawione to ‘True’, ‘False’, ‘1’ i ‘0’. Wartości te można przekazać za pomocą tekstu, przeciągnąć z edytora wyrażeń, lub przy pomocy zapytania SQL.
– Pole Daty ‘System.DAtetime’
W tym przypadku data musi być w formacie ISO. Nie obsługiwany jest format z ‘Z’ na końcu.
– Typy Tablicowe
Pole, które jest tablicą wyszczególnione jest na drzewie konfiguracji odpowiednią flaga lub znakami ‘[]’ po nazwie (np.: CompisiteType2[] ). Takie pole obsłużyć można na 3 sposoby:
1. Użyć zapytania SQL. Każdy zwrócony wiersz zostanie użyty do utworzenia jednego obiektu. Jako nazw kolumn należy używać nazw pól.
SELECT '1' as BoolValue, 'My text value' as StringValue
2. Użyć listy pozycji. W wartości pola tablicowego wpisać ID listy pozycji lub użyć odpowiedniej zmiennej (postaci {WFCON:ID_ListyPozycji}) z edytora wyrażeń . W poszczególne pola wpisać wartość stałą lub użyć odpowiedniej zmiennej. Ilość ustawionych obiektów będzie odpowiadać ilości wierszy listy pozycji.
3. W wybrane pole wpisać wartości stałe lub przeciągnąć wartości z formularza. W takim przypadku zostanie wysłany 1 obiekt z podanymi wartościami.
Ograniczenia
W przypadku typów złożonych mechanizm akcji oraz źródła danych posiada kilka ograniczeń.
- Maksymalna głębokość typów wyświetlana na drzewku ustalona jest na 10.
- Maksymalna ilość pól wyświetlanych na drzewie jest ustalona na 2000
- Typ ‘Table’, ‘System.Data.DateTable’ oraz ‘System.Data.DateSet’ nie są obsługiwane.
- WSDL typ Complex ‘System.XML.XmlElement’, ‘System.XML.XmlNode mogący zawierać dowolne informacje i wewnętrzne węzły jest traktowany jako tekst.
- W źródle danych jako wynik można wybrać tylko pole, które według WSDL jest tablicą.
- W wybranym typie obsługiwane są tylko pola, które są bezpośrednio pod typem oraz są typu prostego (TEKSTOWE, LICZBOWY, TAK/NIE, DATA)
- Nie zadziała przekazywanie tablicy w tablicy. Pole argument można ustawić, pola InvoiceElement już nie.
- W źródle danych nie zadziała wybór wyniku jako pole tablicowe z tablicy. Oznaczenie Invoice[] jako rezultat zwracanych przez źródło danych jest poprawne, InvoiceElement[] już nie.