<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Outline of a Formalization of JADE Multi-Agent Systems</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Federico Bergenti</string-name>
          <email>federico.bergenti@unipr.it</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Eleonora Iotti, Agostino Poggi</string-name>
          <email>agostino.poggi@unipr.it</email>
          <email>eleonora.iotti@studenti.unipr.it</email>
          <email>eleonora.iotti@studenti.unipr.it, agostino.poggi@unipr.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Dipartimento di Ingegneria dell'Informazione, Universita` degli Studi di Parma, Parco Area delle Scienze 181/A</institution>
          ,
          <addr-line>43124 Parma</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Dipartimento di Matematica e Informatica, Universita` degli Studi di Parma, Parco Area delle Scienze 53/A</institution>
          ,
          <addr-line>43124 Parma</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <fpage>17</fpage>
      <lpage>19</lpage>
      <abstract>
        <p>-This paper proposes a formalization of JADE agents and multi-agent systems based on transition systems. The first section introduces the aims and scope of the research and it focuses the content of the paper. The second section enumerates the abstractions and the structures used in the formalization. Successively, third section presents the formal semantics of the parts of a JADE-based source code that are involved in the management of (i) the life cycle of agents and (ii) the behaviours of agents. Fourth section shows a very simple JADE agent and it exemplifies the use of the proposed transition system. Finally, a brief recapitulation of the work concludes the paper.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>I. INTRODUCTION</p>
      <p>
        JADE [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is today one of the most widely used tools for the
development of multi-agent systems both in research and in the
industry. It is a core component of a complex software system
that helps managing one of the most penetrating
telecommunication networks in Europe, serving millions of consumers
daily [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. It has been recently enhanced to support smart
appliances [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], and it is the base of a recent initiative intended
to revitalize the use of software agents to support social
activities [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], both cooperative (see, e.g., [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]) and
competitive. Besides this, JADE was initially conceived primarily
as a practical tool to help researchers experimenting with
FIPA technology (www.fipa.org). JADE was recognized by
FIPA community as the tool that most accurately implemented
FIPA specifications, and it was often used for validating new
specifications and for assessing the conformance of other
tools to FIPA guidelines and specifications. Moreover, it was
often selected to experiment potential enhancements to FIPA
specifications (see, e.g., [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]), and to gather the interest of
FIPA members on common projects (see, e.g., [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]). Such a
close relationship with an official standardization body forced
JADE architects to let the design of JADE APIs open, so that
third-party developers could adopt JADE—and FIPA together
with it—with minimal restrictions. For example, the agent
model that JADE provides was intentionally left simple and
not formally specified so that developers were not forced to
adopt a specific agent model just because they wanted their
agents to be FIPA compliant.
      </p>
      <p>
        After more than 15 years of JADE development and use,
this paper first proposes a formal semantics of JADE agents
and multi-agent systems to support reasoning on JADE-based
software systems. The proposed semantics is based on
transition systems [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] and it closely follows the intended meaning of
JADE APIs to ensure that properly written JADE agents can be
reviewed in terms of the proposed semantics. No refinement
of the JADE agent model is proposed and the semantics is
ground on the semantics of Java classes. We always assume
the availability of an underlying Java transition system and we
refrain from formalizing it because it is a critical topic out of
the scope of this paper (see, e.g., [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]).
      </p>
      <p>For the sake of brevity, only an outline of the proposed
semantics is presented in this paper, and interested readers are
invited to consult an upcoming paper that provides a complete
description of the formalization.</p>
      <p>II.</p>
    </sec>
    <sec id="sec-2">
      <title>DEFINITIONS AND TERMINOLOGY</title>
      <p>
        The proposed formalization considers only vfie main
entities that collectively describe a JADE multi-agent system.
The first of such entities is the multi-agent system itself—the
MAS—which is seen as a sort of environment where agents
live. Such an environment is subject to internal and external
events that may modify its state and the state of each agent
belonging to the MAS. Also, a MAS accounts for all entities
that we need to formalize the JADE system: within a MAS
we are able to see all agents and their respective behaviours.
The second entity that we consider is the agent. An agent is
a complex entity that has a state, detailed in Section II-C,
and a list of behaviours. The behaviour is the third entity that
we consider: it has a state, a type and an associated action.
Actions are not entities in the proposed formalization, and
they are always associated to behaviours. Actually, we may
think of an action as a list of activites that an agent performs
when it decides to activate the behaviour that encapsulates
the action. The type of the behaviour changes the way the
agent performs the associated action, e.g., a cyclic behaviour
permits the agent to perform the action cyclically; conversely,
a one-shot behaviour in meant to have the action performed
only once. Each agent (respectively, behaviour) belongs to one
agent class (respectively, behaviour class), and such classes are
the last two of the vfie entities that we consider. An agent
class is defined as a group of agents that have behaviours
belonging to the same classes, and a behaviour class is a group
of behaviours that have the same type and the same action. It
is worth noting that the word class was chosen to identify
the means that JADE provides to group agents and behaviours
by specific properties, i.e., Java classes. This choice implicitly
types agents, but this work does not address this issue and
related issues (see, e.g., [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]).
      </p>
      <sec id="sec-2-1">
        <title>A. Constants</title>
        <p>In order to give a formal definition of the aforementioned
vfie entities, we choose a first-order language whose alphabet
consists of a finite set of constants, predicate symbols, function
symbols, and the usual logical symbols (i.e., variables,
connectives, and quantifiers). We let C be the finite set of constants
and V the countably infinite set of variables.</p>
        <p>In order to account for the life cycle state of an agent, we
define specific constants: initiated, deleted, active,
suspended, and waiting. Similarly, the life cycle state of
a behaviour is described by constants initiated, active,
done, and blocked. We call SA the finite set of the agent
life cycle state constants, and SB the finite set of behaviour
life cycle state constants. Each behaviour needs a type and a
description of its internal state: we call T and S the sets of
such constants, respectively. Moreover, we also need a finite
set of constants that describes the state of the environment
where agents live, which we call W.</p>
        <p>In summary, the set of constants that we allow for the
first-order language used to describe the proposed semantics
is composed of the union of all aforementioned sets:</p>
        <p>C = SA ∪ SB ∪ T ∪ S ∪ W.</p>
      </sec>
      <sec id="sec-2-2">
        <title>B. Variables and identifiers</title>
        <p>In addition to constants and variables, we define a set of
identifiers called I. Every time an entity is created, it gets a
name from such a set. Each agent class and behaviour class is
associated with a specific identifier in the set I. Therefore we
need a semantic structure that associates the name of the class
to the class itself. We call FA the set of all agents classes and
FB the set of all behaviour classes. Such semantic structures
are called semantic contexts of the classes, and they are
ρA : I → FA,
ρB : I → FB.
aid : V → I
bid : V → I.</p>
        <p>In JADE, each agent has a name and a global unique
identifier (called AID, for agent identifier), which contains its
local name and its platform name. So we can consider the AID
as a structured identifier defined a function
that maps a variable a representing an agent to its AID.
Moreover, each behaviour has a name, which is its unique
identifier. We can access such an identifier through the function
Similarly, we define the function β that accesses the state of
a behaviour as
β : I → B.
(7)</p>
        <p>The composition α ◦ aid : V → A associates an agent to
a variable in the first-order language, while the composition
β ◦ bid : V → B does the same with respect to a behaviour.
We may write α(a) instead of α(aid(a)) with a slight abuse
of notation when the intended meaning is evident from the
context.</p>
      </sec>
      <sec id="sec-2-3">
        <title>C. Events</title>
        <p>A MAS is constantly subject to two types of events: internal
and external. Each agent is fed with a sub-sequence of such
events in its life. Some of such events are particularly important
because they can change the state of the MAS (these are
the external events), and/or the state of agents and respective
behaviours (these are the internal events). The set of such
notable events that JADE manages, which we call E, contains
the following events:
•
•
•
•
•
•
•
•
•
•
•</p>
        <p>Create(a, F ) denotes the creation of the agent a of
class F ;
Kill(a) denotes the destruction of the agent a;
Wait(a) denotes the state change of the agent a to the
state waiting;
Wake(a) denotes the state change of the agent a from
waiting to active;
Suspend(a) denotes the state change of the agent a
to the state suspended;
Activate(a) denotes the state change of the agent a
from suspended to the state it had before becoming
suspended;
Create(a, b, F ) denotes the creation of the behaviour
b of class F and agent a;
Block(b) denotes the state change from active to
blocked for the behaviour b;
Restart(b) denotes the state change from blocked
to active for the behaviour b;
Start(MAS) denotes the first event that occurs in the
MAS; and
End(MAS) denotes the event that marks the
termination of the MAS (with all agents and behaviours); it
is the last event that occurs in a computation of the
MAS.
(1)
(2)
(3)
(4)
(5)
(6)</p>
        <p>Each agent (respectively, behaviour) needs to be
instantiated and maintained in a semantic structure, here generically
called heap, which associates a concrete reference (i.e., an
identifier) to the representation of the agent (respectively,
behaviour). We call A the set of all agents and B the set
of all behaviours, and we define a function α that accesses the
state of an agent as
α : I → A.</p>
        <p>The events in E that denotes changes in the state of an
agent are related to each other as shown in Figure II-C (left).
Similarly, Figure II-C (right) shows the finite state machine
that represents the state changes of a behaviour.</p>
        <p>In order to analyze the life cycle of agents and behaviours,
we need to consider which event occurs in single steps of the
computation: if e ∈ E and t ∈ N, the pair ht, ei means that
the event e occurred at step t.
q0</p>
        <sec id="sec-2-3-1">
          <title>Wake(a)</title>
        </sec>
        <sec id="sec-2-3-2">
          <title>Wait(a)</title>
        </sec>
        <sec id="sec-2-3-3">
          <title>Create(a, F )</title>
          <p>q2
q1</p>
        </sec>
        <sec id="sec-2-3-4">
          <title>Suspend(a)</title>
        </sec>
        <sec id="sec-2-3-5">
          <title>Activate(a)</title>
        </sec>
        <sec id="sec-2-3-6">
          <title>Activate(a)</title>
        </sec>
        <sec id="sec-2-3-7">
          <title>Suspend(a)</title>
          <p>where A0 ⊆ A is a finite set of agents, B0 ⊆ B is a finite set
of behaviours, LE is the list of events occurred in this MAS
up to time step T ∈ N.</p>
          <p>In addition, to support the semantics described in next
section, we define Sb, a selector for the behaviours of an agent,
i.e., the behaviour scheduler. Such a function computes the
current behaviour to execute, from the list Lb of an agent a as
q1
q2</p>
          <p>Sb : A0 → B0.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>III. SEMANTICS</title>
      <p>
        The semantics of the life cycle of agents, given the events
described in Section II-C, is described in the form of a labelled
transition system (see, e.g., [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]). The proposed transition
system, called MAS transition system, is a pair hΓ, →i where
Γ is a finite set of configurations and → is a binary relation on
Γ. Once a MAS is fixed, the labels of such a transition system
are the pairs time-event defined above.
      </p>
      <p>Definition 4 (Configuration): A configuration in the
transition system is described by a tuple</p>
      <p>hC, σ, α, βi ∈ Γ
where C is a command, σ represents the state (stores and
environments) of the underlying Java system, α and β are
the heaps that represent the state of all agents and of all
behaviours, respectively.</p>
      <p>
        For the sake of clarity and when no ambiguity can arise, we
may not enumerate all four elements of a configuration in the
description of transition rules. Moreover, we use the symbol
ε for a configuration with no commands. The abstract syntax
used for a command (or statement) C is the Java syntax, as
defined, e.g., in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <sec id="sec-3-1">
        <title>D. Structures</title>
        <p>An agent class is a pair Fa = hLB, ϕi, where LB is a list
of possible behaviours and ϕ a function that maps the names
of its methods (in the set I of identifiers) to the associated
blocks of code, i.e., sequences of statements written in Java
with JADE.</p>
        <p>Similarly, a behaviour class is a pair Fb = ht, ψi, where
t ∈ T ⊆ C fixes the type of the behaviour in the class (e.g.,
cyclic or one-shot), and ψ is a function that associates specific
names to the related blocks of code.</p>
        <p>In JADE, an agent is an entity that belongs to a particular
class and that has a list of behaviours. So, an agent is
completely described by the name of its class and by its state,
as follows.</p>
      </sec>
      <sec id="sec-3-2">
        <title>Definition 1 (Agent):</title>
        <p>An agent is a tuple
hF, sa, sw, Lb, Lei ∈ A
where F ∈ I is the identifier of the class, sa ∈ SA is the state
of the agent, sw ∈ W the state of the environment seen by the
agent, Lb is a finite list of behaviours and Le a finite list of
events.</p>
        <p>Similarly, we can define a behaviour as a specific entity
which belongs to a class, as follows.</p>
      </sec>
      <sec id="sec-3-3">
        <title>Definition 2 (Behaviour):</title>
        <p>A behaviour is a tuple
hF, myAgent, sb, sw, si ∈ B
where F ∈ I is the identifier of the class, myAgent ∈ I is
the unique identifier of the associated agent, sb ∈ SB is the
state of the behaviour, sw ∈ W is the state of the environment
seen by the behaviour and s ∈ S is the internal state of the
behaviour. We call B the set of all behaviours.</p>
        <p>In JADE, each agent lives within a MAS and therefore, for
every time step T we can consider a global list of events LE
that occurred to all agents of that MAS since its activation,
i.e., since event Start(MAS).
(8)
(9)</p>
        <p>Each transition refers to an environment, or semantic
context. In this case, we use the class contexts defined in
Section II-D. So, for example, a transition may be written as
follows
where ρA and ρB are the class contexts and N ⊆ I ∪ V is
a finite set of names, i.e., identifiers or variables used in the
transition.</p>
      </sec>
      <sec id="sec-3-4">
        <title>A. Semantics of commands with events</title>
        <p>We need a formal semantics to manage the events and
the state changes that occur in the life cycle of an agent. To
this extent, we use a subsystem of the main MAS transition
system. Such a subsystem has the same configuration of the
MAS system, but the transition relation is called →com. The
execution of such a system may be interrupted by an event that
may cause a state change: this is represented by taking the label
on the transition relation that indicates the current execution
step and by matching it with the event just occurred. Notably,
at some execution step no event occurs, and we indicate them
with ht, $i.</p>
        <p>Let us consider a fixed MAS hA0, B0, LE iT . A list of
statements, indicated with C1; C2, is computed as usual from
left to right taking care of the propagation of the current event,
as shown by the rule</p>
        <p>ht,ei
hC1, σ, α, βi −−−→com hε, σ0, α0, β0i</p>
        <p>ht,ei
hC1; C2, σ, α, βi −−−→com hC2, σ0, α0, β0i
.</p>
        <p>When no event occurs, as we can see in the rule (15),
the statement C is computed by means of the underlying Java
semantics system, which we call →jstmt
hC, σi →jstmt hε, σ0i .</p>
        <p>ht,$i
hC, σi −−−→com hε, σ0i</p>
        <p>We work under the reasonable assumption that such a
subsystem may change only the state σ and we do not consider
changes in all stores and environments of Java.</p>
        <p>We then define specific rules to update the state of an agent.
When an event e related to the agent a = hF, sa, sw, Lb, Lei
occurs, sa is changed to a new state, and e is stored in the list
of events Le. Similarly, we define rules for the behaviour state
changes. In this case, there is no need for a list of events inside
the behaviour entity, as shown in Figure II-C. For example,
the following rule describes the state change from active to
blocked
e = Block(b) β(b) = hF, active, sw, si</p>
        <p>ht,ei
hC, βi −−−→com hC, β[hF, blocked, sw, si/b]i
. (16)</p>
        <p>There is no explicit rule for the change from active to
done because the latter is reached only after the execution
of the action for a one-shot behaviour, and cyclic behaviours
never change to done. Obviously the event End(MAS) stops
all behaviours and agents in a MAS, forcing them to reach
their respective final states.
(14)
(15)</p>
      </sec>
      <sec id="sec-3-5">
        <title>B. Agent life cycle</title>
        <p>We describe the life cycle of a generic agent, instantiated
in the MAS hA0, B0, LE iT , starting from its creation. When
a new agent a ∈ A of class Fa = hLB, ϕi is created, it is
memorized in a location a of the heap α and the function
setup of its class is executed. We assume that the code of
the method setup is accessible from the function ϕ of the
agent class</p>
        <p>ϕ(setup) = {B}.</p>
        <p>In this case, the MAS system has the transition</p>
        <p>ht,ei
ρA ` hε, αi −−−→ ha.setup(){B}, α0i
where α0 = α[hF, initiated, ω, [], [Create(a, F )]i/a].
Note that the agent class context is crucial within this transition
because it gives us the necessary information regarding the
setup method.</p>
        <p>The block B of the agent setup is computed by the
commands transition system, as follows</p>
        <p>ht,ei
ρA `a hB, σ, α, βi −−−→com hε, σ0, α0, β0i
. . .
ht,ei
ρA ` ha.setup(){B}, σ, α, βi −−−→ hε, σ0, α00, β0i
(19)
where α00 = α0[hF, active, sw, Lb, Lei/a].</p>
        <p>During setup, agent a can add and/or remove behaviours
from its list Lb, through the following statements
addBehaviour(b),</p>
        <p>removeBehaviour(b).</p>
        <p>It is worth noting that such statements can be used also inside
the action of a behaviour, and not only in the setup method,
to change the list of behaviours dynamically. Finally, after
setup, the agent enters the active state and it becomes
ready to select a behaviour in its list. The life of an agent
continues by performing actions of behaviours until the event
Kill(a) occurs. When an agent a is killed, it computes the
function takeDown. Only after the execution of takeDown
the agent a is removed from the heap by assigning α(a) = $.
(17)
(18)</p>
      </sec>
      <sec id="sec-3-6">
        <title>C. Behaviour actions</title>
        <p>If α(a) = a = hF0, sa, s0w, Lb, Lei ∈ A0 is an instantiated
agent and β(b) = b = hF, a, active, sw, si ∈ B0 is a
behaviour that appears in the list of the agent, i.e., b ∈ Lb, then
the behaviour may be selected by the behaviour scheduler of
the agent to perform the relative action, i.e., Sb(a) = b. The
transition of the main system then calls the action method
of the class of b</p>
        <p>ρB ` hε, σ, α, βi → hb.action(){C}, σ, α, βi.</p>
        <p>Just like for the method setup of the agent, the block of code
C of action is executed by the subsystem →com.</p>
        <p>A one-shot behaviour terminates after a single execution
of its action, and it is removed from the list of behaviours of
the agent, through the function removeBehaviour. So, if
the agent is still alive, the behaviour scheduler chooses another
behaviour. On the contrary, if the behaviour b is cyclic, then
its action is performed cyclically and it is never automatically
removed from the list of behaviours of the agent.
ht,ei
ρA, ρB `a,b hC;removeBehaviour(b), σ, α, βi −−−→com hε, σ0, α0, β0i
. . .</p>
        <p>β0(b) = hF, a, active, sw, si</p>
        <p>ht,ei
ρB ` hb.action(){C}, σ, α, βi −−−→ hε, σ0, α0, β0[hF, a, done, sw, si/b]i
ht,ei
ρA, ρB `a,b hC;removeBehaviour(b), σ, α, βi −−−→com hε, σ0, α0, β0i
. . .</p>
        <p>β0(b) = hF, a, blocked, sw, si</p>
        <p>ht,ei
ρB ` hb.action(){C}, σ, α, βi −−−→ hε, σ0, α0, β0i
(20)
(21)</p>
        <p>Note that a necessary condition for the scheduler Sb(a)
to choose a behaviour is that it must be in the active state.
A behaviour is normally in the active state, but it can reach
the blocked state during the execution of its action. When this
occurs, the execution continues up to the natural termination
of the action and the blocked behaviour is not removed from
the list of behaviours. Anyway, the scheduler cannot choose
it until it returns to the active state, as detailed, for one-shot
behaviours, in rules (20) and (21), summarized in Figure 2.</p>
        <p>This section discusses a simple example of JADE agent and
shows its semantics according to the transition system outlined
in previous sections. The simple agent has the following source
code.
1 import j a d e . c o r e . Agent ;
2 import j a d e . c o r e . b e h a v i o u r s . O n e S h o t B e h a v i o u r ;
3
4
5
6
7
8 a d d B e h a v i o u r ( g r e e t i n g s ) ;
9 }
10
11
p u b l i c c l a s s H e l l o A g e n t e x t e n d s Agent {
p r o t e c t e d v o i d s e t u p ( ) {</p>
        <p>G r e e t i n g s g r e e t i n g s = new G r e e t i n g s ( t h i s ) ;
p r i v a t e s t a t i c c l a s s G r e e t i n g s e x t e n d s</p>
        <p>O n e S h o t B e h a v i o u r {
p u b l i c G r e e t i n g s ( Agent a ) {</p>
        <p>s u p e r ( a ) ;
p u b l i c v o i d a c t i o n ( ) {</p>
        <p>System . o u t . p r i n t l n ( ” H e l l o
w o r l d ” ) ;
12
13
14
15
16
17
18
19
20 }
}
}
}</p>
        <p>Class HelloAgent defines an agent class and its static
inner class a behaviour class. This is formalized by setting
the pairs hLB, ϕi and ht, ψi using the information contained
in the source code. Then, the context is initialized to create
a reference between the identifier of classes and their relative
structures, as follows.</p>
        <p>ρA(HelloAgent) = hLB, ϕi
ρB(Greetings) = hone-shot, ψi
LB = [Greetings]
ϕ(setup) = {</p>
        <p>Greetings greetings =</p>
        <p>new Greetings(this);
addBehaviour(greetings);
}
}
ψ(action) = {</p>
        <p>System.out.println("Hello world");</p>
        <p>Suppose that the MAS starts at execution step 0, and
that the first event that occurs is the creation of agent hello,
belonging to the class HelloAgent
e0 = h0, Start(MAS)i</p>
        <p>MAS = h∅, ∅, [e0]iT
↓
e1 = h1, Create(hello, HelloAgent)i</p>
        <p>A0 = {hello}, LE = [e1, e0].</p>
        <p>Variable hello allows retrieving the information about the new
agent, and we can access its AID by function aid(hello) =
hello, and control its state thanks to the heap α.</p>
        <p>The event Create(hello, HelloAgent) activates the first
transition</p>
        <p>e1
ρA ` hε, αi −→ hhello.setup(){B}, αii
where {B} is the block of code obtained by ϕ(setup) and
αi = α[hHelloAgent, initiated, ω, [], [e1]i</p>
        <p>/hello].</p>
        <p>Suppose that no event occurs at execution step 2: the main
transition system enters in the subsystem →com, as follows.</p>
        <p>ρA `hello hGreetings greetings =
new Greetings(), σ, αi, βi</p>
        <p>↓ e3
haddBehaviour(greetings), σi, αi, βii</p>
        <p>↓ e4
hε, σii, αii, βii
where σii is obtained from a transition of the Java subsystem
→jstmt, called at every execution step, and
βi = β[hGreetings, hello, active, ω, ωi</p>
        <p>/greetings]
αii = αi[hHelloAgent, initiated,</p>
        <p>This transition is necessary to apply rule (19)</p>
        <p>e2
ρA `hello hB, σ, αi, βi −→com hε, σii, αii, βii
. . .
e2
ρA ` hhello.setup(){B}, σ, αi, βi −→ hε, σii, αiii, βii
where the state of the agent is eventually changed to active
αiii = αii[hHelloAgent, active,</p>
        <p>Then, because agent hello is active, the scheduler can choose
a behaviour to execute. The only behaviour in the list of
behaviours of the agent is greetings so Sb(hello) = greetings</p>
        <p>The block of code {B} of the action, accessed through the
function ψ, is executed in the →com subsystem, as follows.</p>
        <p>ρA, ρB `hello,greetings
hSystem.out.println("Hello world")σii, αiii, βii
where σiii is obtained by the Java transition system. According
to rule (20), at the end of the computation of its action, the
state of the behaviour is changed to done.</p>
        <p>. . .
