=Paper= {{Paper |id=Vol-3388/paper4 |storemode=property |title=The DISME low-code platform - from simple diagram creation to system execution |pdfUrl=https://ceur-ws.org/Vol-3388/paper4.pdf |volume=Vol-3388 |authors=Vitor Freitas,Duarte Pinto,Valentim Caires,Leonardo Tadeu,David Aveiro |dblpUrl=https://dblp.org/rec/conf/eewc/FreitasPCTA22 }} ==The DISME low-code platform - from simple diagram creation to system execution== https://ceur-ws.org/Vol-3388/paper4.pdf
             The DISME low-code platform - from simple diagram creation to
             system execution
             Vitor Freitas 1, Duarte Pinto 1, Valentim Caires 1, Leonardo Tadeu 1 and David Aveiro 1,2,3
             1 ARDITI - Regional Agency for the Development of Research, Technology and Innovation, 9020-105 Funchal, Portugal
             2 NOVA-LINCS, Universidade NOVA de Lisboa, Campus da Caparica, 2829-516 Caparica, Portugal
             3 Faculty of Exact Sciences and Engineering, University of Madeira, Caminho da Penteada 9020-105 Funchal, Portugal



                            Abstract
                            An overview of the Dynamic Information System Modeller and Executor, an enterprise
                            engineering, DEMO based, open source, low code platform with an Adaptive Object Model
                            approach for workflow management in organizations. An alternative take, seeing an
                            organization as a living organism, thus providing the tools for instant change in the processes
                            to immediately reflect on their execution. We detail the multiple components of the System
                            Modeller and how they interconnect with each other to produce the system executor that can
                            be used by users for their day-to-day workflow in their organizations.

                            Keywords 1
                            low code platform, enterprise engineering, DEMO


             1. Introduction
             The Dynamic Information System Modeller and Executor (DISME) is a low code open source
             software platform that has DEMO methodology [1] as its foundation. It supports the production
             of collaborative-based organizational models and diagrams for the specification of its processes,
             information flow, responsibilities of both human and software, rules and other kinds of
             organizational artifacts.
                 These models and diagrams provide an up to date “picture” of the “organizational self” at any
             time and collaboratively, guiding its participants in: (1) supporting the perception of the global
             reality of the organization; (2) supporting the definition and execution of their operational work
             and; (3) supporting the creative process for organizational change.
                 DISME platform diverges from the usual low code approach because, instead of generating
             code for a static version of the organizational processes, it treats the organization as a living
             system, basing itself on the Adaptive Object Model [2], [3]. Models can be created, parameterized
             and can be made live immediately.
                 To achieve this, DISME has two main functional interfaces: (1) the System Modeler, that deals
             with the specification of the system through different diagrams, forms and tables; and (2) the
             System Executor that handles daily execution of processes and information flow, according to the
             specifications done in the System Modeller and the current state of the live information system
             of the enterprise running it.
                 The System Modeler in turn, can be divided into five main components:
                  1. Diagram Editor – where users can create (and/or view) a visual representation of the
                     organization using DEMO models and then use those models to generate a great deal of
                     the necessary content needed for generation of the organizational flow,
             1
              CIAO! Doctoral Consortium, EEWC Forum 2022, November 2022, Leusden, The Netherlands
             EMAIL: vitor.freitas@arditi.pt (V. Freitas); duarte.nuno@arditi.pt (D. Pinto); valentim.caires@arditi.pt      (V. Caires);
             leonardo.tadeu@arditi.pt (L. Tadeu) daveiro@uma.pt (D. Aveiro)
             ORCID: 0009-0002-0667-5749 (V. Freitas); 0000-0002-8451-5727 (D. Pinto); 0000-0002-0871-7212 (V. Caires); 0009-0005-0424-
             6301 (L. Tadeu) 0000-0001-6453-3648 (D. Aveiro)
                         ©️ 2022 Copyright for this paper by its authors.
                         Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).

                         CEUR Workshop Proceedings (CEUR-WS.org)




Copyright © 2022 for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).
     2. System Specifier – the users are able to manage and shape each process of the
         organization by creating or editing transactions, their relationships and conditions and
         their associated documental support (like a form or need for a documento upload). Both
         the transactions and relations can be (almost) in their entirety inferred from the models
         diagram editor in correctly modeled, leaving the users to just fine tune their associated
         facts.
     3. Action Rules Management – where users can specify how the system handles events that
         the actors have to respond to (business rules) and the work instructions regarding the
         execution of production acts.
     4. Forms management – where users can visually create the templates for what the actors
         need to fill in any step of a transaction and then associate those forms to those transaction
         steps.
     5. Dynamic Query management – where users can obtain query results in dynamic and user-
         friendly graphical interface using filters and basic operators to support satisfying their
         information needs.
    The System Executor has just one main component, the Dashboard, where the users can
