Transakcyjność i walidacja danych w XML-u.
Transkrypt
Transakcyjność i walidacja danych w XML-u.
Transakcyjność i walidacja danych w rozwiązaniach XML-owych. Bober Dariusz, Piotr Muryjas Streszczenie Ukazanie potrzeby zapewnienia transakcyjności komunikatów e-biznesowych opartych o technologię XML oraz propozycja od autorskich rozwiązań. 1. Wstęp – XML jako metajęzyk do budowania języków/aplikacji branżowych/środowiskowych. specyjalizowanych XML zyskał już sobie miano metajęzyka znacznikowego, a to za sprawą szeregu wypracowanych rozwiązań nazwijmy je „branżowych”, należy tu wymienić[1]: • BITS – Język technologii bankowych • IFX – Wymiana danych finansowych • BIPS – Bankowy system płatności internetowych • TIM – Znaczniki wymiany danych telekomunikacyjnych • SIF – Szkielet współpracy międzyszkolnej • CBL – Biblioteka biznesowa • ebXML – XML dla biznesu elektronicznego • PDML – Znacznikowy język opisu produktów • FIX – Protokół wymiany danych finansowych • TEI – Program kodowania tekstu • CML – Chemiczny język znaczników Każde z tych rozwiązań to specjalizowany język nazywany zamiennie aplikacją XML. Aplikacja XML, czyli zastosowanie XML, to zastosowanie tego języka do jakiejś dziedziny; i tak MathML to XML zastosowany w matematyce. Aplikacja XML nie jest programem służącym do obsługi XML – takie potoczne rozumienie słowa „aplikacja” jest błędne. Każde ze środowisk dokonało/dokonuje takiej specyjalizacji języka XML, tak wykożystuje mechanizm znaczników aby uzyskać aplikację zapewniającą jak największą jej funkcjonalność w aspekcie własnych indywidualnych/określonych potrzeb. W każdej z „branż” dokumenty zapisane w danym języku są łatwo interpretowalne niezależnie od ich miejsca powstania. 2. Adaptacja XML do specyfiki wymagań funkcjonalnych w różnych obszarach działania – czyli krótko o wybranych językach / omówienie wybranych aplikacji XML. Technologia XML, pomimo „młodego wieku” – 5 lat, doczekała się już wielu implementacji. Elastyczność w definiowaniu znaczników i łatwość interpretacji zapisanej informacji sprawiła, że język XML jest używany obecnie w produktach Netscape i Microsoftu oraz w instalacjach wielu programów np. Perl. Poszczególne środowiska/firmy tworzą własne aplikacje adaptując XMLa do specyfiki własnych wymagań funkcjonalnych. Oto kilka wybranych przykładów specjalizacji środowiskowych języka XML [1]: Zdefiniowanie własnego języka znaczników jest bardzo przydatne dla grup ludzi o wspólnych zainteresowaniach, na przykład dla fizyków czy chemików, gdyż umożliwia to używanie jednolitych symboli i jednolitej grafiki w wyspecjalizowanych przeglądarkach. CML - Chemiczny język znaczników Dokument zapisany w CML jest zrozumiały dla środowiska chemików, który wykorzystują go m.in. do zapisu wzorów cząstek chemicznych. Istnieją również przeglądarki, które zawierają parser (parser – program służący to tłumaczenia kodu dokumentów znacznikowych, parz więcej [1],[2]) obsługujący CML, i które potrafią na podstawie kodu narysować strukturę takiej cząsteczki, rysunek 1. <?jumbo:namespace ns="http://www.xml-cml.org" prefix="C" java="jumbo.cmlxml.*Node" ?> <C:molecule id="thiophenol"> <C:atomArray builtin="elsym"> C C C C C C C S C C O O </C:atomArray> <C:atomArray builtin="x2" type="float"> 0 0.866 0.866 0 -0.866 -0.866 0.0 0.0 1.732 -1.732 1.732 -1.732 </C:atomArray> <C:atomArray builtin="y2" type="float"> 1 0.5 -0.5 -1.0 -0.5 0.5 -2.0 2.0 1.0 1.0 2.0 2.0 </C:atomArray> <C:atomArray builtin="atid1"> 1 2 3 4 5 6 1 4 2 9 6 10 </C:atomArray> <C:atomArray builtin="atid2"> 2 3 4 5 6 1 8 7 9 11 10 12 </C:atomArray> <C:atomArray builtin="order" type="integer"> 4 4 4 4 4 4 1 1 1 2 1 2 </C:atomArray> </C:molecule> Rysunek 1. Język CML a)definicja cząstki Triofenolu, b) widok cząstki w przeglądarce Jumbo Dzięki CML chemicy mogą tworzyć i publikować opisy cząsteczek i łatwo je między sobą wymieniać. CML daje również możliwość wyszukiwania związków o cechach spełniających jakieś warunki. MathML - Matematyczny język znaczników Matematyczny język znaczników powstał, aby umożliwić publikację dokumentach sieciowych zawierających równania matematyczne i różne symbole matematyczne. MathML jest specyfikacją W3C [10], grupa udostępnia również pod adresem www.w3.org/Amaya/ przeglądarkę o nazwie „Amaya” umożliwiającą prezentację równań matematycznych napisanych w tym języku. Rysunek 2 przedstawia równanie 3Z2 – 6Z + 12 = 0 zapisane w dokumencie MathML oraz widok tego dokumentu w przeglądarce Amaya. <?xml version="1.0" encoding="iso-8859-2"?> <html xmlns:m="http://www.w3.org/TR/REC-MathML/"> <math> <m:mrow> <m:mrow> <m:mn>3</m:mn> <m:mo>⁢</m:mo> <m:msup> <m:mi>Z</m:mi> <m:mn>2</m:mn> </m:msup> <m:mo>-</m:mo> <m:mrow> <m:mn>6</m:mn> <m:mo>⁢</m:mo> <m:mi>Z</m:mi> </m:mrow> <m:mo>+</m:mo> <m:mn>12</m:mn> </m:mrow> <m:mo>=</m:mo> <m:mn>0</m:mn> </m:mrow> </math> Rysunek 2. Przykład dokumentu MathML a) kod równania b) widok równania w przeglądarce Amaya SMIL - Język synchronizacji multimediów Język synchronizacji multimediów (Synchronized Multimedia Integration Language, SMIL), standard W3C [11], jest próbą rozwiązania problemu przeglądarek multimedialnych, które zwykle potrafią obsłużyć jeden tylko rodzaj danych multimedialnych na raz: obraz wideo, dźwięk lub obrazki. Zadaniem języka SMIL jest tworzenie podobnych do telewizyjnych prezentacji multimedialnych, odbywa się to poprzez wskazanie, które pliki multimedialne kiedy mają być odgrywane. Sam język nie definiuje ani nie zawiera zasobów multimedialnych. Na rysunku 3. przedstawiono przykład dokumentu SMIL tworzącego sekwencję multimedialną: najpierw odgrywane są pliki mozart1.wav i amadeus1.mov, następnie prezentowany jest plik mozart1.htm, następnie odgrywane są mozart2.wav i amadeus2.mov, w końcu wyświetlany jest mozart2.htm. <?xml version="1.0" encoding="iso-8859-2"?> <!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 1.0//EN" "http://www.w3.org/TR/REC-smil/SMIL10.dtd"> <smil> <body> <seq id="mozart"> <audio src="mozart1.wav"/> <video src="amadeus1.mov"/> <text src="mozart1.htm"/> <audio src="mozart2.wav"/> <video src="amadeus2.mov"/> <text src="mozart2.htm"/> </seq> </body> </smil> Rysunek 3. Przykład prezentacji multimedialnej zdefiniowanej w języku SMIL. Język SMIL został wykorzystany w oprogramowaniu do obsługi multimedialnych RealNetworks [12] oraz Apple Quicktime [13]. strumieni W tej sytuacji Microsoft w przeglądarce Internet Explorer nie zaimplementował obsługi SMIL, , choć pewien jej fragment umieszczono w wersji 5.5 przeglądarki. W Internecie pod adresem www.empirenet.com/~joseram znajdziesz napisany w Javie aplet SMIL wraz z niesamowitymi przykładami symfonii połączonych z obrazami. HTML+TIME – alternatywa dla języka SMIL Firmy Microsoft, Macromedia oraz Compaq stworzyły propozycję konkurencyjną dla języka SMIL – aplikację XML stanowiącą multimedialne interaktywne rozszerzenie języka HTML synchronizowane czasem (Timed Interactive Multimedia Extensions) o nazwie HTML+TIME [14]. Dokumenty SMIL umożliwiają przetwarzanie innych plików, natomiast dokumenty HTML+TIME pozwalają obsługiwać w ramach jednej strony kod HTML oraz prezentacje multimedialne. Język ten został zaimplementowany w Internet Explorerze jako zachowanie (ang. behavior)– jest to nowość Explorera 5 pozwalająca oddzielić kod od danych. Na rysunku 4. przedstawiono przykład dokumentu HTML+TIME, który wyświetlającego słowa „Pozdrowienia, ze, świata i HTML+TIME”, przy czym poszczególne słowa pojawiają się kolejno co dwie sekundy, sekwencja powtarza się pięciokrotnie. <HTML> <HEAD> <TITLE> Użycie HTML+TIME </TITLE> <STYLE> .time {behavior: url(#default#time);} </STYLE> </HEAD> <BODY> <DIV CLASS="time" t:REPEAT="5" t:DUR="10" t:TIMELINE="par"> <DIV CLASS="time" t:BEGIN="0" t:DUR="10">Pozdrowienia</DIV> <DIV CLASS="time" t:BEGIN="2" t:DUR="10">ze</DIV> <DIV CLASS="time" t:BEGIN="4" t:DUR="10">świata</DIV> <DIV CLASS="time" t:BEGIN="6" t:DUR="10">HTML+TIME</DIV> </DIV> </BODY> </HTML> Rysunek 4. Przykład dokumentu w języku HTML+TIME a)kod dokumentu b) prezentacja dokumentu w przeglądarce Internet Exploer. XHTML – HTML 4.0 przepisany przez W3C jako aplikacja XML XHTML (Extensible HyperText Markup Language) jest jedną z największych aplikacji XML stanowiącą pomost między HTML a XML, napisaną przez W3C celem rozpowszechnienia standardu XML. XHTML to aplikacja naśladująca HTML 4.0 tak, aby można było wyświetlać jego dokumenty w zwykłych przeglądarkach sieciowych [15]. Na rysunku 5. przedstawiono przykładowy dokument XHTML. <?xml version="1.0" encoding="iso-8859-2"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title> Strona WWW numer 1 </title> </head> <body> <h1> Witaj w XHTML! </h1> <center> Strona ta zawiera tylko zwykły tekst. <p> To jest nowy akapit. </p> </center> </body> </html> Rysunek 5. Dokument w języku XHTML a) kod dokumentu b) sposób wyświetlania w przeglądarce. W języku XHTML dokument koduje się bardzo podobnie jak HTML, należy jednak ściśle przestrzegać składni XML (zamykać wszystkie elementy znacznikami końcowymi, znaczniki – zgodnie z normą XHTML – zapisywać małymi literami). . <HTML xmlns:v="urn:schemas-microsoft-com:vml"> <HEAD> <TITLE> Użycie wektorowego języka znaczników VML </TITLE> <STYLE> v\:* {behavior: url(#default#VML);} </STYLE> </HEAD> <BODY> <CENTER> <H1> Użycie wektorowego języka znaczników VML </H1> </CENTER> <P> <v:oval STYLE='width:100pt; height:75pt' fillcolor="yellow"> </v:oval> <P> <v:rect STYLE='width:100pt; height:75pt' fillcolor="blue" strokecolor="red" STROKEWEIGHT="2pt"/> <P> <v:polyline POINTS="20pt,55pt,100pt,-10pt,180pt,65pt,260pt,25pt" strokecolor="red" STROKEWEIGHT="2pt"/> </BODY> </HTML> Rysunek 6. Dokument VML a) kod dokumentu b) prezentacja w przeglądarce Internet Exploer VML - Wektorowy język znaczników Wektorowy język znaczników VML (Vector Markup Language) to aplikacja zaproponowana przez Microsoft [16] dająca możliwość rysowania wielu figur geometrycznych poprzez podanie ich wektorowego opisu. Rysunek 6. zawiera przykład dokumentu VML, który powoduje wyrysowanie żółtej elipsy, niebieskiego prostokąta oraz czerwonej linii łamanej. XUL - język interfejsu użytkownika XUL (XML-based User Interface Language) to oparty na XML język interfejsu użytkownika pochodzący od Netscape i Mozilli umożliwia opisanie elementów interfejsu użytkownika, które mają być wyświetlone w przeglądarce. Obecnie XUL obsługiwany jest jedynie w programie Netscape Navigator 6 [17]. Przedstawiony na rysunku 7. dokument w języku XUL powoduje dodanie w oknie przeglądarki bocznych pasków przewijania <?xml version="1.0" encoding="iso-8859-2"?> <window align="horizontal" xmlns="http://www.mozilla.org/keymaster/ gatekeeper/there.is.only.xul"> <scrollbar align="vertical"/> <box align="vertical" flex="100%"> <scrollbar align="horizontal"/> <spring flex="100%" style="background-color: white"/> <scrollbar align="horizontal"/> </box> <scrollbar align="vertical"/> </window> Rysunek 7. Języku XUL a)kod dokumentu b)prezentacja w przeglądarce Netscape. XBRL - Rozszerzalny język raportów biznesowych XBRL (Extensible Business Reporting Language) to otwarta specyfikacja używająca XML do opisywania warunków finansowych [18]. XBRL pozwala na takie zakodowanie raportów finansowych, aby ułatwić ich przeszukiwanie i pobieranie z nich potrzebnych informacji. Przykład raportu finansowego zakodowanego w języku XBRL przedstawiony jest na rysunku 8. To tylko wybrane przykłady specjalizowanych rozwiązań z pośród licznej rodziny aplikacji XML jakie twórcy poszczególnych języków zaimplementowali do potrzeb własnych środowisk. Wielość dziedzin w których XML znalazł swoje zastosowanie świadczy o jego przydatności w tworzeniu szczegółowych rozwiązani. Takie a nie inne zachowanie się poszczególnych przeglądarek (patrz rysunki 1 do 8) wynika z odpowiedniego zrozumienia kodu danego języka. Interpreterami kodów języków XML są programiki zwane PARSERAMI. To od parsera zależy jak zostanie odczytany dany fragment kodu i jaka na nim zostanie wywołana akcja. Jako obszar dalszych rozważań autorów zostanie obrany e-bussines. Pod kątem specyfiki transakcji biznesowych drogą elektroniczną (elektronicznej wymiany dokumentów EDI) zostanie przebadana technologia XML. Zweryfikowane zostaną istniejące rozwiązania wykorzystujące tą technologię oraz ich komletność w sęsie zapewnienia pełnej funkcjonalności dla prowadzenia biznesu drogą elektroniczną. <?xml version="1.0" encoding="utf-8"?> <group xmlns="http://www.xbrl.org/us/aicpa-us-gaap" xmlns:gpsi="http://www.xbrl.org/TaxonomyCustom.xsd" id="543-AB" entity="NASDAQ:GPSI" period="1999-05-31" schemaLocation="http://www.xbrl.org/TaxonomyCustom.xsd" scaleFactor="6" precision="9" type="USGAAP:Financial" unit="ISO4217:USD" decimalPattern="" formatName=""> <item id="IS-025" type="operatingExpenses.researchExpense" period="P1Y/1999-05-31">20427</item> <item id="IS-026" type="operatingExpenses.researchExpense" period="P1Y/1998-05-31">12586</item> </group> <group type="gpsi:detail.quarterly" period="1998-05-31"> <item period="1997-12-01/1998-02-28">0.17</item> <item period="1998-03-01/1998-05-31">-0.12</item> <item period="1998-06-01/1998-05-31">0.33</item> </group> <group type="gpsi:detail.quarterly" period="1999-05-31"> <item period="1998-12-01/1999-02-28">0.23</item> <item period="1999-03-01/1999-05-31">0.28</item> <item period="1998-06-01/1999-05-31">0.86</item> </group> Rysunek 8. Przykład rapotu finansowego zapisanego w języku XBRL. 3. XML w rozwiązaniach e-biznesowych. Język XML w biznesie – elektroniczna wymiana dokumentów Analiza istniejących rozwiązań W istniejących na rynku rozwiązaniach biznesowych wykorzystujących język XML wykreśla się pewien standard co do treści przesyłanych komunikatów. Najczęściej przesyłane komunikaty to [9]: - zapytanie ofertowe - zamówienie - potwierdzenie zamówienia - faktura - zapytanie o stany magazynowe - inne Komunikaty te są naturalnym odzwierciedleniem życia gospodarczego przedsiębiorstw i reprezentują większość procesów zachodzących pomiędzy partnerami biznesowymi, a tradycyjnie realizowanych z wykorzystaniem nośnika papierowego. Niemniej jednak w każdym indywidualnie rozpatrywanym przypadku struktura dokumentów wybranego komunikatu różniła się od struktury dokumentu tego komunikatu proponowanego przez innego kontrahenta. Główne różnice to: - zmiana nazewnictwa poszczególnych wskaźników - zmiana wymagalności ich wystąpień - zmiana kolejności znaczników - duża dowolność w definiowaniu atrybutów poszczególnych znaczników W praktyce format dokumentu(jego dane i struktura organizacji danych) proponowanego przez danego kontrahenta zależał od jego indywidualnych potrzeb, lub też od rozwiązań jakie przyjęła firma świadcząca usługi informatyczne kontrahentowi. Próby zestandaryzowania komunikatów biznesowych są trudnym zadaniem. Obecnie najbliżej miana standardu znajdują się rozwiązania oparte o specyfikację ebXML [3] [9] [5] [6] [7] [8], uznawaną m.in. przez organizacje UN/CEFACT (podać pełną nazwę), OASIS (i tu) oraz EAN.UCC(i tu). Komunikaty e-biznesowe wg specyfikacji ebXML /Elektroniczne dokumenty biznesowe proponowane przez EAN.UCC W lipcu 2001 EAN Int. i UCC opublikowały zestaw schematów komunikatów XML, zgodnych zarówno ze specyfikacjami ebXML, jak i pozostałymi standardami systemu EAN.UCC [9]. Poszczególne komunikaty biznesowe zostały pogrupowane w poniższe dokumenty[9]: A. Dokumenty rdzenia - Core Item (pozycja towarowa) realizuje proces komunikacji obowiązkowych elementów danych, podających podstawowy numer identyfikacyjny produktu, opis pozycji, jednostkę miary i klasyfikację pozycji. - Core Party (dane firmy) zawiera podstawowe dane biznesowe wspólne dla wszystkich stron biorących udział w wymianie informacji pomiędzy partnerami handlowymi, obejmujące identyfikację partnera, szczegółowe informacje o firmie i jej funkcji w wymianie, nazwę i adres oraz informacje finansowe. - Core Order (zamówienie) zapewnia nabywcy złożenie zamówienia do sprzedawcy na zakup danej ilości towarów i usług, i dostarczenie ich do wskazanej lokalizacji. - Core Despatch Advice (awizo wysyłki) umożliwia dostawcy przekazanie szczegółowej informacji o zawartości wysyłki, oraz umożliwia odbiorcy dostawy potwierdzić otrzymanie dostawy zgodnej z zamówieniem. - Core Request for Payment (żądanie zapłaty) zdefiniowano jako żądanie zapłaty za towary lub usługi na warunkach uzgodnionych między sprzedawcą i nabywcą. B. Dokumenty rozszerzeń - Item Relationship Dependent Data Extension (informacje dodatkowe o pozycji) zawiera atrybuty pozycji towarowej, które nie znalazły się z Core Item. - FMCG Item Extension (fast moving consumer goods - towary szybko rotujące) zdefiniowano na podstawie wspólnych wymagań dla wymienianych danych dotyczących towarów szybko rotujących. Dane te natępnie posłużą do głębszej analizy sprzedaży. - Simple Invoice Extension (faktura) jest rozszerzeniem dla Core Request for Payment. Zawiera dane dotyczące kalkulacji cen i numery referencyjne - - - (w polsce – dane wymagane ustawą o podatkach oraz ustawą o rachunkowości) Party Financial Institution Information Extension (informacja o instytucji finansowej) zapewnia realizację opcji identyfikacji instytucji finansowej upoważnionej do realizacji transakcji finansowej. Informacja ta obejmuje numer konta bankowego, kod banku, nazwę właścicie-la konta, walutę transakcji, nazwę banku. Party Pallet System Extension (system palet) wspomaga proces zamawiania, przyjmowania i wysłania palet. Statyczna informacja o systemie paletowania może być ustalona w procesie uzgodnienia danych albo to rozszerzenie można zastosować z innym komunikatem. Allowance-Charge Extension zawiera szczegółowe informacje o zniżkach lub opłatach. Payment Terms Extension (warunki płatności) zapewnia sprzedawcy możliwość poinformowania o warunkach płatności za towary lub usługi. Czy zatem, skoro technologia XML jest coraz powszechniej wykorzystywana przez środowiska e-biznesowe oraz został wypracowany jakiś standard wymienianych komunikatów. To czy można tu już mówić o istnieniu języka/aplikacji XML-owej specyficznej tylko dla tego środowiska. Czy rozwiązania oparte o wspomnianą specyfikę zapewniają pełną funkcjonalność obsługi komunikatów za którymi idą nierzadko konkretne pieniądze. Otóż zdaniem autorów artykułu tak nie jest. 4. Budowanie tezy: Rozwój i specjalizacja języka/aplikacji XML w obszarze e biznesu. /Specyfikacja funkcjonalna środowiska e-biznesowego. Z uwagi na specyfikę środowiska biznesu, autorzy artykułu wnoszą o zasadność tezy: aby aplikacja obsługująca elektroniczną wymianę dokumentów zapewniała pełną funkcjonalność w zakresie walidacji przesyłanych komunikatów jak i transakcyjności ich zajścia – cech zaczerpniętych z systemów bazodanowych/systemów zintegrowanych. Potrzeba walidacji wynika z konieczności weryfikowania przesyłanego dokumentu do/od kontrahenta pod względem poprawności merytorycznej. Dokument winien zawierać wszystkie wymagane, określone wcześniej pola (znaczniki). Wartości przekazywane za pomocą znaczników i ich atrybutów winny być określonego typu. Transakcyjność oferuje dwustanową obsługę komunikatów biznesowych – albo dokument trafił do (został prawidłowo zaimportowany przez system) kontrahenta i odnotowuje się to we własnym systemie, albo „nie dotarł” (utknął na łączach internetu) należy go wysłać powtórnie. Jest to szczególnie istotne w przypadku bardziej złożonych modeli biznesowych1 funkcjonujących w rzeczywistości gospodarczej. 1 Dla celów projektu autorzy wprowadzają pojęcie tzw „modeli biznesowych” będących odzwierciedleniem ilości firm współpracujących w łańcuszku dostaw, szczegóły w punkcie 7. 5. Mechanizmy języka XML pozwalające na weryfikację poprawności danych – walidację Walidacji struktury dokumentu XML w zakresie poprawności nazw i kolejności znaczników, kompletności atrybutów i zgodności typów danych można dokonać tylko wówczas gdy dostępna jest definicja tej struktury. Strukturę dokumentu opisuje się na dwa sposoby: poprzez elementy DTD – Definicji typu dokumentu – lub schematy XML [4b]. 5.1. Definicja typu dokumentu (DTD) Dokument XML można walidować, jeśli związana jest z nim definicja typu dokumentu (DTD) i kiedy dokument jest z nią zgodny. DTD dokumentu określa jego prawidłową składnię. DTD mogą być przechowywane w osobnym pliku lub w samym dokumencie, w elemencie <!DOCTYPE>. Na rysunku 10 zamieszczono przykład, w którym do dokumentu zamówienia zakupowego dołączony jest element <!DOCTYPE>. <?xml version="1.0" encoding="iso-8859-2"?> <?xml-stylesheet type="text/css" href="zamowienia.css"?> <!doctype zamowienie [ <!element zamowienie (linia*)> <!element linia empty> <!attlist zamowienie nr cdata #required> <!attlist zamowienie data cdata #required> <!attlist zamowienie od cdata #required> <!attlist linia nr id #required> <!attlist linia indeks cdata #required> <!attlist linia nazwa cdata #required> <!attlist linia ilosc cdata #required> <!attlist linia jm cdata #required> ]> <zamowienie nr=’0300123’ data=’2003-03-26’ od=’xyz s.a.’> <linia nr=’1’ indeks=’10012’ nazwa=’makaron pastella’ ilosc=’450’ jm=’kg’/> <linia nr=’2’ indeks=’22012’ nazwa=’paluszki słone’ ilosc=’100’ jm=’sz’/> </zamowienie> Rysunek 10. Komunikat zamówienia zakupu z DTD Podczas przetwarzania dokumentu zamówienia parser sprawdzi czy znacznikiem głównym dokumentu jest znacznik o nazwie „<zamowienie>”, czy znacznik ten zawiera elementy o nazwie „<linia>”. Nastąpi również weryfikacja poszczególnych znaczników ze względu na ich atrybuty, wszystkie posiadają status #REQUIRED (wymagany). Wszystkie poza numerem lini są typu CDATA (ciąg znaków), natomiast numer lini jest typu ID – co oznacza, że atrybut ten musi zawierać unikatową wartość w skali dokumentu (numer linii na zamówieniu nie może się powtórzyć). Więcej o DTD znajdziesz w [2]. 5.2. Schematy XML DTD choć prostszy w definicji w stosunku do Schema XML, posiada jednak ograniczone możliwości przy definiowaniu złożonych struktur danych. Jest również „sztywny” – ma niewielkie możliwości w rozbudowie raz już zdefiniowanych modeli. Schematy XML pozwalają nie tylko opisać składnię dokumentu, tak jak DTD, ale pozwalają określić typy danych w treści elementów, umożliwiają dziedziczenie składni po innych schematach, wstawianie komentarzy, używanie schematów posługujących się wieloma przestrzeniami nazw, tworzenie prostych i złożonych typów danych, określanie minimalnej i maksymalnej liczby wystąpień elementu, tworzenie typów w postac i list, tworzenie grup atrybutów, ograniczanie zakresu informacji, które inne schematy mogą dziedziczyć po danym, łączenie wielu schematów w całość, wymuszanie niepowtarzalności wartości atrybutów itp [1] [4a]. Rysunek 11 zawiera przykład zamówienia prezentowanego wcześniej, tym razem struktura dokumentu określona jest poprzez schematy XML. <?xml version="1.0" encoding="iso-8859-2"?> <?xml-stylesheet type="text/css" href="zamowienia.css"?> <schematy_zamowienia xmlns=”http://pluton.pol.lublin.pl/xml/schematy” xmlns:xsi=”http://www.w3.org/2001/xmlschema-instance” xsi:schemalocation=”http://pluton.pol.lublin.pl/xml/schematy zamowienia.xsd”> <zamowienie nr=’0300123’ data=’2003-03-26’ od=’xyz s.a.’> <linia nr=’1’ indeks=’10012’ nazwa=’makaron pastella’ ilosc=’450’ jm=’kg’/> <linia nr=’2’ indeks=’22012’ nazwa=’paluszki słone’ ilosc=’100’ jm=’sz’/> </zamowienie> </schematy_zamowienia> Rysunek 11. Komunikat zamówienia zakupu z Schema XML W elemencie głównym <schematy_zamowienia> zdefiniowano domyślną przestrzeń nazw (XML namespace [1] [2]), jest ona zgodna z przestrzenią docelową schematu. Powołano się również na przestrzeń nazw określającą atrybut „schemaLocation”, służący do wskazania schematu. Dokument zamówienia winien mieć teraz zbudowany schemat i zapisany w pliku „zamowienia.xsd”. Przykład takiego schematu przedstawiono na rysunku 12. Elementy należące do przestrzeni nazw oznaczonej prefiksem „xsd” stanowią składniki języka definiowania schematów. 6. Transakcyjność w rozwiązaniach XML-owych Technologia XML nie dostarcza naturalnych mechanizmów, takich jakimi w przypadku walidacji jest definicja struktury dokumentu (DTD, Shema XML), pozwalających na odnotowanie zajścia/bądź-nie transakcji. By zapewnić transakcyjność wykonywanych operacji przesyłania danych poprzez internet, stosuje się „zewnętrzne” rozwiązania softwerowe. <?xml version="1.0" encoding="iso-8859-2"?> <xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema” targetNamespace=”http://pluton.pol.lublin.pl/xml/sch ematy” xmlns=”http://www.w3.org/2001/XMLSchema” elementFormDefault=”qualified” version=”1.1”> <xsd:element name=”schematy_zamowienia”> <xsd:complexType> <xsd:sequence> <xsd:element ref=”zamowienie” minoccurs=”1” maxoccurs=”unbounded”/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name=”zamowienia”> <xsd:complexType> <xsd:sequence> <xsd:element ref=”linia” minoccurs=”1” maxoccurs=”unbounded”/> </xsd:sequence> </xsd:complextype> <xsd:key name=”dane_zamowienia”> <xsd:selector xpath=”zamowienie”/> <xsd:field xpath=”@nr” type=”xsd:string”/> <xsd:field xpath=”@data” type=”xsd:date”/> <xsd:field xpath=”@od” type=”xsd:string”/> </xsd:key> <xsd:attribute name=”nr”/> <xsd:attribute name=”data”/> <xsd:attribute name=”od”/> </xsd:element> <xsd:element name=”linia”> <xsd:key name=”szczegoly”> <xsd:selector xpath=”linia”/> <xsd:field xpath=”@nr” type=”xsd:string”/> <xsd:field xpath=”@index” type=”xsd:string”/> <xsd:field xpath=”@nazwa” type=”xsd:string”/> <xsd:field xpath=”@ilosc” type=”xsd:decimal”/> <xsd:field xpath=”@jm” type=”xsd:string”/> </xsd:key> <xsd:attribute name=”nr”/> <xsd:attribute name=”index”/> <xsd:attribute name=”nazwa”/> <xsd:attribute name=”ilosc”> <xsd:simpleType> <xsd:restriction base=”xsd:decimal”> <xsd:minExclusive value=”1”/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name=”jm”/> </xsd:element> </xsd:schema> Rysunek 12. Schemat XML dokumentu zamówienia. 6.1 Zastosowanie zewnętrznych mechanizmów transakcyjności na przykładzie aplikacji ebXDI/ Transakcyjność w praktyce/ Praktyczne rozwiązanie problemu transakcyjności na przykładzie aplikacji edXDI/ ebXDI jako przykład kompleksowego podejścia do potrzeb środowiska e-biznesu/ 6.1 Transakcyjność w układach prostych Układem prostym jest taki model implementacji elektronicznej wymiany dokumentów, w którym komunikaty potwierdzające zajście operacji gospodarczej przesyłane są wyłącznie pomiędzy partnerami biznesowymi dokonującymi tej operacji. Droga dokumentów elektronicznych „pokrywa się” z drogą operacji gospodarczej. Takie rozwiązanie zwane jest też często dwuwęzłowym modelem biznesowym (rysunek 13). A producent Dokumenty elektroniczne Operacje gospodarcze B hurtownia Rysunek 13. Dwuwęzłowy model biznesowy. Przykładem oprogramowania umożliwiającego realizację prostego modelu biznesowego jest „ebXDI” firmy EBS.COM (Electronic Business Solutions) [3][4][19][20]. ebXDI została zbudowana w technologii Java 2 Platform Enterprise Edition, przez co jest niezależna od platformy sprzętowej i systemów operacyjnych, w pełni skalowalna, stabilna, otwarta na potrzeby i technologie, które pojawią się w przyszłości. Logika działania ebXDI została przedstawiona na rysunku 14. Rys. 14. Schemat wymiany informacji biznesowej z wykorzystaniem ebXDI Każdy z partnerów biznesowych może pracować z własnym formatem danych, gdyż ebXDI zapewni elektroniczną wymianę danych w formacie tekstowym (w tym XML, HTML, inne), rozwiązane jest to poprzez arkusze stylów XSL [1] [2]. ebXDI może być eksploatowane praktycznie na każdej platformie systemowej, sprzętowej czy programowej. Można wśród nich wymienić: serwery sprzętowe oparte na procesorach RISC czy Intel x386 (np. Pentium III/IV); systemy operacyjne: Linux, Unix, Microsoft Windows NT/2000; bazy danych: PostgreSQL, IBM DB2, Oracle, Microsoft SQL Server; serwery aplikacji J2EE: JBoss, IBM WebSphere, BEA WebLogic, iPlanet. ebXDI cechują niewygórowane wymagania w zakresie mocy obliczeniowej serwera wystarczy "zwykły" komputer z jednym procesorem klasy Intel Pentium III/1 GHz, wyposażony w 256 MB RAM, dowolny dysk IDE lub SCASI i kartę sieciową łączącą serwer z systemami obsługi zaplecza (niekoniecznie klasy ERP). W zakresie bezpieczeństwa przesyłania danych, ebXDI stwarza możliwość użycia dwóch rodzajów kodowania. W przypadku wymiany typu Web-EDI - poprzez strony WWW - dokumenty XML z danymi kodowane są za pomocą protokołu SSL (ang. Secure Sockets Layer). W przypadku wymiany danych poprzez szyfrowany port TCP/IP, kodowanie następuje za pomocą protokołu TLS (ang. Transfer Layer Security). Rysunek 15. Organizacja transakcyjnoci rozwiązań XMLowych na przykładzie produktu ebXDI W ebXDI za transakcyjność odpowiada tzw. serwer komunikatów. Przesyłany komunikat biznesowy zapisywany jest do bazy XMLowej (rysunek 15), następnie jest wysyłany do klienta. Dokument pozostaje w bazie XMLowej do czasu otrzymania potwierdzenia odbioru przez klienta wysłanego dokumentu. W przypadku gdy potwierdzenie powróci dokument jest usuwany z bazy XMLowej o informacja o dokonaniu transakcji trafia do właściwego systemu ERP. W przypadku nie pojawienia się potwierdzenia – serwer komunikatów ponownie wysyła dokument do klienta. 6.2 Transakcyjność w układach złożonych Układ złożony występuje wówczas gdy firmy dokonujące operacji biznesowych korzystają, w zakresie elektronicznej wymiany dokumentów, z usług zewnętrznych firm informatycznych. W zależności od ilości firm biorących udział w procesie wymiany dokumentów elektronicznych realizowany jest: - trójwęzłowy model biznesowy – dwie firmy dokonujące operacji gospodarczej plus jedna pośrednicząca, świadcząca usługi informatyczne obu partnerom. - czterowęzłowy model biznesowy – dwie firmy dokonujące operacji gospodarczej plus dwie firmy pośredniczące, każdy z partnerów jest obsługiwany przez własną firmę informatyczną (rysunek 14). - n-węzłowy model biznesowy – firm pośredniczących jest k, gdzie n=k+2; k∈<1, n-2>; model ten wprowadzono dla uogólnienia układów złożonych. W układach złożonych droga dokumentów elektronicznych nie pokrywa się z drogą operacji gospodarczej. partner Dokumenty elektroniczne A producent Dokumenty elektroniczne Firma C informatyczna Dokumenty elektroniczne Operacje gospodarcze M Operacje gospodarcze Firma Dokumenty elektroniczne N partner D informatyczna Dokumenty elektroniczne Operacje gospodarcze B hurtownia Rysunek 16. Model biznesowy cztero-węzłowy, w elektronicznej wymianie dokumentów biznesowych pośredniczą dwie firmy informatyczne. W złożonych modelach biznesowych konieczne staje się zastosowanie bardziej wyrafinowanych metod zapewnienia transakcyjności. Sam serwer komunikatów, który sprawdza się na węzłach sąsiadujących nie wystarcza, konieczne jest „udrożnienie” węzłów pośredniczących, tak aby otrzymanie komunikatu o powodzeniu/ niepowodzeniu z węzła k, powodowało, oprócz zarejestrowania powodzenia operacji – wysłanie do węzła k-2 zgodnej treści komunikatu. W układach złożonych nie stwierdzono mechanizmów zapewniających pełną transakcyjność. Najczęściej każdy z węzłów pośredniczących (każda z firm informatycznych) stosuje lokalnie (w komunikacji z sąsiednimi węzłami) własne rozwiązania. Co jednak w skali kompletnej operacji gospodarczej, daje w najlepszym przypadku efekt zbliżony do oczekiwanego. Potrzeba jest zatem opracowania zasad i stworzenia aplikacji XML-owej zawierającej mechanizmy walidacji poprawności napisanego w niej dokumentu biznesowego, oraz zapewniającej obsługę transakcyjności przesyłania tych dokumentów pomiędzy partnerami biznesowymi, niezależnie od tego czy znajdują się oni na biegunach dwu, trój, czy n-węzłowego modelu biznesowego. Aplikacja ta miała by zapewnić węzłom pośredniczącym „przezroczystość” w stosunku do węzłów pomiędzy którymi zachodzi operacja gospodarcza. Wykorzystanie tej aplikacji przez firmy informatyczne oferujące usługi e-biznesowe (węzły pośredniczące), dostarczyło by język, z pomocą którego firmy te mogły by tworzyć własne systemy do obsługi elektronicznej wymiany dokumentów w pełni otwarte na przyszłe kontakty biznesowe ich klientów. 8. Cel-Własna aplikacja XML dla środowiska biznesowego Prezentowany problem jest o tyle istotny, że oprócz zwykłej konsekwencji finansowej wynikającej z opóźnień w dostawie towaru (nie ma dostawy jeżeli nie ma zamówienia na daną dostawę), firmy niejednokrotnie podpisują ze sobą umowy z których wynika, że w przypadku nieterminowej realizacji zamówienia, lub całkowitym braku realizacji zamówienia, firma zobowiązana jest zapłacić określoną (najczęściej wysoką) kwotę kary. Zatem istnieje zasadność stworzenia takiej specyfikacji języka XML-biznesowego, który mógłby w oderwaniu od ilości węzłów, przez które przechodzi dokument elektroniczny, zapewnić transakcyjność operacji. Zagadnienie, którym autorzy artykułu chcą sie zając w przyszłości wstępnie zostało formułowane jako: „Opracowanie, w oparciu o istniejące standardy i najnowsze osiągnięcia z dziedziny technologii XML, specjalizowanego języka dla obsługi środowiska biznesowego, który niezależnie od ilości węzłów pośredniczących, sprowadzi model biznesowy n-węzłowy do modelu biegunowego (prostego 2węzłowego). 9. Wstępne propozycje rozwiązań do dalszych rozważań Poprzez rejestrację węzłów: Należało by stworzyć XML-ową bazę danych do której były by wpisywane informacje o każdym węzłów przez które przechodzi dokument. Dokumenty komunikatów będą zawierać predefiniowane w własnej przestrzeni nazw znaczniki określające nadawcę, sumy kontrolne, dodatkowe informacje. Predefiniowane elementy będą załączone w pliku dokumentu, lub w oddzielnym pliku powiązanym z dokumentem. Węzeł otrzymując dokument odczytuje z niego, bądź dołączonego pliku, informacje o nadawcy (czytaj serwerze nadawcy) i na podstawie dodatkowych informacji (np login i hasło) wysyła na serwer komunikat z numerem dokumentu, cyfrą kontrolną i własny unikatowy identyfikator (np. GLN). Po czym wysyła dokument dalej. Kolejne węzły dokonują logowania/wpisów do bazy danych, na tej podstawie śledzona jest droga dokumentu i ewentualne miejsce „awarii”. Otrzymanie wpisu od węzła docelowego jest jednoznacznie interpretowane jako zakończenie transakcji. Wstępna ocena tego rozwiązania wskazuje na: - zwiększenie ruchu w sieci - rozrastanie się danych w przypadku większej ilości węzłów pośrednich, - rejestracja węzłów pośrednich kłóci się również z założeniem przezroczystości sieci z punktu widzenia węzłów skrajnych – dokonujących transakcji gospodarczej. Rozwiązanie zapewnia pełną ewidencję ruchu dokumentów w sieci, oraz odtworzenie transakcji w przypadku uszkodzenia łącza. Poprzez łańcuch-ze-źródłem: Dokonuje się takiej modyfikacji dokumentu komunikatu, poprzez zdefiniowanie odpowiednich znaczników w własnej przestrzeni nazw, lub też dowiązuje się zewnętrzny plik do dokumentu komunikatu, w którym każdy z węzłów będzie mógł za pomocą określonych znaczników wpisać własną cyfrę kontrolną, oraz aders mailowy/ftp (rysunek 18). Wpisanie tej informacji do pliku będzie opcjonalne, a pojawienie się wpisu z danego węzła będzie równoznaczne z deklaracją otrzymywania informacji o dalszej drodze danego dokumentu. Każdy z węzłów odsyłał by informacje o otrzymaniu dokumentu i poprawnym przetworzeniu tylko do węzłów które zamieściły by swój wpis w dołączonym pliku. Wstępna ocena tego rozwiązania wskazuje na: - możliwość śledzenia ruchu dokumentu (i ewentualne podejmowanie interwencji) przez dowolny węzeł w sieci. - dodatkowe zwiększenie ruchu w sieci - rozrasta się wielkość przesyłanych dokumentów <?xml version="1.0" encoding="iso-8859-2"?> <?xml-stylesheet type="text/css" href="zamowienia.css"?> <dokument_transakcyjny xmlns=”http://pluton.pol.lublin.pl/xml/schematy” xmlns:xsi=”http://www.w3.org/2001/xmlschema-instance” xsi:schemalocation=”http://pluton.pol.lublin.pl/xml/schematy transakcja.xsd”> <zamowienie nr=’0300123’ data=’2003-03-26’ od=’xyz s.a.’> <linia nr=’1’ indeks=’10012’ nazwa=’makaron pastella’ ilosc=’450’ jm=’kg’/> <linia nr=’2’ indeks=’22012’ nazwa=’paluszki słone’ ilosc=’100’ jm=’sz’/> </zamowienie> <transakcja:weryfikuj> <transakcja:numer_dokumentu nr=’0300123’/> <transakcja:ilosc_rekordow> ’2’ </transakcja:ilosc_rekordow> <transakcja:powiadom> ‘[email protected]’ </transakcja:powiadom> </transakcja:weryfikuj> </dokument_transakcyjny> Rysunek 18. Propozycja dodatkowych predefiniowanych elementów funkcyjnych w komunikacie zamówienia zakupowego. 10. Wnioski Projekt stworzenia specyjanlizowanego języka dla potrzeb środowiska biznesowego, jest stosunkowo młodym projektem (liczonym jeszcze w tygodniach) stąd wyniki badań na obecny moment sprowadzają się do zdefiniowania problemu i uogólnienia go do skali zagadnienia n-węzłowego. Zapoznanie się z możliwościami technologii XML w zakresie walidacji i transakcyjności operacji wykonywanych z jej użyciem. Rozpoznanie i adaptacja przyjętych standardów w obszarze elektronicznej wymiany dokumentów i e-biznesu. Cel, który został przez autorów obrany, a więc stworzenie własnej aplikacji XML-owej jeżeli przyniesie pozytywne efekty, to - rozwiąże problemy jednej rzeczywistej firmy - może zostać zaakceptowany przez szersze grono odbiorców u zyskując tym samym godne miano języka środowiskowego. - opublikowane osiągnięcia na polu transakcyjności mogą zostać wykorzystane przez inne ośrodki w tworzeniu rozproszonych rozwiązań internatowych. Literatura: [1] Steven Holzner „XML Vademecum profesjonalisty” Helion 2001 [2] Elliote Rusty Harold „XML Księga eksperta” Helion 2000 [3] Muryjas Piort, Bober Dariusz „ebXDI – technologia EDI za rozsądne pieniądze” s.85 „Wdrażanie i eksploatacja systemów informatycznych” pod redakcją Marek Miłosz, PTI, Lublin 2002 [4] Marek Miłosz, Dariusz Bober „Elektroniczna wymiana dokumentów z wykorzystaniem technologii XML” s. 185, matriały do IV Lubelskiego Akademickiego Forum Akademickiego, Informatyka Stosowana 2002. [4a] Tomasz Traczyk „Schematy XML”, materiały z koferencji PLOUG’2001, Zakopane. [4b] Sharon L Hoffman „XML Blueprint”, s.20-23, iSeries NEWS, February 2003. Strony www: [5] Informacje o EDI i XML http://edi.start4all.com [6] Repozytorium XML elementów danych: http://xml-edi.tie.nl [7] Zastosowanie XML do EDI: http://www.xedi.org [8] Oprogramowanie serwera XML (freeware) dla gospodarki elektronicznej, rozwiązania dla ERP i EDI: http://www.xmls.com [9] Strona Towarzystwa EAN.UCC: http://www.ean.pl [10] Specyfikacja języka MathML: www.w3.org/Math [11] Specyfikacja języka SMIL: www.w3.org/AudioVideo [12] http://service.real.com/help/library/guides/production/realpgd.htm [13] www.apple.com/quicktime/authoring/qtsmil.html [14] Specyfikacja języka HTML+TIME: http://msdn.microsoft.com/workshop/Author/behaviors/time.asp [15] Specyfikacja języka XHTML 1.0: www.w3.org/TR/xhtml1 [16] Specyfikacja języka VML: www.w3.org/TR/NOTE-VML [17] Specyfikacja języka XUL: http://www.mozilla.org/projects/l10n/xulstyleguide.html [18] Specyfikacja języka XBRL: www.xfrml.org [19] www.geac.com.pl [20] www.esupplychain.pl