<!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>GET Controller and UNICORN: Event-driven Process Execution and Monitoring in Logistics</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Anne Baumgrass</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Claudio Di Ciccio</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Remco Dijkman</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marcin Hewelt</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jan Mendling</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andreas Meyer</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Shaya Pourmirza</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mathias Weske</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tsun Yin Wong</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Eindhoven University of Technology</institution>
          ,
          <country country="NL">The Netherlands</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Hasso Plattner Institute, University of Potsdam</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Institute for Information Business at WU Vienna</institution>
          ,
          <country country="AT">Austria</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Especially in logistics, process instances often interact with their realworld environment during execution. This is challenging due to the fact that events from this environment are often heterogeneous, lack process instance information, and their import and visualisation in traditional process engines is not sufficiently supported. To address these challenges, we implemented GET Controller and UNICORN, two systems that together enable event-driven process execution and monitoring. Their application is shown for a logistics scenario.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Overview</title>
    </sec>
    <sec id="sec-2">
      <title>2 Implementation</title>
      <p>
        Due to the separation of concerns principle [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], we implemented two interacting
systems: (i) UNICORN, which is responsible for collecting, processing, and distributing
      </p>
      <sec id="sec-2-1">
        <title>4 http://getservice-project.eu</title>
        <p>
          Copyright c 2015 for this paper by its authors. Copying permitted for private and academic
purposes.
events relevant for logistics from various heterogeneous sources, and (ii) GET
Controller, which executes and monitors logistics process instances thereby considering events
provided by UNICORN. The interaction between these components is event-based, and
their communication follows the publish-subscribe paradigm. To this extent, process
models are encoded in a dialect of BPMN [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ], which contains ad-hoc annotations that
specify both the subscription and publishing mechanisms for events relevant to the
process. Our adapted BPMN modeling language is detailed in [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ].
        </p>
        <p>
          UNICORN5 is the system handling heterogeneous events in different formats. It is
implemented in Java 7 and can be accessed through a web service (SOAP) as well as
through a web-based user interface (UI) written using the Apache Wicket framework.
Events can be published to UNICORN in XML, Excel, CSV, and JSON formats. As a
prerequisite for handling events, the corresponding event types must be defined, either
via the UI or via the web service importing its XSD. In UNICORN, Esper [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] is used
for real-time processing of events, while MySQL is used to store events for
historical analysis. UNICORN implements the publish-subscribe paradigm through the Java
Message Service (JMS) implementation of ActiveMQ. Furthermore, it offers a generic
interface to periodically request or receive events from different sources such as service
providers for traffic and weather information.
        </p>
        <p>
          To address logistics-specific requirements, UNICORN stores routes and its
waypoints (locations a vehicle has to pass), which are relevant in logistics-specific event
processing. In this way, we are able to determine the distances between the current
position of vehicles or events and their waypoints, to estimate remaining travel times, and
to filter traffic incidents in the vicinity of routes. Thus, UNICORN provides high-level,
transportation-related event notifications, such as expired deadlines, delays, or missing
connections to its subscribers [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
        </p>
        <p>The logistics-specific process execution and monitoring is done in GET Controller6.
For the implementation, the Activiti7 engine has been adopted. Activiti is a
BPMNbased open-source process engine, encoded in Java. Given a BPMN process model as
input, it enacts the corresponding process instances. The embedded task handler (i)
allows granted users to execute tasks in the UI, and (ii) monitors the status of tasks in
execution (e.g., executing or completed). The task handler of GET Controller is
illustrated in Figure 1. On the upper-left side, all running instances are shown in a list. In the
lower-left corner, the events relevant for the currently selected process instance (case
54) are shown: a diverted flight and a strike in Frankfurt. Both are also visualized on
the map in the middle of the screen. On the right hand side, we provide the tasks of
the process including their current status. Their execution may be triggered by external
events but can also be performed by the user, which is then done through the offered
buttons or forms in the lower-right corner.</p>
        <p>
          Following the requirements identified in the GET Service project for integrating
process and event processing [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], we extended the core of Activiti with the
capability to read and interpret annotated BPMN models. Thereupon, we are able to
guarantee (i) event-driven execution and (ii) monitoring capabilities. For guaranteeing both
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>5 https://bpt.hpi.uni-potsdam.de/unicorn</title>
      </sec>
      <sec id="sec-2-3">
        <title>6 http://is.ieis.tue.nl/research/getservice/</title>
      </sec>
      <sec id="sec-2-4">
        <title>7 http://www.activiti.org/</title>
        <p>features, GET Controller receives process-execution-relevant events published by
UNICORN. They can be external events as well as events signalling the task execution from
process clients, e.g., a driver loading goods. Generally, the subscription to events is
derived from the annotations in the deployed process model. We distinguish between
event subscriptions for (i) a task, (ii) a group of tasks, or (iii) the whole process.
Furthermore, these annotations determine for how long subscriptions are valid, i.e. (i) from
the enabling to the completion of a specified task, (ii) as long as at least one task in the
given group is running, and (iii) along the whole process execution repectively.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Execution and Monitoring in GET Controller</title>
      <p>
        GET Controller interacts with UNICORN as shown in Figure 2. The communication
comprises five steps:
1. GET Controller deploys a process model which is then used for registering
subscriptions to UNICORN. A route can be provided in addition to localise events
relevant along this route for the user. For instance, to determine the routes of trucks
or to pick up airfreight at Frankfurt airport.
2. The execution of activities can be done via GET Controller (as shown in the panel
on the upper-right corner of the screenshot in Figure 1). However, in case of
logistics scenarios, GET Controller often derives progress of activities from events
received by UNICORN. For instance, rules in UNICORN can be used to correlate
the movement of a truck via GPS position events and to evaluate whether it would
finally reach its destination as specified (based on information contained in the
annotated process model or the corresponding route). The same rules can be defined
for flight events or any other movement and activity.
3. Each time an event is published to UNICORN (either by GET Controller or other
event sources), its match to a subscription is evaluated. For example, users can
subscribe to strike warnings at Frankfurt airport for their transportation process.
This has to be done using the annotation mechanism for process models described
in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. In the same way, users may subscribe to flight positions as well as diversions
that are aggregated by corresponding rules and extensions in UNICORN.
4. In case of a match, an event notification is sent to GET Controller. This notification
is then visualised for the affected process instance(s) to the user. The affectedness
is computed through the scope and the parameters of a subscription. For example,
all processes monitoring a flight will receive that information, while the movement
of a single truck will only be shown for the corresponding transportation task.
5. Finally, if the transportation process is completed, GET Controller may decline its
corresponding subscriptions and must unsubscribe from UNICORN.
The application of both UNICORN and GET Controller is shown using a scenario
stemming from the EU-FP7 GET Service project. The scenario pertains to a multi-modal
transportation managed by a Logistics Service Provider (LSP), involving a first leg via
aircraft and a subsequent truck-based one. In particular, we envision a situation in which
the aeroplane lands in a different location than expected, thus requiring the LSP to
cancel (or reroute) the reserved trucks, while reserving other vehicles to pick up the cargo
at the new airport. We refer to such a situation as freight shift. Occasionally, one shift
can cause re-planning and re-positioning of 20-100 trucks within 4 hours, with the clear
consequence of longer waiting times and empty miles run by the trucks. In order to
introduce corrective actions as soon as possible and avoid such situations, it is crucial
to constantly monitor freight execution activities, involved resources as well as all
external events. Furthermore, mechanisms are required to correlate all this information,
and identify which events are currently relevant for the running process instances.
      </p>
      <p>
        For our demonstration, we used data stemming from a real-world diversion of an
aeroplane on the route from Nice to Frankfurt, landing in Brussels. We extracted the
data out of a set of examined 6,495 European flight tracks (1,765,172 events) gathered
in July 2013. Flights diverted in 49 cases (0.7%). These diversions were
automatically detected by the approach presented in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], based on machine learning algorithms.
Specifically for the freight shift used in this paper, this algorithm was able to forecast
the diversion of the flight to Frankfurt 1 hour and 18 minutes ahead of the expected
landing. For the sake of the demonstration, a Java-based applications was
implemented to replay the real-world flight events, along with the event announcing the strike
at Frankfurt airport, as reported by Streikradar8. This allowed us to better control the
occurrences of the right events at the right time as shown in the screencast https:
//www.youtube.com/watch?v=JE2Df7iaERk. The screencast shows how the
user is able to execute logistics-specific processes and at the same time get notified
about external events that influence its transportation at the time they happen or are
predicted automatically.
      </p>
      <p>In summary, we are able to execute and monitor single-modal and multi-modal
