<!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>Distributed P/T Net Simulation Prototypes Based on Event Streaming⋆</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Laif-Oke Clasen</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sophie Bartelt</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yannik Stahl</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Daniel Moldt</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Hamburg, Department Informatik</institution>
          ,
          <addr-line>Vogt-Kölln-Str. 30, 22523 Hamburg</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <fpage>192</fpage>
      <lpage>216</lpage>
      <abstract>
        <p>Efective and goal oriented development of complex systems relies heavily on models, which serve as essential tools. Simulation and verification of these models enable in-depth analysis of system components and validation of complex system characteristics. This capability significantly influences the advancement of system development processes. Petri nets represent a technique for modeling such complex systems. Traditionally, simulation and verification of complex systems occur on a single computing platform, which inherently imposes limitations of computation power. Recognizing the potential benefits of distributed computing, this paper explores the concept of distributed simulation of P/T nets. Methodologically, prototypes are employed and rigorously evaluated within this paper. The contribution of this paper is a prototypical implementation of a compiler for simulating Distributed P/T Nets for the Petrinetzsimulator and -editor Renew. Furthermore, it explains the design of the distributed execution environment and demonstrates the feasibility of distributed simulation through a classical example in computer science. This contribution represents a further step towards the distributed simulation of Petri nets. However, this is an exploratory prototype of a compiler, whereby the associated formalism does not yet exist. This realization distinguishes itself from other implementations through central unification and event-based communication.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;P/T-nets</kwd>
        <kwd>Synchronous Channels</kwd>
        <kwd>P/T-nets with Synchronous Channels</kwd>
        <kwd>Event Streaming</kwd>
        <kwd>Distributed Simulation</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>The modeling and analysis of complex systems is an important part of modern computer science. A
widely used formal modeling technique in this area are Petri nets, whose strengths lie in their flexibility,
expressive power, concurrency and formal definition. The latter in particular ensures their ability to
enable both the simulation and verification of real-world systems. This makes Petri nets a valuable tool
in computer science and systems theory.</p>
      <p>
        Despite their many possible applications and advantages, the simulation and verification of Petri
nets often reach their limits. A reason for this is that most formalisms are designed to be executed
locally on a computer. To circumvent this limitation, simulation and verification can be implemented
in a distributed way. Distribution may ofer better performance [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] by using multiple processes for
one simulation that act asynchronously in parallel [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. However, this requires a new formalism that
addresses the particular challenges of distributed simulation and verification.
      </p>
      <p>
        Explicit communication between Petri nets based on transitions has been explored and introduced in
the form of synchronous channels [
        <xref ref-type="bibr" rid="ref3 ref4">3, 4</xref>
        ], but they are mostly used in high-level Petri net formalisms
[
        <xref ref-type="bibr" rid="ref4 ref5 ref6">4, 5, 6</xref>
        ]. However, Place/Transition (P/T) nets in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] were also equipped with synchronous channels.
Compared to high-level Petri nets, such as colored Petri nets [
        <xref ref-type="bibr" rid="ref8 ref9">8, 9</xref>
        ], these are a simple variant of Petri
nets.
      </p>
      <p>This contribution focusses on the distributed simulation of P/T nets with the event-streaming platform
Kafka. The synchronous channels within this contribution are used as the starting point by distributing
the synchronous channels themselves. Thus, the central question of this paper concentrates on the
distributed execution of synchronous channels in the context of P/T nets. This paper provides a
prototypical implementation of a compiler for the simulation of Distributed P/T Nets, which are not
formalised now. This Formalisation is part of ongoing work.</p>
      <p>To achieve this goal, the methodology of prototyping is applied. This practical approach allows
the implementation of theoretical considerations directly in functioning software and thus evaluate
the feasibility and eficiency of the proposed formalism. By combining theoretical foundation and
practical application, this contribution represents an important step in the research on the simulation
of distributed Petri nets.</p>
      <p>For this purpose, the basics of place/transition nets, synchronous channels, place/transition nets
with synchronous channels, workflow transitions, distributed simulations, Renew, Kafka and Agent
interaction protocol diagrams (Aips) are covered in the section 2. This is followed by the objectives
in the section 3. There is also a description of the structural elements of the distributed system in
section 4. Three prototypes follow, building upon the previous sections. The first prototype in section 5
implements a first initially marked circuit of the distributed synchronous channel. An update of the
globally known marking is only considered in the second prototype in section 6. The last prototype in
section 7 deals with several up- and downlinks of a distributed synchronous channel, as well as several
distributed synchronous channels and several net instances. Finally, the results are discussed (section 8),
delimited in the same way as related work (section 9)) and a conclusion is drawn (section 10).</p>
    </sec>
    <sec id="sec-2">
      <title>2. Foundations</title>
      <sec id="sec-2-1">
        <title>2.1. Place/Transition Nets</title>
        <p>Definition 1.
where
•  is a finite set of places,
•  is a finite set of transitions,
•  ⊆ ( ×  ) ∪ ( ×  ) is its flow relation,
•  :  → N0 are its arc weights and
• 0 :  → N0 is its initial marking.</p>
        <p>
          Place/Transition (P/T) nets originate from Carl Adam Petri. [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] This kind of nets is sometimes also
referred as Petri nets. [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]
        </p>
        <p>
          Based on [
          <xref ref-type="bibr" rid="ref12 ref13">12, 13</xref>
          ] a Place-/Transition Net, short P/T-Net is a 5-Tuple  = (, , , , 0)
To describe the state of the system, tokens are used that are situated on places. This state is described
by marking . The number of tokens situated on one place  is defined as (). The pre-set of a net
element  ∈  ∪  is according to [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]:
        </p>
        <p>∙  =  ∈  ∪  : (, ) ∈  .</p>
        <p>Symmetrically to the pre-set every transition has a post-set that is defined by the flow relation.</p>
        <p>
          A transition t is declared enabled and can fire with a marking  if all places in the pre-set of  contain
at least the amount of tokens declared by the arc weight of the arcs that connect the two net elements.
This is defined by [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] in the following way:
        </p>
        <p>∀ ∈ ∙  : () ≥  (, ).</p>
        <p>If a transition  fires, it removes the tokens that are necessary for the firing of  from its places in the
pre-set. After that it generates tokens to the places in the post-set. The amount of tokens generated by
a transition is defined by the arc weights that can be found on the arcs connecting the two elements.
The firing of a transition 0 changes its marking, thus the state of the net.</p>
        <p>In Figure 1 a P/T net with two transitions and two places is displayed. The transition on the right
consumes one token and produces two, while the transition on the left does the opposite. The place on
the left holds one token, thus enabling the transition on the right.</p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Synchronous Channels</title>
        <p>A synchronous channel in the context of Petri nets ensures that Petri nets can communicate with each
other by implementing rendezvous synchronization. Transitions are inscribed with signatures so that
they can synchronize if they have the appropriate signature. These labeled transitions with matching
signatures can only fire together.</p>
        <p>
          The signature of a synchronous channel, which is used here, consists of type, identifier and parameter.
