Link Search Menu Expand Document (external link)

Organizzazione

L’organizzazione di Greenhouse Core è stata effettuata utilizzando il plug-in di JaCaMo. La struttura dei package è quindi specifica del framework utilizzato, che è come anticipato JaCaMo.

Quando creato, un progetto JaCaMo è composto da tre package principali: agt, env e org.

Come si può notare, nel diagramma dei package proposto, il package org non è presente: questa decisione è stata presa perché non sono state utilizzate le organization messe a disposizione da JaCaMo, e nello specifico dalla tecnologia Moise. Il modello per la gestione di sistemi multi-agente proposta da Moise prevede che ci sia una gerarchia molto precisa di agenti, ognuno con il proprio ruolo, gruppo e missione da compiere; questo, per il modo in cui il progetto è stato pensato, sarebbe stato troppo vincolante, poiché gli agenti creati collaborano tra loro a pari livello, senza che ci sia un agente che domini sugli altri.

Package diagram - greenhouse core

Diagramma dei Package - Greenhouse Core

Di seguito si andranno a definire lo scopo dei package presenti e la loro struttura interna.

agt

Il package agt ha lo scopo di contenere gli agenti che fanno parte del sistema utilizzando la tecnologia basata su Jason.

Per ogni agente, nel seguente package, è specificato in che modo dovrà comportarsi e che tipo di azione dovrà compiere nel caso in cui riceva un messaggio da un altro agente.
In questo modo è possibile creare agenti in grado di seguire un certo ciclo di vita, basato anche sulle informazione che ricevono dall’esterno.

Il package non è stato suddiviso ulteriormente.

env

Il package env è stato sviluppato sulla base del framework Cartago, che permette di sviluppare degli ambienti virtuali ai quali gli agenti possono fare riferimento, denominati Artefatti.
Al loro interno non è specificato il life cycle degli agenti, ma è presente l’implementazione delle operazioni che possono compiere e le informazioni che possono salvare internamente.

Package diagram - env - greenhouse core

Diagramma dei Package - env - Greenhouse Core

Come si può vedere dal diagramma dei package sopra, il package è stato suddiviso come segue:

  • actuators
    Lo scopo di questo package è quello di contenere gli artefatti utilizzati dagli agenti che operano come attuatori.
  • common
    Questo package viene utilizzato come artefatto comune, poiché viene osservato da tutti gli agenti e permette di condividere le informazioni necessarie per tutte le operazioni, ovvero le configurazioni impostate dall’utente, la lista dei componenti fisici connessi e i Thing Descriptor.
  • communication
    Il package communication contiene gli artefatti che sono utilizzati dagli agenti per la comunicazione con il mondo esterno; sono infatti presenti gli artefatti per contattare i Service (Authentication, Settings e Persistence) e per ricercare gli Edge connessi al fine di reperire i Thing Descriptor.
  • sampling
    All’interno del package sampling si trovano gli artefatti sviluppati al fine di coordinare e effettuare il campionamento dei dati dai dispositivi connessi.
  • utility
    Infine, il packege utility contiene classi Java utilizzate per rappresentare determinate le strutture dati più complesse, o classi con metodi statici utilizzabili in ogni evenienza in cui siano ritenute necessarie, evitanto la ripetizione di codice.
    • component: è contenuta al suo interno la classe che rappresenta i componenti fisici connessi a Edge, il Builder per tale classe e un classe con metodi di utilità per la gestione dei componenti.
    • sample: package contenente la classe per rappresentare i dati campionati e una classe con metodi di utilità per la loro gestione.
    • setting: package per la gestione delle configurazioni, le quali possono essere costruite tramite una Factory.