<!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>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Gabriel Juhás</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tomáš Kováčik</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jakub Kovář</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Martin Kranec</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ľuboš Petrovič</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Faculty of Electrical Engineering and Information Technology, Slovak University of Technology in Bratislava</institution>
          ,
          <addr-line>Ilkovičova 3, 812 19 Bratislava</addr-line>
          ,
          <country country="SK">Slovakia</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>NETGRIF</institution>
          ,
          <addr-line>s.r.o., Slávičie údolie 106, 811 02 Bratislava</addr-line>
          ,
          <country country="SK">Slovakia</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>This paper summarizes the capabilities of the Netgrif Application Engine - a tool for interpreting Petri net based models enriched by data, roles and actions reacting to events on process and data. Proceedings of the Demonstration Resources Track, Best BPM Dissertation Award, and Doctoral Consortium at BPM 2021 co-located with the 19th International Conference on Business Process Management, BPM 2021, Rome, Italy, September 6-10, 2021 " gabriel.juhas@stuba.sk (G. Juhás); tomas_kovacik@stuba.sk (T. Kováčik); jakub.kovar@stuba.sk (J. Kovář); martin.kranec@stuba.sk (M. Kranec); petrovic@netgrif.com ( Petrovič) 0000-0001-8302-5112 (G. Juhás); 0000-0003-3157-8609 (T. Kováčik); 0000-0002-7775-3698 (J. Kovář); 0000-0002-9432-1344 (M. Kranec) © 2021 Copyright for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0). CPWrEooUrckResehdoinpgs IhStpN:/c1e6u1r3-w-0s.o7r3g CEUR Workshop Proceedings (CEUR-WS.org)</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Petriflow</kwd>
        <kwd>Petri nets</kwd>
        <kwd>process engine</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        The Netgrif Application Engine is the backbone of the Petriflow platform for process-driven
programming. Process-driven programming is an emerging paradigm that aims to build upon
the ideas of object-oriented programming (OOP), business process modeling (BPM),
eventdriven programming (EDP), and relational databases (RDB) in order to provide a low-code,
agile platform for the design, prototyping, development, and deployment of process-driven
applications [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        There are many process execution engines available, such as Camunda or Bonita. These
are BPMN-based and must therefore sufer the structural limitations imposed by the notation,
such as the inability to create non-freechoice constructs [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. During the last 30 years Petri
nets have shown a continuous popularity and durability as process modelling language. While
some process modelling languages were crossed with others or even disappeared, Petri nets
are continuously used as modelling language addressing various purposes in the context of
business processes [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. They emerged as a solid foundation for Business Process Management
research [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>Up to our knowledge there is no tool broadly used by commercial applications, that would use
Petri nets for process modelling. We believe that Petri nets deserve to have an extension, that is
not only accepted by the academic community (such as various types of high-level Petri nets
with tools that support them, such as CPN), but also is expressive enough and is easy-to-use,
so that it can be successfully used in commercial applications - only as much as is necessary
should be added.</p>
      <p>A short demonstration of most of the capabilities of the Petriflow platform, consisting of
creating a small process-driven application, including all the steps beginning with modeling,
adding data forms, introducing roles and actions, as well as deploying and demonstrating the
developed application both in a standard and a public anonymous setting can be seen in our
demonstration video at https://www.youtube.com/watch?v=iU1QGPUnXUs.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Features of the application engine</title>
      <p>Netgrif Application Engine (NAE) is the tool for deploying and running process-driven
applications written in Petriflow - a high level, Petri net based language for modeling and programming
of applications.</p>
      <p>
        Petriflow processes consist of a workflow model, roles, data and actions. As a workflow
model, Petriflow uses place/transition Petri nets enriched by reset arcs, inhibitor arcs and read
arcs.[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ][
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] Transitions of Petri nets represent tasks of workflow models. The Role layer defines
who can execute tasks. Data variables represent all attributes of a process instance, called a
case, during its life-cycle. Data variables associated with workflow tasks define data fields and
create task forms. Data variables or places can be associated with arcs to dynamically change
their weights, motivated by the concept of self modifying nets [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Workflow model, roles, data
variables and data fields defining task forms are stored in XML format. Actions are pieces of
Groovy code that define reactions to events on tasks (assign event, finish event, cancel event)
and events on data fields. Actions can trigger events and call external functions.
      </p>
      <p>NAE is composed of several building blocks. The core of the NAE is the Process Engine
Server, that enables us to:
• Upload, run and delete Petriflow processes
• Create, run and delete instances of processes
• Assign, finish and cancel tasks of process instances
• Read and save data variables
• Execute actions
This core is extended with various modules that enhance its functionality in diverse ways.</p>
      <p>The Rule Engine is the first of these extensions. The motivation for the creation of this
module was, to add or remove rules to the Rule Engine without the need to deploy updated
versions of the afected processes. Another big advantage of the Rule Engine is that sometimes
there are business requirements that span across multiple diferent processes and you want to
satisfy them in a centralised way. The Rule Engine allows you to specify if-then decision rules
written in MVFLEX expression language (MVEL). Whenever an event in the Process Engine
Server is triggered, it checks the Rule Engine for any rules with satisfied conditions for the
event. In such a case, the Rule Engine executes the then statement of the rule. The statements
are Petriflow actions and can trigger additional events in the Process Engine Server. The Rule
Engine is based on Drools.</p>
      <p>The second extension is the Process Engine Client which provides an Angular based user
interface to the Process Engine Server. The client communicates with the server via a REST API.
The process engine client consists of a library of Angular components, that provide integration
with most of the capabilities of the Process Engine Server. The most important capabilities
include the task list, that displays the available tasks to the user and allows them to interact
with them by changing their state, filling their data and applying validations to user input.
Another very important capability is the public view, that allows anonymous users to create
instances of public processes and to execute tasks of these instances. The Petriflow processes
can be designed in such a way that only a part of the model is publicly available and the data
iflled by the anonymous users can then be processed by an internal staf.</p>
      <p>The given extension can be used with an already pre-made design that generates customisable
views using configuration files, alternatively you can define your own library of components
with your own design, which you can use in place of the Process engine client. Since the Process
Engine Server has a published REST API, you do not need to restrict yourself to using our
implementation of the Process Engine Client. The Process Engine Server can be used on its
own and can be integrated with any technology and environment. This architecture allows the
users of our tools to choose what is best for their needs, whether it is just an environment for
running pure Petriflow based application, or running them in a customised environment with
special, custom made, features, or using the Process Engine Server as an addition to an already
established software environment.</p>
      <p>The Process Engine Server, the Rule Engine, the Process Engine Client together with a set
of predefined processes for managing roles, users, authentication and authorization of users
and deploying of Petriflow processes is provided as a Default Process Driven Application. The
Default Process Driven Application allows administration of processes by deploying and deleting
the processes, invitation of users and management of user roles. It ofers the functionality of
registering users. For registered users, it ofers the functionality of the task list, where they can
assign and perform the tasks associated with one of their roles. For anonymous users, it ofers
the ability to fill public task forms of public processes and to access the instances of the public
processes via the ID of the process instance.</p>
      <p>A demo of the Netgrif Process Driven Application, consisting of the Process Engine Server
together with the predefined Process Engine Client, where you can deploy your Petriflow
processes and execute the process instances, is available free of charge for noncommercial use
at https://demo.netgrif.com/.</p>
      <p>Introduction materials, how-to articles and tutorials explaining the principles of the Petriflow
language, as well as modelling and development guides can be found at https://netgrif.com/
started/.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Use cases of the Petriflow platform</title>
      <p>The main use case of the low code Petriflow platform is its capability of creating rich process
based, easily configurable applications. An advantage and use case of the platform in an
academic setting, is the ease of illustrating the versatility of Petri nets as a platform for business
process modelling and process based application development, without the need to introduce
additional modelling formalisms to the students, such as BPMN.</p>
      <p>
        The programming language Petriflow, as well as our ideals and techniques of process-driven
programming are being thought as part of a masters degree curriculum at the Slovak University
of Technology in Bratislava. During the first half of the course the students are introduced to the
Petriflow language and the concepts of process-driven programming. The course builds on top
of previous courses that have introduced Petri nets, modelling, object-oriented programming
and various server and client side frameworks, that help them get deeper understanding of the
entire application engine stack [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>
        The second half of the course focuses on group work and allows the students to go through
the whole life cycle of the digital transformation for their chosen use case. They create process
models, add roles and associate them with the tasks, add data, add actions for computation
and inter-process communication between process instances, and finally deploy the processes
and create filters of the cases and/or task as menu items, resulting in the final application. The
groups of students are capable of creating complex applications in just a few weeks, which
highlights the advantages of the Petriflow platform for rapid development and its huge potential
for business application [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Since 2018, when the Petriflow language was introduced into
the course, over 350 students have participated in the course and have created more than 60
process-driven applications.
      </p>
      <p>
        The best students are ofered participation via student jobs in real projects of digital
transformation for real customers, where they help the experienced professionals to deliver Petriflow
based applications. The students also regularly participate in meetings with business users of
the developed applications [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. About 30 students have been a part of this initiative, many of
which have been ofered full-time positions after graduating from the university.
      </p>
      <p>In total, 10 diferent customers participated in the project as partners, including insurance
companies, leasing companies, an electricity distribution company, a media broadcasting company
and a healthcare provider.</p>
      <p>During the second wave of the COVID-19 pandemic the Slovak government introduced
weekly antigen testing to fight the spread of the virus. The capacity for testing was provided
by mobile testing sites. An application was needed for the management of the testing sites,
medical teams, scheduling of testing days and reporting of the results to the National Center
for Health Information. An application that provides this functionality called Arthur has been
developed and deployed into production with the help of the Petriflow platform in just 12 days.</p>
      <p>
        All these projects were implemented using the Petriflow language and the Netgrif Application
Builder and run in the Netgrif Application Engine in production [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], processing over 100 million
instances of the various business process. NAE is successfully used by Netgrif partners to
develop various other applications.
      </p>
      <p>More information about the use cases of the tool can be found online at https://netgrif.com/
case-studies/.</p>
    </sec>
    <sec id="sec-4">
      <title>4. Conclusion</title>
      <p>In this paper, we presented the Netgrif Application Engine a platform, that enables the creation
of rich process based customisable applications with the use of the low-code language Petriflow.
The platform aims to be an ambassador for the use of Petri net based modelling languages not
only in academical, but also in commercial setting.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>G.</given-names>
            <surname>Juhás</surname>
          </string-name>
          , Process-driven programming,
          <year>2021</year>
          . URL: https://netgrif.com/ process-driven-programming/.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>W. van der Aalst</surname>
          </string-name>
          ,
          <article-title>On the representational bias in process mining, in: 2011 IEEE 20th International Workshops on Enabling Technologies: Infrastructure for Collaborative Enterprises</article-title>
          , IEEE,
          <year>2011</year>
          . URL: https://doi.org/10.1109/wetice.
          <year>2011</year>
          .
          <volume>64</volume>
          . doi:
          <volume>10</volume>
          .1109/wetice.
          <year>2011</year>
          .
          <volume>64</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A.</given-names>
            <surname>Koschmider</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Oberweis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Stucky</surname>
          </string-name>
          ,
          <article-title>A petri net-based view on the business process lifecycle</article-title>
          ,
          <source>Enterprise Modelling and Information Systems Architectures</source>
          (
          <year>2018</year>
          ) Vol
          <volume>13</volume>
          (
          <year>2018</year>
          ). URL: https://www.emisa-journal.org/emisa/article/view/192. doi:
          <volume>10</volume>
          .18417/EMISA.SI.
          <source>HCM.4.</source>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>W. M. P. van der Aalst</surname>
          </string-name>
          ,
          <article-title>Business process management as the “killer app” for petri nets</article-title>
          ,
          <source>Software &amp; Systems Modeling</source>
          <volume>14</volume>
          (
          <year>2014</year>
          )
          <fpage>685</fpage>
          -
          <lpage>691</lpage>
          . URL: https://doi.org/10.1007/ s10270-014-0424-2. doi:
          <volume>10</volume>
          .1007/s10270-014-0424-2.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>R.</given-names>
            <surname>Lorenz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Desel</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Juhás, Models from scenarios</article-title>
          ,
          <source>in: Transactions on Petri Nets and Other Models of Concurrency VII</source>
          , Springer Berlin Heidelberg,
          <year>2013</year>
          , pp.
          <fpage>314</fpage>
          -
          <lpage>371</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -38143-
          <issue>0</issue>
          _9. doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -38143-
          <issue>0</issue>
          _
          <fpage>9</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>G.</given-names>
            <surname>Juhás</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Lorenz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Mauser</surname>
          </string-name>
          ,
          <article-title>Complete process semantics for inhibitor nets</article-title>
          ,
          <source>in: Petri Nets and Other Models of Concurrency - ICATPN 2007</source>
          , Springer Berlin Heidelberg,
          <year>2007</year>
          , pp.
          <fpage>184</fpage>
          -
          <lpage>203</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>540</fpage>
          -73094-1_
          <fpage>13</fpage>
          . doi:
          <volume>10</volume>
          .1007/ 978-3-
          <fpage>540</fpage>
          -73094-1_
          <fpage>13</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>R.</given-names>
            <surname>Valk</surname>
          </string-name>
          ,
          <article-title>Self-modifying nets, a natural extension of petri nets</article-title>
          ,
          <source>in: Automata, Languages and Programming</source>
          , Springer Berlin Heidelberg,
          <year>1978</year>
          , pp.
          <fpage>464</fpage>
          -
          <lpage>476</lpage>
          . URL: https://doi.org/10. 1007/3-540-08860-1_
          <fpage>35</fpage>
          . doi:
          <volume>10</volume>
          .1007/3-540-08860-1_
          <fpage>35</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>A.</given-names>
            <surname>Juhásová</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Juhás</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Molnár</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ondrišová</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Mažári</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <article-title>Mladoniczky, IT induced innovations: Digital transformation and process automation</article-title>
          ,
          <source>in: 2019 17th International Conference on Emerging eLearning Technologies and Applications (ICETA)</source>
          , IEEE,
          <year>2019</year>
          , pp.
          <fpage>322</fpage>
          -
          <lpage>329</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>