<!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>Declare: A Tool Suite for Declarative Workflow Modeling and Enactment</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Michael Westergaard?</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fabrizio M. Maggi??</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Mathematics and Computer Science, Eindhoven University of Technology</institution>
          ,
          <country country="NL">The Netherlands</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Declare adheres to the declarative workflow modeling paradigm, where, instead of modeling allowed behavior and explicit choices, users model disallowed behavior. This makes it easier to model loosely structured processes. Without appropriate precautions, however, users are less supported in choosing which actions lead to the desired endresult. The goal of Declare is to ensure flexibility when modeling loosely structured processes and, at the same time, to provide support for decision making during the execution. Declare consists of a Designer component for creating and verifying models, a framework which acts as a server for enacting models, and a Worklist, which allows users to see and pick tasks to perform. Declare can act as a client of the operational support service in ProM, which makes it possible to guide users towards desired goals, to obtain statistics about an executed process, and to monitor a running case. In addition to this, a ProM plug-in has been also implemented that allows for the discovery of Declare models from logs.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>is forbidden, declarative models are “open” and tend to offer more possibilities
for execution.</p>
      <p>
        Declare [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is based on the declarative paradigm and supports flexibility. In
addition, it also supports decision making by providing users with
recommendations during the process execution. In this way, users can balance flexibility
and support and decide the right trade-off between them. The version of Declare
used here improves on previous versions by increasing the speed of analysis by a
factor of up to 500.000, making it viable to construct and enact models of
reallife size [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Furthermore, Declare is now modular, which allows programmers to
construct tools relying or communicating with parts of the Declare tool suite.
      </p>
      <p>In the screenshot in Fig. 1, we see the Declare Designer with a loaded model
consisting of a number of tasks and constraints. Here, tasks are shown as
rectangles (e.g., Money) and constraints as arcs between them (e.g., response between
Low Risk and Bonds).</p>
      <p>The model in Fig. 1 models a simple stock investment strategy and contains
tasks related to that, such as getting Money, purchasing Stocks or Bonds, and a
desire for Low Risk and High Yield. The constraints restrict the allowed behavior.
The constraint alternate response from Money to Bonds and Stocks reflects that
if you get money, you should invest it (in Bonds or Stocks). The precedence
constraint between Stocks and High Yield models that only if you invest in stocks
can you subsequently get high yield (but there is no guarantee). The not
coexistence between Bonds and High Yield states that you can never get high yield
if you invest in bonds. Finally, the response constraint between Low Risk and
Bonds states that if you want low risk, you must invest in bonds.</p>
      <p>Declare supports constructing such models using a graphical editor, the
Declare Designer. The Designer can also verify that a model is consistent. Suppose,
for instance, we add to the model in Fig. 1 a constraint saying that if we want
Low Risk we must subsequently obtain High Yield. Declare can then detect that in
the resulting model Low Risk can never be executed (as we subsequently have to
execute both Bonds and High Yield, which is not allowed by the not co-existence
constraint). Declare is also able to pinpoint the exact reason of the inconsistency
as shown in Fig. 2. This is possible as Declare has a formal semantics, realized by
associating with each constraint an LTL formula, which can be used to translate
a Declare model to a finite automaton for analysis.</p>
      <p>We can also use that automaton to enact the model, ensuring that we never
execute events that would violate constraints. Enactment is done using the
Declare Framework as the backend server and the Declare Worklist as the user
client. When enacting a Declare model, one or more constraints may be
temporarily violated. This is reported to the user, who can take appropriate actions.
For instance, in Fig. 3, we see an execution where we have just obtained money.
The constraint alternate response is temporarily violated, shown using orange
color instead of green (used for satisfied constraints). To satisfy the temporarily
violated constraint, the user can execute Bonds or Stocks. Note also that all tasks
except High Yield can be executed. High Yield is disabled because its execution
would violate the constraint precedence.</p>
      <p>
        Due to the declarative nature of the Declare models, it is not always easy
to foresee the effects of choices during the execution of a process. To guide
users in the decision-making task, it is possible to integrate Declare with the
operational support service in ProM [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. An operational support provider can
give, for instance, recommendations to increase the chances of reaching a desired
goal. In the example in Fig. 1, a user may want High Yield, but inadvertently
execute Low Risk, even though this permanently disables High Yield (as Bonds
must subsequently be executed, which conflicts with High Yield). In this case, to
achieve the desired goal, an advisor could suggest buying stocks. The user can
choose to adhere to the advise or to ignore it. In Fig. 4, we see a simple example
of the operational support client in Declare. The Stock Advisor provider suggests
executing the task Stocks in order to later achieve the goal of high yield. The
operational support service makes also it possible to obtain statistics about a
running instance (for instance, to get the average time spent for each task) and
to compare this with similar previous executions.
      </p>
      <p>Using the operational support service, it is also possible to monitor a
running process w.r.t. a given Declare model and get health information about it.
This is completely orthogonal to the Declare Worklist application. In this case,
the Monitor only observes the behavior of a process which executes
independently and detect possible violations. In Fig. 5, we see the Declare Monitor in
action. Here, 4 instances of our example process are being executed (as shown
by instances Smith, Westergaard, Brown, and Maggi). The Monitor provides
at-aglance information about the health of all instances, by adding the text Warning
in red after an instance if it has violated constraints. In the example in Fig. 5,
the instance Brown violates the precedence constraint after executing High Yield.
The status of each constraint is updated after each executed event (displayed on
the horizontal axis). We additionally get a measure of the overall health of the
instance at the top. We see that violating the precedence constraint lowers the
health to 0.69. Furthermore, the Diagnostics panel provides users with additional
information about violated constraints.</p>
      <p>
        As well as manually creating a Declare model using the Designer, users can
also discover models from logs using the Declare Miner [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. This can be useful,
for instance, for monitoring processes based on historical data.
      </p>
      <p>
        Declare is an advanced prototype, which supports models of real-life size.
The Declare Miner and the Monitor have been used in the Poseidon project 1 to
monitor sea vessels. In particular, in [
        <xref ref-type="bibr" rid="ref2 ref3">2,3</xref>
        ], we show how it is possible to construct
1 http://www.esi.nl/short/poseidon/
      </p>
      <p>Declare models from real-life historical data and monitor live data w.r.t. to
the mined model. We consider Declare stable enough for evaluating declarative
approaches. Declare is open source (licensed under the GNU Public License).
Binaries and source code can be obtained from its homepage at declare.sf.net.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1. Declare webpage.
          <source>Online: declare.sf.net.</source>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>F.M.</given-names>
            <surname>Maggi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Montali</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Westergaard</surname>
          </string-name>
          , and
          <string-name>
            <surname>W.M.P. van der Aalst. Monitoring</surname>
          </string-name>
          <article-title>Business Constraints with Linear Temporal Logic: An Approach Based on Colored Automata</article-title>
          .
          <source>In Proc. of BPM</source>
          , LNCS. Springer-Verlag,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>F.M.</given-names>
            <surname>Maggi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.J.</given-names>
            <surname>Mooij</surname>
          </string-name>
          , and
          <string-name>
            <surname>W.M.P. van der Aalst.</surname>
          </string-name>
          <article-title>User-Guided Discovery of Declarative Process Models</article-title>
          .
          <source>In 2011 IEEE Symposium on Computational Intelligence and Data Mining</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>M.</given-names>
            <surname>Pesic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Schonenberg</surname>
          </string-name>
          , and
          <string-name>
            <surname>W.M.P. van der Aalst. DECLARE</surname>
          </string-name>
          :
          <article-title>Full Support for Loosely-Structured Processes</article-title>
          .
          <source>In Proc. of EDOC'07, page 287</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <article-title>Process mining webpage</article-title>
          .
          <source>Online: processmining.org.</source>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>M.</given-names>
            <surname>Westergaard</surname>
          </string-name>
          .
          <article-title>Better Algorithms for Analyzing and Enacting Declarative Workflow Languages Using LTL</article-title>
          .
          <source>In Proc. of BPM</source>
          , LNCS. Springer-Verlag,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>