[[
✎ pl:miw:miw08_uml_urml
]]
aiWiki
Pokaż stronę
Ostatnie zmiany
Indeks
Zaloguj
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== UML_URML ====== Piotr Przybycin <pit4@o2.pl> Design rbs examples with URML. ====== Spotkania ====== ===== 080415 ===== * próba exportu do R2ML, etc, patrz [[http://oxygen.informatik.tu-cottbus.de/rewerse-i1/?q=node/15|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? ===== 080527 ===== * przejście r2ml->urml (prod rules) * czy/jak da się przejść z r2ml do XMI (urml) i vice versa * sprawozdanie ======Sprawozdanie====== ===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 [[http://oxygen.informatik.tu-cottbus.de/strelka/Strelka_0.3_Eclipse.zip|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: [[http://oxygen.informatik.tu-cottbus.de/rewerse-i1/?q=node/46|REWERSEworking.groupI1-Strelka]] ===Przykład=== Spróbujemy teraz zamodelować w URML-u jakiś przykład. Naszym przykładem będzie [[hekate:hekate_case_thermostat]]. Model wykonany przy użyciu programu Stralka. {{:pl:miw:miw08_uml_urml:miw1a.png|: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 dawała wartość true na wyjściu dla wartości false warunku; musimy wtedy zanegować wartość tego warunku. Znalazłem także 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: <code xml> <?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> </code> Dla lepszego poznania środowiska Jess: [[http://www.jessrules.com/|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: <code xml> <?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> </code> ===Zgodność z innymi językami=== R2ML jest obszernym, i przyjaznym dla użytkownika bazującym na XML-u językiem, którego głównymi zadaniami są: * wymiana reguł między różnymi systemami i narzędziami * możliwość łączenia poszczególnych systemów decyzyjnych z narzędziami bazującymi na R2ML-u w celu zapewnienia wizualizacji, werbalizacji, weryfikacji oraz ratyfikacji. R2ML jest bardzo wszechstronny ponieważ integruje takie języki jak: * the Object Constraint Language (OCL) * the Semantic Web Rule Language (SWRL) * the Rule Markup Language (RuleML) Obecną wersją języka R2ML jest wersja 0.5 (Release Date: August 23, 2007). Jest ona oparta na schemacie XML, który jest dostępny [[http://www.w3.org/2001/XMLSchema|XMLSchema]] Język R2ML jest ciągle rozwijany i mamy obecnie również dostęp do różnorakich translatorów takich jak: * R2ML to F-Logic * F-LogicXML to R2ML * R2ML to Jess * R2ML to RuleML * RuleML to R2ML * R2ML to JenaRules * JenaRules to R2ML * R2ML to JBoss Rules * SWRL to R2ML * R2ML to SWRL * R2ML to XMI * R2ML to OCL * OCL to R2ML Wszystkie dostępne pod linkiem [[http://oxygen.informatik.tu-cottbus.de/rewerse-i1/?q=node/15|translatory]] ====== Przydatne linki ====== [[http://developers.sun.com/jsenterprise/learning/tutorials/jse8/uml_class_diagram.html|UML Modeling: Creating Class Diagrams - Tutorial]] [[http://oxygen.informatik.tu-cottbus.de/rewerse-i1/?q=URML|URML -- a UML-Based Rule Modeling Language - REWERSE Working Group I1 page]]
pl/miw/miw08_uml_urml.1212412641.txt.gz
· ostatnio zmienione: 2019/06/27 15:58 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry