際際滷 testi corso di laurea magistrale in Informatica
1 of 27
Download to read offline
More Related Content
Jpnde
1. Java Petri Net DEvelopment
Framework (JPNDE) @ JADE
Antonio Furone
2. Obiettivi
Sviluppare un framework che consenta la simulazione (e/o
lesecuzione) e lo sviluppo di applicazioni distribuite
modellate attraverso Reti di Petri (PN).
Sviluppare un framework che consenta la simulazione (e/o
lesecuzione) e lo sviluppo di applicazioni distribuite
modellate attraverso Reti di Petri (PN).
In particolare, tale framework deve:
mettere a disposizione un ambiente di runtime per lesecuzione di un
modello definito attraverso PN e un insieme API per lestensione del
modello stesso attraverso un linguaggio di programmazione di alto livello;
consentire la distribuzione trasparente (per lo sviluppatore) delle attivit
computazionali di un PN sui nodi di rete che compongono larchitettura
esecutiva dellapplicazione;
permettere linterazione tra differenti PN (o tra attivit computazionali di
una stessa PN) attraverso lo scambio di token contenenti tipi di dati
complessi.
3. Premesse [1/2]
Tipologie di PN:
Reti Posti/Transizioni (P/T) standard a token interi ed archi pesati: lattivazione
di un transizione provoca la rimozione da ogni posto a monte (preset) e laggiunta
ad ogni posto a valle (postset) di un numero di token pari al peso degli archi che la
collegano a tali posti;
Reti di Petri Colorate (CPN) : estendono quelle standard (P/T) introducendo
alcune primitive di programmazione per la definizione di tipi di dati complessi
trasportati dai token e la manipolazione dei valori in essi contenuti.
JPNDE supporta entrambe le tipologie di reti. Le primitive di
programmazione introdotte allinterno delle CPN si basano su
scriptlets JAVA.
JPNDE supporta entrambe le tipologie di reti. Le primitive di
programmazione introdotte allinterno delle CPN si basano su
scriptlets JAVA.
4. Premesse [2/2]
Paradigma di sviluppo:
JPNDE 竪 stato sviluppato attraverso il paradigma dell Agent-Oriented
ed 竪 basato su JADE (Java Agent DEvelopment Framework );
La maggior parte dei componenti dellarchitettura di JPNDE sono degli
Agenti in JADE;
Il concetto di piattaforma di runtime di JPNDE 竪 equivalente al
concetto di platform in JADE.
5. Definizione del modello: PNML [1/6]
Le PN sono fornite al framework attraverso documenti XML basati su
PNML (Petri Net Markup Language).
E un formato la cui
grammatica 竪 definita
mediante lo schema
language RELAX NG;
Consente linterscambio di
modelli tra tool che
supportano tale standard;
Non esiste al momento una
estensione del PNML per il
supporto delle CPN;
Le estensioni previste nei
modelli JPNDE (scriptlets
Java, distribuzione nella rete
di task computazionali,
interazione tra modelli, ecc.)
sono state introdotte
attraverso tag specifici
allinterno del tag ToolInfo.
7. Definizione del modello: Estensioni [3/6]
Condizioni sugli archi del preset per labilitazione di una transizione
<arc id="arc_SendPacket_i_1" source="Send" target="SendPacket">
<inscription>
<text>1</text>
</inscription>
<toolspecific tool="JPNDE" version="1.0">
<jpncondition priority="0">
<arc id="arc_SendPacket_i_1" source="Send" target="SendPacket">
<inscription>
<text>1</text>
</inscription>
<toolspecific tool="JPNDE" version="1.0">
<<jpncondition jpnexpression priority="numToken="0">
<jpnexpression numToken="0">
0">
<body>
token.get("numPack").equals(NextSend_token.get("count"))
<body>
</body>
</jpnexpression>
</jpncondition>
</toolspecific>
</arc>
token.get("numPack").equals(NextSend_token.get("count"))
</body>
</jpnexpression>
</jpncondition>
</toolspecific>
</arc>
La condizione pu嘆 essere
composta da n espressioni;
Lordine con cui la
condizione 竪 verificata,
rispetto a quelle degli altri
archi del preset di una
transizione, pu嘆 essere
definita attraverso la
property priority (=0;
verificata per ultima);
Lespressione pu嘆 riferirsi
ad uno specifico token
(property numToken).
Send NextSend
SendPacket
arc_SendPacket_i_1
Lespressione 竪 verificata se esiste un token nel posto Send, la cui property numPak 竪
uguale al valore della property count del token selezionato dal posto NextSend.
8. Definizione del modello: Estensioni [4/6]
Inizializzazione dei Token
<place id="Send">
<initialMarking>
<place id="Send">
<initialMarking>
<text>7</text>
</initialMarking>
<toolspecific tool="JPNDE" version="1.0">
<jpnscript>
<jpnfunction onEvent="initialMarking">
<body>
tokens[0].put("numPack",1);
tokens[0].put("contPack","Modellin");
.
tokens[6].put("numPack",7);
tokens[6].put("contPack","i Nets##");
</body>
</jpnfunction>
</jpnscript>
</toolspecific>
</place>
<text>7</text>
</initialMarking>
<toolspecific tool="JPNDE" version="1.0">
<jpnscript>
<jpnfunction onEvent="initialMarking">
<body>
tokens[0].put("numPack",1);
tokens[0].put("contPack","Modellin");
.
tokens[6].put("numPack",7);
tokens[6].put("contPack","i Nets##");
</body>
</jpnfunction>
</jpnscript>
</toolspecific>
</place>
In corrispondenza del
marking iniziale di un
posto, 竪 possibile
definire una funzione
che viene eseguita
prima dello start-up del
modello
(onEvent=Initial
Marking) e nella quale
竪 possibile inizializzare i
token.
Modifica dei token prima dellinserimento in un posto
<place id="b">
<toolspecific tool="JPNDE" version="1.0">
<jpnscript>
<place id="b">
<toolspecific tool="JPNDE" version="1.0">
<jpnscript>
<jpnfunction onEvent="add">
<body>
<jpnfunction onEvent="add">
<body>
if (!token.get("ok")){
token.put("contPack","");
token.put("numPack",-1);
}
</body>
</jpnfunction>
</jpnscript>
</toolspecific>
</place>
if (!token.get("ok")){
token.put("contPack","");
token.put("numPack",-1);
}
</body>
</jpnfunction>
</jpnscript>
</toolspecific>
</place>
E possibile definire una
funzione che viene eseguita
prima dellinserimento di un
token in un posto
(onEvent=add) e nella
quale 竪 possibile modificare
i dati trasportati dal token.
Tali funzioni possono
essere associate sia ad un
Posto che ad arco che
termina in un Posto.
9. Definizione del modello: Estensioni [5/6]
Esecuzione task in corrispondenza dellattivazione di un transizione
Esistono due modi per implementare un task:
script allinterno del file PNML
<transition id="TrasmitPacket">
<toolspecific tool="JPNDE" version="1.0">
<jpnscript>
<transition id="TrasmitPacket">
<toolspecific tool="JPNDE" version="1.0">
<jpnscript>
<jpnimport package="java.util.Random"/>
<jpnfunction onevent="activation">
<body>
tokenOut=((Token)context.getTokensByPlace("a")[0]).clone();
if ((new Random()).nextInt(9)>5)
<jpnimport package="java.util.Random"/>
<jpnfunction onevent="activation">
<body>
tokenOut=((Token)context.getTokensByPlace("a")[0]).clone();
if ((new Random()).nextInt(9)>5)
tokenOut.put("ok",false);
else
tokenOut.put("ok",true);
</body>
</jpnfunction>
</jpnscript>
</toolspecific>
</transition>
tokenOut.put("ok",false);
else
tokenOut.put("ok",true);
</body>
</jpnfunction>
</jpnscript>
</toolspecific>
</transition>
Loggetto tokenOut rappresenta il
Token
(it.uniba.di.mas.jpnde.core.Token) che
sar aggiunto nei posti target degli archi
del postset della transizione;
I token di input possono essere
prelevati dalloggetto context
(it.uniba.di.mas.jpnde.core.PNContext).
classe Java referenziata attraverso il tag <implClass/>
<transition id="t1">
<toolspecific tool="JPNDE" version="1.0">
<transition id="t1">
<toolspecific tool="JPNDE" version="1.0">
<jpnImplClass name="myappl.transition.T1"/>
</toolspecific>
</transition>
<jpnImplClass name="myappl.transition.T1"/>
</toolspecific>
</transition>
La classe referenziata dovr implementare un
interfaccia di tipo
it.uniba.di.mas.jpnde.core.ITransitionTask o
estendere una classe di tipo
it.uniba.di.mas.jpnde.impl.
AbstractTransitionTask.
public class T1 extends AbstractTransitionTask{
@Override
public Token exec(PNContext ctx) throws Throwable {
..
return new Token(transition.getId());
}
Entrambe le modalit consentono lo sviluppo di task di un certa compessit (accesso a DB, richiamo di web services,
ecc.).
10. Definizione del modello: Estensioni [6/6]
Eventi per prelevare e aggiungere token da/a posti di una rete
<place id="p1">
<toolspecific tool="JPNDE" version="1.0">
<place id="p1">
<toolspecific tool="JPNDE" version="1.0">
<jpnEventIn delay='5000' auto='Y'/>
</toolspecific>
</place>
<jpnEventIn delay='5000' auto='Y'/>
</toolspecific>
</place>
EventIn: consente di aggiungere token in un posto della rete.
Le properties delay e auto, se specificate, consentono
rispettivamente di definire un intervallo di tempo minimo che
deve passare tra la generazione di un token e laltro e di
indicare se la creazione del token deve essere effettuata
dallevento stesso (non inoltrato da un EventOut).
<place id="p4">
<toolspecific tool="JPNDE" version="1.0">
<place id="p4">
<toolspecific tool="JPNDE" version="1.0">
<jpnEventOut route="p1.macchina1@devplat"/>
</toolspecific>
</place>
<jpnEventOut route="p1.macchina1@devplat"/>
</toolspecific>
</place>
EventOut: consente di prelevare token da un posto della rete
ed eventualmente (property route) di inoltrarli ad un EventIn
della medesima rete o di un altra rete in esecuzione sulla
stessa piattaforma.
Termine dellesecuzione
<place id="p4">
<toolspecific tool="JPNDE" version="1.0">
<jpnEndPlace threshold="10"/>
</toolspecific>
</place>
<place id="p4">
<toolspecific tool="JPNDE" version="1.0">
<jpnEndPlace threshold="10"/>
</toolspecific>
</place>
E possibile definire un posto tale per cui la
presenza di un certo numero di token in tale posto
(property threshold) determina la fine
dellesecuzione della rete.
Distribuzione in rete del modello
E possibile definire i nodi dellarchitettura
esecutiva (containers Jade) nei quali
verr eseguito lintero modello o i singoli
task attivati con labilitazione di una
transizione.
<net id="macchina" type="http://www.pnml.org/version-2009/grammar/ptnet">
<net id="macchina" type="http://www.pnml.org/version-2009/grammar/ptnet">
<toolspecific tool="JPNDE" version="1.0">
<jpnContainer id=Container-1/>
</toolspecific>
..
<transition id="t2">
<toolspecific tool="JPNDE" version="1.0">
<jpnContainer id=Container-2/>
..
</toolspecific>
</transition>
<toolspecific tool="JPNDE" version="1.0">
<jpnContainer id=Container-1/>
</toolspecific>
..
<transition id="t2">
<toolspecific tool="JPNDE" version="1.0">
<jpnContainer id=Container-2/>
..
</toolspecific>
</transition>
11. Architettura
Back-end
Console
Back-end
Console
UUI IC Coonnssoolele
Modelli
(PNML files)
PPNN M Maannaaggeerr
PPNN T Trarannssitiitoionn 1 1
...
PPNN T Trarannssitiitoionn n n
Impl Class 1
...
Impl Class m
Place
Events
Place
Events
Script Engine (Bean Shell)
PN 1..N
Tasks
Platform
12. Descrizione dei Componenti [1/4]
UI Console:
E il componente di interfaccia
tra lambiente di runtime del
framework e lutente. Viene
attivata dall agente Back-end
Console e consente di gestire
le PN allinterno della
piattaforma (Load, Start, Stop).
13. Descrizione dei Componenti [2/4]
Back-end Console:
Implementa i servizi richiesti dallutente attraverso la UI Console ed effettua il
monitoring delle reti eventualmente in esecuzione. In particolare:
Load: parsing dei files PNML e rappresentazione dei modelli attraverso un una
gerarchia di classi: PN, Transition, Place, Arc,etc.;
Start: creazione dellagente di coordinamento per lesecuzione della rete (PN
Manager) e invio a tale agente della gerarchia di oggetti che rappresentano il
modello da eseguire. Il PN Manager 竪 creato nel container JADE eventualmente
specificato nel file PNML o, di default, in 竪 quello dove 竪 in esecuzione lagente
Back-end Console;
Stop: invio richiesta di stop dellesecuzione della rete al PN Manager.
14. Descrizione dei Componenti [3/4]
PN Manager:
Gestisce la rete attivando gli agenti necessari per la sua esecuzione e
coordinando lattivazione delle transizioni e degli eventi secondo le regole
definite nel modello.
Gli agenti per la gestione delle transizioni (PN Transition) sono distribuiti nei container eventualmente
specificati nel file PNML o, di default, nel container del PN Manager. Gli agenti per la gestione degli
eventi (in/out) definiti sui posti della rete sono creati nello stesso container del PN Manager.
Una volta creati gli agenti necessari per lesecuzione della rete, il PN Manager invia agli stessi la
configurazione delle entit (transizioni e eventi) che dovranno gestire. Durante lesecuzione della rete, gli
agenti comunicano attraverso messaggi asincroni. In particolare, il PN manager:
invia messaggi per attivare transizioni e per inviare token (eventi di prelievo dei token dai posti della
rete);
riceve messaggi per notifiche di fine esecuzione transizioni e per ricevere token (eventi di inserimento
dei token nei posti della rete).
Tale agente si occupa anche dellesecuzione degli script associati ai posti (eventi "initialMarking e add)
e della valutazione delle condizioni definite sugli archi per lestrazione dei token dai posti della rete. Gli
script e le espressioni associate alle condizioni sono eseguiti/valutate attraverso uno script engine basato
sul prodotto open source BeanShell (http://www.beanshell.org/ ).
15. Descrizione dei Componenti [4/4]
PN Transition:
Si occupa di eseguire lattivit computazionale associata allattivazione della
transizione che gestisce. A seconda della modalit utilizzata per implementare il
task, viene eseguito uno script o attivata una classe Java. Al termine
dellesecuzione, il token restituito dal task viene inviato al PM Manager che
provveder a distribuirlo sui posti della rete che sono target di archi del postset
della transizione.
PN Event:
Gestisce gli eventi di prelievo/inserimento dei token dai/nei posti della rete. A
seconda della tipologia di evento, comunica con il PN Manager e/o altri agenti
dello stesso tipo, inviando e ricevendo messaggi contenenti token.
23. Caso di Studio [1/5]
Tipico processo aziendale nel quale 竪 necessario coordinare le attivit di pi湛
sistemi: processo di generazione dei dati consuntivazione di una primaria azienda
telefonica che opera in un contesto internazione, fornendo il servizio di
International Wholesale per il traffico voce;
Sistema di Rating: produce le viste dati di traffico valorizzato (detto anche
SITAX) per le componenti economiche di credito e debito, applicando gli accordi
commerciali stipulati con le carrier clienti / fornitori. Tale modulo, ha come output
anche la componente di traffico scartato (NOTAX), per il quale non 竪 stato
trovato in anagrafica un accordo valido;
Sistema Gestionale: utilizzando loutput del sistema di Rating (SITAX e
NOTAX), produce le viste dati per la verifica delleffettivo andamento del
business attraverso lapplicazione di regole ed algoritmi di valorizzazione
gestionale: applicazione ipotesi di sconto, recupero NOTAX, previsione
andamento SCONTI. Inoltre, mette a disposizione una serie di utilities per lanalisi
delle marginalit sui dati prodotti, un ampia reportistica per la business
intelligence e alcune funzionalit per la certificazione delle regole di valorizzazione
applicate.
24. Caso di Studio [2/5]
Rating
Macro-step Descrizione Pre-requisiti
GeneraDB Viene creato uno snapshot del DB degli accordi (aggiornato tramite interfaccia WEB e/o da altri
processi esterni al Rating) che sar utilizzato dai successivi step di classificazione e
valorizzazione
Classificazione Ad ogni CDR viene associato, attraverso un algoritmo di classificazione di tipo best-match,
laccordo attraverso il quale sar valorizzato. In questa fase, il traffico non classificato viene
scartato (NOTAX)
GeneraDB sullistanza
(credito/debito) relativa
Valorizzazione Valorizzazione del traffico attraverso gli accordi associati nello step precedente. Oltre alla
valorizzazione per singolo CDR, viene prodotta anche una vista aggregata che rappresenter
linput (SITAX) per i processi del sistema Gestionale
Classificazione
dellistanza relativa
Gestionale
Macro-step Descrizione Pre-requisiti
Migrazione
Anagrafica
Migrazione anagrafica accordi chiusi (periodo di validit) nei sei mesi precedenti e riaperti per
lapplicazione dellalgoritmo di recupero no-tax ALGO1;
Migrazione anagrafica sconti
Genera DB Gestionale
Algo1 Processi di Classificazione e Valorizzazione applicati sui NOTAX generati dal sistema di
Rating, utilizzando lanagrafica degli accordi migrata nello step precedente
Migrazione anagrafica
sullistanza relativa +
Classificazione
Consuntivazione Applicazione algoritmi di valorizzazione gestionale: ALGO2, Sconti, Ipotesi di Accordo,ecc. Algo1 relativa istanza +
Fine processo di Rating
(Valorizzazione
Credito/Debito)
25. Caso di Studio [3/5]
Rating Gestionale
<jpnEventOut
route="Cre2.gestionale@devplat"/>
<jpnEventIn/>
Classificazione
Credito
<jpnEventIn/>
Classificazione
Debito
<jpnEventOut
route="Deb2.gestionale@devplat"/>
<jpnEventOut
route="RatingEnd.gestionale@devplat"/> <jpnEventIn/>
Fine Rating =
Valorizzazione
Credito e Debito