To jest stara wersja strony!


UML_URML

Piotr Przybycin pit4@o2.pl Design rbs examples with URML.

Spotkania

080415

  • próba exportu do R2ML, etc, patrz translatory
  • opis instalacji strelki, w tym ew. błędy, niedoróbki, usterki
  • opis uwag, co do projektowania Therm w strelce: * czy w urml da się zrealizować całość przykładu?
    • czy sa jakieś ograniczenia urml co do składni, semantyki?
    • czy sa jakieś mechanizmy ułatwiające potem integrację z większą aplikacją w Javie, w której nasz therm byłby systemem decyzyjnym, a w Javie np. klasy wizualizujące decyzję
    • Jak jest realizowana integracja w drools?

Projekt

Wstęp

URML jest językiem opartym na diagramie klas języka UML. Został stworzony aby ułatwić tworzenie dokumentacji wymagań systemów w sposób mniej techniczny, a bardziej wizualny.

Podstawowym jego rozszerzeniem w stosunku do diagramu klas języka UML, jest możliwość modelowania reguł ( derivation rules, production rules and reaction rules ). Reguły są reprezentowane graficznie jako kółka z identyfikatorami, natomiast zależności w postaci strzałek reprezentujących: warunki, wyzwalacze, akcje, czy wnioski.

Narzędziem, które umożliwia modelowanie systemów w języku URML jest Strelka, stworzona przez REWERSE Working Group I1.

Instalacja programu Strelka

Będziemy korzystać z programu Strelka w wersji 0.3 dla platformy Eclipse. Aby w pelni korzystac z możliwości programu wystarczy pobrać plik download_Strelka, rozpakować go do dowolnego folderu i uruchomić plik „eclipse.exe”. Żadne dodatkowe instalacje nie są potrzebne. Po uruchuchomieniu możemy otworzyć również pewne gotowe przykłady, z katalogu ./examples.

W razie jakichkolwiek wątpliwości odsyłam do: REWERSEworking.groupI1-Strelka

Przykład

Spróbujemy teraz zamodelować w URML-u jakiś przykład. Naszym przykładem będzie hekate_case_thermostat.

Model wykonany przy użyciu programu Stralka.

:pl:miw:miw08_uml_urml:miw1a.png

Projektowanie naszego układu przebiegło bez większych problemów. Środowisko okazało się bardzo intuicyjne i pozwoliło zaprojektować całość układu bez zbędnych modyfikacji. Nie zaobserwowałem również żadnych ograniczeń co do składni czy semantyki. Integracja w derivation rules realizowana jest przy użyciu logicznego AND, czyli wszystkie warunki muszą mieć wartość true. Jeśli chcemy aby reguła była prawdziwa dla wartości false warunku; musimy wtedy zanegować wartość na wejściu.

Znalazłem natomiast narzędzia ułatwiające integrację naszego modelu, ze środowiskami takimi jak: Jena 2, Jess, F-Logic. Aby wygenerować kod danej reguły dla danego środowiska wystarczy kliknąć na nią prawym przyciskiem myszy, a następnie wybrać „Translate to…” oraz interesujące nas środowisko. Szczególnie interesująca jest integracja z platformą Jess. Jess jest środowiskiem w pełni stworzonym w języku Java firmy Sun. Przy jego pomocy mamy możliwość tworzenia programów w Javie, które będą potrafiły wnioskować na podstawie wiedzy dostarczonej w formie reguł. Jess jest językiem, który daje dostęp do wszystkich API Javy.

Przykładowy kod po translacji do Jess dla reguły DR_bizh:

<?xml version=„1.0” encoding=„UTF-8”?> <!– Jess output of R2ML derivation rules–> <jess> <pre>(defrule DR_bizh (Hour ? ) (and (test (>= „9” (IDhour ? ) )) (test (⇐ „16” (IDhour ? ) )) ) (Workday ? ) ⇒ (Bizh ? ) ) </pre> </jess> Dla lepszego poznania środowiska Jess: JessRules.com ===Eksport do R2ML-u=== Przy użyciu Strelki możemy również w bardzo prosty sposób uzyskać zapis naszych reguł w standardzie R2ML. Wystarczy kliknać prawym przyciskiem myszy na daną regułę a następnie wybrać „Preview R2ML”. Przykładowy kod R2ML dla reguły DR_bizh: <?xml version=„1.0” encoding=„UTF-8” standalone=„yes”?> <r2ml:RuleBase xsi:schemaLocation=„http://oxygen.informatik.tu-cottbus.de/R2ML/0.4/R2ML.xsd” xmlns:dc=„http://purl.org/dc/elements/1.1/” xmlns:r2mlv=„http://www.rewerse.net/I1/2006/R2ML/R2MLV” xmlns:xs=„http://www.w3.org/2001/XMLSchema” xmlns:r2ml=„http://www.rewerse.net/I1/2006/R2ML” xmlns:soap=„http://www.w3.org/2001/12/soap-envelope” xmlns:xsi=„http://www.w3.org/2001/XMLSchema-instance”> <r2mlv:Vocabulary> <r2mlv:Class r2mlv:ID=„Day”> <r2mlv:Attribute r2mlv:ID=„IDday”> <r2mlv:range> <r2mlv:Datatype r2mlv:ID=„xs:integer”/> </r2mlv:range> </r2mlv:Attribute> </r2mlv:Class> <r2mlv:Class r2mlv:ID=„Weekend”> <r2mlv:superClass> <r2mlv:Class r2mlv:ID=„Day”/> </r2mlv:superClass> </r2mlv:Class> <r2mlv:Class r2mlv:ID=„Workday”> <r2mlv:superClass> <r2mlv:Class r2mlv:ID=„Day”/> </r2mlv:superClass> </r2mlv:Class> <r2mlv:Class r2mlv:ID=„Hour”> <r2mlv:Attribute r2mlv:ID=„IDhour”> <r2mlv:range> <r2mlv:Datatype r2mlv:ID=„xs:integer”/> </r2mlv:range> </r2mlv:Attribute> </r2mlv:Class> <r2mlv:Class r2mlv:ID=„Notbizh”/> <r2mlv:Class r2mlv:ID=„Bizh”/> <r2mlv:Class r2mlv:ID=„Month”> <r2mlv:Attribute r2mlv:ID=„IDmonth”> <r2mlv:range> <r2mlv:Datatype r2mlv:ID=„xs:integer”/> </r2mlv:range> </r2mlv:Attribute> </r2mlv:Class> <r2mlv:Class r2mlv:ID=„Autumn”> <r2mlv:superClass> <r2mlv:Class r2mlv:ID=„Month”/> </r2mlv:superClass> </r2mlv:Class> <r2mlv:Class r2mlv:ID=„Winter”> <r2mlv:superClass> <r2mlv:Class r2mlv:ID=„Month”/> </r2mlv:superClass> </r2mlv:Class> <r2mlv:Class r2mlv:ID=„Spring”> <r2mlv:superClass> <r2mlv:Class r2mlv:ID=„Month”/> </r2mlv:superClass> </r2mlv:Class> <r2mlv:Class r2mlv:ID=„Summer”> <r2mlv:superClass> <r2mlv:Class r2mlv:ID=„Month”/> </r2mlv:superClass> </r2mlv:Class> <r2mlv:Class r2mlv:ID=„Thermostat”> <r2mlv:Attribute r2mlv:ID=„temp”> <r2mlv:range> <r2mlv:Datatype r2mlv:ID=„xs:float”/> </r2mlv:range> </r2mlv:Attribute> </r2mlv:Class> </r2mlv:Vocabulary> <r2ml:DerivationRuleSet> <r2ml:DerivationRule r2ml:ruleID=„DR_bizh”> <r2ml:conditions> <r2ml:ObjectClassificationAtom r2ml:classID=„Hour” r2ml:isNegated=„false”> <r2ml:ObjectVariable/> </r2ml:ObjectClassificationAtom> <r2ml:qf.Conjunction> <r2ml:DatatypePredicateAtom r2ml:datatypePredicateID=„swrlb:greaterThanOrEqual” r2ml:isNegated=„false” xmlns:swrlb=„http://www.w3.org/2003/11/swrlb”> <r2ml:dataArguments> <r2ml:TypedLiteral r2ml:datatypeID=„xs:integer” r2ml:lexicalValue=„9”/> <r2ml:AttributeFunctionTerm r2ml:attributeID=„IDhour”> <r2ml:contextArgument> <r2ml:ObjectVariable r2ml:classID=„Hour”/> </r2ml:contextArgument> </r2ml:AttributeFunctionTerm> </r2ml:dataArguments> </r2ml:DatatypePredicateAtom> <r2ml:DatatypePredicateAtom r2ml:datatypePredicateID=„swrlb:lessThanOrEqual” r2ml:isNegated=„false” xmlns:swrlb=„http://www.w3.org/2003/11/swrlb”> <r2ml:dataArguments> <r2ml:TypedLiteral r2ml:datatypeID=„xs:integer” r2ml:lexicalValue=„16”/> <r2ml:AttributeFunctionTerm r2ml:attributeID=„IDhour”> <r2ml:contextArgument> <r2ml:ObjectVariable r2ml:classID=„Hour”/> </r2ml:contextArgument> </r2ml:AttributeFunctionTerm> </r2ml:dataArguments> </r2ml:DatatypePredicateAtom> </r2ml:qf.Conjunction> <r2ml:ObjectClassificationAtom r2ml:classID=„Workday” r2ml:isNegated=„false”> <r2ml:ObjectVariable/> </r2ml:ObjectClassificationAtom> </r2ml:conditions> <r2ml:conclusion> <r2ml:ObjectClassificationAtom r2ml:classID=„Bizh”> <r2ml:ObjectVariable/> </r2ml:ObjectClassificationAtom> </r2ml:conclusion> </r2ml:DerivationRule> </r2ml:DerivationRuleSet> </r2ml:RuleBase> ====== Sprawozdanie ====== ====== Materiały ====== UML Modeling: Creating Class Diagrams - Tutorial URML -- a UML-Based Rule Modeling Language - REWERSE Working Group I1 page

pl/miw/miw08_uml_urml.1209327691.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0