There are two diferent types, the downlink and uplink, which can be denoted as !? and ?! in [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] or
as uplinks and downlinks in [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. Downlinks are the active or calling part and uplinks are the passive
or called part. The identifier usually describes the name of the channel or a relation. Whereas the
parameters are used to exchange information between the synchronizing transitions.
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>2.3. Place/Transition Nets with synchronous Channels</title>
        <p>
          One approach of Place/Transition Net with synchronous Channels (PTC net) is proposed by [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] and is
formally defined as followed.
        </p>
        <p>Definition 2. A Place-/Transition net with synchronous channels, short PTC-net is described by a 8-Tuple
 = (, , , , 0,  , ℎ, ) where
•  is a finite set of places,
•  is a finite set of transitions,
•  ⊆ ( ×  ) ∪ ( ×  ) is its flow relation,
•  :  → N0 are its arc weights and
• 0 :  → N0 is its initial marking,
•   is a set of channel variables,
• ℎ is a set of channels and
•  :  → (, ℎ, ) is a channel expression function containing
–  ∈ ,  a type,
– ℎ ∈ ℎ a channel and
–  a tuple of channel variables and/or positive integer that may be empty</p>
        <p>The channel expression of 1 and 2 can either have no parameter, one or two parameters, that can as
well be integers. If a channel expression contains more than one parameter, the order of these variables
gets important for the binding search between the transitions. A parameter in the ’th place of the
Tuple  () of transition 1 will bind with the ’th element of the Tuple of transition 2.</p>
        <p>
          If there is a variable on an arc connected with a transition belonging to a distributed synchronous
channel it needs to appear in a second place. This variable must be in the tuple defined by the channel
expression function. A formal definition is given by [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]:
        </p>
        <p>∀ ∈  : ∀ ∈ {(, )| ∈  } ∪ {(, )| ∈  } : ( ∈  ⇒  ∈ )</p>
        <sec id="sec-2-3-1">
          <title>Definition 3.</title>
          <p>
            Two Transitions 1 and 2 match, according to [
            <xref ref-type="bibr" rid="ref7">7</xref>
            ] meaning they can be synchronized if
• one transition is an uplink and the other one is a downlink of the same channel,
• the number of channel expression parameters are the same and
• any parameter that is a variable will be connected with the appropriate parameter that is an integer
from the channel expression of the transition that is to be synchronized.
          </p>
        </sec>
        <sec id="sec-2-3-2">
          <title>Definition 4.</title>
          <p>
            As stated by [
            <xref ref-type="bibr" rid="ref7">7</xref>
            ] a downlink 1 is enabled with a marking  if
• There exists an uplink 2 with the same channel name and
• the marking of the cumulated pre-set is able to satisfy the needed tokens defined by *(, 1, 2)
and
• 1 and 2 match.
          </p>
          <p>The definition for the uplink being enabled follows trivially by replacing downlink with uplink and
vice versa.</p>
          <p>
            Definition 5. The number of tokens on each place  needed for firing transitions 1 and 2 synchronously
is described in [
            <xref ref-type="bibr" rid="ref7">7</xref>
            ] by
⎧ (, 1) + (, 2) (, 1) ∈ N ∧ (, 2) ∈ N
⎪
⎪
⎪
⎪
⎪⎪⎪ () + (, 1)
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
*(, 1, 2) := ⎨  () + (, 2)
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎪⎪ () +  ()
⎪
⎪
⎪
⎪
⎪
⎪
⎩
(, 1) ∈   ∧ (, 2) ∈ N
∧ ∈ N : () = (, 1)
(, 1) ∈ N ∧ (, 2) ∈  
∧ ∈ N :  () = (, 2)
(, 1) ∈   ∧ (, 2) ∈  
∧ ∈ N :  () = (, 2)
∧ ∈ N : () = (, 1)
          </p>
          <p>Analogously the amount of produced tokens by a synchronized transition on each place  is described
by
⎧ (1, ) + (2, ) (1, ) ∈ N ∧ (2, ) ∈ N
⎪
⎪
⎪
⎪
⎪⎪⎪ () + (1, )
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
*(1, 2, ) := ⎨  () + (2, )
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎪⎪ () +  ()
⎪
⎪
⎪
⎪
⎪
⎪
⎩
(1, ) ∈   ∧ (2, ) ∈ N
∧ ∈ N : () = (1, )
(1, ) ∈ N ∧ (2, ) ∈  
∧ ∈ N :  () = (2, )
(1, ) ∈   ∧ (2, ) ∈  
∧ ∈ N :  () = (2, )
∧ ∈ N : () = (1, )</p>
          <p>In Figure 2 a PTC net with one synchronous channel is presented. Thus the transition with the
inscription this:s() is forced to fire with the transition having the inscription :s(). In this relationship the
transition on the left is the downlink and the transition on the right is the uplink.</p>
        </sec>
      </sec>
      <sec id="sec-2-4">
        <title>2.4. Workflow Transitions</title>
        <p>
          As referenced in [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ], a workflow or process resembles a series of steps designed to achieve a company’s
objectives. It begins with at least one event and culminates in generating one or more specific outcomes.
Workflows can be modelled with Petri nets. [
          <xref ref-type="bibr" rid="ref15 ref16 ref17">15, 16, 17</xref>
          ] Crucial for the modeling of a workflow is the
possibility to undo operations as many workflow languages allow this kind of action. [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]
        </p>
        <p>
          To allow the reset of actions in workflows resettable transitions are used in [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]. These transitions
allow a reset by substituting one transition by multiple transitions that handle the reset to default of
the marking.
        </p>
        <p>
          In Figure 3 transition  1 is made resettable by its substitution in transition  1.1 that requests the
ifring, transition  1.2 that may reset the firing and transition  1.3 that may complete the firing. This
concept originates from [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ].
        </p>
      </sec>
      <sec id="sec-2-5">
        <title>2.5. Distributed Simulation</title>
        <p>
          The simulation of systems is a tool used to analyze such systems. A simulation is discrete if the state of
the simulation changes at discrete points in time [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. A discrete event simulation is one where state
changes are triggered by specific events [
          <xref ref-type="bibr" rid="ref18 ref2">18, 2</xref>
          ].
        </p>
        <p>
          Distributed simulations are simulations that are executed with the help of multiple processes, which
run asynchronously and in parallel. Additionally, these processes mostly communicate via messages
[
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. The components of a distributed simulation are typically connected by networks [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ].
        </p>
        <p>
          There are multiple reasons to use distributed simulation. Firstly, it is possible to use information
for one simulation that is geographically distributed [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. Secondly, it is possible to integrate multiple
diferent simulators, each with diferent foundations [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. Lastly, distributed simulation may ofer better
performance for the simulation [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
2.6. Renew
Renew1 [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ] is an extensible modeling, execution and analysis environment for Petri nets. For this
purpose, the open source tool Renew ofers various formalisms and modeling techniques [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ]. Renew
itself is written in the Java programming language. The architecture is based on a plugin system [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ],
which has been modularized with the current version based on the Java Platform Module System.
        </p>
        <p>
          The best-known Petri net formalism in Renew is the reference net formalism according to Kummer [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ].
This formalism combines the concepts of nets in nets according to Valk [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] with reference semantics
and the expressive power of object-oriented programming in the form of Java as a labeling language. In
addition to this, Renew ofers a variety of formalisms, including a P/T net formalism (see section 2.1)
and P/T nets with synchronous channels (see section 2.3).
2.7. Kafka
Apache Kafka is a platform developed for event streaming [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. Event streaming is a method for
processing, transferring and storing data. Great scalability, low latency, high availability as well as high
data throughput count to its main advantages [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. Contrary to conventional message queues [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ],
messages do not get deleted after being received in Kafka.
        </p>
        <p>Kafka is usually running in form of a cluster of server nodes, the event brokers. These brokers are the
central contact point for any communication running through Kafka. They receive and hold messages
so that they can be later received.</p>
        <p>
          These messages are called events. They contain a key value tuple which can be of diferent formats
like Json [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ].
        </p>
        <p>Events are always assigned to a topic, which are a form of organizing and storing events. A topic
can be divided in partitions to allow spreading out the topic over multiple brokers. Events are then
distributed evenly among the partitions while still ensuring that events carrying the same key will
always land in the same partition.</p>
        <p>A producer can publish events on these topics. Consumers who are subscribed to the topic the event
was produced on can then receive those messaged by requesting them at the broker.</p>
      </sec>
      <sec id="sec-2-6">
        <title>2.8. Agent Interaction Protocol Diagrams</title>
        <p>
          Agent Interaction Protocol Diagrams (Aips), allow to the control flow by showing the interactions
between parts of the systems or diferent participants for specific use cases. [
          <xref ref-type="bibr" rid="ref27 ref28">27, 28</xref>
          ] Agent Interaction
Protocol Diagrams are defined by the Foundation for Intelligent Physical Agents ( Fipa). [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ] As agents
are predestined to be used in a distributed context [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ] they evoke concurrency and parallelism.
        </p>
        <p>
          Aips extend the sequence diagrams of UML [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ] by additional alternatives and concurrency. [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ]
Agent Interaction Protocol Diagrams can be splited at various points vertically and horizontally and
result in diferent system behavior models. It is possible to
• split with AND to get parallelism and
• to split with an inclusive OR, gaining parallelism as well or
• to split with an exclusive OR, gaining concurrency.
1Reference Net Workshop can be installed directly from the website http://renew.de.
Splitting may need a merge or synchronization in the following execution. Figure 4 represents an
abstracts Aip. Further examples of Aips are visualized, for instance, in Figure 6 and Figure 7.
        </p>
        <p>
          Furthermore, a formal semantics for Aips based on Petri nets, was proposed in [
          <xref ref-type="bibr" rid="ref33">33</xref>
          ], by which an
operational semantics based on partial order semantics is given. The partial order semantics support
the design of complex distributed systems in a natural way.
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Objectives</title>
      <p>
        The main goal of the prototypes for Distributed P/T Nets is to provide modeling extensions to enable
larger models and faster simulation and verification through the distribution. The models are based
on the P/T nets with synchronous channels [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], whereby synchronization has now been implemented
using event-based communication. A formalization of the models can be found at [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>The results of this paper serve as a basis for further advanced concepts. These include the use of
Kubernetes and its infrastructure as an execution environment. In addition, Renew will be expanded in
the long term to include another important conceptual and technical option.</p>
      <p>For the realization of the protoypes, synchronous channels should be able to be executed in a
distributed manner. The following sub-goals can be derived from this:
• There should be a prototype implementation.
• Since this is a distributed execution across physical boundaries, a distributed execution
environment is required.</p>
      <p>• Furthermore, a classical example from computer science should be used as a proof of concept.</p>
      <p>One of these sub-goals is to provide a prototype for Distributed P/T Nets. Another sub-goal is the
provision of an execution environment, caused by the new distributed synchronous channels that are
introduced into the formalism. These distributed synchronous channels should enable communication
between P/T nets on diferent computers. Therefore a distributed execution environment with at
least four computers is required: downlink simulator, uplink simulator, synchronization service and
communication medium. The last sub-goal of this article addresses the proof of concept. Here a classic
example from computer science should be used.</p>
      <p>An evaluation against other methods and the application of the results to more complex use cases
are planned for further work. The focus here is on investigating the feasibility in principle.
Related Concept
Distributed P/T Net
DSC
Event Streaming
Workflow Transitions
Artificial Transition
Synchronization Service</p>
      <p>Brief Explanation
A distributed P/T net with synchronous and distributed synchronous channels</p>
      <p>A distributed synchronous channel</p>
      <p>Method to process, transfer and store data
Realization concept for distributed synchronous channels</p>
      <p>A transition that is formed in the Synchronizations Service</p>
      <p>Performs a centralized unification on the basis of aritificial transitions</p>
    </sec>
    <sec id="sec-4">
      <title>4. Distributed System</title>
      <p>This section describes the distributed system resulting from the formalism presented in this paper.
The distributed system consists of at least four computers, with at least two computers each
running a simulator, one computer running the communication medium and one computer running the
synchronization service. The computers are connected via a network.</p>
      <p>The core idea is that based on the events of the distributed channel, an artificial net is created in
the synchronization service when a possible unification shall be tested. This net contains an artificial
transition representing one up- and downlink. For both transitions the pre-set is built exactly as
transmitted in the respective events.</p>
      <p>The synchronization service then checks whether the distributed synchronous channel can fire and
informs the up- and downlink. The exact process within the respective prototype is specified in the
form of a protocol, which is modeled as Aip (section 2.8).</p>
      <p>Each simulator contains a Distributed P/T Net, whereby at least one of the nets contains a uplink
and at least one contains a downlink. There can also be several downlinks and/or uplinks in one network.
A corresponding visualization can be found in Figure 5. Additionally, an overview of the associated
concepts can be found in table 1.</p>
      <p>physical
machine
communication medium
physical
machine
synchronization service
network</p>
      <p>A distributed synchronous channel (DSC) consists of at least one up- and downlink and is the main
concept of the prototypes presented here. Here, DSCs are given a new inscription syntax by denoting
a downlink with “DD” and an uplink with “DU”. This is intended to ensure diferentiation from local
synchronous channels. An example of a DSC is visualized in Figure 9. Distributed synchronous channels
or synchronous channels can be understood as interfaces of (distributed) P/T nets.</p>
      <p>With distributed synchronous channels (DSCs), the distribution of the whole simulated net follows.
These DSCs can be understood as interfaces of the sub nets within the diferent simulators. Therefore
its marking becomes obscur. In the following sections we refer to a local marking as the marking
that exists in one net of one simulator. In contrast, we refer to the global marking as the union of all
markings of all nets that belong to one simulation. An overview of the associated concepts can be found
in the table 1.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Firing of one Distributed Synchronous Channel</title>
      <sec id="sec-5-1">
        <title>5.1. Requirements</title>
        <p>This is the first prototype describes a variant of Distributed P/T Nets. According to the prototyping
methodology used here, a first simple version is realized, which is also the basis for the requirements. To
initate a simulation of a Distributed P/T Net we need at least two simulators, where each simulator
is responsible for a part of the whole Distributed P/T Net. For the first prototype we want exactly
two simulators for the sake of simplicity.</p>
        <p>Req. 1 There should be exactly two simulators.</p>
        <p>The communication between these net parts is established through synchonrous channels, more
specifically DSCs. To enable a communication connection between these two simulators we need at
least one DSC. For the sake of simplicity we assume exactly one DSC. Whereby one of the simulators
contains a downlink and the other simulator contains an uplink. In a P/T net, synchronous channels
can have several down- and uplinks. Nevertheless, we further restrict the DSCs by only allowing a 1:1
mapping from downlink to uplink for this prototype.</p>
        <p>Req. 2 There should be exactly one DSC.</p>
        <p>Req. 3 The DSC should consist of exactly one downlink and one uplink.</p>
        <p>Therefore the synchronization service handles the distributed unification of variables and the
orchestration of a firing. The synchronization service is situated according to Figure 8 outside of the two
simulators. For this first prototype, we establish that the synchronization service exists exactly once.
This means that the synchronization service in this prototype is not scalable.</p>
        <p>Req. 4 There should be exactly one instance of the synchronization service.</p>
        <p>Besides the simulators and the synchronization service we need as well a communication medium
and the possibility to synchronize the downlink and uplink belonging to a DSC. The event broker
Kafka (section 2.7) is used as the communication medium and the network address is well-known to
the simulators and the synchronization service. Therefore, all components communicate via a Kafka
topic, which must be known to everyone. Following the prototyping methodology, we initially only
have one instance of the communication medium. The main disadvantage of this is that the events are
not highly available. This means that the previous events are no longer available if the communication
medium fails.</p>
        <p>Req. 5 There should be exactly one instance of the communication medium.</p>
        <p>Req. 6 The network address of the communication medium should be well-known to the simulators and to
the synchonization service.</p>
        <p>Req. 7 The topic used for the communication between the participants should be well-known.</p>
        <p>For the transitions of a DSC to fire in this prototype, they must be activated by the initial marking.
The reason for this is that this prototype only realizes the firing. Therefore, changes to the pre-set
of a DSC would not be recognized by this prototype. For these changes to be recognized, an update
mechanism is required, which is addressed in the next prototype (see section 6).</p>
        <p>Req. 8 The initial marking enables the transitions of the distributed channel at least once.</p>
        <p>Req. 9 The transitions of the DSC should be able to fire at least once.</p>
        <p>To satisfy the objectives 3, a classic example of computer science is chosen as a proof of concept. For
the sake of simplicity and to match the prototype, we assume that this proof of concept is of minimal
scale, therefore there should only be one synchronous channel.</p>
        <p>Req. 10 A classic example of computer science should be chosen as a proof of concept.</p>
        <p>Req. 11 There should be exactly one DSC in the proof of concept.</p>
      </sec>
      <sec id="sec-5-2">
        <title>5.2. Design</title>
        <p>
          5.2.1. Distributed Simulation
The simulation of the first prototype consists out of three phases, that are the initialization, the actual
simulation and the end of the simulation. This structure is common for discrete event simulation. [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]
        </p>
        <p>The first phase includes the setup of all components and the registration of the simulators at the
synchronization service. The second phase is defined by the simulation of the execution of the DSC,
while the thrid phase will deregister the simulators from the synchronization service and shut down
the simulation.</p>
        <p>The simulation is a distributed discrete event simulation (see section 2.5) as the state of the simulation
changes whenever a common transition in a net fires or events are sent at a discrete point od time.
Additionally, the simulation is distributed as the nets lay in diferent simulators that each stand for an
own logical process of the simulation.
5.2.2. Distributed Synchronous Channel
The DSC is the main concept of the prototypes presented here. According to the requirement Req. 2
and Req. 3, this prototype consists of exactly one DSC featuring exactly one downlink as well as its
counterpart the uplink. Other mappings are not possible in this prototype.
5.2.3. Distributed Components
In this section, we look at the design of the specific components. The requirements Req. 1, Req. 4 and
Req. 5 state that there should be a communication medium, two simulators and a synchronization
service. Each of these are independent components that can implemented with diferent technologies.</p>
        <p>The communication medium is realized by using Apache Kafka (see section 2.7). This is due to the key
benefits of Kafka, as it is a widely used and supported open-source technology designed for distribution.
It ofers a very high scalability as well as options to ensure high availability. It is also easy to setup and
highly configureable. Therefore it suits the requirements of this implementation very well. In addition,
there is the option for Kafka to be made highly available. This ensures that no messages are lost, which
is essential for maintaining a consistent state in the simulation.</p>
        <p>In contrast, the simulators and the synchronization service are implemented as plugins in Renew (see
section 2.6), which is easily possible thanks to its modular plugin architecture. This allows us to build
on the existing editor and simulator, which is one of the reasons why its implementation in Renew
is a natural choice. The decision to implement this feature with multiple plugins helps to capsulate
the feature from other features. This ensures, for example, that you can draw without simulating and
simulate without drawing.</p>
        <p>No special network implementation is selected for the first prototype. However, the physical machines
hosting the diferent components need to be in the same network to enable communication between
them without additional efort. The network address of the communication medium will be well-known
to the simulators as Req. 6 clarifies. The minimal setup of the network allows us to focus on the main
functionalities and concepts of the prototype. In future work, the distributed components are to be
delivered within a cluster, which will then take over the technical realization of the network.
5.2.4. Protocols
This section discusses the protocols between the components for firing a DSC and for registration of
up- and downlinks. These protocols define distributed contracts between the roles involved, which all
must comply with. The registration protocol is presented in Figure 6 and the firing protocol in Figure 7.</p>
        <p>Since this protocol is distributed, it is modeled as an Aip (see section 2.8). The encircled numbers in
the two mentioned Figures have no modeling significance, but help to visualize certain steps of the
protocol in more detail below.</p>
        <p>Before the protocol for firing can start, the uplink and downlink must be registered, which is achieved
by the registration protocol. The registration phase is important as it structures the simulation and
enables the central synhcronization service to gain an overview of the whole simulation. The registration
protocol is triggered by the start of the simulation.</p>
        <p>For the first prototype we assume exactly one up- and downlink, that are located in diferent simulators.
Both of which need to be started independently which is represented by the arrows shown in the
registration protocol in Figure 6 in the first step. In the second step, both the up- as well as the downlink
forming the DSC send their respective registration event via Kafka.</p>
        <p>In the third and final step the synchronization service fetches all new events, receiving the two
registration events sent by the up- and downlink. The synchronizations service uses these events to
extract structural information about the DSC, these are needed as prerequisites for the firing protocol.</p>
        <p>In the first Prototype the registration protocol immediately starts the firing protocol, that is visualized
in Figure 7. The instant start of the firing protocol is necessary as we want to keep the first protocol as
simple as possible. The design of another event would consider multiple additional design decisions
and more event trafic that is not necessarily needed. In the further prototypes, the trigger for the firing
process is therefore the storage of the structural information of the uplink and downlink, which can be
seen in step one.</p>
        <p>In the second step, the synchronization service uses the structural information of the up- and downlink
to generate an artificial transition locally. The pre-set of the artificial transition is the union of the
pre-sets of the up- and downlink.</p>
        <p>Following, an attempt is made to unify the artificial transition within the synchronization service.
A corresponding unification is required for this. If the artificial transition is unified successfully and
if the transition is enabled, the synchronization service sends the event “ConfirmFireable” with the
corresponding bindings via Kafka to the Simulators.</p>
        <p>After this, the up- as well as the downlink can successfully fetch this new event in step three. If the
up- and downlink have been informed about the possible binding of the circuit, it must be evaluated
locally whether this binding is still possible in step four. The reason for this again lies in the distributed
system, as the local markings are constantly changing due to firing of local transitions which happens
significantly faster than the firing of a distributed channel. This is why the needed tokens may already be
consumed by a local transition. The respective responses of the up- and downlink are then transmitted
via Kafka as an event, whereby the markings are blocked locally if the response is positive.</p>
        <p>In the fifth step, the previous step of the respective counterpart is evaluated. If both provide a positive
result, firing of the channel is confirmed and finalized in step six. On the other hand, if there is at
least one negative response from the up- or downlink, a rollback occurs at the transition that sent the
confirm event. The rollback releases the reserved tokens into the net by putting them back on their
initial places. The process is completed with a firing or a rollback.
5.2.5. Events
This section addresses the design of the Kafka events exchanged between the components. Based on
the registration protocol and firing protocol (see section 5.2.4), the required events for this prototype
can be identified. A complete overview of the corresponding events can be found in table 2.</p>
        <p>For global identification, the net name is required for each event. No further parameters are required
for the events DeregisterDownlink, DeregisterUplink, ConfirmDownlink , CancelDownlink, ConfirmUplink
and CancelUplink, as these only exchange boolean values and this is already encoded in the keys of the
events.</p>
        <p>Based on the two events RegisterUplink and RegisterDownlink, the synchronization service should
be able to save all the structural information that are necesssary to build the artificial transition. For
Event
RegisterUplink / RegisterDownlink
DeregisterUplink / DeregisterDownlink
ConfirmFireable
ConfirmDownlink / CancelDownlink</p>
        <p>ConfirmUplink / CancelUplink</p>
        <p>Parameters
Parameter, Pre-set, Post-set, Parameter/Arc-Mapping, Marking of Pre-set
Netname of downlink, Netname of uplink,</p>
        <p>Bound Variables of uplink, Bound Variables of downlink
this, the synchronization service must know the complete pre-set and of the DSC. This requires both
structural information, i.e. which places are connected to the transition and how exactly they are
connected described by arcs and their respective inscriptions, as well as information on the current
status, i.e. how the places are marked in the pre-set.</p>
        <p>The ConfirmFireable event has the task of transmitting the possible binding derived by the
synchronization service to the downlink and uplink. The values that were assigned to the variables of the
upand downlink are required for this.
5.2.6. Proof of Concept
For the proof of concept we chose the producer consumer example. This example is a classic example
of computer science. There are numerous variants of the example, e.g. with or without storage. The
example is intended to serve as a proof of concept within this work, following requirement Req. 10.</p>
        <p>The variant used is a simple variant with one producer and one consumer and without storage.
According to the requirement Req. 2, there is exactly one DSC connecting the producer and the
consumer in this example. In addition, this synchronous channel consists of exactly one downlink and
one uplink, as required in request Req. 3. For this purpose, the variant of the example used in this paper
is modeled in Figure 9 as Distributed P/T Nets.</p>
      </sec>
      <sec id="sec-5-3">
        <title>5.3. Implementation</title>
        <p>5.3.1. Simulator
The implementation of the simulator was realized in the form of multiple Renew plugins. Namely the
DPTNFormalism plugin, the DPTNDrawing plugin, the DPTNOntology plugin, the
KafkaOntology plugin and the KafkaClient plugin.</p>
        <p>The DPTNDrawing plugin provides a new file type with the ending “.drnw” to separate normal nets
from distributed nets. Additionally it allows the already mentioned new inscription for transitions that
belongs to a DSC.</p>
        <p>The KafkaClient plugin is a specific interface for Renew to interact with a Kafka broker to
communicate. Functionalities like the creation of topics, registration to topics and consuming of messages are
implemented here.</p>
        <p>To enable the provision of common types, the KafkaOntology plugin and the DPTNOntology
plugin accumulate this common information. The KafkaOntology plugin provides information how
to be a subscriber of a specific topic and what a KafkaEvent is. In contrast the DPTNOntology plugin
provides functionalities to retrieve information that shall be encoded in the events and to create events
specific to the distributed simulation.</p>
        <p>The DPTNFormalism plugin defines a new compiler for nets in Renew that include transitions
belonging to a DSC. The name of the plugin includes “Formalism” as compilers in Renew normally
build up on Formalisms. Most importantly for the implemented compiler is that its formalization is still
in the process of creation in ongoing work. The DPTNFormalism plugin has two major functionalities.
At first it compiles given nets and their new special inscriptions that symbolize DSCs. Additionally, the
plugin handles the reaction to incoming events. The DPTNFormalism Plugin uses the KafkaClient
plugin for distributed synchronization and delegates local synchronizations to the PTC Formalism
plugin that is already implemented in Renew. This plugin as well uses both ontology plugins. The
new compiler is used whenever new inscriptions are made, the simulation is started, or the syntax is
checked.</p>
        <p>The decision to implement the Simulator with multiple plugins serves the goal of forming encapsulated
and easily extensible software with good quality. Especially the encapsulation of the KafkaClient is
important as this plugin can stay the only one with dependencies to external software.</p>
        <p>In the step of compilation, every distributed synchronous transition is translated into three transitions.
These transitions are a “request transition”, “confirm transition”, and a “cancel transition”. In this case
we use the concept of workflow transitions as explained in section 2.4. In contrast to its purpose to
simulate a workflow our approach concentrates on the possiblity to reserve tokens.</p>
        <p>The translation of one transition into three transitions inscribed with an uplink allows reserving
tokens while allowing rollback in case of failed synchronization. Each of these uplinks is called whenever
the matching event is consumed assuming its further conditions are also fulfilled. The translation is
graphically displayed in Figure 8.</p>
        <p>The concept of three transitions to construct a resettability is crucial as transitions are not commonly
resettable. The usage of three transitions instead of one to create resettability uses the concept of
workflow transitions (see section 2.4). It make the approach understandable and easier to verify in
future work.</p>
        <p>When starting a simulation the compilation of the transitions in a net is triggered. The compilation
of a Distributed P/T Net results in the creation of the respective register event for the transition
belonging to a DSC. This event is then produced using the functionalities of the KafkaClient plugin.</p>
        <p>In the following paragraph the behaviour of a transition belonging to a DSC is explained, refering to
Figure 8. If a simulator consumes the event “ConfirmFireable” the uplink of transition  1 is called with
the specified bindings from the event and the transition tries to fire.</p>
        <p>If this is successful the simulator sends the event “ConfirmUplink” if the transition is an uplink or
“ConfirmDownlink” if the transition is a downlink. After this step, the place in between  1 and  2
holds  tokens. If the firing was not possible, the simulator produces the event “CancelUplink” or
“CancelDownlink” depending on its type and consequently there would be no token on the place in the
middle.</p>
        <p>If a transition of a DSC receives a cancel event,  3 must fire. The firing of the DSC is no longer
possible as at least one partner could not fire its  1 transition. On the contrary, after receiving a confirm
event,  2 is fired and the distributed firing is completed.
5.3.2. Communication Medium
Our chosen communication medium Kafka ofers some configuration options. Relevant for this prototype
is that exactly one instance of the broker exists, a 1:1 mapping between partitions and topics, and
that the address of the broker is well-known among all other components. The 1:1 mapping between
partitions and topics ensures that the events are not split between diferent partitions and participants
can receive all events. Because this prototype focuses on the firing of DSCs, only one instance of the
broker is required. This means that the Kafka Broker is not highly available and therefore data loss may
occur during events. The high availability and robustness of the system is an integral part of future
work.
5.3.3. Synchronization Service
The synchronization service, implemented through the new Renew plugin DPTNSyncService, handles
the creation and execution of the before described artificial transition. Analog to the simulators this
plugin also uses the KafkaClient Plugin, KafkaOntology Plugin as well as the DPTNOntology
Plugin to send, receive and process events.</p>
        <p>Firstly, it is important to give transitions belonging to a DSC the possiblity of registering to this
service so that possible bindings among running simulators can be found. This is done by evaluating
the events “RegisterUplink” and “RegisterDownlink” and storing their information on their respective
transitions like the structure of their pre-set an in Figure 6.</p>
        <p>This information is then further processed in a unification process where a compound net is build,
that contains exactly one up- and downlink. Such a compound net represents a potential firing that
shall be examined. An example for this process can be seen below, where the relevant information of
the registered nets in 9 is used to create the artificial net in Figure 10.</p>
        <p>This net is then evaluated for a possible firing. If this is the case the synchronization service produces
the event “ConfirmFirable”. This event carries the information the assigned values of their parameters.</p>
      </sec>
      <sec id="sec-5-4">
        <title>5.4. Evaluation</title>
        <p>It is trivial to see that the requirements set out in section 5.1 are met by the prototype presented here.
However, there are various limitations that limit the proposed prototype. One main limitations regarding
the size are given by Req. 2 and Req. 3. The 1:1 mapping between up- and downlinks determine fixed
synchronization partners, thus it is not possible to choose non-deterministically between uplinks, as it
is the case with common P/T nets. Additionally, this prototype only allows for one DSC to exist in the
simulation which prevents the simulation of any complex net.</p>
        <p>Another main limitation is the necessity of a specific initial marking. ( Req. 8) With this limitation
the prototype can not be used as a general prototype for all Distributed P/T Nets.</p>
        <p>
          The scalability is as well limited as there should be just one communication medium (Req. 5), one
synchronization service (Req. 4) and two simulators (Req. 1). The limitation of the synchronization
service additionally impedes multiple concurrently firings of one DSC. The implementation of the
prorotype as well limits the possible amount of firing processes to one, visible in the protocol. This
leads to a minimal second phase (see section 5.2.1) of the distributed simulation. To address this issue is
a big deal regarding the realization of a proper distributed discrete event simulation. [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]
        </p>
        <p>The last point of criticism is that the network address of the communication medium must be
wellknown. This means that the prototype collapses as soon as the network address of the communication
medium changes, which is not robust. Similar to this the channel topic needs to be well-known, defining
an additional limitation.</p>
        <p>In the next prototype, one of the most important restrictions is to be removed. This means that the
transition of a DSC must initially be activated. To remove this main restriction, an update protocol will
be implemented in the next prototype, with which changes in the local marking can be communicated
to the global marking on the event stream.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>6. Update global marking of a Distributed P/T Net</title>
      <sec id="sec-6-1">
        <title>6.1. Requirements</title>
        <p>The requirements for the second prototype are discussed here. This prototype expands on the
implementation of the first prototype. The requirements of the first prototype 5.1 still apply to this prototype
except for the following changes and additions.</p>
        <p>The main diference to the first prototype is the trigger for firing a transition that belongs to a
synchronous channel. In the first prototype it was only possible to fire a synchronous channel once. In
contrast the second prototype shall inform the synchronization service about new markings of presets
belonging to transitions of a DSC. This information as well needs to be processed accordingly and
enable the firing of a DSC. These requirements combined should make multiple firing of one DSC
possible. This is the reason for adding the two following requirements:</p>
        <p>Req. 12 A transition that belongs to a DSC is able to communicate changes in its pre-set.
Req. 13 The synchronization service is able to react to changes in local presets of transition that belong to a
DSC</p>
        <p>Additionally, we need to take a closer look at the protocol. As the transitions with distributed channels
now shall fire multiple times we need an update protocol with which changes in the local marking can
be communicated to the global marking on the event stream.</p>
        <p>Req. 14 There should be a protocol addressing the update process.</p>
        <p>To make a distributed channel fire more than once the marking needs to allow this scenario. This is
why Req. 8 needs to be changed accordingly:
Req. 8 (V2) The transitions shall be able to fire multiple times in the simulation of the proof of concept.</p>
      </sec>
      <sec id="sec-6-2">
        <title>6.2. Design</title>
        <p>6.2.1. Simulation
The kind of simulation for this prototype does not change. But as the firing of a distributed synchronous
channel may be triggered multiple times by now the second phase of the simulation can be extended
with multiple firings. Following the second phase is no longer minimal.
6.2.2. Protocol
Following Req. 14, an update protocol is implemented. It is also necessary for the update protocol that a
registration has been carried out beforehand. This is because the update event will not communicate the
structural information of the transition that is sending the event. Without the structural information the
synchronization service cannot check whether a unification is possible. Furthermore, a firing protocol
is started by completing an update protocol if this is possible due to the new marking. The update
process is shown in Figure 11.</p>
        <p>The trigger for the process of sending an update event is the change of the pre-set for any up- or
downlink belonging to a DSC as shown in step one in Figure 11. The event is similar to the register
event sent via Kafka and will be fetched in step two by the synchronization service. In the third step the
synchronization service saves the new received marking and may start a new unification if the artificial
transition is enabled. Thus, the process is successfully completed if the new marking is just saved.</p>
        <p>This addition results in the synchronization service constantly attempting to unify, resulting in the
possibility of multiple “ConfirmFirable” events being sent if the default uplink or downlink setting
changes during the simulation of the network. As a result, the networks running in the simulators can
potentially be triggered repeatedly.
6.2.3. Events
For this prototype two new events are introduced. The events UpdateUplink and UpdateDownlink
require the new marking of the pre-sets in addition to the corresponding net name as parameters. There
is no need to include the structural information at this point, as this has already been transmitted with
the events RegisterUplink and RegisterDownlink during the registration process as stated in Figure 6
and the structural information can not change during a running simulation. Additionally, the size of the
events would be greater if every Update Event sends the structural information. Besides, the concept
for the update events is diferent from the registration events. While the registration events belong to
the first phase of a distributed simulation, the update events belong to the second phase.
6.2.4. Proof of Concept
Removing the limitation for the proof of concept for the first prototype the second prototype allows the
distributed channel to fire multiple times by changing the initial marking. The graphical representation
is nearly similar to Figure 9. It difers from the first proof of concept by the amount of tokens. For the
second proof of concept there are multiple tokens instead of one token laying on place 1, 2 and 3</p>
      </sec>
      <sec id="sec-6-3">
        <title>6.3. Implementation</title>
        <p>6.3.1. Simulator
To enable continuous firing of the distributed channel it is necessary to inform the synchronization
service about changes in the marking of the pre-set of a transition that belongs to a DSC. This is done by
sending the respective update events “UpdateDownlink” and “UpdateUplink” for the transition. These
events are triggered when the pre-set of the transitions that are part of a DSC is changed.
6.3.2. Synchronization Service
Whenever an update event of a registered transition is received, the marking of the pre-set of that
transition is updated. Additionally, any received update event will result in an attempted unification
as soon as the marking is updated, so that no marking is missed that could have led to a successful
unification.</p>
      </sec>
      <sec id="sec-6-4">
        <title>6.4. Evaluation</title>
        <p>The presented prototype additionally implemented two further requirements to the already mentioned
requirements. Req. 12 expects the simulators of the whole simulation to communicate the changes of
a pre-set belonging to a transition of a DSC. This requirement was successfully implemented by the
described events “UpdateDownlink” and “UpdateUplink”.</p>
        <p>The second requirement that was added Req. 13 concerned the synchronization service that has to
react to the above mentioned events. This requirement is fulfilled as well by the given implementation
explained in 6.3. To achieve the changed Req. 8 (V2) an example is given as depicted in section 6.4 of
the proof of concept. In addition, the requirement Req. 14 was fulfilled by implementing an update
protocol in section 6.2.</p>
        <p>The second prototype still sufers from various limitations. Nevertheless, some limitations have
been addressed and successfully resolved, including the main limitation that the transition belonging
to a distributed synchronous channel can only fire if it is initially marked. This was achieved by
implementing an update protocol, whereby changes to local markings can be announced globally.</p>
        <p>Another main limitation regarding the size are given byReq. 1, Req. 2, Req. 7 and Req. 3 will be
addressed in the next prototype. Several Simulators, DSCs and up- and downlinks are to be used for
this.</p>
        <p>First, the amount of firing processes is no longer limited to one. Second, the marking of the net may
enable the transition belonging to a DSC during the simulation instead of initally. Lastly, the second
phase of the distributed discrete event simulation is no longer minimal and thus a proper simulation
may be reached.</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>7. Handling several Simulators, Distributed Synchronous Channels and Uplinks and Downlinks</title>
      <sec id="sec-7-1">
        <title>7.1. Requirements</title>
        <p>The requirements for the third prototoype are discussed here. This prototype is designed to handle
several up- and downlinks for one DSC, several simulators as well as several DSCs in one distributed
simulation. This leads to a few changes in the requirements.</p>
        <p>The first change applies to Req. 1. Allowing multiple instances of the same net requires more than two
simulators, thus changing the first requirement. Secondly, we now want to allow multiple synchronous
channels, therfore we need to adapt Req. 2. Thirdly, Req. 3 is changed, allowing more than one downlink
e.g. uplink per DSC. Lastly, using one topic for all communication in the communication medium
as stated in Req. 7 is no longer suficient. Rather we will now use a global topic for registration and
deregistration of transitions and create a topic for every synchrnonous channel where all other events
that are specific to that channel will be sent on.</p>
        <p>Req. 1 (V2) It should be possible to use more than two simulators.</p>
        <p>Req. 2 (V2) It should be possible to use more than one distributed channel in a Distributed P/T Net.</p>
        <p>Req. 3 (V2) More than one uplink and one downlink should be able to belong to one DSC.
Req. 7 (V2) There should be a well-known global registration topic at the communication medium.</p>
        <p>Following these changed requirements two new requirement become crucial. Every up- and downlink
needs to be globally distinct for so that any sychnronized firing is clearly linked to its participating
transitions. Moreover a topic in the communication medium needs to be dynamically created for every
existing DSC whenever any simulation, containing one of its downlinks or uplinks, is started.</p>
        <p>Req. 15 Transitions belonging to a DSC must be distinguishable.</p>
        <p>Req. 16 There needs to be exactly one topic in the communication medium for every DSC in a running
simulation.</p>
        <p>A few modifications need to be made to the proof of concept for this prototype as we now allow
multiple channels and several uplinks and downlinks for those channels. Subsequently we change Req.
11 and add a new requirement:</p>
        <p>Req. 11 (V2) The proof of concept contains more than one DSC.</p>
        <p>Req. 17 The proof of concept should contain more than one downlink and uplink for one channel.</p>
      </sec>
      <sec id="sec-7-2">
        <title>7.2. Design</title>
        <p>7.2.1. Simulation
The design of the simulation of the third prototype does not change a lot. As now multiple net instance
are allowed, the amount of processes in the simulation may scale up. This is the first step to reach a
simulation that is able to use the main advantages of distribution, horizontal scaling that comes with a
lot of computation power.
7.2.2. Distributed Synchronous Channel
In this prototype we want to allow an upscaling of the central concept, the DSC. This means we will
now allow multiple DSCs to exist in the simulation. Additionally, we allow any DSC to have several
upand downlinks. This allows multiple diferent pairings of distributed transitions to be possible in a DSC.
This upscaling is of great importance, as we want no limit for the amount of diferent DSCs.
7.2.3. Protocol
7.2.4. Events
Whenever a simulator is starting its simulation, the corresponding channel topic needs to be created if
it did not exist yet. Furthermore, the sychnronization service needs to subscribe to the corresponding
channel topic whenever receiving a register event. Our protocols are modeled as Agent Interaction
Protocol Diagrams, explained in section 2.8, so they still fit to multiple instances of our components, as
one role is representative for multiple instances. An exception to this is the synchronizations service,
which cannot be scaled yet.</p>
        <p>As there now is the possibility for diferent channels to exist there needs to be a policy to communicate
the existing channels to the sychnronization service. This will be done by centralizing all register as
well as deregister events to one topic that is well known amongst all components. This leads to the
need to include the Name of the DSC of a transition in its registration event.</p>
        <p>We have diferent up- and downlinks running on the same DSC and therefore they listen to and
produce events on the same Kafka topic. This means that transitions need to be distinguishable.
Event
RegisterUplink / RegisterDownlink
DeregisterUplink / DeregisterDownlink
UpdateUplink / UpdateDownlink
ConfirmFireable
ConfirmDownlink / CancelDownlink</p>
        <p>ConfirmUplink / CancelUplink</p>
        <p>Parameters
Parameter, Pre-set, Post-set, Parameter/Arc-Mapping, Identifier, Channel
Identifier
Marking of Pre-set, Identifier
Identifier of Downlink, Identifier of Uplink, Parameter values
Identifier, Identifier of Partner</p>
        <p>Identifier, Identifier of Partner</p>
        <p>To do this we decided to give every transition of a DSC a unique identifier. This unique identifier
difers from the formal identifier that was specified in 2.2 as it is a technical necessity. It needs to be
passed on in every interaction to avoid possible mixups between any two up- or downlinks of a DSC
during one singular firing interaction. Therefore the parameters of all events sent by a simulator need
to be adjusted to always include the identifier of the transition that sent the event.</p>
        <p>Furthermore the event ConfirmFirable needs to include the unique Identifier of Downlink as well
as the unique Identifier of Uplink that the successful unification was done with. Lastly the events
ConfirmDownlink, ConfirmUplink, CancelDownlink as well as CancelUplink need to also specify which
partner they were mapped to for that specific firing to avoid other transitions from reacting to them.
This is done by including the unique Identifier of its Partner for that specific firing. Following the Table 2
and section 6.2.3 the events are mainly changed by adding specific identidiers to the parameters. Besides,
the register events now contain the repective channel. The adjusted design of the event can be found in
table 3.
7.2.5. Proof of Concept
According to Req. 11 (V2) the proof of concept should now contain multiple distributed channels.
Therefore we extend 6.2.4 by a storage component. This means the producer and consumer do not
interact directly anymore but instead exchange messages through the storage. These changes are
visualized in Figure 12.</p>
        <p>(a) Producer and Consumer Net
(b) Storage Net</p>
        <p>Additionally Req. 17 demands multiple up- and downlinks for each channel of the proof of concept.
We accomplish this by allowing every component to exist multiple times on diferent Simulators.</p>
      </sec>
      <sec id="sec-7-3">
        <title>7.3. Implementation</title>
        <p>7.3.1. Simulator
Whenever a simulator is initializing its simulation for a Distributed P/T Net, it will check for any
DSCs. For each found DSC a new topic will be created in the communication medium as long as it
did not exist beforehand. Finally, the simulator will subscribe to all topics that represent its DSCs to
establish the communication to other components of the simulation via the communication medium
Kafka.</p>
        <p>Register and deregister events will then be sent on a seperated topic. All events that concern a specific
channel will be sent on the topic of that channel.</p>
        <p>
          All simulators now assign a unique identifier to every transition of a DSC in the local net it simulates
so that diferent up- and downlinks can be diferentiated by other components. This is implemented by
assigning a Universally Unique Identiefir (UUID)[
          <xref ref-type="bibr" rid="ref34">34</xref>
          ] to every transition. This also allows the possibility
to have multiple distributed transitions in one simulator because it is always clear which transition was
called by an event.
7.3.2. Sychronization Service
Since a DSC now consists of multiple up- and downlinks, the synchronization service now has to save
the unique identifier of any transition registering to it. So that it knows exactly which transition is part
of a specific unification and who wants to unify with who. Subsequently, it needs to specify which
transitions were part of its successful unification whenever sending a “ConfirmFirable” event.
        </p>
        <p>The sychnronization service now subscribes to any channel topic that is specified in a registration
event. Subsequently “ConfirmFirable” events are now sent on the topic that represents its corresponding
channel.</p>
      </sec>
      <sec id="sec-7-4">
        <title>7.4. Evaluation</title>
        <p>Req. 1 (V2) was made possible by allowing multiple up- and downlinks for a DSC as well as allowing
multiple channels. Both of these changes allow for more than two diferent distributed transitions to
exist in a simulation. Since the implementation was already able to handle multiple simulator instances
by default, this requirement is met.</p>
        <p>To satisfy Req. 2 (V2) we added a way to diferentiate between channels by either including the
channel in an event or sending the events to a new topic that represents the channel. This simultaniously
accomplishes Req. 16.</p>
        <p>Req. 7 (V2) was fullfilled by introducing a globally known topic that is specifically used to send all
registration and deregistration events from a simulator.</p>
        <p>To realize Req. 3 (V2) we assigned a UUID to every uplink and downlink. This allows us to be able to
diferntiate between every transition of a synchrnonous channel, which subsequently completes Req.
15. Req. 11 (V2) and Req. 17 were fulfilled as described in 7.2.5.</p>
        <p>The scalability of the components was partially resolved as there is now the possible to increase the
scale of the simulators to more than two instances. Additionaly there is now the ability to have more
than one uplink and one downlink for a DSC. Furthermore this prototype allows multiple channels to
exist in the simulation, which enables the simulation of far more complex nets. This has removed a
further restriction in regard to size, although this can be further improved.</p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>8. Discussion</title>
      <p>One of the main advantages is the potential performance improvements through distribution. However,
this requires more computers overall, which means that the performance requirements are higher.
However, they can now also do more if the distribution works well. The fact that the decision for
synchronization is made centrally in the synchronization service means that this service is crucial
for the performance of the overall system. Improvements will be made to this in future versions, for
example by improving scalability.</p>
      <p>Furthermore, the distribution allows to model and simulate one net that is created on diferent
computers if the channels that will be used are agreed on. Therefore the Kafka broker must be
reachable for every participating part of the net. However, a simulation must be coordinated to avoid
inconsistencies in the simulation.</p>
      <p>Another advantage is the centralization of events at Kafka. By using this characteristic it might
be possible to restore a point in a simulation more easily. Following the usability can be increased.
Moreover, crashed instance of a simulation may be restarted without canceling the whole simulation.</p>
      <p>Obviously, there are at least two diferent types of synchronous channels. The local synchronous
channels, which are executed in a simulator, and the DSCs, which are executed in a distributed manner. One
disadvantage of DSC compared to local synchronous channels is performance, as the synchronization
process is more complex.</p>
      <p>One limitation of the presented prototype is that the concurrent firing of a single DSC is not
implemented by now. However, this will be addressed in future versions.</p>
      <p>
        Another current limitation is the lack of scalability regarding the synchronization service. This
requires some technical adjustments to the synchronization service and execution in a container
environment including container orchestration, such as Kubernetes [
        <xref ref-type="bibr" rid="ref35">35</xref>
        ].
      </p>
      <p>In addition, this prototype only implements the distributed simulation for P/T nets with synchronous
channels and not, for example, for reference nets. However, extensions in this direction are planned.</p>
    </sec>
    <sec id="sec-9">
      <title>9. Related Work</title>
      <p>
        In [
        <xref ref-type="bibr" rid="ref36 ref37 ref38">36, 37, 38</xref>
        ] first experiments with Renew in the Kubernetes context were undertaken to perform
reference net simulations. The decision to synchronize synchronous channels is made in a distributed
manner. Java Remote Method Invocation is used as the communication medium for this. This requires
a central registry, which represents a single point of failure.
      </p>
      <p>One of the main diferences to this work are that this prototype makes the decision about
synchronization centrally. Another main diference is that a event-based approach is chosen for the communication
medium. This is intended to create a additional synchronization option for synchronous channels for
distributed simulation. In addition, the prototypes presented here only implement P/T nets instead of
coloured or reference nets.</p>
      <p>
        Whereas the works [
        <xref ref-type="bibr" rid="ref39 ref40 ref41 ref42">39, 40, 41, 42</xref>
        ] deal with the distributed simulation of timed Petri Nets. The
approaches used in these works use diferent strategies to ensure the simulation of timed Petri Nets.
This work distinguishes itself from these approaches in that the P/T net class used in this paper does
not recognize a notion of time.
10. Conclusion
Section 2 covered all necessary foundations, crucial to understand this article. Section 3 covered
the objectives of this work, namely a prototype implementation, the establishment of a distributed
execution environment and the usage of a classical computer science example as a proof of concept.
The following section, section 4 treated the distributed system consisting of a communication medium,
a synchronization service and multiple simulators.
      </p>
      <p>The prototype “Firing of one Distributed Synchronous Channel” in section 5 represents the first
version of distributed simulation of Distributed P/T Net. This prototype includes exactly two simulators
with one DSC consisting of one up- and one downlink, as well as one communication medium and one
synchronization service. The main protocols of this prototype were the registration and the firing.</p>
      <p>The prototype “Update global marking of a Distributed P/T Net” builds upon the prototype and
is described in section 6. As the prototype was limited to one firing of a synchronous channel, this
prototype was meant to enable multiple firing. That is why a new concept was introduced, namely the
update of markings so that every component that needs to react to these changes can do it.</p>
      <p>The third prototype “Handling several Simulators, Distributed Synchronous Channels and Uplinks
and Downlinks” focuses on the limitation that various components are limited the instances of the
components and is explained in section 7. This limitation is resolved for several simualtors, several
DSCs and up- and downlinks in this prototype. The upscaling especially demands the adaption of the
events so that multiple instances are distinguishable. The discussion in section 8 reviews the results
deriving from this paper and points out the advantages, disadvantages and limitations of the proposed
prototype.</p>
      <p>There are still some limitations left regarding this implementation of Distributed P/T Nets.
Regarding Kafka, it is predictable that high availablity becomes significant.</p>
      <p>
        Another interesting point starting from this article may be the integration of the distributed simulation
into plattforms like Docker [
        <xref ref-type="bibr" rid="ref43">43</xref>
        ] and Kubernetes [
        <xref ref-type="bibr" rid="ref35">35</xref>
        ] that allow to scale the computation power of a
simulation or the amount of simulation.
      </p>
      <p>The extent to which the prototype can be used in the context of verification for distributed model
checking will also be investigated.</p>
      <p>Additionally, this proposal of distributed simulation of nets is limited to P/T nets with channels.
Therefore the expansion to simulate colored nets or reference nets might as well be interesting.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>I. Mitrani</surname>
          </string-name>
          ,
          <article-title>Simulation techniques for discrete event systems</article-title>
          , volume
          <volume>14</volume>
          , Cambridge University Press,
          <year>1982</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>A.</given-names>
            <surname>Ferscha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. K.</given-names>
            <surname>Tripathi</surname>
          </string-name>
          ,
          <article-title>Parallel and distributed simulation of discrete event systems</article-title>
          , Citeseer,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>E.</given-names>
            <surname>Jessen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Valk</surname>
          </string-name>
          , Rechensysteme: Grundlagen der Modellbildung, Studienreihe Informatik, Springer-Verlag, Berlin Heidelberg New York,
          <year>1987</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>S.</given-names>
            <surname>Christensen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. D.</given-names>
            <surname>Hansen</surname>
          </string-name>
          ,
          <article-title>Coloured Petri nets extended with channels for synchronous communication</article-title>
          , in: R. Valette (Ed.),
          <source>Application and Theory of Petri Nets</source>
          <year>1994</year>
          , 15th International Conference, Zaragoza, Spain, June 20-24,
          <year>1994</year>
          , Proceedings, volume
          <volume>815</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>1994</year>
          , pp.
          <fpage>159</fpage>
          -
          <lpage>178</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>C.</given-names>
            <surname>Lakos</surname>
          </string-name>
          ,
          <article-title>From coloured Petri nets to object Petri nets</article-title>
          ,
          <source>in: International Conference on Application and Theory of Petri Nets</source>
          , Springer,
          <year>1995</year>
          , pp.
          <fpage>278</fpage>
          -
          <lpage>297</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>O.</given-names>
            <surname>Kummer</surname>
          </string-name>
          , Referenznetze, Logos Verlag, Berlin,
          <year>2002</year>
          . URL: http://www.logos-verlag.de/cgi-bin/ engbuchmid?isbn=0035&amp;lng=eng&amp;id=.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>L.</given-names>
            <surname>Voß</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Willrodt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Moldt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Haustermann</surname>
          </string-name>
          ,
          <article-title>Between expressiveness and verifiability: P/T-nets with synchronous channels and modular structure</article-title>
          , in: M.
          <string-name>
            <surname>Köhler-Bußmeier</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Moldt</surname>
          </string-name>
          , H. Rölke (Eds.),
          <source>Proceedings of the International Workshop on Petri Nets and Software Engineering</source>
          <year>2022</year>
          co
          <article-title>-located with the 43rd International Conference on Application and Theory of Petri Nets and Concurrency (PETRI NETS</article-title>
          <year>2022</year>
          ), Bergen, Norway, June 20th,
          <year>2022</year>
          , volume
          <volume>3170</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2022</year>
          , pp.
          <fpage>40</fpage>
          -
          <lpage>59</lpage>
          . URL: https://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>3170</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>K.</given-names>
            <surname>Jensen</surname>
          </string-name>
          , Coloured Petri nets,
          <source>in: Petri Nets: Central Models and Their Properties</source>
          , Springer,
          <year>1987</year>
          , pp.
          <fpage>248</fpage>
          -
          <lpage>299</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>A. V.</given-names>
            <surname>Ratzer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Wells</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. M.</given-names>
            <surname>Lassen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Laursen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. F.</given-names>
            <surname>Qvortrup</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. S.</given-names>
            <surname>Stissing</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Westergaard</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Christensen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Jensen</surname>
          </string-name>
          ,
          <article-title>Cpn tools for editing, simulating, and analysing coloured Petri nets</article-title>
          ,
          <source>in: International Conference on Application and Theory of Petri Nets</source>
          , Springer,
          <year>2003</year>
          , pp.
          <fpage>450</fpage>
          -
          <lpage>462</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>C. A.</given-names>
            <surname>Petri</surname>
          </string-name>
          , Nets, time and space,
          <source>Theoretical Computer Science</source>
          <volume>153</volume>
          (
          <year>1996</year>
          )
          <fpage>3</fpage>
          -
          <lpage>48</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>J.</given-names>
            <surname>Desel</surname>
          </string-name>
          , W. Reisig, Place/transition petri nets,
          <source>in: Advanced Course on Petri Nets</source>
          , Springer,
          <year>1996</year>
          , pp.
          <fpage>122</fpage>
          -
          <lpage>173</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>K.</given-names>
            <surname>Lautenbach</surname>
          </string-name>
          ,
          <article-title>Linear algebraic techniques for place/transition nets</article-title>
          , in: W. Brauer,
          <string-name>
            <given-names>W.</given-names>
            <surname>Reisig</surname>
          </string-name>
          , G. Rozenberg (Eds.),
          <source>Petri Nets: Central Models and Their Properties</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>1987</year>
          , pp.
          <fpage>142</fpage>
          -
          <lpage>167</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M.</given-names>
            <surname>Jantzen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Valk</surname>
          </string-name>
          ,
          <article-title>Formal properties of place/transition nets</article-title>
          , in: W. Brauer (Ed.),
          <source>Net Theory and Applications</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>1980</year>
          , pp.
          <fpage>165</fpage>
          -
          <lpage>212</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>H.</given-names>
            <surname>Heilmann</surname>
          </string-name>
          ,
          <article-title>Organisatorische flexibilität im intelligenten unternehmen-potentiale von workflowmanagement</article-title>
          ,
          <source>Wissensmanagement: Schritte zum intelligenten Unternehmen</source>
          (
          <year>1998</year>
          )
          <fpage>109</fpage>
          -
          <lpage>128</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>W. M. van der Aalst</surname>
          </string-name>
          ,
          <string-name>
            <surname>K. M. van Hee</surname>
          </string-name>
          ,
          <string-name>
            <surname>A. H. ter Hofstede</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Sidorova</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Verbeek</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Voorhoeve</surname>
          </string-name>
          , M. T. Wynn,
          <article-title>Soundness of workflow nets with reset arcs, Transactions on petri nets and other models of concurrency III (</article-title>
          <year>2009</year>
          )
          <fpage>50</fpage>
          -
          <lpage>70</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>H. M. Verbeek</surname>
          </string-name>
          , W. M.
          <string-name>
            <surname>van der Aalst</surname>
          </string-name>
          , A. Kumar, Xrl/woflan: Verification and
          <article-title>extensibility of an xml/petri-net-based language for inter-organizational workflows</article-title>
          ,
          <source>Information Technology and Management</source>
          <volume>5</volume>
          (
          <year>2004</year>
          )
          <fpage>65</fpage>
          -
          <lpage>110</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>T.</given-names>
            <surname>Jacob</surname>
          </string-name>
          ,
          <article-title>Implementierung einer sicheren und rollenbasierten Worklfow"=Managementkomponente für ein Petrinetzwerkzeug</article-title>
          ,
          <source>Diploma thesis</source>
          , University of Hamburg, Department of Computer Science, Vogt-Kölln Str. 30,
          <string-name>
            <given-names>D</given-names>
            <surname>-</surname>
          </string-name>
          22527
          <string-name>
            <surname>Hamburg</surname>
          </string-name>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>A.</given-names>
            <surname>Varga</surname>
          </string-name>
          ,
          <article-title>Discrete event simulation system</article-title>
          ,
          <source>in: Proc. of the European Simulation Multiconference (ESM'2001)</source>
          , volume
          <volume>17</volume>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>R. M. Fujimoto</surname>
          </string-name>
          ,
          <article-title>Research challenges in parallel and distributed simulation</article-title>
          ,
          <source>ACM Transactions on Modeling and Computer Simulation (TOMACS) 26</source>
          (
          <year>2016</year>
          )
          <fpage>1</fpage>
          -
          <lpage>29</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>O.</given-names>
            <surname>Kummer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Wienberg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Duvigneau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Cabac</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Haustermann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Mosteller</surname>
          </string-name>
          , Renew - the
          <source>Reference Net Workshop</source>
          ,
          <year>2023</year>
          . URL: http://www.renew.de/, release 4.1.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>D.</given-names>
            <surname>Moldt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Johnsen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Streckenbach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Clasen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Haustermann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Heinze</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Hansson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Feldmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Ihlenfeldt</surname>
          </string-name>
          ,
          <article-title>RENEW: modularized architecture and new features</article-title>
          , in: L.
          <string-name>
            <surname>Gomes</surname>
          </string-name>
          , R. Lorenz (Eds.),
          <source>Application and Theory of Petri Nets and Concurrency - 44th International Conference, PETRI NETS</source>
          <year>2023</year>
          , Lisbon, Portugal, June 25-30,
          <year>2023</year>
          , Proceedings, volume
          <volume>13929</volume>
          of Lecture Notes in Computer Science, Springer Nature Switzerland AG, Cham, Switzerland,
          <year>2023</year>
          , pp.
          <fpage>217</fpage>
          -
          <lpage>228</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>031</fpage>
          -33620-1_
          <fpage>12</fpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>031</fpage>
          -33620-1_
          <fpage>12</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>M.</given-names>
            <surname>Duvigneau</surname>
          </string-name>
          ,
          <article-title>Konzeptionelle Modellierung von Plugin-Systemen mit Petrinetzen</article-title>
          , volume
          <volume>4</volume>
          <source>of Agent Technology - Theory and Applications</source>
          , Logos Verlag, Berlin,
          <year>2010</year>
          . URL: http://www. logos-verlag.de/cgi-bin/engbuchmid?isbn=2561&amp;lng=eng&amp;id=.
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>R.</given-names>
            <surname>Valk</surname>
          </string-name>
          ,
          <article-title>Petri nets as token objects - an introduction to elementary object nets</article-title>
          , in: J.
          <string-name>
            <surname>Desel</surname>
          </string-name>
          , M. Silva (Eds.),
          <source>19th International Conference on Application and Theory of Petri nets</source>
          , Lisbon, Portugal,
          <source>number 1420 in Lecture Notes in Computer Science</source>
          , Springer-Verlag, Berlin Heidelberg New York,
          <year>1998</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>25</lpage>
          . URL: https://doi.org/10.1007/3-540-69108-
          <issue>1</issue>
          _
          <fpage>1</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Apache</surname>
          </string-name>
          , Introduction, https://kafka.apache.org/intro,
          <year>2024</year>
          . Accessed:
          <year>2024</year>
          /04/29.
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>N.</given-names>
            <surname>Naik</surname>
          </string-name>
          ,
          <article-title>Choice of efective messaging protocols for iot systems: Mqtt, coap, amqp and http</article-title>
          ,
          <source>in: 2017 IEEE International Systems Engineering Symposium (ISSE)</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>7</lpage>
          . doi:
          <volume>10</volume>
          .1109/ SysEng.
          <year>2017</year>
          .
          <volume>8088251</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>T.</given-names>
            <surname>Bray</surname>
          </string-name>
          ,
          <article-title>The JavaScript Object Notation (JSON) Data Interchange Format</article-title>
          , RFC
          <volume>7159</volume>
          ,
          <year>2014</year>
          . URL: https://www.rfc-editor.
          <source>org/info/rfc7159. doi:10</source>
          .17487/RFC7159.
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <article-title>Foundation for Intelligent Physical Agents, FIPA interaction protocol library specification</article-title>
          ,
          <year>2000</year>
          . URL: http://fipa.org/specs/fipa00025/PC00025C.html.
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>J. J.</given-names>
            <surname>Odell</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. Van Dyke</given-names>
            <surname>Parunak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Bauer</surname>
          </string-name>
          ,
          <article-title>Representing agent interaction protocols in uml</article-title>
          , in: Agent-Oriented Software Engineering: First International Workshop, AOSE 2000 Limerick, Ireland, June 10,
          <source>2000 Revised Papers 1</source>
          , Springer,
          <year>2001</year>
          , pp.
          <fpage>121</fpage>
          -
          <lpage>140</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <surname>S. FIPA00003</surname>
          </string-name>
          ,
          <article-title>Fipa interaction protocol library specification (</article-title>
          <year>2000</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>M. F.</given-names>
            <surname>Wood</surname>
          </string-name>
          ,
          <string-name>
            <surname>S. A. DeLoach,</surname>
          </string-name>
          <article-title>An overview of the multiagent systems engineering methodology</article-title>
          , in: International Workshop on Agent-Oriented Software Engineering, Springer,
          <year>2000</year>
          , pp.
          <fpage>207</fpage>
          -
          <lpage>221</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <surname>O. M. G. Inc.</surname>
          </string-name>
          ,
          <source>OMG Unified Modeling Language - version 2.5</source>
          .1, https://www.omg.org/spec/UML/2.5.
          <issue>1</issue>
          ,
          <year>2017</year>
          . URL: https://www.omg.org/spec/UML/2.5.1,
          <string-name>
            <surname>last</surname>
            <given-names>accessed</given-names>
          </string-name>
          :
          <fpage>2024</fpage>
          -05-01.
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>L.</given-names>
            <surname>Cabac</surname>
          </string-name>
          ,
          <string-name>
            <surname>Modeling Petri</surname>
          </string-name>
          Net-Based
          <string-name>
            <surname>Multi-Agent</surname>
            <given-names>Applications</given-names>
          </string-name>
          , Dissertation, University of Hamburg, Department of Informatics, Vogt-Kölln Str. 30,
          <string-name>
            <given-names>D</given-names>
            <surname>-</surname>
          </string-name>
          22527
          <string-name>
            <surname>Hamburg</surname>
          </string-name>
          ,
          <year>2010</year>
          . URL: https://ediss.sub. uni-hamburg.de/handle/ediss/3691.
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>L.</given-names>
            <surname>Cabac</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Moldt</surname>
          </string-name>
          ,
          <article-title>Formal semantics for AUML agent interaction protocol diagrams</article-title>
          , in: J.
          <string-name>
            <surname>Odell</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Giorgini</surname>
            ,
            <given-names>J. P.</given-names>
          </string-name>
          Müller (Eds.),
          <source>The Fifth International Workshop on Agent-Oriented Software Systems (AOSE-</source>
          <year>2004</year>
          ). Proceedings, Columbia University, New York, USA,
          <year>2004</year>
          , pp.
          <fpage>97</fpage>
          -
          <lpage>111</lpage>
          . URL: http://dx.doi.org/10.1007/978-3-
          <fpage>540</fpage>
          -30578-
          <issue>1</issue>
          _
          <fpage>4</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <given-names>P. J.</given-names>
            <surname>Leach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Salz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. H.</given-names>
            <surname>Mealling</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A Universally</given-names>
            <surname>Unique IDentifier (UUID) URN Namespace</surname>
          </string-name>
          , RFC
          <volume>4122</volume>
          ,
          <year>2005</year>
          . URL: https://www.rfc-editor.
          <source>org/info/rfc4122. doi:10</source>
          .17487/RFC4122.
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <surname>Google</surname>
          </string-name>
          , Kubernetes Documentation - kubernetes.io, https://kubernetes.io/docs/home/,
          <year>2024</year>
          . [Accessed 29-
          <fpage>04</fpage>
          -2024].
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Röwekamp</surname>
          </string-name>
          , D. Moldt,
          <article-title>RenewKube: Reference net simulation scaling with Renew and Kubernetes</article-title>
          , in: S. Donatelli, S. Haar (Eds.),
          <source>Application and Theory of Petri Nets and Concurrency - 40th International Conference, PETRI NETS</source>
          <year>2019</year>
          , Aachen, Germany, June 23-28,
          <year>2019</year>
          , Proceedings, volume
          <volume>11522</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2019</year>
          , pp.
          <fpage>69</fpage>
          -
          <lpage>79</lpage>
          . URL: https://doi.org/ 10.1007/978-3-
          <fpage>030</fpage>
          -21571-
          <issue>2</issue>
          _
          <fpage>4</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [37]
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Röwekamp</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Feldmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Moldt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Simon</surname>
          </string-name>
          , Simulating Place /
          <article-title>Transition Nets by a distributed, web based, stateless service</article-title>
          , in: D.
          <string-name>
            <surname>Moldt</surname>
            , E. Kindler, M. Wimmer (Eds.), Petri Nets and
            <given-names>Software</given-names>
          </string-name>
          <string-name>
            <surname>Engineering</surname>
          </string-name>
          . International Workshop, PNSE'19,
          <string-name>
            <surname>Aachen</surname>
          </string-name>
          , Germany, June 24,
          <year>2019</year>
          . Proceedings, volume
          <volume>2424</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2019</year>
          , pp.
          <fpage>163</fpage>
          -
          <lpage>164</lpage>
          . URL: http://CEUR-WS.org/Vol-
          <volume>2424</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38]
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Röwekamp</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Taube</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Mohr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Moldt</surname>
          </string-name>
          ,
          <article-title>Cloud native simulation of reference nets</article-title>
          , in: M.
          <string-name>
            <surname>Köhler-Bußmeier</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          <string-name>
            <surname>Kindler</surname>
          </string-name>
          , H. Rölke (Eds.),
          <source>Proceedings of the International Workshop on Petri Nets and Software Engineering</source>
          <year>2021</year>
          co
          <article-title>-located with the 42nd International Conference on Application and Theory of Petri Nets and Concurrency (PETRI NETS</article-title>
          <year>2021</year>
          ), Paris, France, June 25th,
          <year>2021</year>
          (due to COVID-19
          <source>: virtual conference)</source>
          , volume
          <volume>2907</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2021</year>
          , pp.
          <fpage>85</fpage>
          -
          <lpage>104</lpage>
          . URL: http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>2907</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          [39]
          <string-name>
            <given-names>G. S.</given-names>
            <surname>Thomas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Zahorjan</surname>
          </string-name>
          ,
          <article-title>Parallel simulation of performance petri nets: Extending the domain of parallel simulation</article-title>
          ,
          <source>Technical Report, Institute of Electrical and Electronics Engineers (IEEE)</source>
          ,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [40]
          <string-name>
            <given-names>H. H.</given-names>
            <surname>Ammar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Deng</surname>
          </string-name>
          ,
          <article-title>Time warp simulation of stochastic petri nets</article-title>
          ,
          <source>in: Proceedings of the Fourth International Workshop on Petri Nets and Performance Models PNPM91</source>
          , IEEE,
          <year>1991</year>
          , pp.
          <fpage>186</fpage>
          -
          <lpage>195</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          [41]
          <string-name>
            <given-names>G.</given-names>
            <surname>Chiola</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ferscha</surname>
          </string-name>
          ,
          <article-title>Distributed simulation of petri nets</article-title>
          ,
          <source>IEEE Parallel and Distributed Technology</source>
          <volume>1</volume>
          (
          <year>1993</year>
          )
          <fpage>33</fpage>
          -
          <lpage>50</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          [42]
          <string-name>
            <given-names>A.</given-names>
            <surname>Ferscha</surname>
          </string-name>
          ,
          <article-title>Adaptive time warp simulation of timed petri nets</article-title>
          ,
          <source>IEEE Transactions on Software Engineering</source>
          <volume>25</volume>
          (
          <year>1999</year>
          )
          <fpage>237</fpage>
          -
          <lpage>257</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          [43]
          <string-name>
            <surname>Docker</surname>
          </string-name>
          , Home - docs.docker.com, docs.docker.com, 2013-
          <fpage>2024</fpage>
          . [Accessed 29-
          <fpage>04</fpage>
          -2024].
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>