navigate what is currently defined for each process according to their roles and permissions as
well as be used to assign said roles and permissions and delegate tasks on other users.
    To support all of this, DISME has a database heavily influenced by the DEMO way of thinking
trying to capture and map what is the essence of an organization workflow but differing from the
traditional approach as it does not abstract from the infological and datalogical aspects. While the
database in itself is not tied to any specific way of working or tooling, the system still tries to offer
the needed support by being open source and already integrated with free tools while also
facilitating the integration to allow organizations to adapt it to their needs.
    The database also follows the Type Square pattern [2] in order to allow for a clear separation
of concerns regarding the system modeling and its execution.
    Implementation wise, the latest iteration of DISME uses PHP (Laravel Framework2) on the
backend, and in the front-end Typescript (Angular) to provide immediate feedback on any change
by its users.
    In the following sections we share an overview of DISME and the aforementioned components
as well as current and future work.

2. System Modeller
The System Modeller is the “back end” of DISME where all the system specification and
parameterization can be done by someone with knowledge of the organizational processes.
   As mentioned before, it can be divided into five different components (seven if we account for
smart contracts component and the Pages/Apps component still in their early stages) that
together allow for the complete parameterization for the runtime environment as well as for
increasing awareness of the organization (being it though the models, visual action rules or
reporting)
   We now explain each of the components that constitute the System Modeller at each
subsection.

       2.1. Diagram Editor
The diagram editor of DISME was inspired in the UEAOM [4] and uses drawio 3 (an open-source
client-side editor for general diagramming) as a starting point.
    This tool serves the purpose of presenting the visual representation of the implemented
diagrams in DISME while being a fully functional editor and also to facilitate the design of new
processes in a visual fashion converting (most of) them in an automated way into the database

   2
       Laravel Framework - https://laravel.com
   3
       Draw.io - https://github.com/jgraph/drawio
correspondents, instead of doing it in the System Specifier, by creating transactions and
establishing connections.




Figure 1: Task Diagram example in DISME’s Diagram Editor.

    In the Diagram Editor tool users have access to the traditional DEMO way of working diagrams
as well as the proposed alternative notations for the process model in Figure 1 presented in [5]
and the Fact Model in Figure 2 presented in [6]. Once the models are created users are able to
convert their diagrams into the corresponding entries in the System Model in DISME’s database.
It is also possible, after designing (or editing) a process using the System Specifier, that users can
also see their visual representation (automatically generated) in the diagram editor.




Figure 2: Fact Diagram example in DISME’s Diagram Editor.

    2.2. System Specifier
In the System Specifier, users are able to create/edit, in a table/forms based way, all model
elements, having no need for any specific programming skill. They need only some basic
knowledge of enterprise engineering modelling which is close to the “language / representation”
used within organizations.
   The System Specifier has the following sub-components:
   Users Management – where new users can be created as well as current users’ data can be
changed, or users can be associated with roles.
   Roles Management – where new organizational roles can be created or edited as well as
assigned to users and to transactions. An organizational role can be associated with one
transaction as executor and to several as an initiator.
   Process Management – where processes are defined and modified. These processes are
instantiated as runtime processes that a particular organization covers in its business area. The
purpose in this component is to define the structure that the System Executor will then use to
instantiate the flow of transactions that users participate in to accomplish their organizational
goals.
    Transaction Management – in this component, one specifies the transactions as traditionally
captured in a DEMO approach. A transaction type needs to be associated with a process type,
where instances of that transaction will be run by the system executor as part of the respective
process instances.
    Entity Management – where entity types (corresponding to DEMO’s fact model classes) are
created and modified. By specifying a set of entity types one is basically defining the main
business concepts or, in other words, the concrete enterprise database tables.
    Property Management – where the property types are defined and associated with the
corresponding entity type they belong to. These property types, amongst other things, have a
value type associated with them (text, int, enum, etc.).
    Allowed Value Management – when the value type of a property is enum, it is necessary to
also manage it by creating the possible values for the enumeration.
    Units Management – units are another of the options that may be associated with a property.
Their management (creation and modification) is done at a different place because the same units
and their symbols (like for currency ($, €, …) or weight (kg, pounds, …)) will often be transversal
to all properties that use them.
    Causal Links – where the causal rules (as in DEMO) between transactions can be set. In other
words, the connection between transactional acts that automatically originate the start (request
transaction act) of another transaction. With these rules, the users at the system execution don't
need to manually start a subsequent transaction in the process, they are automatically started
following the defined process flow.
    Waiting Links – where the causal rules (as in DEMO) between transactions can be set. These
are set for specific transaction acts that are only allowed to continue in the flow of their
transaction depending on the result of another specific transaction act.
    It is to be noted that most of the specifications above will be possible to be made (some
automatically) on the Diagram Editor, saving users much precious time. Nevertheless, having a
simple form based interface to specify these elements is handy in different circumstances. The
components above allow one to map most of the organization system elements but not in their
entirety as there are no business rules applied to them nor the interface with the users. For these
more intricate and complex specifications, we developed the components presented next.

    2.3. Action Rules Management
The Action Rules Management component in DISME is used to create specifications of process
logic, as well as different kinds of inputs and outputs with or without live user intervention. They
follow the general principle of the Action Model of DEMO [7] .
    The general proposed way in DEMO to represent an action rule is  
. The event part specifies what event (or set of concurrent events) is responded
to. The assess part in an action rule is divided in three sections, corresponding with the three
validity claims: the claim to justice, the claim to sincerity, and the claim to truth. And the final
part, the response, is divided in an if clause that specifies what action has to be taken if the actor
considers complying with the event to be justifiable, and possibly what action must be taken if
this is not the case. This way of formulating action rules allows the performer to deviate from the
‘rule’, if he/ she thinks this is justifiable (and for which he/she will be held accountable).
    We considered this way of Action Rules Specification to be somewhat ambiguous because,
although it uses a structured English syntax similar to the one used in Semantics of Business
Vocabulary and Rules [8] it does so in an incomplete way that does not contain all the needed
ontological information to derive the implementation from it. For example, it lacks a way to deal
with sets of actions or operators. This set of rules was also complex by containing mostly
unneeded specifications of three types of assessment, the justice, sincerity and truth. For these
reasons, the approach taken to the Action Rules component in DISME was the one proposed in
[9].
    From an implementation standpoint, after analyzing the open-source options that could be
used to specify Action Rules in a user-friendly way, the Blockly library was chosen.
   Blockly provides a visual code editor to web and mobile apps. The Blockly editor uses
interlocking, graphical blocks to represent code concepts like variables, logical expressions,
loops, and more. It allows users to apply programming principles without having to worry about
syntax or the intimidation of a blinking cursor on the command line.
   The goal is for the end-user to specify the action rules for the business case at hand without
needing to have programming knowledge and in a visual manner. An example of a business rule
built with Blockly can be seen in Figure 3.




