View
31
Download
0
Category
Preview:
DESCRIPTION
XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery. Piotr Szwed Katedra Automatyki AGH. Plan prezentacji. Czym są sieci XQPN? Język XQuery Definicja sieci XQPN Wykonanie sieci Prototypowa implementacja Przewidywane zastosowania. Czym są sieci XQPN?. - PowerPoint PPT Presentation
Citation preview
XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą
języka XQuery
Piotr Szwed
Katedra Automatyki AGH
2
Plan prezentacji
• Czym są sieci XQPN?• Język XQuery• Definicja sieci XQPN• Wykonanie sieci• Prototypowa implementacja• Przewidywane zastosowania
3
Czym są sieci XQPN?
Sieci XQPN (XQuery Petri Networks)• Kolorowane sieci Petriego pozwalające na
wykonywanie operacji na zawartości dokumentów XML przypisanych miejscom sieci.
• W sieciach XQPN łukom przypisane są wyrażenia – zapytania języka XQuery
Motywacje• Narzędzie do specyfikacji aplikacji
internetowych wykorzystujących usługi sieciowe (web service). Celem jest przeprowadzenie automatycznych testów sterowanych wykonaniem tranzycji w sieci służącej, jako wzorzec
4
Język XQuery
• XQuery (ang. XML Query Language) jest językiem zapytań przeznaczonym do ekstrakcji danych z dokumentów XML i baz danych oferujących interfejs XML
• Prace zapoczątkowano w 2001. W styczniu 2007 język XQuery 1.0 otrzymał oficjalną rekomendację organizacji W3C
• Wiele implementacji: – Saxon, Altova XML – Oracle, IBM DB2, Microsoft SQL Server
5
XQuery - cechy języka
• Nadzbiór XPath • Zapytania XQuery zwracają ciągi wartości
atomowych lub znaczników XML (węzłów).• Możliwość dodawania znaczników i modyfikacji
struktury węzłów (w wynikowej sekwencji)• Możliwość łączenia danych z różnych
dokumentów• Definiowanie zmiennych i funkcji użytkownika• Wywoływanie zewnętrznych funkcji
6
XQuery – elementy składni
• Instrukcje FLWORfor $x in /bookstore/book
where $x/price>30
order by $x/title
return $x/title
• Przypisanielet $y := expression …
• Instrukcje warunkoweif(condition)then exp1 else exp2
7
Sieci XQPN - definicja
XQPN = (P, T, A, Q, W, G) • P – zbiór miejsc,• T – zbiór tranzycji, P T = • A P T T P zbiór łuków,• Q: A Q, funkcja przydzielająca łukom
zapytania XQuery, przez Q oznaczony jest zbiór wszystkich zapytań,
• W: P T (N {*}) (N {*}) funkcja przypisującą łukom wejściowym pary liczb określających krotność łuku.
• G: T Q jest funkcją przypisującą tranzycjom dozory, czyli zapytania XQuery zwracające wartości logiczne.
8
Sieci XQPN - znakowanie
Znakowaniem sieci XQPN nazywamy funkcję M : P M, która przydziela miejscom dokumentyXML ze zbioru M.
Zakładamy, że identyfikatora miejsca p jest teżkorzeniem dokumentu M(p) przypisanego domiejsca p P Nazwy korzeni dokumentów muszą być unikalne.
9
XQPN – łuki i wyrażenia
read
deleteoutput
Łuki wejściowe•Usuwające węzły XML (delete)•Odczytujące węzły XML (read)
Wyrażenia: XPath, FLWOR, przypisanie let $x := expression
Dopuszczalna jest zależność zmiennych wejściowych (nie cykliczna)
Łuki wyjścioweDodają węzły XML do miejsc wyjściowych
Wyrażenia•Odwołują się do zmiennych wejściowych•Dopuszczalne jest stosowanie instrukcji FLWOR, if-then-else, dodawanie nowych znaczników
10
XQPN - przykład
• Zmiennej lokalnej $x zostanie przypisana sekwencja węzłów spełniająca predykat [./@id>12]
• Węzły zostaną przeniesione z miejsca store do out
store T
let $x := /*/item[./@id>12]
out
$x
mul
<store><item id='7'/><item id='12'/><item id='13'/><item id='21'/><item id='27'/>
</store>
11
XQPN - krotność
store T
let $x := /*/item[./@id>12]
out
$x
mul
Krotność określa liczbę elementów (węzłów), które zostaną odczytane lub usunięte z miejsc wejściowych podczas wykonania tranzycji.
• Krotność ma postać pary liczb [min,max] lub pojedynczego symbolu (min=max)• Dopuszczalny jest symbol * (wszystkie elementy)• Tranzycja usunie (odczyta) z sekwencji wejściowej co najmniej min elementów i co najwyżej max elementów• Jeżeli sekwencja wejściowa zawiera mniej niż min węzłów, tranzycja nie może zostać wykonana
• Dla mul = 4 tranzycja jest niedopuszczalna• Dla mul = * tranzycja usunie wszystkie elementy spełniające predykat [./@id>12]• Dla mul = 1 tranzycja usunie jeden element
12
XQPN – wykonanie sieci
Wykonanie sieci to ciąg odpaleń tranzycji
Wykonanie tranzycji:• Ustalenie wiązania• Faza właściwa – usunięcie znaczników z miejsc
wejściowych i dodanie znaczników do miejsc wyjściowych
13
XQPN – wyznaczanie wiązania 1
• Sieci kolorowane CPN– Wiązanie to przypisanie wartości do zmiennych w wyrażeniach.
• Sieci XQPN– Zmienne związane przez wyrażenia– Zmienne mogą zmieniać wartość w trakcie wykonania (iteracja)
store T
let $x := /*/item[./@id>12]
out
for $y in $xreturn <item><id>{ data($y/@id) }</id></item>
1
Stąd, w sieciach XQPN– Wiązania wyznaczane wyłącznie dla zmiennych wejściowych– W praktyce: ukrytych zmiennych związanych z łukami wejściowymi– Do sekwencji węzłów, która ma zostać przypisana zmiennej stosuje się
ograniczenia wynikające z krotności
14
XQPN – wyznaczanie wiązania 2
Algorytm wyznaczania wiązania
1. Wykonaj zapytanie exp-i i zapisz wynik w zmiennej tymczasowej: let $tmp := exp-i,
2. Wyznacz ciąg węzłów będących bezpośrednimi potomkami korzenia dokumentu przypisanego do miejsca, dla których wejściowe zapytanie zwróciłoby sekwencję $tmp: $inputset-i = local:upcast($tmp)
3. Jeżeli liczba elementów count($inputset-i) nie mieści się w przedziale określonym przez krotność łuku wejściowego – STOP, wiązanie jest niedozwolone
4. Zastosuj ograniczenie wynikające z krotności do ciągu $inputset-i i zapisz wynik w zmiennej $inputnodes-i :
let $inputnodes-i := local:arbitray_select(inputset-i)
5. Wyznacz wiązanie zmiennej $xi jako:let $xi := $inputnodes-i exp-i
p-i
p-j
T
let x-i := exp-i
let x-j := exp-j
r
it1 it2 ... itk
n
x
15
XQPN – dozory tranzycji
users
form
T logged
let $users := /users/user
let $fdata :=/form/formdata$users
$users/login = $fdata/@login and$users/password = $fdata/@password
1
1
users
form
T logged
let $users := /users/user[./login=$fdata/@login and
./password=$fdata/@password]
let $fdata := /form/formdata$users
1
1
Dozory są zapytaniami XQuery zwracającymi wartości logiczne.
Są przypisane bezpośrednio tranzycjom.
Dozory decydują o dopuszczalności tranzycji dla danego wiązania zmiennych łuków wejściowych.
Często dozory można wyeliminować zastępując je zależnością (bardziej efektywne).
16
XQPN – odpalenie tranzycji
Odpalenie tranzycji polega na uaktualnieniuzawartości danych w miejscach wejściowych i wyjściowych. pl-i pl-j
Dla miejsc wejściowych• return <pl-i>{/pl-i/* except $inputnodes-i}</pl-i>
Dla miejsc wyjściowych• obliczana jest wyjściowa sekwencja węzłów $outputnodes-j na
podstawie wyrażenia przypisanego łukowi wyjściowemu
• return <pl-j>{/pl-j/* union $outputnodes-j}</pl-j>
17
XQPN – implementacja 1
Decyzje projektowe– Które elementy algorytmu wykonania tranzycji mają
być implementowane w środowisku XQuery, a które poza nim?
– Konieczność przeformułowania zapytań – dla zapewnienia zgodności ze specyfikacją sieci i poprawy efektywności
– Rozmiar dokumentów XML podlegających przetwarzaniu – bazy danych czy kilka elementów
– Dobór komponentu odpowiedzialnego za wykonanie zapytań XQuery
18
XQPN – implementacja 2
Dwie prototypowe implementacje
Altova XML – interfejs COM, platforma .NET, C #– Wydajny dla małych zbiorów danych– Ciasny interfejs COM– Manipulacje poza XQuery poprzez DOM
Saxon-B – interfejs XQJ, platforma Java– Mniej wydajny dla niewielkich dokumentów, bardziej
wydajny dla dokumentów >10000 węzłów– Łatwość manipulacji poza środowiskiem XQuery
19
XQPN – przewidywane zastosowania
• Automatyczna generacja przypadków testowych dla aplikacji wykorzystujących usługi sieciowe (web service)
• Pasywne testy aplikacji internetowych• Generacja szkieletu aplikacji na podstawie
modelu XQPN
20
XQPN – zastosowania 2Model aplikacji wykorzystującej usługi sieciowe
(automatyczna generacja scenariuszy testowych).
Test Data View Controller Model
goods
vgoods
addToCart
session
displayCart
cartinquantity
vcart
*
let $iq := //num
1
1
let $ses := //vgoods/@sessionlet $vitem := //item
return <id>{$ses}</id>return <cartitem>{$ses}<id>{string($itemid/@id)}</id> <quantity>{string($iq)}</quantity></cartitem>
let $ses := //id1
*
return <vcartsession='{$ses}'>...
let $items := //item[./@id=$cart/id]
[$iq>0 and $iq<=$vitem/stock and$iq<=$item/stock]
let $cart := //cartitem[./@session=$ses]
goods
let $item := //item[./@id=$vitem/@id]
1
1
addToCartFail
vbuyerrorreturn <vbuyerror>{$ses} <id>{string($itemid)}</id><quantity>{string($iq)}</quantity> {$item/stock}</vbuyerror>
let $iq := //num
let $ses := //vgoods/@sessionlet $vitem := //item
1
let $item := //item[./@id=$vitem/@id] 1
[$iq=0 or $iq>$vitem/stock or$iq>$item/stock]
21
XQPN – zastosowania 3Komponenty systemu do testowania usług sieciowych
Initial Marking XML
Model
Test Data
Test ResultXML
Proxy(patched)
WebServiceBD
XQPN EXecutor
Transition2WebMapper
Test Driver
DB Logger
Comparator
DB Logger
XQPN Editor
WebApp
Output XML
DB contentXML
TransitionBinding
XQPNStructure
ReachedMarking XML
Test CaseResult
22
Podsumowanie
• Sieci XQPN są proponowane jako narzędzie specyfikacji aplikacji wykorzystujących XML jako wewnętrzny format wymiany danych
• Miejsca sieci przechowują dokumenty XML (reprezentujące dane formularzy, rekordy bazy danych, itp.)
• Składnia wyrażeń przypisanych łukom jest zgodna z językiem XQuery
• W implementacjach do wykonania tranzycji używane są gotowe procesory XQuery
23
XQPN – kolorowane sieci Petriego do przetwarzania danych XML za pomocą języka XQuery
Dziękuję za uwagę
Recommended