Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Polish
Info

Instrukcja tworzenia źródeł danych w systemie - https://docs.plusworkflow.pl/confluence/pages/viewpage.action?pageId=13272439

Wtyczka zawiera implementację źródeł danych operujących na protokole SOAP.

Za pomocą opisywanych źródeł danych można odczytywać i przekazywać dane pomiędzy systemem PlusWorkflow a zewnętrznymi webservice'ami SOAP.

Źródło umożliwia parsowanie plików WSDL. Zostało to opisane tutaj.

Info
titleInformacje o protokole SOAP

Przed przystąpieniem do konfiguracji źródła wymagana jest podstawowa wiedza o protokole SOAP. Możesz ją znaleźć np. tutaj - https://www.tutorialspoint.com/soap/index.htm

Info
titleInformacje o Xpath

Przed przystąpieniem do konfiguracji źródła wymagana jest podstawowa znajomość Xpath. Możesz ją znaleźć np. tutaj - https://www.tutorialspoint.com/xpath/index.htm

Walidator/Generator (przytrzymaj CTRL i najedz kursorem na interesujący Cię element) online: http://xpather.com/

Opis konfiguracji:

Nazwa parametruOpis parametruWymagalność
AutoryzacjaSchemat autoryzacji żądania. Jeśli żądany endpoint nie wymaga autoryzacji pole należy zostawić puste. Opis definiowania szablonów autoryzacji znajduje się TUTAJ.Opcjonalny
Endpoint URLAdres URL endpointu, do którego wysłane zostanie żądanie.Wymagany
SOAPActionNazwa akcji soap dodawana w nagłówku żądania. Automatycznie uzupełniany parametr przy parsowaniu wsdl.Opcjonalny
Target namespace

Logiczna przestrzeń nazw dla informacji o usłudze.

Wymagany
Request messageZawartość wiadomości SOAP.Wymagany
Separator zmiennych tabelarycznychRozdziela wartości tekstowe wybranym znakiem, dla zmiennych tablicowych. 
[Parametry wejściowe] IdId parametru wejściowegoWymagany
[Parametry wejściowe] NazwaNazwa parametru wejściowego 
[Parametry wejściowe] Tag elementu tabelarycznego (listy)

Pierwszy Dany element zostanie skopiowany tyle  ile maksymalna długość i uzupełniony kolejnymi wartościami z tabeli. Dla zmiennych tabelarycznych dla tego tagu. Pozostawienie pola pustego sugeruje, że to NIE jest zmienna tabelaryczna w żądaniu SOAP W celu skonfigurowania obiektów tablicowych, upewnij się czy RequestMessage posiada schemat jak niżej. Obiekt tablicowy musi posiadać obiekt agregujący linie tablicowe. W poniższym przypadku Tagiem elementu tabelarycznego jest "lines", powielone zostaną elementy item (np. <lines><item>...</item><item>...<item></lines>)

...
<lines>
   <item>
       <column1>?</column1>
       <column2>?</column2>
       <column3>?</column3>
    </item>
</lines
...

przypadku pustej tablicy zostanie pusty Tag bez elementów wewnętrznych.

Wszystkie parametry oznaczone tym samym tagiem muszą mieć tą samą długość. Gdy jakiś parametr ma mieć stałą wartość i powtarzać się dla każdego wiersza to wystarczy usunąć tag dla tego parametru.

 
[Parametry wyjściowe] IdId parametru wyjściowegoWymagany
[Parametry wyjściowe] NazwaNazwa parametru wyjściowegoWymagany
[Parametry wyjściowe] TypTyp parametru wyjściowego [string;integer;foat;boolean;date;datetime]Wymagany
[Parametry wyjściowe] XpathXpath wskazujący na dane, które zostaną pobrane z odpowiedzi service'u SOAP.Wymagany

Przykłady konfiguracji:

Konfiguracja źródłaWynik wywołaniaOpis

Źródło wysyła zapytanie do systemu PlusWorkflow o istniejące domeny.
Panel
titlePrzykład

 

Przykładowy Request message

Code Block
languagexml
themeEclipse
titleRequest message
linenumberstrue
<s11:Envelope xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/">
    <s11:Header></s11:Header>
    <s11:Body>
        <data>
            <param1>{param1}</param1>
            <param2>{param2}</param2>
            <param3>{param3}</param3>
            <list1>
                <obj>
                    <paramTab1>{paramTab1}</paramTab1>
                    <paramTab2>{paramTab2}</paramTab2>
                    <paramTab3>{paramTab3}</paramTab3>
                </obj>
            </list1>
            <list2>
                <paramTabA>{paramTabA}</paramTabA>
                <paramTabB>{paramTabB}</paramTabB>
                <paramTabC>{paramTabC}</paramTabC>
            </list2>
        </data>
    </s11:Body>
</s11:Envelope>




Założenia
Dla tego xmla chcemy przesłać wartości nagłówkowe param1 , param2, param3 oraz wartości z tablicy 1 dla parametrów paramTab1, paramTab2, paramTab3 oraz dla tablicy 2 : paramTabA, paramTabB ,paramTabC. Przy czym parametry param3, paramTabC mają mieć ma sztywno wartość "11" oraz "22" a paramTab3 ma mieć zawsze taką samą wartość w każdym wierszu pobraną z procesu.. W tym celu możemy zmodyfikować odpowiednio tego xmla o sztywne parametry oraz grupę parametry z elementu list2 zgrupować w jeden obiekt (który odpowiada wierszowi który będzie powielany). Po modyfikacjach powinniśmy dostać takiego xml.

Info
titleUWAGA

Podczas modyfikacji Request Message upewnij się czy zmodyfikowana wersja zostanie poprawnie obsłużona przez dostawce WebSerwicu



Code Block
languagexml
themeEclipse
titleRequest message po modyfikacji
linenumberstrue
<s11:Envelope xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/">
    <s11:Header></s11:Header>
    <s11:Body>
        <data>
            <param1>{param1}</param1>
            <param2>{param2}</param2>
            <param3>11</param3> <!-- Ręcznie uzupełniona wartość-->
            <list1>
                <obj>
                    <paramTab1>{paramTab1}</paramTab1>
                    <paramTab2>{paramTab2}</paramTab2>
                    <paramTab3>{paramTab3}</paramTab3>
                </obj>
            </list1>
            <list2>
				<item>  <!-- Ręcznie dodany element-->                 	<paramTabA>{paramTabA}</paramTabA>
                	<paramTabB>{paramTabB}</paramTabB>
                	<paramTabC>22</paramTabC> <!-- Ręcznie uzupełniona wartość-->
				</item> <!-- Ręcznie dodany element-->             </list2>
        </data>
    </s11:Body>
</s11:Envelope>




Dla takiego XML konfigurujemy parametry wejściowe źródła danych:

idNazwaTag elementu tabelarycznego (listyUwagi
param1
param1
  
param2
param2
  
paramTab1
paramTab1
list1obj
Będzie kopiowany cały pierwszy element z listy elemen (obj) i wklejany tyle razy ile jest wartości w tablicy, przy czym każdy element będzie miał tylko wartość z jednego wiersza
paramTab2
paramTab2
list1obj
Będzie kopiowany cały pierwszy element z listy elemen (obj) i wklejany tyle razy ile jest wartości w tablicy, przy czym każdy element będzie miał tylko wartość z jednego wiersza
paramTab3
paramTab3
  
paramTabA
paramTabA
list2
Będzie kopiowany cały pierwszy element z listy (itemelemen (list2) i wklejany tyle razy ile jest wartości w tablicy, przy czym każdy element będzie miał tylko wartość z jednego wiersza
paramTabB
paramTabB
list2
Będzie kopiowany cały pierwszy element z listy (itemelemen (list2) i wklejany tyle razy ile jest wartości w tablicy, przy czym każdy element będzie miał tylko wartość z jednego wiersza


oraz ustawiamy parametr Separator zmiennych tabelarycznych na ";" (średnik)

Teraz gdy takie źródło uruchomimy z następującymi parametrami:

idWartość
param1
AAA
param2
BBB
paramTab1
Ala;ma;kota
paramTab2
kot;ma;Ale
paramTab3
Stała wartość
paramTabA
123;456
paramTabB
aaa;bbb

Najpierw zostaną przetworzone zmienne tabelaryczne, więc otrzymamy takiego XML'a

 

Code Block
languagexml
themeEclipse
titleRequest message po uzupełnieniu zmiennych tabelarycznych
linenumberstrue
<s11:Envelope xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/">
    <s11:Header></s11:Header>
    <s11:Body>
        <data>
            <param1>{param1}</param1>
            <param2>{param2}</param2>
            <param3>11</param3> <!-- Ręcznie uzupełniona wartość-->
            <list1>
                <obj>
                    <paramTab1>Ala</paramTab1>
                    <paramTab2>kot</paramTab2>
                    <paramTab3>{paramTab3}</paramTab3>
                </obj>
  				<obj>
                    <paramTab1>ma</paramTab1>
                    <paramTab2>ma</paramTab2>
                    <paramTab3>{paramTab3}</paramTab3>
                </obj>
 				 <obj>
                    <paramTab1>kota</paramTab1>
                    <paramTab2>Ale</paramTab2>
                    <paramTab3>{paramTab3}</paramTab3>
                </obj>
            </list1>
            <list2>
				<item> <!-- Ręcznie dodany element-->                 	<paramTabA>123</paramTabA>
                	<paramTabB>aaa</paramTabB>
                	<paramTabC>22</paramTabC> <!-- Ręcznie uzupełniona wartość-->
				</item>list2>
<!-- Ręcznie dodany element-->
				<item> <!-- Ręcznie dodany element--><list2>
                    	<paramTabA>456</paramTabA>
                	<paramTabB>bbb</paramTabB>
                	<paramTabC>22</paramTabC> <!-- Ręcznie uzupełniona wartość-->
				</item> <!-- Ręcznie dodany element-->             </list2>
        </data>
    </s11:Body>
</s11:Envelope>

Potem dla takiego XML są podstawiane wartości NIE tabelaryczne (bez wpisanego tagu tabelarycznego). Otrzymany XML po kolejnej operacji wygląda nastepująco

Code Block
languagexml
themeEclipse
titleRequest message przed wysłaniem
linenumberstrue
<s11:Envelope xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/">
    <s11:Header></s11:Header>
    <s11:Body>
        <data>
            <param1>AAA</param1>
            <param2>BBB</param2>
            <param3>11</param3> <!-- Ręcznie uzupełniona wartość-->
            <list1>
                <obj>
                    <paramTab1>Ala</paramTab1>
                    <paramTab2>kot</paramTab2>
                    <paramTab3>Stała wartość</paramTab3>
                </obj>
  				<obj>
                    <paramTab1>ma</paramTab1>
                    <paramTab2>ma</paramTab2>
                    <paramTab3>Stała wartość</paramTab3>
                </obj>
 				 <obj>
                    <paramTab1>kota</paramTab1>
                    <paramTab2>Ale</paramTab2>
                    <paramTab3>Stała wartość</paramTab3>
                </obj>
            </list1>
            <list2>
				<item> <!-- Ręcznie dodany element-->                 	<paramTabA>123</paramTabA>
                	<paramTabB>aaa</paramTabB>
                	<paramTabC>22</paramTabC> <!-- Ręcznie uzupełniona wartość-->
				</item>list2> <!--
Ręcznie dodany element-->
				<item> <!-- Ręcznie dodany element--><list2>
                    	<paramTabA>456</paramTabA>
                	<paramTabB>bbb</paramTabB>
                	<paramTabC>22</paramTabC> <!-- Ręcznie uzupełniona wartość-->
				</item> <!-- Ręcznie dodany element-->             </list2>
        </data>
    </s11:Body>
</s11:Envelope>

I taki Request message jest wysyłany do webserwisu.

 

 

English

 

Hide If
special@authenticated

JIRA
server192.168.1.52 JIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId2e6b42a8-62e1-3c71-bfe9-dbf183b33dc1
keyDSSOAP-1