Figure 3: Blockly action rule to deal with the request of a rental contract.

   The specified action rules are parsed and stored in DISME’s database and are dynamically
interpreted by DISME’s execution engine according to the initiatives of users and/or external
systems. Each action rule can have one or more actions. These actions occur in the context of a
transaction type at the activation of a particular transaction state. Each transaction type and
transaction state can perform multiple actions, but these actions belong to a single action rule.
   Actions must be of a certain type which will determine the expected behavior of the system.
The execution of these actions is always in sequence, according to the current flow of an action
rule. The currently allowed action types for are the following;
    ●   user_input - An action type of user input means that a user must fill some information
        inside a form. This action type is always executed through the presentation of a form with
        fields where a user must fill or choose (depending on the field type) information.
    ● user_output - An output information presented in the dashboard to a user/client through
        notifications or popups.
    ● assign_expression - With this action the engine can automatically save/write a value to
        a specific property of a specific entity.
    ● causal_link - The main function of this action is to generate a new transaction instance
        or to change the t_state of the current transaction.
    ● if - This type is used for specifying one or more statements to execute depending on the
        result of a condition evaluation. After this evaluation, it should perform one or more
        actions depending on the result. For example, with this type, we can control the action
        flow of a transaction instance.
    ● then - This action is used to aggregate multiple actions when the if expression evaluates
        to true.
    ● else - This action is used to aggregate multiple actions when the if expression evaluates
        to false.
    ● PRODUCE_DOCUMENT - This action generates a document based on a template
        previously created by the user. This template for the document can be dynamic, meaning
        that it can have variables inside that are properties from a form. EXTERNAL_CALL - the
        objective of this action is to interact with external systems using some API.
   This last set of Actions make use of most mentioned tables of DISME’s database to produce the
