podstawy web serwisów w sas testowania użyjemy przykładowego web serwisu udostępniającego kursy...

31
Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego, SAS Institute Polska Wstęp Technologia Usług Internetowych (web serwisów) jest najprostszym sposobem integracji systemów informatycznych i budowania systemów rozproszonych. W ostatnich latach zdobyła duże znaczenie i popularność. Dokument ten opisuje podstawy używania i tworzenia web serwisów 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 serwisów za pomocą języka SAS 4GL oraz tworzenie web serwisów 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 9.3. W wersji 9.4 jedyną różnicą jest numer portu aplikacji web’owej przy domyślnej konfiguracji. W wersji 9.3 był to port 8080. W wersji 9.4 domyślnym portem jest 7980 na systemie Linux i 80 na systemie Windows. Spis treści Wstęp ................................................................................................................................................................. 1 Cechy Web Serwisów ......................................................................................................................................... 1 Testowanie Web Serwisów ................................................................................................................................ 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 Serwisów 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 Serwisów Do testowania web serwisów użyć można aplikacji SoapUI dostępnej na licencji GNU Lesser General Public License (LGPL). Aplikację można pobrać ze strony http://sourceforge.net/projects/soapui/. Przykładowy Web Serwis Do testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem http://www.webservicex.com/CurrencyConvertor.asmx

Upload: lenhi

Post on 24-Apr-2018

222 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 2: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 3: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 4: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 5: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 6: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 7: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 8: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 9: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 10: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 11: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 12: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 13: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 14: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 15: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 16: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 17: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 18: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 19: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 20: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 21: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 22: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 23: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 24: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 25: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 26: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 27: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 28: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 29: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 30: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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

Page 31: Podstawy Web Serwisów w SAS testowania użyjemy przykładowego Web Serwisu udostępniającego kursy walut dostępnego pod adresem Podstawy Web Serwisów w SAS Zespół Wsparcia Technicznego

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