Poznámka: články jsou již mnoho let staré, doba se posunula, mnoho věcí v nich doporučovaných je již dnes překonané - berte s rezervou!


XCase released!

Pět programátorů, jedno moudré vedení, devět měsíců vývoje a XCase je na světě. XCase (náš softwarový projekt) je tool pro jednodušší tvorbu a správu XML schémat.

Jak to pracuje – výchozí vrstvou je UML diagram, který v XCase uživatel vytvoří. Sada UML diagramů popisuje UML model a z něj potom vychází další práce s cílem vytvořit sadu XML schémat. Nad UML modelem (Platform Independent Model diagramy – PIM diagramy) uživatel může vytvořit jeden nebo více dalších diagramů (Platform Specific Model diagramů – PSM diagramů), které popisují XML dokumenty a z těchto diagramů již XCase automaticky vytvoří XML schémata. XCase je aplikací MDA - Model Driven Architecture.

Možná bude vše jasnější z obrázku, který jsem si vypůjčil z pondělní prezentace projektu:

 princip práce s XCase

XCase byl koncipován pro větší projekty s rozsáhlejším modelem, kde nad jedním modelem existuje větší sada XML schémat (např. nějaká rozsáhlá databáze s větším počtem propojených tabulek, k jejímž jednotlivým částem se přistupuje pomocí webových služeb a každá služba poskytuje dokumenty odpovídající jednomu XML schématu).

temných dobách (před releasem XCase:o)) mohl být problém s údržbou takové sady schémat – změna jedné tabulky v databázi znamená ruční úpravu všech schémat, které s danou tabulkou pracují. XCase velmi zjednodušuje údržbu schémat, pomáhá automaticky promítnout změny v modelu do jednotlivých schémat. 

K tomu i samotné ruční psaní XML schémat není žádný med (teď tedy mluvím o nejužívanějším jazyce – XML Schema), jsou ukecaná a nepříliš přehledná. Grafická notace použitá v XCasu je určitě mnohem vhodnější:o).

Předvedu malý příklad – zde je část UML modelu fiktivní společnosti popisující objednávky produktů. 

PIM diagram - sales 

A takto mohou vypadat XML dokumenty s objednávkami, nejprve ve formě grafické notace:

PSM diagram - purchase request 

A ve formě XML schématu popisujícím dokument:

<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns="http://kocour.ms.mff.cuni.cz/xcase/company/" targetNamespace="http://kocour.ms.mff.cuni.cz/xcase/company/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="purchase-request" type="Purchase" /> <xs:complexType name="Purchase"> <xs:sequence> <xs:choice> <xs:element name="new-customer" type="NewCustomer" /> <xs:element name="reg-customer" type="RegCustomer" /> </xs:choice> <xs:element name="delivery-address" type="DeliveryAddress" /> <xs:element name="bill-address" type="BillAddress" /> <xs:element name="item-list"> <xs:complexType> <xs:sequence> <xs:element name="item" type="Item" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="NewCustomer"> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="email" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:complexType name="RegCustomer"> <xs:attribute name="customer-no" type="xs:string" use="required" /> </xs:complexType> <xs:complexType name="DeliveryAddress"> <xs:sequence> <xs:group ref="DeliveryAddress-c" /> </xs:sequence> </xs:complexType> <xs:group name="DeliveryAddress-c"> <xs:sequence> <xs:element name="street" type="xs:string" /> <xs:element name="postcode" type="xs:string" /> <xs:element name="city" type="xs:string" /> </xs:sequence> </xs:group> <xs:complexType name="BillAddress"> <xs:sequence> <xs:group ref="DeliveryAddress-c" /> </xs:sequence> </xs:complexType> <xs:complexType name="Item"> <xs:sequence> <xs:element name="amount" type="xs:int" /> <xs:group ref="Product-c" /> </xs:sequence> <xs:attributeGroup ref="Product-a" /> </xs:complexType> <xs:group name="Product-c"> <xs:sequence> <xs:element name="title" type="xs:string" /> </xs:sequence> </xs:group> <xs:attributeGroup name="Product-a"> <xs:attribute name="code" type="xs:string" use="required" /> </xs:attributeGroup> </xs:schema>

A takto jiný dokument, který popisuje potvrzení objednávky, opět nejprve grafická notace:

PSM diagram - purchase response

A XML schéma:

<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns="http://kocour.ms.mff.cuni.cz/xcase/company/" targetNamespace="http://kocour.ms.mff.cuni.cz/xcase/company/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="purchase-response" type="Purchase" /> <xs:complexType name="Purchase"> <xs:sequence> <xs:element name="item-list"> <xs:complexType> <xs:sequence> <xs:element name="item" type="Item" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attributeGroup ref="Customer-a" /> </xs:complexType> <xs:attributeGroup name="Customer-a"> <xs:attribute name="customer-no" type="xs:string" use="required" /> </xs:attributeGroup> <xs:complexType name="Item"> <xs:sequence> <xs:element name="amount" type="xs:int" /> <xs:element name="unit-price" type="xs:decimal" /> </xs:sequence> <xs:attribute name="availability" type="xs:boolean" use="required" /> <xs:attributeGroup ref="Product-a" /> </xs:complexType> <xs:attributeGroup name="Product-a"> <xs:attribute name="code" type="xs:string" use="required" /> </xs:attributeGroup> </xs:schema>

Zde je pěkně vidět jak nad jednou částí modelu mohou vzniknout dvě různá schémata. Taky je zde dobře vidět, jak užitečná je grafická notace, protože k tomu, aby se v ní člověk zorientoval, stačí jeden pohled. K tomu, aby se člověk zorientoval v již hotovém schématu, je potřeba mnohem delší zkoumání.

Seznámit se s konstrukty grafické notace je pro práci s XCase nezbytné, všechny jsou popsané v uživatelské dokumentaci (odkaz ke stažení pod článkem) a tak je zde popisovat nebudu.

Pokud vaše požadavky alespoň částečně odpovídají zaměření XCase, zvažte jeho použití – třeba vám usnadní práci. Budeme rádi, pokud ho vyzkoušíte a dodáte nám své návrhy nebo připomínky či nás upozorníte na případné chyby. Program je k dispozici volně ke stažení jako open source.

Odkazy:

Vývojáři:

  • Lukáš Kopenec
  • Jakub Klímek
  • Lucie Kučerová
  • Jakub Malý
  • Kateřina Opočenská

A vedoucí Martin Nečaský

A na závěr ještě nějaké screenshoty:

screenshot 1 - PIM diagram

 screenshot 2 - editace třídy

screenshot 3 - PSM diagram  

 
Vložit komentář:
 

 



 

 

Nepoužívejte žádné html ani texy značky, odřádkování se zachová. Pokud uvádíte zdrojový kód, můžete ho vložit mezi značky
<syntax jazyk="PHP">...</syntax>,
bude potom zformátován. Jako atribut můžete uvést PHP, C#, HTML, CSS a mnoho dalších.


opiste cislo Opište číslo: