<!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>Model driven design and implementation of activity-based applications in Hermes</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>XQuery SA</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Ezio Bartocci , Flavio Corradini , Emanuela Merelli , Leonardo Vito Dipartimento di Matematica e Informatica, Universita di Camerino</institution>
          ,
          <addr-line>Via Madonna delle Carceri, 62032 Camerino</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <fpage>25</fpage>
      <lpage>31</lpage>
      <abstract>
        <p> Hermes is an agent-based middleware structured as a component-based and 3-layered software architecture. Hermes provides an integrated, exible programming environment for design and execution of activity-based applications in distributed environments. By using work ow technology, it supports even a non expert user programmer in the model driven design and implementation of a domain speci c application. In this paper, after a description of Hermes software architecture, we provide a simple demo in biological domain and we show some real case studies in which Hermes has been validated.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>B2</p>
      <p>B1
C1
Pool of Workflow Executors (WEs) ilre Agent-Level Workflow
WE -A-WE -B-WE -C- opm WE -A- WE -B- WE
-CC
F
W</p>
    </sec>
    <sec id="sec-2">
      <title>I. INTRODUCTION</title>
      <p>
        Hermes [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] is an agent-based middleware, for design
and execution of activity-based applications in
distributed environments. It supports mobile computation as an
application implementation strategy. While middleware
for mobile computing has typically been developed to
support physical and logical mobility, Hermes provides an
integrated environment where application domain experts
can focus on designing activity work ow and ignore
the topological structure of the distributed environment.
Generating mobile agents from a work ow speci cation is
the responsibility of a context-aware compiler. Agents can
also developed directly by an expert user using directly
the Application Programming Interface (API) provided
by Hermes middleware. The Hermes middleware layer,
compilers, libraries, services and other developed tools
together result in a very general programming environment,
which has been validated in two quite disparate
application domains, one in industrial control [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] and the other
in bioinformatics [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. In the industrial control domain,
embedded systems with scarce computational resources
control product lines. Mobile agents are used to trace
products and support self-healing. In the bionformatics
domain, mobile agents are used to support data collection
and service discovery, and to simulate biological system
through autonomous components interactions. This paper
is organized as follows. Section II describes the Hermes
Software Architecture. Section III provides a simple demo
in biological domain. In Section IV, we present several
projects in which Hermes middleware has been adopted.
We conclude in Section V.
      </p>
    </sec>
    <sec id="sec-3">
      <title>II. HERMES SOFTWARE ARCHITECTURE Hermes is structured as a component-based, agentoriented system with a 3-layer software architecture shown in Figure 1: user layer, system layer and run-time</title>
      <p>Legend</p>
      <p>Activity
Agent</p>
      <p>Tool
Component</p>
      <p>Start Stop
Transition
fork
join</p>
      <p>UserAgents
WE -A- Response</p>
      <p>Error
SoapL</p>
      <p>SA
AIXO
SA
AIXO
ServiceAgents (SAs)</p>
      <p>Request</p>
      <p>SA
WE
-A</p>
      <p>WE
-B</p>
      <p>Email</p>
      <p>SA
Java Mail</p>
      <p>API
SOAPLAB</p>
      <p>WSIF</p>
      <p>SAXON
layer. At the user layer, it allows designers to specify
their application as a work ow of activities using the
graphical notation. At the system layer, it provides a
context-aware compiler to generate a pool of user mobile
agents from the work ow speci cation. At the run-time
layer, it supports the activation of a set of specialized
service agents, and it provides all necessary components
to support agent mobility and communication. The main
difference between the run-time layer and the system
layer is how agents function in each. ServiceAgents in the
run-time layer are localized to one platform to interface
with the local execution environment. UserAgents in the
system layer are work ow executors, created for a speci c
goal that, in theory, can be reached in a nite time by
interacting with other agents. Afterwards that agent dies.
Furthermore, for security UserAgents can access a local
resource only by interacting with ServiceAgent that is the
guard of the resource. It follows a detailed description
of the main components and functionalities of each layer.</p>
      <sec id="sec-3-1">
        <title>A. User Layer</title>
        <p>
          The user layer is based on work ow technology and
provides to users a set of programs for interacting with
the worklow management system. There are two main
families of programs: programs for specifying, managing
and reusing existing work ow speci cations, and
programs enabling administration and direct interaction with
the work ow management system. The work ow editor is
the program that supports the work ows speci cation by
composing activities in a graphical environment. Hermes
provides two editors, one is a plugin of the stand-alone
JaWE [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] editor and the other is WebWFlow, a
webbased editor. Both editors enable the speci cation of
work ows by using XML Process De nition Language
(XPDL) [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] a standard provided by the WfMC [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
Activities used in a work ow are con gured by
specifying input parameters and their effects are recognizable
as modi cation of state variables or modi cation on
the environment's status. Work ow editors enable the
composition of both primitive and complex activities.
A primitive activity is an activity that can be directly
executed. Users can specify primitive activity without
knowing the real implementation. A complex activity is
an activity that must be speci ed before it can be used;
as Figure 2 shows the speci cation of a complex activity
could be a work ow of complex and/or simple activities.
By using complex activities the speci cation of work ows
is simpli ed because they enhance both hierarchical
specication and reuse: we can use an already existing complex
        </p>
        <p>Fig. 3. Outline of work ow compilation process in Hermes
activity without caring of its speci cation. Users can
use complex activities and stored work ows to increase
productivity when specifying new work ows. Moreover,
large libraries of both domain speci c primitives and
complex activities can be loaded to specialize the editor
for a speci c application domain.</p>
      </sec>
      <sec id="sec-3-2">
        <title>B. System Layer</title>
        <p>
          System Layer, on the middle architecture, provides
the needed environment to map a user-level work ow
into a set of primitive activities. The execution of these
latter is coordinated by suitable model, they implement
the activities at user level and embed implementation
details abstracted from the execution environment. These
primitive activities are implemented by autonomous
software entities UserAgent able to react to the environment
changes where they are executed. A compiler generates
a pool of user mobile agents from the work ow
specication. Due to the lack of space, work ow compilation
process shown in Figure 3 will not discussed here and we
refer to [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] for further details.
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>C. Run-time Layer</title>
        <p>Run-time Layer, at the bottom of the architecture,
provides primitives and services essential for agent
mobility and resources access. The kernel is the
platform for mobile computing which provides primitives
for discovery, mobility, communication, and security. As
already described, the overall structure of the system
is very complex, it supports abstract speci cations that
are mapped into a complex distributed and coordinated</p>
        <p>
          ows of activities over a large-scale distributed system.
In order to master this complexity and to support the
reusability of existing artefact during the development of
a middleware system for a speci c application domain, we
designed Hermes kernel following a component-based [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]
approach. Figure 4 shows the main components placed in
the 3-Layered Architecture of Hermes Mobile Computing
Platform. It follows a detailed description of components
belonged to each layer.
        </p>
        <p>1) Core Layer: It is the lowest layer of the
architecture and contains base functions of the system, such as
the implementation of the inter-platform communication
protocols and agent management functions. This layer is
composed of four components: ID, SendReceive, Starter
and Security. The ID component, implements general
identity management functions by managing a repository
containing information about locally generated agents.
This repository is accessed whenever we want to know
the current position of an agent. The ID component is
also responsible for the creation of the identi ers to
be associated to new agents. These identi ers contain
information about birthplace, date and time of the agent's
creation. Agent localization is simpli ed by information
contained directly in the ID, such as birth place. In fact,
the birth place of an agent hosts information about agent's
current location. A second important feature of the Core is
the SendReceive component. This component implements
low level inter-platform communication by sending and
receiving messages and agents. By using traceability
services offered by the ID component, SendReceive can
easily update or retrieve the exact position of a speci c
user agent. The Starter component processes any request
for agent creation. This particular component, in fact, take
an inactive agent (just created or migrated), and checks it
for the absence of malicious or manipulated code. These
agents, before activation, are dynamically linked to all
basic services of the platform. During execution the agent
is isolated from the Core Layer by the BasicService layer.
The Security component, as mentioned above, checks for
the presence of malicious code or manipulations within
agent code.</p>
        <p>
          2) BasicService Layer: This layer has ve main
components: Discovery, Mobility, Genesis, Communication
and Security Politics. The Discovery component searches
and detects service agents. When a user agents wants to
communicate with a service, it will ask the Discovery
for the right identi er to use as the messages's receiver.
The service detection strategy can be implemented in
several ways; for example by a xed taxonomy or by an
UDDI [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ], commonly used in WebServices application
domain. The mobility component enables the movement
of code across platforms [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], it implements the interface
used by the Agent component and it accesses to
components of the Core layer to send, receive and load agents.
It is important to note that real communication between
different locations can be achieved only through Core's
SendReceive component, and then migration is
independent of the type of used transport. Mobility consists on
copy the agent i.e. its code and its current state and send
it to the destination platform where it will re-started in
a speci c point (weak mobility). The local agent is
destroyed. The Communication component makes possible
to send and receive agent-directed messages both in an
intra- and inter-platform context. Intra-platform messages
are messages sent between agents and services residing in
the same platform. Inter-platform messages are messages
sent to agents residing in different platforms (our system
does not allow for remote communication between user
agents and service agents). The agent requesting the
dispatch of a message does not need to know, effectively,
where the target agent is; in fact, the ID is suf cient to
post correctly a message. The Communication component
uses one of the Security Policy's interfaces to ascertain
whether the speci c UserAgent or ServiceAgent has the
right privileges for communication. If an Agent is not
authorized to use a service, the message is destroyed.
Before accessing resources and services, an agent must
authenticate itself. The identi cation is performed by
sending a login message to a speci c ServiceAgent, as
consequence the SecurityPolitics component jointly with
the Communication component intercept the message and
unlock the communication. The SecurityPolitics
component centralizes control of permissions, protects services
and resources from the user agents, and provides the
administrator with an easy way to manage all permissions.
        </p>
        <p>The last component of the service layer is the Genesis
component that enables agent creation. A special case
of agent creation is cloning that is performed when it
is necessary to create a copy of an existing agent. The
two copies differ only for the agent identi er.</p>
        <p>3) Agent Layer: The Agent Layer is the upper layer of
the mobile platform, the Agent Layer, contains all service
and user agents. This component has not any interface, but
it has only several dependencies upon the BasicService
Layer. The Agent component provides a general abstract
Agent class. UserAgent and UserAgent classes extend this
abstract class. ServiceAgent consists of agents enabling
access to local resources such data and tools. User agents
execute complex tasks and implement part of the logic
of the application. Java programmers can also develop
UserAgents by using the API provided by Hermes Mobile
Computing Library. Listing 1 shows a simple demo. A
MkDuckAgent called Della Duck creates three sons
Qui, Quo and Qua -lines 24 to 40- by cloning itself.
After clonation each new agent start its behaviour calling
afterCloning as initial method.</p>
        <p>System . o u t . p r i n t l n (  H e l l o World ! !  ) ;</p>
        <p>System . o u t . p r i n t l n (  I 'm D e l l a Duck ! ! !  ) ;
p u b l i c void i n i t ( ) f
r e c e p t i o n ( ) ; / / I e n a b l e t h e r e c e p t i o n</p>
        <p>/ / o f messages f o r t h e f a t h e r
By using move method -line 79- Qui, Quo amd Qua
migrate to a Place different from where they were born.
When they arrive in the new Place each one call the
afterMoving -line 85- method. Then they notify to their
mom their moving by using sendMessageToUserAgent
-line 97- and getMessageSynch -line 101- methods.
Figure 5 shows the nal results.</p>
      </sec>
      <sec id="sec-3-4">
        <title>D. Software requirements</title>
        <p>One of the main features of Hermes middleware is
its scalability. The present version, HermesV2, is a pure
Java application whose kernel requires about 120KB of
memory and interoperates across a systems ranging from
microprocessors to very power workstations. The Hermes
Mobile Computing Platform is available under LGPL on
Sourgeforge 1 Web Site.</p>
        <p>III. MODEL DRIVEN DESIGN AND IMPLEMENTATION</p>
        <p>OF ACTIVITY-BASED APPLICATIONS: A DEMO
In the present post-genomic era, biological
information sources are crammed with information gathered
1http://sourceforge.net/projects/hermes-project
from results of experiments performed in laboratories
around the world, i.e., sequence alignments, hybridization
data analysis or proteins interrelations. The amount of
available information is constantly increasing, its wide
distribution and the heterogeneity of the sources make
dif cult for bioscientists to manually collect and integrate
information. In this section we present a demo of Hermes
in the biological domain. In our example we want to nd
similar DNA sequences to a given one in several databases
using Basic Local Alignment Search Tool 2 (BLAST).
In particular, in this demo we want to compare, using
BLAST, the nucleotide sequence in FASTA format of a
given entry identi cator with the sequences contained in
the following databases:</p>
        <p>Protein Data Bank (PDB) 3
SWISS-PROT 4</p>
        <p>DDBJ 5</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>2http://www.ncbi.nlm.nih.gov/BLAST/ 3http://www.rcsb.org/pdb/ 4http://www.ebi.ac.uk/swissprot/ 5http://www.ddbj.nig.ac.jp/</title>
      <p>The access to these databases is guaranteed by a set of
Web Services. By using work ow editors a bioscientist
can specify the logic order, as Figure 6 shows, of a set
of domain-speci c activities without knowing the related
implementation details. Each rectangle is an activity and
each swimlane represents a UserAgent. As Figure 7-b
shows, user can exploit a set of previous de ned
domainspeci c activities by importing the proper library.</p>
      <sec id="sec-4-1">
        <title>BlastnDDBJ Agent, BlastXSWISS Agent and BlastX</title>
        <p>PDB Agent receive the nucleotide sequence from the
BlastDemo Agent and throught an interation with WSIF
ServiceAgent, they compare the received sequence with
sequences in each database using BLAST. If no
exceptions occur, BlastDemo Agent join partial results and
send the nal document to user by email throught an
interaction with the Email ServiceAgent. After saving
this speci cation, you can reload -Figure 7-a-, compile
-Figure 7-d- and execute -Figure 7-c and 7-e - the
work ow previous de ned.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>IV. SOME CASE STUDIES The Hermes middleware has been validated in several projects. It follows a brief case study description of Hermes application in some of them.</title>
      <sec id="sec-5-1">
        <title>A. SI.CO.M project</title>
        <p>In the SI.CO.M 6 project we have developed a
prototype based on Hermes middleware for the traceability of
ichthyic products. Generally the product is traced throught
the updating of databases distributed along the main sites
of the weaving factory. This approach is not ef cient
because trace a faulty batch of products requires to query
all databases, usually with an heterogeneous schema, of
all sites interested in the production process. The proposed
6http://sicom.cs.unicam.it/
solution with the prototype named TraceFish, exploiting
the agent-based technology, allows to move automatically
the information about a single batch from a site to another
of the weaving factory overcoming the limits of the
classical client/server approach.</p>
      </sec>
      <sec id="sec-5-2">
        <title>B. O2I Project</title>
        <p>The Oncology over Internet (O2I) 7 project is aimed to
develop a framework to support searching, retrieving and
ltering information from Internet for oncology research
and clinics. Hermes in the context of O2I project is called
Bioagent 8, it supports the the design and execution of
user work ows involving access to literature, mutation
and cell lines databases.</p>
      </sec>
      <sec id="sec-5-3">
        <title>C. LITBIO Project</title>
        <p>
          The main objective of the Laboratory of
Interdisciplinary Technologies in Bioinformatics (LITBIO) 9 is to
create infrastructure capable of supporting challenging
international research and to develop new bioinformatics
analysis strategies apply to biomedical and
biotechnological data. To satisfy the most bioinformaticians needs
we have proposed a multilayer architecture [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] based on
Hermes middleware. At the user layer, it is intended to
support in-silico experiments, resource discovery and
biological systems simulation. The pivot of the architecture
is a component called Resourceome [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], which keeps an
alive index of resources in the bioinformatics domain
using a speci c ontology of resource information. A
Work ow Management System, called BioWMS [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ],
provides a web-based interface to de ne in-silico experiments
as work ows of complex and primitives activities. High
level concepts concerning activities and data could be
indexed in the Resourceome, that also dynamically
supports work ow enactment, providing the related resources
available at runtime. ORION [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ], a multiagent system,
is a proposed framework for modelling and engineering
complex systems. The agent-oriented approach allows
to describe the behavior of the individual components
and the rules governing their interactions. The agents
also provide, as middleware, the necessary exibility
to support data and distributed applications. A GRID
infrastructure allows a transparent access to the high
performance computing resources required, for example
in the biological systems simulation.
        </p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>ACKNOWLEDGMENT</title>
      <p>This work is supported by the Investment Funds for
Basic Research (MIUR-FIRB) project Laboratory of
Interdisciplinary Technologies in Bioinformatics (LITBIO).</p>
    </sec>
    <sec id="sec-7">
      <title>V. CONCLUSION</title>
      <p>As the demo presented shows, Hermes middleware
provides an integrated, exible programming environment,
whose user can easily con gure for its application
domain. Hermes is structured as a component-based,
agentoriented, 3-layered software architecture. It can con
gured for speci c application domains by adding
domainspeci c component libraries. The user can specify, modify
and execute his work ow in a very simple way. Work ow
is speci ed abstractly in a graphical notation and mapped
to a set of autonomous computational units (UserAgents)
interacting through a communication medium. The
mapping is achieved by compiler that is aware not only of
contents of a library of implemented user activities but
also the software and hardware environment to executing
them. By using work ow as suitable technology to hide
distribution and on mobile agents as exible
implementation strategy of work ow in a distributed environment,
Hermes allows even to a not expert programmer a model
driven design and implementation of a domain speci c
activity-based application.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Angeletti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Baldoncini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Cannata</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Corradini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Culmone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Forcato</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Mattioni</surname>
          </string-name>
          , E. Merelli, and
          <string-name>
            <given-names>R.</given-names>
            <surname>Piergallini</surname>
          </string-name>
          .
          <article-title>Orion: A spatial multi agent system framework for computational cellular dynamics of metabolic pathways</article-title>
          .
          <source>In Proceedings of Bioinformatics ITalian Society (BITS) Meeting</source>
          , Bolgna, Italy,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>E.</given-names>
            <surname>Bartocci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Cacciagrano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Cannata</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Corradini</surname>
          </string-name>
          , E. Merelli, and
          <string-name>
            <given-names>L.</given-names>
            <surname>Milanesi</surname>
          </string-name>
          .
          <article-title>A GRID-based multilayer architecture for bioinformatics</article-title>
          .
          <source>In Proceedings of NETTAB'06 Network Tools and Applications in Biology, Santa Margherita di Pula</source>
          , Cagliari, Italy,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>E.</given-names>
            <surname>Bartocci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Corradini</surname>
          </string-name>
          , and
          <string-name>
            <surname>E. Merelli.</surname>
          </string-name>
          <article-title>BioWMS: A web based work ow management system for bioinformatics</article-title>
          .
          <source>In Proceedings of Bioinformatics ITalian Society (BITS) Meeting</source>
          , Bologna, Italy,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>E.</given-names>
            <surname>Bartocci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Corradini</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E.</given-names>
            <surname>Merelli</surname>
          </string-name>
          .
          <article-title>Building a multiagent system from a user work ow speci cation</article-title>
          .
          <source>In Proceedings of Workshop From</source>
          Objects to Agents - WOA,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>T.</given-names>
            <surname>Bellwood</surname>
          </string-name>
          , L. Cle´ment,
          <string-name>
            <given-names>D.</given-names>
            <surname>Ehnebuske</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Hately</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Hondo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y. L.</given-names>
            <surname>Husband</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Januszewski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>McKee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Munter</surname>
          </string-name>
          , and C. von Riegen.
          <source>UDDI version 3</source>
          .0. Published speci cation,
          <source>Oasis</source>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>D.</given-names>
            <surname>Bonura</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Corradini</surname>
          </string-name>
          , E. Merelli, and
          <string-name>
            <given-names>G.</given-names>
            <surname>Romiti.</surname>
          </string-name>
          <article-title>Farmas: a MAS for extended quality work ow</article-title>
          .
          <source>In 2nd IEEE International Workshop on Theory and Practice of Open Computational Systems</source>
          . IEEE Computer Society Press,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Bonura</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Mariani</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E.</given-names>
            <surname>Merelli</surname>
          </string-name>
          .
          <article-title>Designing modular agent systems</article-title>
          .
          <source>In Proceedings of NET</source>
          .
          <string-name>
            <surname>Object</surname>
            <given-names>DAYS</given-names>
          </string-name>
          , Erfurt, pages
          <volume>245</volume>
          
          <fpage>263</fpage>
          ,
          <year>September 2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>N.</given-names>
            <surname>Cannata</surname>
          </string-name>
          , E. Merelli, and
          <string-name>
            <given-names>R. B.</given-names>
            <surname>Altman</surname>
          </string-name>
          .
          <article-title>Time to organize the bioinformatics resourceome</article-title>
          .
          <source>PLoS Comput Biol</source>
          .,
          <volume>1</volume>
          (
          <issue>7</issue>
          ):e76,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>F.</given-names>
            <surname>Corradini</surname>
          </string-name>
          and
          <string-name>
            <given-names>E.</given-names>
            <surname>Merelli</surname>
          </string-name>
          .
          <article-title>Hermes: agent-based middleware for mobile computing</article-title>
          .
          <source>In Mobile Computing</source>
          , volume
          <volume>3465</volume>
          , pages
          <fpage>234</fpage>
          
          <fpage>270</fpage>
          .
          <string-name>
            <surname>LNCS</surname>
          </string-name>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Enhydra</surname>
          </string-name>
          . Jawe. http://jawe.enhydra.org/,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Fuggetta</surname>
          </string-name>
          , G. Picco, and
          <string-name>
            <given-names>G.</given-names>
            <surname>Vigna.</surname>
          </string-name>
          <article-title>Understanding code mobility</article-title>
          .
          <source>IEEE Transaction of Software Engineering</source>
          ,
          <volume>24</volume>
          (
          <issue>5</issue>
          ):
          <volume>352</volume>
          
          <fpage>361</fpage>
          , May
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>D.</given-names>
            <surname>Hollingsworth</surname>
          </string-name>
          .
          <source>The Work ow Reference Model</source>
          ,
          <year>January 1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>E.</given-names>
            <surname>Merelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Culmone</surname>
          </string-name>
          , and
          <string-name>
            <given-names>L.</given-names>
            <surname>Mariani</surname>
          </string-name>
          .
          <article-title>Bioagent: a mobile agent system for bioscientists</article-title>
          .
          <source>In NETTAB Workshop on Agents Nd Bioinformatics</source>
          , Bologna,
          <year>July 2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>WfMC</surname>
          </string-name>
          .
          <article-title>Xml process de nition language (xpdl)</article-title>
          .
          <source>WfMC standard, W3C</source>
          ,
          <year>October 2005</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>