Przykładowa aplikacja - Hello World
Instalacja i uruchomienie
Przed uruchomieniem przykładowych aplikacji należy zapoznać się z Instalacją platformy jAgE
Wszystkie przykładowe aplikacje znajdują się w repozytorium svn pod adresem: https://caribou.iisg.agh.edu.pl/svn/age/jage/trunk/examples/ (lub dostep anonimowy: http://caribou.iisg.agh.edu.pl/pub/svn/age/jage/trunk/examples).
Należy ściągnąć cały katalog examples, a w nim:
solutions-examples
- zawiera implementacje komponentów obliczeniowych, agentów, strategii, etc,applications-examples
- zawiera konfiguracje uruchomieniowe, które składają system obliczeniowy z dostępnych komponentów oraz pliku uruchomieniowe,pom.xml
- plik Mavena (Project Object Model) dla obu projektów - definiuje zależności, sposób budowania i dystrybucji projektu (więcej na temat plików pom: http://maven.apache.org/guides/introduction/introduction-to-the-pom.html).
W celu zaimportowania projektów do Eclipse'a należy wygenerować pliki .project
oraz .classpath
. Z poziomu głównego katalogu (examples) trzeba wykonać komendę
mvn eclipse:eclipse
Podczas wykonywania tego polecenia wymagane jest aktywne połączenie z Internetem, ponieważ Maven automatycznie pobiera wszystkie wymagane komponenty potrzebne do uruchomienia platformy. Przed zaimportowaniem projektów należy usunąć katalog .settings
oraz pliki .project
i .classpath
z katalogu examples
.
Do repozytorium nie commitujemy plików Eclipse'a.
Po wygenerowaniu w/w plików projekty można zaimportować do Eclipse'a (File -> Import -> Existing project into Workspace) - trzeba zaimportować oba wygenerowane projekty (tj. solutions i applications).
Przykładowe aplikacje są gotowe do uruchomienia: w katalogu src/main/config
w projekcie applications znajdują się konfiguracje uruchomieniowe dla wszystkich przykładów. Uruchamia się je w Eclipsie klikając prawym klawiszem i wybierając Run As, a następnie nazwę konfiguracji.
Konfiguracja projektu - pom.xml
W pomie projektu, który zawiera implemetacje agentów, strategii, etc (solutions
), musimy mieć zależność od core
w wersji 2.4.0
<dependency> <groupId>org.jage.platform</groupId> <artifactId>core</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>org.jage.platform</groupId> <artifactId>core</artifactId> <version>2.4.0</version> <classifier>sources</classifier> </dependency>
Natomiast w pomie, modułu zawierającego pliki konfiguracyjne i startowe (applications
), należy dodać zależność swojego modułu solutions
oraz od node
w wersji 2.4.0:
<dependency> <groupId>org.jage.platform</groupId> <artifactId>node</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>org.jage.platform</groupId> <artifactId>node</artifactId> <version>2.4.0</version> <classifier>sources</classifier> </dependency>
Pliki konfiguracyjne
Każda aplikacja składa się z co najmniej dwóch plików konfiguracyjnych:
- age.xml, który zawiera konfigurację głównych komponentów platformy,
- workplace.xml, który zawiera konfigurację pojedynczej jednostki obliczeniowej (workplace).
age.xml
Plik age.xml dla aplikacji helloworld (applications/src/main/resources/examples/helloworld/age.xml):
Plik age.xml |
Istotne elementy |
---|---|
<?xml version="1.0" encoding="ISO-8859-1" ?> <configuration xmlns="http://age.iisg.agh.edu.pl/AgE/2.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://age.iisg.agh.edu.pl/AgE/2.3 http://age.iisg.agh.edu.pl/xsd/age-2.3.xsd"> <component name="workplaceManager" class="org.jage.pico.PicoWorkplaceManager" isSingleton="true"> <include file="./workplace.xml" /> </component> <component name="addressRegister" class="org.jage.address.provider.DefaultAddressRegister" isSingleton="true" /> <component name="stopCondition" class="org.jage.workplace.FixedStepCountStopCondition" isSingleton="true"> <constructor-arg> <value class="Long" value="10" /> </constructor-arg> </component> <component name="configParams" class="org.jage.node.AgENodeParams" isSingleton="true"> <property name="debug"> <value class="Boolean" value="true" /> </property> </component> </configuration>
|
|
workplace.xml
Plik workplace.xml |
Istotne elementy |
---|---|
<?xml version="1.0" encoding="ISO-8859-1" ?> <configuration xmlns="http://age.iisg.agh.edu.pl/AgE/2.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://age.iisg.agh.edu.pl/AgE/2.3 http://age.iisg.agh.edu.pl/xsd/age-2.3.xsd"> <agent name="workplace" class="org.jage.workplace.IsolatedSimpleWorkplace"> <property name="address"> <value class="AgentAddress" value="TheXFiles" /> </property> <list name="agents"> <agent name="scully" class="org.jage.examples.helloworld.HelloWorldSimpleAgent"> <property name="address"> <value value="Scully" class="AgentAddress" /> </property> </agent> <reference target="scully"/> <agent name="mulder" class="org.jage.examples.helloworld.HelloWorldSimpleAgent"> <property name="address"> <value value="Mulder" class="AgentAddress" /> </property> </agent> <reference target="mulder"/> </list> <property name="agents"> <reference target="agents"/> </property> </agent> </configuration>
|
|