transportations as sketched through the example above. The progress of the flight and
trucks as well as all happenings at the landing airport, such as an announced strike, are
monitored. Furthermore, once the prediction of a flight diversion is made, UNICORN
automatically forwards the corresponding event notification to GET Controller.
Acknowledgement. The research leading to these results is part of the GET Service
project and has received funding from the European Commission under the 7th Framework
Programme (FP7) for Research and Technological Development under grant agreement
2012-318275.</p>
      <sec id="sec-3-1">
        <title>8 http://streikradar.de</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>A.</given-names>
            <surname>Baumgrass</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Hewelt</surname>
          </string-name>
          , A. Meyer, A. Raptopoulos,
          <string-name>
            <given-names>J.</given-names>
            <surname>Selke</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Wong</surname>
          </string-name>
          .
          <article-title>Prototypical implementation of the information aggregation engine</article-title>
          .
          <source>GET Service Deliverable report D6.3</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>T.</given-names>
            <surname>Bernhardt</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Vasseur</surname>
          </string-name>
          . Esper:
          <article-title>Event stream processing</article-title>
          and correlation,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>M.</given-names>
            <surname>Botezatu</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Vo</surname>
          </string-name>
          <article-title>¨lzer. Language and meta-model for transport processes and snippets</article-title>
          .
          <source>GET Service deliverable report D4.1</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>C.</given-names>
            <surname>Cabanillas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Di Ciccio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Mendling</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Baumgrass</surname>
          </string-name>
          .
          <article-title>Predictive task monitoring for business processes</article-title>
          .
          <source>In BPM</source>
          , pages
          <fpage>424</fpage>
          -
          <lpage>432</lpage>
          . Springer,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>M.</given-names>
            <surname>Dumas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. La</given-names>
            <surname>Rosa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Mendling</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H. A.</given-names>
            <surname>Reijers</surname>
          </string-name>
          .
          <source>Fundamentals of Business Process Management</source>
          . Springer,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>D. L.</given-names>
            <surname>Parnas</surname>
          </string-name>
          .
          <article-title>On the criteria to be used in decomposing systems into modules</article-title>
          .
          <source>Communications of the ACM</source>
          ,
          <volume>15</volume>
          (
          <issue>12</issue>
          ):
          <fpage>1053</fpage>
          -
          <lpage>1058</lpage>
          ,
          <year>1972</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>S.</given-names>
            <surname>Treitl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Rogetzer</surname>
          </string-name>
          , M. Hrusˇovsky´,
          <string-name>
            <given-names>C.</given-names>
            <surname>Burkart</surname>
          </string-name>
          , et al.
          <article-title>Use cases, success criteria and usage scenarios</article-title>
          .
          <source>GET Service deliverable report D1.2</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>