action rules that allow for the system to be executed as intended following the business logic. All
this as mentioned before can be created visually with the help of Blockly with little more than
some knowledge of logic expressions by dragging and dropping the pieces into the canvas
(Blockly options can be seen in Figure 4 and combining them together. The action rules
management component validates both syntax and semantics while being used, so the user is
guided through the whole process.




Figure 4: Blockly pieces that can be used for the creation of Action Rules.

   After the specification of all internal process logic and structure of inputs/outputs one needs
to deal with the interface. In DISME this is done with the Forms management component,
described next.

    2.4. Forms Management
In order to develop the Form Editor component, research was made about several plugins that
enabled a form editor to be integrated in an Angular frontend, the one currently being used in
DISME’s architecture. The plugin ultimately chosen was Form.io4, an open-source form editor that
was completely integrated into DISME, with the customization of several functionalities to satisfy
the concrete specifications and needs for its use in DISME.




Figure 5: Form creation using the integrated Form.io.

    The use of the Form tool is rather simple, the user selects the form field types they want to use
and adds it to a canvas in a place of its choosing. Because the type of information being collected
has already been specified in the Action Rules Management component, it is possible to already
give the user the exact kind(s) of input that can be used, thus accelerating the Form building
process, as seen in Figure 5. The layout of the form and how it should be presented to the final
users is totally up to its creator to design. Once the Form creator is happy with the Form, he can
just save it, and if the process is active, it automatically becomes available for execution.
    In Figure 6 we have an example of the form that was being created in Figure 5 being executed
in the dashboard.
    At this point an organization can already run their processes in the DISME. But there are still
more features that were developed to facilitate the use of DISME as a rich information system.
The capability of dynamically designing queries is one of them, presented next.




   4
       Form.io - https://form.io
Figure 6: Form to be filled on transaction step in the Dashboard.

    2.5. Dynamic search
The dynamic search component works in the way of specification of queries based on triplets of
property-operator-value, chosen by the user selecting the relevant options in a user-friendly
graphical interface and without the need of any programming experience (e.g. SQL). This
specification is done in 4 different steps. An explanation of each of these steps follows, together
with screenshots.
   Step 1. Select an Entity Type




Figure 7: Entity selection panel for Dynamic Queries.

   In the first step of the query specification process, one has to select the entity types that the
search will be focused on. The first selected entity type will serve as the “Base Table”, that is, as
the main entity type where we will be searching for entity values based on the filters defined
ahead. After selecting the Base Table, the entity types that are referenced by it will be available
for further selection. These entity types will be then treated as if they were "Related Tables". The
entity types that aren't related to the Base Table will have its checkbox disabled and can't be
selected. An example of the selection available in this step can be seen in the Figure 7.
    Step 2. Select Properties
    After having established the entity types that will be included in the search, it is time to define
the properties. At this step, for each entity type selected, there are 2 select boxes to define the
Included Properties and the Filter Properties. For each one, the options shown in the select box
are the properties belonging to that entity type. The Included Properties are the properties that
will be shown in the results table. The selected properties will define the result table's rows.
Important to mention, as well, that for each property selected in a Related Table's select box, there
must be a selected referenced property in the Base Table's select box. For example, again in
Figure 8, if we select the Rental Tariff per Day property in 'Car Type', we must select a property
from 'Rental' that references it. In this case, that means selecting the Car Type property. The same
can be applied to selecting the Location property in 'Branch'. In this case, as there are several
properties in 'Rental' that reference Branch, we must select which of these we want in the result.
In this case, the Contracted Pick-Up Branch was selected. Multiple referenced properties can also
be selected instead of just one.
    The Filter Properties are the properties that will be used in the restriction of the results of
queries based on triplets of property-operator-value. The properties selected in these select
boxes will then be available for specifying filters in Step 3. In case there are no properties selected,
the user can still choose to see the results' table, bearing in mind that there will be no filters
applied to any properties and consequently the results will include every instance of the Base
Table's entity type present in the database.




Figure 8: Property selection panel for Dynamic Queries.

    Step 3. Specify Filters
    After having selected the Filter Properties to consider, in this step one defines the concrete
filters to apply. This functionality was implemented taking advantage of the Angular Query
Builder component.
    Here, one can define rules and rulesets that will be applied to the main query to be run in the
database. It can be seen as rules being conditions and rulesets being sub-conditions. Whether one
or another is selected, a type has to be chosen - AND/OR. One must also define the property to be
filtered, the query's operator and the value that will restrict the result.




Figure 9: Filter application panel for Dynamic Queries.
   An example of its usage is shown in the Figure 9, where we have a parent query of type AND
that has 2 rules (conditions), and one ruleset (sub-condition). That ruleset defined is of type OR.
The query defined in the image can be translated to:
   [ Rental Tariff per day > 100 ] AND
   [ Driver's name = Vitoko OR Driver's name = Vitokooo ] AND
   [ Location != Lisbon ]
    Step 4. Query Results
    After having Steps 1, 2 and 3 completed, the user can choose to see the query results through
the button displayed in Step 3's image. When it is pressed, a table with the query results will be
shown, as can be seen in Figure 10, that refers to the results of the query applied in Step 3.
    Note that the Included Properties selected in Step 2 are what defines the table's rows. For Base
Table's properties, we have the table header as the name of the selected property. For Related
Table's properties, we have the table header as the junction of the selected property and the name
of the Base Table that it is referencing.




Figure 10: Dynamic query result.




Figure 11: Exported excel file from a Dynamic Query.

   Furthermore, it's also possible to export the results obtained in this step to an Excel File,
through the button that can be seen in the top right corner of the image above. An example of the
resulting file can be seen in Figure 11.

3. System Executor
All users, when logged in DISME are directed to the Dashboard where a list of the tasks they are
allowed to perform is shown.
    A user can execute a request to start some specific process or react to a certain process state
to which they were given authority and responsibility to do so – if some property/entity is
associated with that act the user will have to fill out a form, automatically generated based on the
previously specified parameters on the System Modeller.
    The Dashboard allows the users to control the flow and state of all process instances and data,
thanks to both the causal and waiting links that were specified in the respective modeling
functions and the data submitted by the users. The other main component of the System Executer
is the Execution Engine which is triggered by interactions on the Dashboard or certain foreseen
events in the system specification. For space reasons, in this paper we focus mostly on the
Dashboard.
       3.1. Dashboard
DISME dashboard was inspired by traditional BPM platforms that share the common goal, such
as: Camunda 5 , Bonita 6 , Process Maker 7, among others.
   This dashboard allows the initialization of processes, execution of tasks dependent on an
existing process, and allows for better management of pending, completed and delegated tasks,
as well as the continuation of pending tasks, whether they have been delegated or not as long as
under this user responsibility.




Figure 12: DISME Dashboard presentation for a user with processes, pending tasks, task statistics and
delegations.

   In Figure 12 we can see an example of a dashboard for a rent-a-car case on the management
side.
   In that menu we have a process control area for the process types that are defined. These
process types make up the set of processes that a particular organization covers in its business
area. The purpose of the process type is to define the structure that the system execution part of
the platform uses to create the instances of processes that occur within a company.




Figure 13: DISME Dashboard - list of initiated transactions for a user in the car rental process.

   Each Process Type is nothing but a collection of related transaction types. The purpose of these
process types is to define the structure that the system execution part of the platform uses to

   5
     Camunda - https://camunda.com
   6
     Bonita Platform - https://www.bonitasoft.com
   7
     Process Maker - https://www.processmaker.com
create the instances of processes that occur within a company. An example of a process type is
Rental that relates the following transaction types: Rental Contracting, Rental Payment, Car Pick-
Up, Car Drop-Off and Penalty Payment.
   In Figure 13 we have a dashboard example for that example with a user who is in the rental
process (in this particular case with multiple options, for showing purposes, but in reality would
only have the available ones clickable).
   Because there is a clear separation between the backend and frontend, all the information
used is gathered through the Laravel implemented rest API, so it is possible for any organization
to use an alternative customized layout or even integrate DISME process management (the
system execution logic) with their already existing tools through the use of a vast collection of
API endpoints.

4. Conclusions, ongoing and future work
DISME intends to be a disrupting offering in terms of low-code platforms with some clear
differentiators from most other options such as: the DEMO foundations or the Adaptive Object
Model approach. With DISME organizations don’t risk vendor lock in as everything it uses is open
source as is DISME itself. While still in development, the platform already offers a high degree of
working functionality. The first alfa version of the platform will be available on github soon8.
    Besides the previously presented components which are completed or nearing completion,
there are other important functionalities being worked on.
    One of those is the Electronic Document Management System component, based on Mayan
EDMS9 which offers features such as a REST API, optical character recognition, indexing and text
searching, metadata of the document, digital signatures, etc. This will allow richer management
of documental inputs and outputs in the platform.
    Another feature being worked on is the cockpit manager to allow the specification and use of
standalone pages or apps, including a mix and match of elements of other components, namely,
HTML blocks, forms, results of dynamic queries, process initiation, etc.
    We are also developing a Rapid REST API management component. It will allow the creation
of endpoints made available to external systems, to provide simple lists of data items or even the
results of complex queries or operations, as well as enacting internal tasks on the system based
on calls from external systems. Furthermore, it will also automatically scan data provided by
external APIs that our system can call and match with internal data,, facilitating the integration
of external information into our local system. This will be done by simple drag and drop
operations in a friendly GUI.
    Yet another feature being worked on is a Smart Contract generation and blockchain
integration component. This component will allow a high-level DEMO based way of specifying
smart contracts and a method for automatically generating smart contracts in Chaincode, using
Hyperledger Fabric as the blockchain platform. We are developing mapping from DEMO Action
Rules language to Hyperledger Chaincode using GO. This will facilitate the adoption of smart
contracts in business processes and contribute to enterprise interoperability supported by
blockchain technology. Taking advantage of having Blockly, already integrated with DISME for
the generation of Action Rules, we will be extending it to include the creation of Smart Contracts
in the business logic as an extension to those rules. This approach will not only reduce the manual
labor involved in the generation of the smart contracts but also reduce the likelihood of errors as
the blocky component already does both semantic and syntax validations.
    The near future work in the platform will be mostly in concluding the features being
implemented, fine-tuning the ones already implemented and guaranteeing their full
interoperability. The platform needs thorough testing which will be realized soon in the context
of two practical research projects, where DISME will be used to create an information system for
the respective organizations which are partners in these projects.

   8
       https://github.com/orgs/EnterpriseEngineeringLab/projects
   9
       Mayan EDMS - https://www.mayan-edms.com
5. References
[1] J. L. G. Dietz and H. B. F. Mulder, ‘The DEMO Methodology’, in Enterprise Ontology: A
    Human-Centric Approach to Understanding the Essence of Organisation, J. L. G. Dietz and H.
    B. F. Mulder, Eds., in The Enterprise Engineering Series. Cham: Springer International
    Publishing, 2020, pp. 261–299. doi: 10.1007/978-3-030-38854-6_12.
[2] J. W. Yoder, F. Balaguer, and R. Johnson, ‘Architecture and design of adaptive object-models’,
    SIGPLAN Not, vol. 36, no. 12, pp. 50–60, Dec. 2001, doi: 10.1145/583960.583966.
[3] J. W. Yoder and R. Johnson, ‘The Adaptive Object-Model Architectural Style’, in Software
    Architecture: System Design, Development and Maintenance, J. Bosch, M. Gentleman, C.
    Hofmeister, and J. Kuusela, Eds., in IFIP — The International Federation for Information
    Processing. Boston, MA: Springer US, 2002, pp. 3–27. doi: 10.1007/978-0-387-35607-5_1.
[4] D. Aveiro and D. Pinto, ‘Universal Enterprise Adaptive Object Model: A Semantic Web-Based
    Implementation of Organizational Self-Awareness’, Intell. Syst. Account. Finance Manag., vol.
    22, no. 1, pp. 3–28, 2015, doi: 10.1002/isaf.1363.
[5] D. Pinto, D. Aveiro, D. Pacheco, B. Gouveia, and D. Gouveia, ‘Validation of DEMO’s
    Conciseness Quality and Proposal of Improvements to the Process Model’, in Advances in
    Enterprise Engineering XIV, D. Aveiro, G. Guizzardi, R. Pergl, and H. A. Proper, Eds., in
    Lecture Notes in Business Information Processing. Cham: Springer International Publishing,
    2021, pp. 133–152. doi: 10.1007/978-3-030-74196-9_8.
[6] B. Gouveia, D. Aveiro, D. Pacheco, D. Pinto, and D. Gouveia, ‘Fact Model in DEMO - Urban
    Law Case and Proposal of Representation Improvements’, in Advances in Enterprise Engineering
    XIV, D. Aveiro, G. Guizzardi, R. Pergl, and H. A. Proper, Eds., in Lecture Notes in Business
    Information Processing. Cham: Springer International Publishing, 2021, pp. 173–190. doi:
    10.1007/978-3-030-74196-9_10.
[7] ‘DEMO Specification Language 4.6.1 – Enterprise Engineering Institute’. https://ee-
    institute.org/download/demo-specification-language-4-6-1/ (accessed Mar. 28, 2023).
[8] P. Bollen, ‘SBVR: A Fact-Oriented OMG Standard’, in On the Move to Meaningful Internet
    Systems: OTM 2008 Workshops, R. Meersman, Z. Tari, and P. Herrero, Eds., in Lecture Notes in
    Computer Science. Springer Berlin Heidelberg, 2008, pp. 718–727.
[9] D. Aveiro and V. Freitas, ‘A new Action Meta-Model and Grammar for a DEMO based low-code
    platform rules processing engine’, presented at the EEWC 2022, Leusden, Netherlands, Leusden,
    Netherlands, 2022. doi: Forthcoming.