Architektury usług internetowych. Laboratorium 5. JADE

Podobne dokumenty
Architektury Usług Internetowych. Laboratorium 3. Usługi w środowisku wielo-agentowym

Architektury Usług Internetowych. Laboratorium 5

Java Agent DEvelopment Framework Systemy Agentowe

Przetwarzanie Zespołowe

Aplikacje RMI Lab4

Aplikacje RMI

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

PHP 5 język obiektowy

Java Agent DEvelopment Framework Systemy Agentowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Współbieżność w środowisku Java

Dokumentacja do API Javy.

Programowanie obiektowe

Klasy abstrakcyjne i interfejsy

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Kurs WWW. Paweł Rajba.

Zaawansowane aplikacje WWW - laboratorium

JADE - Java Agent DEvelopment Framework

Programowanie obiektowe

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Java: interfejsy i klasy wewnętrzne

Tworzenie i wykorzystanie usług

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Rozdział 4 KLASY, OBIEKTY, METODY

JADE Java Agent Development Framework. MiASI2, TWO2,

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Wywoływanie metod zdalnych

JAVA W SUPER EXPRESOWEJ PIGUŁCE

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Języki i metody programowania Java. Wykład 2 (część 2)

Aplikacje internetowe i rozproszone - laboratorium

Aplikacje w środowisku Java

Systemy wieloagentowe (MAS) zasady tworzenia systemów wieloagentowych za pomocą technologii MASE i JADEczęść.

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Programowanie obiektowe

Polimorfizm. dr Jarosław Skaruz

JADE Java Agent Development Framework. MiASI2, TWO2,

Agentowe języki komunikacji (KIF, KQML, ACL)

Programowanie Obiektowe GUI

Remote Method Invocation 17 listopada 2010

Wywoływanie metod zdalnych

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Podejście obiektowe do budowy systemów rozproszonych

Fragmenty są wspierane od Androida 1.6

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Programowanie obiektowe

Java Język programowania

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Multimedia JAVA. Historia

akademia androida Service, BroadcastReceiver, ContentProvider część IV

Katalog książek cz. 2

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 2

KLASY, INTERFEJSY, ITP

1 Atrybuty i metody klasowe

Aplikacje w środowisku Java

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Enkapsulacja, dziedziczenie, polimorfizm

Platformy Programistyczne Podstawy języka Java

Diagramy klas. dr Jarosław Skaruz

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Systemy operacyjne na platformach mobilnych

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Programowanie obiektowe

Dziedziczenie. Tomasz Borzyszkowski

Builder (budowniczy) Cel: Przykład:

Aplikacje w Javie- wykład 11 Wątki-podstawy

Programowanie obiektowe

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Laboratorium 8 Diagramy aktywności


Wykład 7: Pakiety i Interfejsy

Systemy wieloagentowe (MAS) zasady tworzenia systemów wieloagentowych za pomocą technologii MASE i JADEczęść.

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

Wprowadzenie do projektu QualitySpy

Programowanie obiektowe

Języki i metody programowania Java Lab2 podejście obiektowe

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 1

Podstawy Programowania Programowanie Obiektowe

Transkrypt:

Wstęp Architektury usług internetowych Laboratorium 5. JADE Celem laboratorium jest zapoznanie się z usługami udostępnianymi przez agenty w systemie agentowym JADE. Każdy z agentów udostępniający usługę może zarejestrować się w katalogu usług. Według standardu FIPA rolę katalogu pełni agent DF (Directory Facilitator). Agent, który chce wywołać usługę musi wpierw zlokalizować agenta udostępniającego usługę a następnie za pomocą wiadomości zażądać jej wykonania. Uruchomienie Podczas laboratorium należy wykorzystać JADE 4.0.1 (http://jade.tilab.com/). Do działania wymagane są pliki jade.jar i commons-codec-1.3.jar. Przykładowe uruchomienie: java -cp jade.jar:commons-codec-1.3.jar:. jade.boot -gui \ baker:aui.agents.baker;miller:aui.agents.miller Parametr gui uruchamia graficzny panel zarządzania agentami pozwalający między innymi na dodawanie i usuwanie agentów. Parametr baker:aui.agents.baker uruchomi agenta o nazwie baker, którego klasa Baker znajduje się w paczce aui.agents. Kod agenta Każdy zaimplementowany agent musi dziedziczyć po klasie jade.core.agent. Przykładowy kod agenta: public class MyAgent extends Agent { @Override protected void setup() { super.setup(); //register ontologies //register languages //add behaviours Metoda setup jest miejscem gdzie powinny zostać zarejestrowane języki i ontologie, z których agent może korzystać oraz dodane zachowania. 2010 Michał Wójcik 1

Agenty w systemie JADE zorientowane są na zachowania, które są klasami języka Java. Przykład jednorazowo uruchamianego zachowania: public class MyBehaviour extends OneShotBehaviour { @Override public void action() { System.out.println(myAgent.getAID()); public MyBehaviour(Agent agent) { super(agent); W zachowaniach dostęp do agenta, który jest właścicielem danego zachowania uzyskuje się poprzez pole myagent, które jest typu jade.core.agent. Tworząc zachowania należy korzystać z konstruktora przyjmującego za parametr referencję do agenta. W przypadku gdy wymagany będzie dostęp do metod agenta innego niż jade.core.agent należy dodać odpowiednie pole do zachowania i zmodyfikować konstruktor. Usługi Wszelkie interakcje z agentem DF są zrealizowane na podstawie wymiany wiadomości. System JADE dostarcza statyczną klasę DFService pozwalająca na interakcję z agentem DF bez jawnego wykorzystywania wiadomości. Zakłada się że metody są umieszczone w klasie agenta, czyli this wskazuje na agenta, z którego są wywoływane. Rejestrowanie usługi w katalogu usług: protected void registerservice(string servicetype) { DFAgentDescription dfad = new DFAgentDescription(); dfad.setname(getaid()); ServiceDescription sd = new ServiceDescription(); sd.settype(servicetype); sd.setname(getlocalname() + "-" + servicetype); dfad.addservices(sd); DFService.register(this, dfad); catch (Exception ex) { 2010 Michał Wójcik 2

Jako parametr metoda przyjmuje typ usługi, następnie tworzy obiekt opisujący agenta, dodaje do niego opis usługi i rejestruje agenta w katalogu usług. Wyrejestrowanie usługi: protected void deregisterservice() { DFService.deregister(this); catch (Exception ex) { Ponieważ agent może być tylko raz zarejestrowany w katalogu usług (z dowolną liczbą usług) podczas wyrejestrowania wystarczy podać jedynie agenta, który chce się wyrejestrować. Wyszukiwanie usługi: public DFAgentDescription[] findservices(string type) { DFAgentDescription[] result = null; DFAgentDescription dfad = new DFAgentDescription(); ServiceDescription sd = new ServiceDescription(); sd.settype(type); dfad.addservices(sd); result = DFService.search(this, dfad); catch (Exception ex) { return result; Analogicznie jak w przypadku rejestrowania usługi, tworzony jest obiekt opisujący agenta ale bez podania nazwy agenta. Podawany jest jedynie opis szukanej usługi. Ontologie Ontologia to formalna reprezentacja pewnej dziedziny wiedzy, na którą składa się zapis zbiorów pojęć (ang. concept) i relacji między nimi. W systemie JADE ontologie dostarczają słownictwa, którym agenty mogą się posługiwać w komunikacji między sobą. 2010 Michał Wójcik 3

W systemie JADE zostały zdefiniowane trzy elementy ontologii: Predicate predykat mający wartość true lub false, Concept koncept opisujący jakieś pojęcie, AgentAction opis akcji agenta. Przykład konceptu, konceptu opisującego akcję agenta oraz predykatu: public class Book implements Concept { private String author; private String title;... public class Sel implements Concept, AgentAction { private Book book;... public class Costs implements Predicate { private Book book; private int price;... Przyjęte jest, że ontologie w systemie JADE definiuje się jako singletony. Przykład ontologii książki: public class BookOntology extends BeanOntology { public static final String NAME = "book-ontology"; private static final Ontology instance = new BookOntology(); private BookOntology() { super(name); 2010 Michał Wójcik 4

add(book.class); add(sell.class); add(costs.class); catch (Exception e) { Wiadomości Komunikacja pomiędzy agentami realizowana jest poprzez wysyłanie wiadomości. Klasa reprezentująca wiadomość to jade.lang.acl.aclmessage. Podstawowe właściwości wiadomości: receivers lista odbiorców, ontology ontologia dostarczający słownictwo użyte w wiadomości, language język, w którym zapisana jest wiadomość, JADE dostarcza SLCodec, performative typ wiadomości: REQUEST żądanie wykonania jakiejś akcji, INFORM informowanie, np.: o wyniku wykonania akcji, REFUSE odmowa wykonania określonej akcji, NOT_UNDERSTOOD niezrozumienie wcześniej odebranej wiadomości,... W wiadomościach można przesyłać jedynie obiekty Action oraz obiekty implementujące interfejs Predicate. Opakowywanie i wysyłanie wiadomości: ACLMessage msg = new ACLMessage(ACLMessage.request); msg.addreceiver(agent); msg.setontology(bookontology.name); msg.setlanguage(new SLCodec.getName()); Sell sell = new Sell(); sell.setbook(new Book()); ContentManager cm = myagent.getcontentmanager(); cm.fill(msg, new Action(agent, sell)); 2010 Michał Wójcik 5

myagent.send(msg); catch (Exception e) { ContentManager pozwala na opakowywanie wiadomości zapisanych za pomocą ontologii. Podczas tworzenia instancji klasy Action należy dostarczyć dwa parametry, AID agenta wykonującego akcję oraz Concept opisujący akcję. W tym przypadku agent wysyłający wiadomość żąda sprzedania książki przez odbiorcę wiadomości dlatego podaje jego AID. Odbieranie i wypakowywanie wiadomości: ACLMessage msg = myagent.receive(); if (msg!= null) { ContentManager cm = myagent.getcontentmanager(); ContentElement ce = mcm.extractcontent(msg); if (ce instanceof Action) { if (((Action) ce).getaction() instanceof Sell) { ACLMessage reply = msg.createreply(); // sell book catch (Exception e) { Przykład Dostarczony przykład przedstawia kilka agentów dostarczających niezbędnych usług do wytworzenia chleba. Agent chcący wyprodukować chleb musi kolejno znaleźć usługę farmera dostarczającego zboże, następnie wysłać je do agenta młynarza zmieniającego zboże w mąkę. Mąkę należy przesłać do piekarza, który wypiecze z niej chleb. Opis źródeł projektu: aui.agents -główna paczka projektu: Baker.java agent udostępniający usługę dostarczającą chleb, Farmer.java agent udostępniający usługę dostarczającą zboże, Miller.java agent udostępniający usługę dostarczającą mąkę, Producer.java agent wywołujący usługi, 2010 Michał Wójcik 6

ServiceAgent.java klasa abstrakcyjna dla agentów dostarczających usługi, behaviours paczka zawierająca zachowania agentów: ProducerBehaviour.java jednorazowe zachowanie agenta wywołującego usługi, ServiceProviderBehaviour.java cykliczen zachowanie agentów udostępniających usługi, ontology paczka zawierającą ontologie projektu: Kompilacja: ProductionOntology.java klasa opisująca ontologię, types paczka zawierająca koncepty i predykaty: Bread.java koncept opisujący chleb, Corn.java koncept opisujący zboże, Flour.java koncept opisujący mąkę, MakeResult.java predykat opisujący wynik wywołanej usługi, actions paczka zawierający koncepty opisujące akcje agentów: MakeBread.java opis akcji przygotowanie chleba, MakeCorn.java opis akcji przygotowania zboża, MakeFlour.java opis akcji przygotowania mąki. Wraz z projektem zostały dostarczone pliki build.xml i aui-agents.properties pozwalające na kompilację za pomocą polecenia ant. $ant Wywołanie tego polecenia spowoduje utworzenie katalogu dist zawierającego wszystkie biblioteki niezbędne do uruchomienia projektu: Uruchomienie: java -cp aui-agents.jar:commons-codec.3.jar:jade.jar jade.boot -gui \ "miller:aui.agents.miller;farmer:aui.agents.farmer;baker:aui.agents.baker" Wywołanie powyższego polecenia spowoduje uruchomienie środowiska wraz z trzema agentami udostępniającymi usługi oraz GUI umożliwiającego zarządzanie środowiskiem (w tym tworzenie nowych agentów). Dodatkowe informacje na tematy systemu JADE można znaleźć w dokumentacji: JADE Administrators Guide JADE Programmers Guide 2010 Michał Wójcik 7