podstawy web serwisów w sas testowania użyjemy przykładowego web serwisu udostępniającego kursy...
TRANSCRIPT
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska
Wstęp
Technologia Usług Internetowych (web serwisoacutew) jest najprostszym sposobem integracji systemoacutew
informatycznych i budowania systemoacutew rozproszonych W ostatnich latach zdobyła duże znaczenie i
popularność Dokument ten opisuje podstawy używania i tworzenia web serwisoacutew w produktach SAS
Institute Zawiera proste przykłady umożliwiające szybkie rozpoczęcie korzystania z usług internetowych i
stanowi uzupełnienie oficjalnej dokumentacji SAS Institute Opisuje dostęp do web serwisoacutew za pomocą
języka SAS 4GL oraz tworzenie web serwisoacutew w aplikacji SAS BI Web Serwices Dokument dotyczy usług
internetowych opartych na protokole Simple Object Access Protocol (SOAP) i opisywanych językiem Web
Services Description Language (WSDL) Przykłady były testowane na wersji SAS 93
W wersji 94 jedyną roacuteżnicą jest numer portu aplikacji webrsquoowej przy domyślnej konfiguracji W wersji 93 był
to port 8080 W wersji 94 domyślnym portem jest 7980 na systemie Linux i 80 na systemie Windows
Spis treści
Wstęp 1 Cechy Web Serwisoacutew 1 Testowanie Web Serwisoacutew 1 Przykładowy Web Serwis 1 Dostęp do usługi internetowej z programu SoapUI 3 Dostęp do usługi internetowej z poziomu SAS 4GL 5 Tworzenie Usług internetowych w SAS BI Web Services 7
Prosty Web Serwis dodający dwie liczby 7 Web serwis transponujący zbiory SAS 19 Dodanie schematu dla danych wejściowych lub wyjściowych 28
Cechy Web Serwisoacutew
Opublikowane w sieci Internet
Przesyłają komunikaty w formacie XML
Samoopisujące się
Niezależne od platformy i języka programowania
Cechy skalowalność prostota rozproszenie
Testowanie Web Serwisoacutew
Do testowania web serwisoacutew użyć można aplikacji SoapUI dostępnej na licencji GNU Lesser General Public
License (LGPL) Aplikację można pobrać ze strony httpsourceforgenetprojectssoapui
Przykładowy Web Serwis
Do testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem
httpwwwwebservicexcomCurrencyConvertorasmx
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 2 z 31 sascompoland
2
Usługi internetowe mogą udostępniać własny opis w opartym na XMLrsquou języku WSDL Można go obejrzeć
dodając do adresu usługi końcoacutewkę bdquowsdlrdquo WSDL dla przykładowego web serwisu dostępny jest pod
adresem
httpwwwwebservicexcomCurrencyConvertorasmxwsdl
Opis usługi internetowej umożliwia skonstruowanie zapytania w formacie SOAP Narzędzie takie jak SoapUI
potrafi automatycznie skonstruować szablon zapytania na podstawie WSDLrsquoa
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 3 z 31 sascompoland
3
Dostęp do usługi internetowej z programu SoapUI
Wybieramy Projects -gt New SOAP Project
Wpisujemy nazwę projektu i podajemy adres pod ktoacuterym dostępny jest WSDL
httpwwwwebservicexcomCurrencyConvertorasmxwsdl
Przy problemach z połączeniem należy się upewnić czy nie jesteśmy za serwerem proxy i wpisać odpowiednie ustawienia w Preferences -gt Proxy Settings Program nie wykrywa automatycznie ustawień proxy dla sieci jak popularne przeglądarki internetowe
Program automatycznie utworzy szablon XMLrsquoa z zapytaniem odpowiednim dla tej usługi internetowej
Uzupełniamy go i naciskamy zieloną strzałkę aby wysłać zapytanie do usługi internetowej i dostajemy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 4 z 31 sascompoland
4
odpowiedź (kurs euro w złotoacutewkach) także w formacie XML
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 5 z 31 sascompoland
5
Dostęp do usługi internetowej z poziomu SAS 4GL
Takie samo zapytanie możemy wysłać z poziomu języka SAS 4GL za pomocą procedury HTTP lub procedury
SOAP Obie te procedury są dostępne od wersji SAS 92 Są one dostępne w ramach licencji na produkt SAS
Base
filename request temp
filename response cwebserviceresponsexml
plik z zapytaniem xml
data _null_
file request
input
put _infile_
datalines4
ltsoapenvEnvelope
xmlnssoapenv=httpschemasxmlsoaporgsoapenvelope
xmlnsweb=httpwwwwebserviceXNETgt
ltsoapenvHeadergt
ltsoapenvBodygt
ltwebConversionRategt
ltwebFromCurrencygtEURltwebFromCurrencygt
ltwebToCurrencygtPLNltwebToCurrencygt
ltwebConversionRategt
ltsoapenvBodygt
ltsoapenvEnvelopegt
proc http
in=request
out=response
url=httpwwwwebservicexcomCurrencyConvertorasmx
method=post
ct=textxmlcharset=utf-8
Trzeba podać jeśli jesteśmy za serwerem proxy
proxyhost=adresserweraproxycom
proxyport=80
run
W wyniku działania procedury odpowiedź została zapisana w pliku cwebserviceresponsexml Za pomocą
silnika xml można taki plik zapisać jako bibliotekę SAS i wypisać zawartość zbioru
filename map cwebserviceresponsemap
libname resp xmlv2 xmlfileref=response xmlmap=map
proc print data=respConversionRateResponse
run
Do przypisania pliku xml jako biblioteki SAS potrzebna jest w tym przypadku mapa Mapę tworzy się za
pomocą narzędzia SAS XML Mapper ktoacutere może być zainstalowane z depotu lub pobrane ze strony
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 6 z 31 sascompoland
6
httpsupportsascomdemosdownloadssetupcatjspcat=Base+SAS+Software Film How to
Automatically Generate XMLMap Files
można znaleźć na stronie httpsupportsascomrndbasexmlengine
Zawartość pliku responsemap utworzonego automatycznie za pomocą programu SAS XML Mapper
ltxml version=10 encoding=windows-1250gt lt-- --gt lt-- 2013-06-13T121559 --gt lt-- SAS XML Libname Engine Map --gt lt-- Generated by XML Mapper 9030000020110518190000_v930 --gt lt-- --gt lt-- Validation report --gt lt-- --gt lt-- XMLMap validation completed successfully --gt lt-- --gt ltSXLEMAP name=AUTO_GEN version=21gt ltNAMESPACES count=4gt ltNS id=1 prefix=soapgthttpschemasxmlsoaporgsoapenvelopeltNSgt ltNS id=2 prefix=xsigthttpwwww3org2001XMLSchema-instanceltNSgt ltNS id=3 prefix=xsdgthttpwwww3org2001XMLSchemaltNSgt ltNS id=4 prefix=gthttpwwwwebserviceXNETltNSgt ltNAMESPACESgt lt-- --gt ltTABLE description=ConversionRateResponse name=ConversionRateResponsegt ltTABLE-PATH syntax=XPathENRgt1Envelope1Body4ConversionRateResponseltTABLE-PATHgt ltCOLUMN name=ConversionRateResultgt ltPATH syntax=XPathENRgt1Envelope1Body4ConversionRateResponse4ConversionRateResultltPATHgt ltTYPEgtnumericltTYPEgt ltDATATYPEgtdoubleltDATATYPEgt ltCOLUMNgt ltTABLEgt ltSXLEMAPgt
Web serwis można wywołać także za pomocą procedury SOAP
proc soap
in=request
out=response
url=httpwwwwebservicexcomCurrencyConvertorasmx
soapaction=httpwwwwebserviceXNETConversionRate
Trzeba podać jeśli jesteśmy za serwerem proxy
proxyhost=adresserweraproxycom
proxyport=80
run
Dokumentacja
HTTP Procedure SOAP Procedure SASreg 93 XML LIBNAME Engine
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 7 z 31 sascompoland
7
Tworzenie Usług internetowych w SAS BI Web Services
Aplikacja SAS BI Web Services jest częścią SAS Integration Technologies wchodzącej w skład pakietoacutew takich
jak SAS BI Server i wielu rozwiązań SAS Jest to aplikacja webowa działająca na serwerze aplikacji takim jak
JBOSS (SAS 92 SAS 93) lub SAS Web Application Server (SAS 94) Umożliwia ona udostępnianie procesoacutew
gotowych jako web serwisoacutew Od wersji 93 wszystkie procesy gotowe automatycznie udostępniane są jako
web serwisy W wersji 92 konieczny jest dodatkowy krok bdquoDeploy As Web Servicerdquo opisany na końcu tego
przykładu
Prosty Web Serwis dodający dwie liczby
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS (w tym przykładzie jest to zawartość pliku
cwebservicedodajsas)
global liczba1 liczba2
let suma = eval(ampliczba1 + ampliczba2)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 8 z 31 sascompoland
8
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 9 z 31 sascompoland
9
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 10 z 31 sascompoland
10
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 11 z 31 sascompoland
11
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 12 z 31 sascompoland
12
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 13 z 31 sascompoland
13
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 14 z 31 sascompoland
14
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 2 z 31 sascompoland
2
Usługi internetowe mogą udostępniać własny opis w opartym na XMLrsquou języku WSDL Można go obejrzeć
dodając do adresu usługi końcoacutewkę bdquowsdlrdquo WSDL dla przykładowego web serwisu dostępny jest pod
adresem
httpwwwwebservicexcomCurrencyConvertorasmxwsdl
Opis usługi internetowej umożliwia skonstruowanie zapytania w formacie SOAP Narzędzie takie jak SoapUI
potrafi automatycznie skonstruować szablon zapytania na podstawie WSDLrsquoa
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 3 z 31 sascompoland
3
Dostęp do usługi internetowej z programu SoapUI
Wybieramy Projects -gt New SOAP Project
Wpisujemy nazwę projektu i podajemy adres pod ktoacuterym dostępny jest WSDL
httpwwwwebservicexcomCurrencyConvertorasmxwsdl
Przy problemach z połączeniem należy się upewnić czy nie jesteśmy za serwerem proxy i wpisać odpowiednie ustawienia w Preferences -gt Proxy Settings Program nie wykrywa automatycznie ustawień proxy dla sieci jak popularne przeglądarki internetowe
Program automatycznie utworzy szablon XMLrsquoa z zapytaniem odpowiednim dla tej usługi internetowej
Uzupełniamy go i naciskamy zieloną strzałkę aby wysłać zapytanie do usługi internetowej i dostajemy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 4 z 31 sascompoland
4
odpowiedź (kurs euro w złotoacutewkach) także w formacie XML
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 5 z 31 sascompoland
5
Dostęp do usługi internetowej z poziomu SAS 4GL
Takie samo zapytanie możemy wysłać z poziomu języka SAS 4GL za pomocą procedury HTTP lub procedury
SOAP Obie te procedury są dostępne od wersji SAS 92 Są one dostępne w ramach licencji na produkt SAS
Base
filename request temp
filename response cwebserviceresponsexml
plik z zapytaniem xml
data _null_
file request
input
put _infile_
datalines4
ltsoapenvEnvelope
xmlnssoapenv=httpschemasxmlsoaporgsoapenvelope
xmlnsweb=httpwwwwebserviceXNETgt
ltsoapenvHeadergt
ltsoapenvBodygt
ltwebConversionRategt
ltwebFromCurrencygtEURltwebFromCurrencygt
ltwebToCurrencygtPLNltwebToCurrencygt
ltwebConversionRategt
ltsoapenvBodygt
ltsoapenvEnvelopegt
proc http
in=request
out=response
url=httpwwwwebservicexcomCurrencyConvertorasmx
method=post
ct=textxmlcharset=utf-8
Trzeba podać jeśli jesteśmy za serwerem proxy
proxyhost=adresserweraproxycom
proxyport=80
run
W wyniku działania procedury odpowiedź została zapisana w pliku cwebserviceresponsexml Za pomocą
silnika xml można taki plik zapisać jako bibliotekę SAS i wypisać zawartość zbioru
filename map cwebserviceresponsemap
libname resp xmlv2 xmlfileref=response xmlmap=map
proc print data=respConversionRateResponse
run
Do przypisania pliku xml jako biblioteki SAS potrzebna jest w tym przypadku mapa Mapę tworzy się za
pomocą narzędzia SAS XML Mapper ktoacutere może być zainstalowane z depotu lub pobrane ze strony
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 6 z 31 sascompoland
6
httpsupportsascomdemosdownloadssetupcatjspcat=Base+SAS+Software Film How to
Automatically Generate XMLMap Files
można znaleźć na stronie httpsupportsascomrndbasexmlengine
Zawartość pliku responsemap utworzonego automatycznie za pomocą programu SAS XML Mapper
ltxml version=10 encoding=windows-1250gt lt-- --gt lt-- 2013-06-13T121559 --gt lt-- SAS XML Libname Engine Map --gt lt-- Generated by XML Mapper 9030000020110518190000_v930 --gt lt-- --gt lt-- Validation report --gt lt-- --gt lt-- XMLMap validation completed successfully --gt lt-- --gt ltSXLEMAP name=AUTO_GEN version=21gt ltNAMESPACES count=4gt ltNS id=1 prefix=soapgthttpschemasxmlsoaporgsoapenvelopeltNSgt ltNS id=2 prefix=xsigthttpwwww3org2001XMLSchema-instanceltNSgt ltNS id=3 prefix=xsdgthttpwwww3org2001XMLSchemaltNSgt ltNS id=4 prefix=gthttpwwwwebserviceXNETltNSgt ltNAMESPACESgt lt-- --gt ltTABLE description=ConversionRateResponse name=ConversionRateResponsegt ltTABLE-PATH syntax=XPathENRgt1Envelope1Body4ConversionRateResponseltTABLE-PATHgt ltCOLUMN name=ConversionRateResultgt ltPATH syntax=XPathENRgt1Envelope1Body4ConversionRateResponse4ConversionRateResultltPATHgt ltTYPEgtnumericltTYPEgt ltDATATYPEgtdoubleltDATATYPEgt ltCOLUMNgt ltTABLEgt ltSXLEMAPgt
Web serwis można wywołać także za pomocą procedury SOAP
proc soap
in=request
out=response
url=httpwwwwebservicexcomCurrencyConvertorasmx
soapaction=httpwwwwebserviceXNETConversionRate
Trzeba podać jeśli jesteśmy za serwerem proxy
proxyhost=adresserweraproxycom
proxyport=80
run
Dokumentacja
HTTP Procedure SOAP Procedure SASreg 93 XML LIBNAME Engine
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 7 z 31 sascompoland
7
Tworzenie Usług internetowych w SAS BI Web Services
Aplikacja SAS BI Web Services jest częścią SAS Integration Technologies wchodzącej w skład pakietoacutew takich
jak SAS BI Server i wielu rozwiązań SAS Jest to aplikacja webowa działająca na serwerze aplikacji takim jak
JBOSS (SAS 92 SAS 93) lub SAS Web Application Server (SAS 94) Umożliwia ona udostępnianie procesoacutew
gotowych jako web serwisoacutew Od wersji 93 wszystkie procesy gotowe automatycznie udostępniane są jako
web serwisy W wersji 92 konieczny jest dodatkowy krok bdquoDeploy As Web Servicerdquo opisany na końcu tego
przykładu
Prosty Web Serwis dodający dwie liczby
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS (w tym przykładzie jest to zawartość pliku
cwebservicedodajsas)
global liczba1 liczba2
let suma = eval(ampliczba1 + ampliczba2)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 8 z 31 sascompoland
8
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 9 z 31 sascompoland
9
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 10 z 31 sascompoland
10
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 11 z 31 sascompoland
11
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 12 z 31 sascompoland
12
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 13 z 31 sascompoland
13
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 14 z 31 sascompoland
14
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 3 z 31 sascompoland
3
Dostęp do usługi internetowej z programu SoapUI
Wybieramy Projects -gt New SOAP Project
Wpisujemy nazwę projektu i podajemy adres pod ktoacuterym dostępny jest WSDL
httpwwwwebservicexcomCurrencyConvertorasmxwsdl
Przy problemach z połączeniem należy się upewnić czy nie jesteśmy za serwerem proxy i wpisać odpowiednie ustawienia w Preferences -gt Proxy Settings Program nie wykrywa automatycznie ustawień proxy dla sieci jak popularne przeglądarki internetowe
Program automatycznie utworzy szablon XMLrsquoa z zapytaniem odpowiednim dla tej usługi internetowej
Uzupełniamy go i naciskamy zieloną strzałkę aby wysłać zapytanie do usługi internetowej i dostajemy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 4 z 31 sascompoland
4
odpowiedź (kurs euro w złotoacutewkach) także w formacie XML
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 5 z 31 sascompoland
5
Dostęp do usługi internetowej z poziomu SAS 4GL
Takie samo zapytanie możemy wysłać z poziomu języka SAS 4GL za pomocą procedury HTTP lub procedury
SOAP Obie te procedury są dostępne od wersji SAS 92 Są one dostępne w ramach licencji na produkt SAS
Base
filename request temp
filename response cwebserviceresponsexml
plik z zapytaniem xml
data _null_
file request
input
put _infile_
datalines4
ltsoapenvEnvelope
xmlnssoapenv=httpschemasxmlsoaporgsoapenvelope
xmlnsweb=httpwwwwebserviceXNETgt
ltsoapenvHeadergt
ltsoapenvBodygt
ltwebConversionRategt
ltwebFromCurrencygtEURltwebFromCurrencygt
ltwebToCurrencygtPLNltwebToCurrencygt
ltwebConversionRategt
ltsoapenvBodygt
ltsoapenvEnvelopegt
proc http
in=request
out=response
url=httpwwwwebservicexcomCurrencyConvertorasmx
method=post
ct=textxmlcharset=utf-8
Trzeba podać jeśli jesteśmy za serwerem proxy
proxyhost=adresserweraproxycom
proxyport=80
run
W wyniku działania procedury odpowiedź została zapisana w pliku cwebserviceresponsexml Za pomocą
silnika xml można taki plik zapisać jako bibliotekę SAS i wypisać zawartość zbioru
filename map cwebserviceresponsemap
libname resp xmlv2 xmlfileref=response xmlmap=map
proc print data=respConversionRateResponse
run
Do przypisania pliku xml jako biblioteki SAS potrzebna jest w tym przypadku mapa Mapę tworzy się za
pomocą narzędzia SAS XML Mapper ktoacutere może być zainstalowane z depotu lub pobrane ze strony
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 6 z 31 sascompoland
6
httpsupportsascomdemosdownloadssetupcatjspcat=Base+SAS+Software Film How to
Automatically Generate XMLMap Files
można znaleźć na stronie httpsupportsascomrndbasexmlengine
Zawartość pliku responsemap utworzonego automatycznie za pomocą programu SAS XML Mapper
ltxml version=10 encoding=windows-1250gt lt-- --gt lt-- 2013-06-13T121559 --gt lt-- SAS XML Libname Engine Map --gt lt-- Generated by XML Mapper 9030000020110518190000_v930 --gt lt-- --gt lt-- Validation report --gt lt-- --gt lt-- XMLMap validation completed successfully --gt lt-- --gt ltSXLEMAP name=AUTO_GEN version=21gt ltNAMESPACES count=4gt ltNS id=1 prefix=soapgthttpschemasxmlsoaporgsoapenvelopeltNSgt ltNS id=2 prefix=xsigthttpwwww3org2001XMLSchema-instanceltNSgt ltNS id=3 prefix=xsdgthttpwwww3org2001XMLSchemaltNSgt ltNS id=4 prefix=gthttpwwwwebserviceXNETltNSgt ltNAMESPACESgt lt-- --gt ltTABLE description=ConversionRateResponse name=ConversionRateResponsegt ltTABLE-PATH syntax=XPathENRgt1Envelope1Body4ConversionRateResponseltTABLE-PATHgt ltCOLUMN name=ConversionRateResultgt ltPATH syntax=XPathENRgt1Envelope1Body4ConversionRateResponse4ConversionRateResultltPATHgt ltTYPEgtnumericltTYPEgt ltDATATYPEgtdoubleltDATATYPEgt ltCOLUMNgt ltTABLEgt ltSXLEMAPgt
Web serwis można wywołać także za pomocą procedury SOAP
proc soap
in=request
out=response
url=httpwwwwebservicexcomCurrencyConvertorasmx
soapaction=httpwwwwebserviceXNETConversionRate
Trzeba podać jeśli jesteśmy za serwerem proxy
proxyhost=adresserweraproxycom
proxyport=80
run
Dokumentacja
HTTP Procedure SOAP Procedure SASreg 93 XML LIBNAME Engine
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 7 z 31 sascompoland
7
Tworzenie Usług internetowych w SAS BI Web Services
Aplikacja SAS BI Web Services jest częścią SAS Integration Technologies wchodzącej w skład pakietoacutew takich
jak SAS BI Server i wielu rozwiązań SAS Jest to aplikacja webowa działająca na serwerze aplikacji takim jak
JBOSS (SAS 92 SAS 93) lub SAS Web Application Server (SAS 94) Umożliwia ona udostępnianie procesoacutew
gotowych jako web serwisoacutew Od wersji 93 wszystkie procesy gotowe automatycznie udostępniane są jako
web serwisy W wersji 92 konieczny jest dodatkowy krok bdquoDeploy As Web Servicerdquo opisany na końcu tego
przykładu
Prosty Web Serwis dodający dwie liczby
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS (w tym przykładzie jest to zawartość pliku
cwebservicedodajsas)
global liczba1 liczba2
let suma = eval(ampliczba1 + ampliczba2)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 8 z 31 sascompoland
8
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 9 z 31 sascompoland
9
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 10 z 31 sascompoland
10
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 11 z 31 sascompoland
11
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 12 z 31 sascompoland
12
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 13 z 31 sascompoland
13
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 14 z 31 sascompoland
14
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 4 z 31 sascompoland
4
odpowiedź (kurs euro w złotoacutewkach) także w formacie XML
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 5 z 31 sascompoland
5
Dostęp do usługi internetowej z poziomu SAS 4GL
Takie samo zapytanie możemy wysłać z poziomu języka SAS 4GL za pomocą procedury HTTP lub procedury
SOAP Obie te procedury są dostępne od wersji SAS 92 Są one dostępne w ramach licencji na produkt SAS
Base
filename request temp
filename response cwebserviceresponsexml
plik z zapytaniem xml
data _null_
file request
input
put _infile_
datalines4
ltsoapenvEnvelope
xmlnssoapenv=httpschemasxmlsoaporgsoapenvelope
xmlnsweb=httpwwwwebserviceXNETgt
ltsoapenvHeadergt
ltsoapenvBodygt
ltwebConversionRategt
ltwebFromCurrencygtEURltwebFromCurrencygt
ltwebToCurrencygtPLNltwebToCurrencygt
ltwebConversionRategt
ltsoapenvBodygt
ltsoapenvEnvelopegt
proc http
in=request
out=response
url=httpwwwwebservicexcomCurrencyConvertorasmx
method=post
ct=textxmlcharset=utf-8
Trzeba podać jeśli jesteśmy za serwerem proxy
proxyhost=adresserweraproxycom
proxyport=80
run
W wyniku działania procedury odpowiedź została zapisana w pliku cwebserviceresponsexml Za pomocą
silnika xml można taki plik zapisać jako bibliotekę SAS i wypisać zawartość zbioru
filename map cwebserviceresponsemap
libname resp xmlv2 xmlfileref=response xmlmap=map
proc print data=respConversionRateResponse
run
Do przypisania pliku xml jako biblioteki SAS potrzebna jest w tym przypadku mapa Mapę tworzy się za
pomocą narzędzia SAS XML Mapper ktoacutere może być zainstalowane z depotu lub pobrane ze strony
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 6 z 31 sascompoland
6
httpsupportsascomdemosdownloadssetupcatjspcat=Base+SAS+Software Film How to
Automatically Generate XMLMap Files
można znaleźć na stronie httpsupportsascomrndbasexmlengine
Zawartość pliku responsemap utworzonego automatycznie za pomocą programu SAS XML Mapper
ltxml version=10 encoding=windows-1250gt lt-- --gt lt-- 2013-06-13T121559 --gt lt-- SAS XML Libname Engine Map --gt lt-- Generated by XML Mapper 9030000020110518190000_v930 --gt lt-- --gt lt-- Validation report --gt lt-- --gt lt-- XMLMap validation completed successfully --gt lt-- --gt ltSXLEMAP name=AUTO_GEN version=21gt ltNAMESPACES count=4gt ltNS id=1 prefix=soapgthttpschemasxmlsoaporgsoapenvelopeltNSgt ltNS id=2 prefix=xsigthttpwwww3org2001XMLSchema-instanceltNSgt ltNS id=3 prefix=xsdgthttpwwww3org2001XMLSchemaltNSgt ltNS id=4 prefix=gthttpwwwwebserviceXNETltNSgt ltNAMESPACESgt lt-- --gt ltTABLE description=ConversionRateResponse name=ConversionRateResponsegt ltTABLE-PATH syntax=XPathENRgt1Envelope1Body4ConversionRateResponseltTABLE-PATHgt ltCOLUMN name=ConversionRateResultgt ltPATH syntax=XPathENRgt1Envelope1Body4ConversionRateResponse4ConversionRateResultltPATHgt ltTYPEgtnumericltTYPEgt ltDATATYPEgtdoubleltDATATYPEgt ltCOLUMNgt ltTABLEgt ltSXLEMAPgt
Web serwis można wywołać także za pomocą procedury SOAP
proc soap
in=request
out=response
url=httpwwwwebservicexcomCurrencyConvertorasmx
soapaction=httpwwwwebserviceXNETConversionRate
Trzeba podać jeśli jesteśmy za serwerem proxy
proxyhost=adresserweraproxycom
proxyport=80
run
Dokumentacja
HTTP Procedure SOAP Procedure SASreg 93 XML LIBNAME Engine
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 7 z 31 sascompoland
7
Tworzenie Usług internetowych w SAS BI Web Services
Aplikacja SAS BI Web Services jest częścią SAS Integration Technologies wchodzącej w skład pakietoacutew takich
jak SAS BI Server i wielu rozwiązań SAS Jest to aplikacja webowa działająca na serwerze aplikacji takim jak
JBOSS (SAS 92 SAS 93) lub SAS Web Application Server (SAS 94) Umożliwia ona udostępnianie procesoacutew
gotowych jako web serwisoacutew Od wersji 93 wszystkie procesy gotowe automatycznie udostępniane są jako
web serwisy W wersji 92 konieczny jest dodatkowy krok bdquoDeploy As Web Servicerdquo opisany na końcu tego
przykładu
Prosty Web Serwis dodający dwie liczby
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS (w tym przykładzie jest to zawartość pliku
cwebservicedodajsas)
global liczba1 liczba2
let suma = eval(ampliczba1 + ampliczba2)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 8 z 31 sascompoland
8
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 9 z 31 sascompoland
9
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 10 z 31 sascompoland
10
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 11 z 31 sascompoland
11
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 12 z 31 sascompoland
12
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 13 z 31 sascompoland
13
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 14 z 31 sascompoland
14
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 5 z 31 sascompoland
5
Dostęp do usługi internetowej z poziomu SAS 4GL
Takie samo zapytanie możemy wysłać z poziomu języka SAS 4GL za pomocą procedury HTTP lub procedury
SOAP Obie te procedury są dostępne od wersji SAS 92 Są one dostępne w ramach licencji na produkt SAS
Base
filename request temp
filename response cwebserviceresponsexml
plik z zapytaniem xml
data _null_
file request
input
put _infile_
datalines4
ltsoapenvEnvelope
xmlnssoapenv=httpschemasxmlsoaporgsoapenvelope
xmlnsweb=httpwwwwebserviceXNETgt
ltsoapenvHeadergt
ltsoapenvBodygt
ltwebConversionRategt
ltwebFromCurrencygtEURltwebFromCurrencygt
ltwebToCurrencygtPLNltwebToCurrencygt
ltwebConversionRategt
ltsoapenvBodygt
ltsoapenvEnvelopegt
proc http
in=request
out=response
url=httpwwwwebservicexcomCurrencyConvertorasmx
method=post
ct=textxmlcharset=utf-8
Trzeba podać jeśli jesteśmy za serwerem proxy
proxyhost=adresserweraproxycom
proxyport=80
run
W wyniku działania procedury odpowiedź została zapisana w pliku cwebserviceresponsexml Za pomocą
silnika xml można taki plik zapisać jako bibliotekę SAS i wypisać zawartość zbioru
filename map cwebserviceresponsemap
libname resp xmlv2 xmlfileref=response xmlmap=map
proc print data=respConversionRateResponse
run
Do przypisania pliku xml jako biblioteki SAS potrzebna jest w tym przypadku mapa Mapę tworzy się za
pomocą narzędzia SAS XML Mapper ktoacutere może być zainstalowane z depotu lub pobrane ze strony
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 6 z 31 sascompoland
6
httpsupportsascomdemosdownloadssetupcatjspcat=Base+SAS+Software Film How to
Automatically Generate XMLMap Files
można znaleźć na stronie httpsupportsascomrndbasexmlengine
Zawartość pliku responsemap utworzonego automatycznie za pomocą programu SAS XML Mapper
ltxml version=10 encoding=windows-1250gt lt-- --gt lt-- 2013-06-13T121559 --gt lt-- SAS XML Libname Engine Map --gt lt-- Generated by XML Mapper 9030000020110518190000_v930 --gt lt-- --gt lt-- Validation report --gt lt-- --gt lt-- XMLMap validation completed successfully --gt lt-- --gt ltSXLEMAP name=AUTO_GEN version=21gt ltNAMESPACES count=4gt ltNS id=1 prefix=soapgthttpschemasxmlsoaporgsoapenvelopeltNSgt ltNS id=2 prefix=xsigthttpwwww3org2001XMLSchema-instanceltNSgt ltNS id=3 prefix=xsdgthttpwwww3org2001XMLSchemaltNSgt ltNS id=4 prefix=gthttpwwwwebserviceXNETltNSgt ltNAMESPACESgt lt-- --gt ltTABLE description=ConversionRateResponse name=ConversionRateResponsegt ltTABLE-PATH syntax=XPathENRgt1Envelope1Body4ConversionRateResponseltTABLE-PATHgt ltCOLUMN name=ConversionRateResultgt ltPATH syntax=XPathENRgt1Envelope1Body4ConversionRateResponse4ConversionRateResultltPATHgt ltTYPEgtnumericltTYPEgt ltDATATYPEgtdoubleltDATATYPEgt ltCOLUMNgt ltTABLEgt ltSXLEMAPgt
Web serwis można wywołać także za pomocą procedury SOAP
proc soap
in=request
out=response
url=httpwwwwebservicexcomCurrencyConvertorasmx
soapaction=httpwwwwebserviceXNETConversionRate
Trzeba podać jeśli jesteśmy za serwerem proxy
proxyhost=adresserweraproxycom
proxyport=80
run
Dokumentacja
HTTP Procedure SOAP Procedure SASreg 93 XML LIBNAME Engine
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 7 z 31 sascompoland
7
Tworzenie Usług internetowych w SAS BI Web Services
Aplikacja SAS BI Web Services jest częścią SAS Integration Technologies wchodzącej w skład pakietoacutew takich
jak SAS BI Server i wielu rozwiązań SAS Jest to aplikacja webowa działająca na serwerze aplikacji takim jak
JBOSS (SAS 92 SAS 93) lub SAS Web Application Server (SAS 94) Umożliwia ona udostępnianie procesoacutew
gotowych jako web serwisoacutew Od wersji 93 wszystkie procesy gotowe automatycznie udostępniane są jako
web serwisy W wersji 92 konieczny jest dodatkowy krok bdquoDeploy As Web Servicerdquo opisany na końcu tego
przykładu
Prosty Web Serwis dodający dwie liczby
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS (w tym przykładzie jest to zawartość pliku
cwebservicedodajsas)
global liczba1 liczba2
let suma = eval(ampliczba1 + ampliczba2)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 8 z 31 sascompoland
8
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 9 z 31 sascompoland
9
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 10 z 31 sascompoland
10
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 11 z 31 sascompoland
11
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 12 z 31 sascompoland
12
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 13 z 31 sascompoland
13
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 14 z 31 sascompoland
14
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 6 z 31 sascompoland
6
httpsupportsascomdemosdownloadssetupcatjspcat=Base+SAS+Software Film How to
Automatically Generate XMLMap Files
można znaleźć na stronie httpsupportsascomrndbasexmlengine
Zawartość pliku responsemap utworzonego automatycznie za pomocą programu SAS XML Mapper
ltxml version=10 encoding=windows-1250gt lt-- --gt lt-- 2013-06-13T121559 --gt lt-- SAS XML Libname Engine Map --gt lt-- Generated by XML Mapper 9030000020110518190000_v930 --gt lt-- --gt lt-- Validation report --gt lt-- --gt lt-- XMLMap validation completed successfully --gt lt-- --gt ltSXLEMAP name=AUTO_GEN version=21gt ltNAMESPACES count=4gt ltNS id=1 prefix=soapgthttpschemasxmlsoaporgsoapenvelopeltNSgt ltNS id=2 prefix=xsigthttpwwww3org2001XMLSchema-instanceltNSgt ltNS id=3 prefix=xsdgthttpwwww3org2001XMLSchemaltNSgt ltNS id=4 prefix=gthttpwwwwebserviceXNETltNSgt ltNAMESPACESgt lt-- --gt ltTABLE description=ConversionRateResponse name=ConversionRateResponsegt ltTABLE-PATH syntax=XPathENRgt1Envelope1Body4ConversionRateResponseltTABLE-PATHgt ltCOLUMN name=ConversionRateResultgt ltPATH syntax=XPathENRgt1Envelope1Body4ConversionRateResponse4ConversionRateResultltPATHgt ltTYPEgtnumericltTYPEgt ltDATATYPEgtdoubleltDATATYPEgt ltCOLUMNgt ltTABLEgt ltSXLEMAPgt
Web serwis można wywołać także za pomocą procedury SOAP
proc soap
in=request
out=response
url=httpwwwwebservicexcomCurrencyConvertorasmx
soapaction=httpwwwwebserviceXNETConversionRate
Trzeba podać jeśli jesteśmy za serwerem proxy
proxyhost=adresserweraproxycom
proxyport=80
run
Dokumentacja
HTTP Procedure SOAP Procedure SASreg 93 XML LIBNAME Engine
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 7 z 31 sascompoland
7
Tworzenie Usług internetowych w SAS BI Web Services
Aplikacja SAS BI Web Services jest częścią SAS Integration Technologies wchodzącej w skład pakietoacutew takich
jak SAS BI Server i wielu rozwiązań SAS Jest to aplikacja webowa działająca na serwerze aplikacji takim jak
JBOSS (SAS 92 SAS 93) lub SAS Web Application Server (SAS 94) Umożliwia ona udostępnianie procesoacutew
gotowych jako web serwisoacutew Od wersji 93 wszystkie procesy gotowe automatycznie udostępniane są jako
web serwisy W wersji 92 konieczny jest dodatkowy krok bdquoDeploy As Web Servicerdquo opisany na końcu tego
przykładu
Prosty Web Serwis dodający dwie liczby
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS (w tym przykładzie jest to zawartość pliku
cwebservicedodajsas)
global liczba1 liczba2
let suma = eval(ampliczba1 + ampliczba2)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 8 z 31 sascompoland
8
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 9 z 31 sascompoland
9
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 10 z 31 sascompoland
10
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 11 z 31 sascompoland
11
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 12 z 31 sascompoland
12
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 13 z 31 sascompoland
13
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 14 z 31 sascompoland
14
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 7 z 31 sascompoland
7
Tworzenie Usług internetowych w SAS BI Web Services
Aplikacja SAS BI Web Services jest częścią SAS Integration Technologies wchodzącej w skład pakietoacutew takich
jak SAS BI Server i wielu rozwiązań SAS Jest to aplikacja webowa działająca na serwerze aplikacji takim jak
JBOSS (SAS 92 SAS 93) lub SAS Web Application Server (SAS 94) Umożliwia ona udostępnianie procesoacutew
gotowych jako web serwisoacutew Od wersji 93 wszystkie procesy gotowe automatycznie udostępniane są jako
web serwisy W wersji 92 konieczny jest dodatkowy krok bdquoDeploy As Web Servicerdquo opisany na końcu tego
przykładu
Prosty Web Serwis dodający dwie liczby
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS (w tym przykładzie jest to zawartość pliku
cwebservicedodajsas)
global liczba1 liczba2
let suma = eval(ampliczba1 + ampliczba2)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 8 z 31 sascompoland
8
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 9 z 31 sascompoland
9
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 10 z 31 sascompoland
10
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 11 z 31 sascompoland
11
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 12 z 31 sascompoland
12
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 13 z 31 sascompoland
13
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 14 z 31 sascompoland
14
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 8 z 31 sascompoland
8
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 9 z 31 sascompoland
9
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 10 z 31 sascompoland
10
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 11 z 31 sascompoland
11
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 12 z 31 sascompoland
12
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 13 z 31 sascompoland
13
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 14 z 31 sascompoland
14
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 9 z 31 sascompoland
9
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 10 z 31 sascompoland
10
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 11 z 31 sascompoland
11
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 12 z 31 sascompoland
12
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 13 z 31 sascompoland
13
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 14 z 31 sascompoland
14
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 10 z 31 sascompoland
10
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 11 z 31 sascompoland
11
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 12 z 31 sascompoland
12
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 13 z 31 sascompoland
13
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 14 z 31 sascompoland
14
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 11 z 31 sascompoland
11
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 12 z 31 sascompoland
12
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 13 z 31 sascompoland
13
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 14 z 31 sascompoland
14
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 12 z 31 sascompoland
12
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 13 z 31 sascompoland
13
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 14 z 31 sascompoland
14
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 13 z 31 sascompoland
13
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 14 z 31 sascompoland
14
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 14 z 31 sascompoland
14
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 15 z 31 sascompoland
15
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 16 z 31 sascompoland
16
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 17 z 31 sascompoland
17
Utworzony proces gotowy jest dostępny jako web serwis bez żadnych dodatkowych zabiegoacutew (wersje od SAS
93) pod adresem http(s)nazwa_serweraportSASBIWSservices[lokalizacja_procesu_w_metadanych]
Chodzi tu o adres serwera aplikacji webowych i jego port Dla tego konkretnego procesu WSDL znajdzie się
pod następującym adresem httpnazwa-maszyny8080SASBIWSservicesprzykladydodajWSDL Jeśli
ścieżka w metadanych zawiera znaki specjalne to muszą być one zakodowane Na przykład kod znaku spacji
to 20 URL ze spacją httpnazwa-maszyny8080SASBIWSservicesprzykladyCopy20of20dodajwsdl
Web serwis może być także widoczny pod adresem niezależnym od lokalizacji w metadanych Należy kliknąć
na proces gotowy prawym przyciskiem myszy i wybrać bdquoDeploy As Web Servicehelliprdquo Wybieramy potem
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 18 z 31 sascompoland
18
domyślny Web Service Marker URL i wpisujemy nazwę pod jaką chcemy aby serwis był dostępny
WSDL Web serwisu jest widoczny pod adresem
httpspljnbw7emeasascom8080SASBIWSservicesdodaj_liczbywsdl
Ten krok jest konieczny w wersji SAS 92 aby udostępnić proces gotowy jako web serwis
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 19 z 31 sascompoland
19
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Przy testowaniu usług internetowych na serwerze w lokalnej sieci należy wyłączyć proxy w aplikacji SoapUI (Preferences -gt Proxy Settings)
Web serwis transponujący zbiory SAS
W poprzednim przykładzie web serwis przyjmował na wejście pojedyncze wartości przekazywane do procesu
gotowego SAS jako makrozmienne i zwracał także pojedyncze wartości W tym przykładzie wejściem będzie
plik xml zawierający tabele w formacie używanym przez silnik bibliotek xml w SAS Wyjściem także będzie plik
xml
Logujemy się do programu SAS Management Console
Na wybranym folderze klikamy prawym przyciskiem myszy i wybieramy New -gt Stored Process
Wpisujemy nazwę tworzonego procesu gotowego
Proces gotowy będzie wykonywał następujący kod SAS
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 20 z 31 sascompoland
20
libname we XML
libname wy XML
stworzenie zbioru zawierającego nazwy zbioroacutew na wejściu
proc contents noprint data=we_all_ out=zbiory quit
run
stworzenie makrozmiennych zawierających nazwy zbioroacutew na wejściu
data _null_
set zbiory end=end
by memname
retain nr_zbioru 0
if firstmemname then do
nr_zbioru+1
call symput(compress(zbior_||nr_zbioru)trim(memname))
end
if end then call symput(liczba_zbiorowtrim(nr_zbioru))
run
macro transpose
do i=1 to ampliczba_zbiorow
proc transpose data=weampampzbior_ampi out=ampampzbior_ampi
var _all_
run
end
mend
transpose
skopiowanie przetransponowanych zbioroacutew do biblioteki wyjściwej
macro wy
proc copy in=work out=wy
select
do i=1 to ampliczba_zbiorow
ampampzbior_ampi
end
run
mend
wy
libname we
libname wy
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 21 z 31 sascompoland
21
Obrazy na kolejnych stronach przedstawiają właściwości procesu gotowego
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 22 z 31 sascompoland
22
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 23 z 31 sascompoland
23
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 24 z 31 sascompoland
24
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 25 z 31 sascompoland
25
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 26 z 31 sascompoland
26
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 27 z 31 sascompoland
27
Przetestujmy stworzony web serwis za pomocą aplikacji SoapUI
Dane użyte do testu
ltTABLEgt ltCLASSgt ltNamegt Alfred ltNamegt ltSexgt M ltSexgt ltAgegt 14 ltAgegt ltHeightgt 69 ltHeightgt ltWeightgt 1125 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Alice ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 565 ltHeightgt ltWeightgt 84 ltWeightgt ltCLASSgt ltCLASSgt ltNamegt Barbara ltNamegt ltSexgt F ltSexgt ltAgegt 13 ltAgegt ltHeightgt 653 ltHeightgt ltWeightgt 98 ltWeightgt ltCLASSgt ltPRDSALEgt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 28 z 31 sascompoland
28
ltACTUALgt 925 ltACTUALgt ltPREDICTgt 850 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-01-01 ltMONTHgt ltPRDSALEgt ltPRDSALEgt ltACTUALgt 999 ltACTUALgt ltPREDICTgt 297 ltPREDICTgt ltCOUNTRYgt KANADA ltCOUNTRYgt ltREGIONgt WSCHOacuteD ltREGIONgt ltDIVISIONgt OŚWIATA ltDIVISIONgt ltPRODTYPEgt MEBLE ltPRODTYPEgt ltPRODUCTgt KANAPA ltPRODUCTgt ltQUARTERgt 1 ltQUARTERgt ltYEARgt 1993 ltYEARgt ltMONTHgt 1993-02-01 ltMONTHgt ltPRDSALEgt ltTABLEgt
Dodanie schematu dla danych wejściowych lub wyjściowych
Dla danych wejściowych lub wyjściowych możemy także określić schemat XML Wtedy WSDL będzie zawierał
informację o postaci danych wejściowych lub wyjściowych W tym przykładzie zmodyfikujemy web serwis
transponujący dane dodając schemat XML dla danych wejściowych
Schemat może być utworzony automatycznie za pomocą następującego kodu SAS
filename schemat Cwebserviceclassxsd
libname xmllib xml Cwebserviceclassxml xmlmeta=schemadata
xmlschema=schemat
data xmllibclass
set sashelpclass
run
Wygenerowany schemat trzeba jeszcze zmodyfikować przez dodanie do elementu xsschema atrybutoacutew
targetNamespace=httpwwwtempuriorgxmlnamespaceclass
xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualified
Schemat gotowy do użycia przez web serwis wygląda tak
ltxml version=10 encoding=windows-1250 gt ltxsschema xmlnsxs=httpwwww3org2001XMLSchema targetNamespace=httpwwwtempuriorgxmlnamespaceclass xmlns=httpwwwtempuriorgxmlnamespaceclass elementFormDefault=qualifiedgt ltxselement name=TABLEgt ltxscomplexTypegt ltxssequencegt ltxselement ref=CLASS minOccurs=0 maxOccurs=unbounded gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxselement name=CLASSgt ltxscomplexTypegt
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 29 z 31 sascompoland
29
ltxssequencegt ltxselement name=Name minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=8 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Sex minOccurs=0gt ltxssimpleTypegt ltxsrestriction base=xsstringgt ltxsmaxLength value=1 gt ltxsrestrictiongt ltxssimpleTypegt ltxselementgt ltxselement name=Age minOccurs=0 type=xsdouble gt ltxselement name=Height minOccurs=0 type=xsdouble gt ltxselement name=Weight minOccurs=0 type=xsdouble gt ltxssequencegt ltxscomplexTypegt ltxselementgt ltxsschemagt
Następnie wchodzimy we właściwości źroacutedła danych (właściwości procesu zakładka Data ndash zaznaczamy XML
Data Source i klikamy bdquoEdithelliprdquo)
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 30 z 31 sascompoland
30
Zaznaczamy opcję bdquoSpecify schemardquo
W polu bdquoSchema URIrdquo podajemy lokalizację pliku xsd w następujący sposoacuteb
fileCwebserviceclassxsd
W polu bdquoReference namespace podajemy wartość taką samą jaką wprowadziliśmy wcześniej do
wygenerowanego schematu
httpwwwtempuriorgxmlnamespaceclass
W polu Referance name wpisujemy bdquoTABLErdquo
Jako Reference type wybieramy bdquoSchema elementrdquo
Jako WSDL generation options wybieramy bdquoEmbeddedrdquo
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI
Podstawy Web Serwisoacutew w SAS
Zespoacuteł Wsparcia Technicznego SAS Institute Polska Strona 31 z 31 sascompoland
31
Teraz możemy otworzyć w przeglądarce link
httpspljnbw7emeasascom8080SASBIWSservicesprzykladytransposewsdlampreload=yes i widzimy że
zawiera on informację o strukturze danych wejściowych Informacja ta może być wykorzystana przez
aplikację na przykład SoapUI