ρA ` hgreetings.action(){B}, σii, αiii, βii
.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>In fact:</title>
      <p>βii = βi[hGreetings, hello, done, ω, ωi</p>
      <p>/greetings]
Let us now suppose that when T = 7 the event End(MAS)
occurs, thus producing the following transition
e7
ρA, ρB ` hε, σiii, αiii, βiii −→ hE, σiii, αiii, βiii
where E is a special command which denotes the termination
of the execution. The event occurred are summarized below.</p>
      <p>↓
e3 = h3, Create(hello, greetings, Greetings)i</p>
      <p>↓
e4 = h4, $i</p>
      <p>↓
e5 = h5, $i</p>
      <p>↓
e6 = h6, $i</p>
      <p>↓
e7 = h7, End(MAS)i
V.</p>
    </sec>
    <sec id="sec-5">
      <title>CONCLUSIONS</title>
      <p>This paper provides an outline of the major ingredients of
a semantics of JADE agents and multi-agent systems based
on transition systems. The vfie main entities that we consider,
namely the multi-agent system, agents and their classes,
behaviours and their classes, are discussed. The paper provides
an example of the transition system that can be obtained from
a very simple JADE agent. The complete description of the
semantics cannot fit the constraints of a workshop paper and
interested readers are directed to an upcoming journal paper
that also discusses the complete semantics of message passing.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bellifemine</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Greenwood</surname>
          </string-name>
          ,
          <article-title>Developing multi-agent systems with JADE</article-title>
          . Wiley Series in Agent Technology,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Gotta</surname>
          </string-name>
          , “
          <article-title>Large-scale network and service management with WANTS,” in Industrial Agents: Emerging Applications of Software Agents in Industry</article-title>
          . Elsevier,
          <year>2015</year>
          , pp.
          <fpage>231</fpage>
          -
          <lpage>246</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Gotta</surname>
          </string-name>
          ,
          <string-name>
            <surname>A“</surname>
          </string-name>
          <article-title>gents on the move: JADE for Android devices</article-title>
          ,” in Procs. Workshop From Objects to Agents,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Gotta</surname>
          </string-name>
          ,
          <article-title>A“gent-based social gaming with AMUSE,” in Procs</article-title>
          . 5th
          <string-name>
            <surname>Int'l Conf</surname>
          </string-name>
          .
          <source>Ambient Systems, Networks and Technologies (ANT</source>
          <year>2014</year>
          )
          <article-title>and</article-title>
          4th
          <string-name>
            <surname>Int'l Conf</surname>
          </string-name>
          .
          <source>Sustainable Energy Information Technology (SEIT</source>
          <year>2014</year>
          )
          <article-title>, ser</article-title>
          . Procedia Computer Science. Elsevier,
          <year>2014</year>
          , pp.
          <fpage>914</fpage>
          -
          <lpage>919</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          ,
          <article-title>A“gent-based approach to manage negotiation protocols in flexible CSCW systems</article-title>
          ,” in Procs. 4th
          <string-name>
            <surname>Int'l Conf</surname>
          </string-name>
          . Autonomous Agents,
          <year>2000</year>
          , pp.
          <fpage>267</fpage>
          -
          <lpage>268</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Somacher</surname>
          </string-name>
          ,
          <article-title>A“ collaborative platform for fixed and mobile networks,” Communications of the ACM</article-title>
          , vol.
          <volume>45</volume>
          , no.
          <issue>11</issue>
          , pp.
          <fpage>39</fpage>
          -
          <lpage>44</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “Ubiquitous information agents,
          <source>” Int'l J. Cooperative Information Systems</source>
          , vol.
          <volume>11</volume>
          , no.
          <issue>34</issue>
          , pp.
          <fpage>231</fpage>
          -
          <lpage>244</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Burg</surname>
          </string-name>
          , and G. Caire, “
          <article-title>Deploying FIPAcompliant systems on handheld devices,” IEEE Internet Computing</article-title>
          , vol.
          <volume>5</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>20</fpage>
          -
          <lpage>25</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>G. D.</given-names>
            <surname>Plotkin</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          “ Structural approach to Operational Semantics,
          <string-name>
            <given-names>” J.</given-names>
            <surname>Log</surname>
          </string-name>
          . Algebr. Program., vol.
          <volume>60</volume>
          -
          <issue>61</issue>
          , pp.
          <fpage>17</fpage>
          -
          <lpage>139</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>J.</given-names>
            <surname>Alves-Foss</surname>
          </string-name>
          ,
          <article-title>Formal syntax</article-title>
          and semantics of Java. Springer Science &amp; Business
          <string-name>
            <surname>Media</surname>
          </string-name>
          ,
          <year>1999</year>
          , no.
          <volume>1523</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Baldoni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Baroglio</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Capuzzimati</surname>
          </string-name>
          , “
          <article-title>Typing multi-agent systems via commitments</article-title>
          ,
          <source>” Post-Procs. 2nd Int'l Workshop on Engineering Multi-Agent Systems (EMAS</source>
          <year>2014</year>
          ),
          <source>Revised Selected and Invited Papers</source>
          , pp.
          <fpage>388</fpage>
          -
          <lpage>405</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>