SlideShare a Scribd company logo
1 of 49
Download to read offline
Diego Calvanese, Marco Montali, Fabio Patrizi, Andrey Rivkin
Modelling and In-Database
Management of Relational,
Data-aware Processes
The process-data
dichotomy problem
Complex systems
Number One (Jackson Pollock, 1950)
Two assets
process
data
The isolation
process
data
Is there a remedy?
process
data
Data-aware processes
Data-aware processes
• An “urban legend”
• Cons: no formal definition of the concept (only
a set of “recommendations”)
• Pros: very permissive and allow to attack the
dichotomy problem from various perspectives
Data-aware processes
process-centricdata-centric
Travel reimbursement in a
company
Financial
accounting
review
Employee
prepare
travel request
prepare
reimbursement
request
request
info
send
result
Travel
log data
Financial
accounting
review
Employee
prepare
travel request
prepare
reimbursement
request
request
info
send
result
Travel
log data
Travel reimbursement in a
company
Data
External
input
In database expert’s mind
External
input
Financial
accounting
review
Employee
prepare
travel request
prepare
reimbursement
request
request
info
send
result
Travel
log data
• We have a fixed storage…
• … and some process in mind
In database expert’s mind
Financial
accounting
review
Employee
prepare
travel request
prepare
reimbursement
request
request
info
send
result
Travel
log data
External
input
• We have a fixed storage…
• … and some process in mind
How to model, implement, and analyse this
DAP?
Relational data-aware processes
Setting:
• the database is given, and can be directly accessed and
updated by running processes
• builds on the previously proposed formalism of DCDSs
Desiderata:
• A representation of DCDSs fully embedded in SQL
• An execution engine running on top of an RDBMS + logging
functionalities
• Suitable for formal analysis
dapSL
data-aware process specification language
dapSL specification
data layer process layer
• A relational database
• Supported constraints:
PK, FK, CHECK
• Data updates via atomic
actions
• Control-flow via CA-rules
(determine when actions
can be executed)
• Data injections via
service calls
dapSL: modeling
Data layer uses the standard SQL DDL
CurrReq
ID Empl Dest Status
1 Bob NY submitd
2 Kriss Rome submitd
TrvlMaxAmnt
ID FID maxAmnt
- - -
“requests under process”
“maximum allowed
trip budgets”
{submitd,
acceptd,
reimbursed,
…}
FK_TrvlMaxAmnt_CurrReq
dapSL: modeling
“. . . examine an employee’s trip reimbursement request and, if
accepted, assign the maximum reimbursable amount to it . . . ”
CA-rules = SELECT queries with action signature references
dapSL. StartWF creates a new travel reimbursement request by picking a pending requests
the current DB. We represent this in dapSL as an action with three formal parameters, denot
pending request id, its responsible employee, and her intended destination:
SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest);
StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id;
INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi
Here, a new request is generated by removing from Pending the entry that matches the give
then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple
the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service
@genpk, returning a fresh primary key value.
ReviewRequest examines an employee trip request and, if accepted, assigns its maxim
reimbursable amount. The action can be executed only if a request in CurrReq actually exi
SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’
ENABLES RvwRequest(id, emp, dest);
RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id;
INSERT INTO CurrReq(id, emp, dest, status)
VALUES(id, emp, dest, @status(emp, dest));
INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt)
VALUES(@genpk(), id, @maxAmnt(emp, dest))}
dapSL: modeling
“. . . examine an employee’s trip reimbursement request and, if
accepted, assign the maximum reimbursable amount to it . . . ”
CA-rules = SELECT queries with action signature references
dapSL. StartWF creates a new travel reimbursement request by picking a pending requests
the current DB. We represent this in dapSL as an action with three formal parameters, denot
pending request id, its responsible employee, and her intended destination:
SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest);
StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id;
INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi
Here, a new request is generated by removing from Pending the entry that matches the give
then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple
the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service
@genpk, returning a fresh primary key value.
ReviewRequest examines an employee trip request and, if accepted, assigns its maxim
reimbursable amount. The action can be executed only if a request in CurrReq actually exi
SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’
ENABLES RvwRequest(id, emp, dest);
RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id;
INSERT INTO CurrReq(id, emp, dest, status)
VALUES(id, emp, dest, @status(emp, dest));
INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt)
VALUES(@genpk(), id, @maxAmnt(emp, dest))}
the rule
condition
the parametrised
action
dapSL: modeling
“. . . examine an employee’s trip reimbursement request and, if
accepted, assign the maximum reimbursable amount to it . . . ”
Actions = collections of parametrised INSERT’s/DELETE’s
pending request id, its responsible employee, and her intended destination:
SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest);
StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id;
INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submit
Here, a new request is generated by removing from Pending the entry that matches the given
then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple,
the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service
@genpk, returning a fresh primary key value.
ReviewRequest examines an employee trip request and, if accepted, assigns its maxim
reimbursable amount. The action can be executed only if a request in CurrReq actually exist
SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’
ENABLES RvwRequest(id, emp, dest);
RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id;
INSERT INTO CurrReq(id, emp, dest, status)
VALUES(id, emp, dest, @status(emp, dest));
INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt)
VALUES(@genpk(), id, @maxAmnt(emp, dest))}
• Use SELECT inside VALUES to get a bulk update
• @ to specify service call invocations
dapSL: modeling
“. . . examine an employee’s trip reimbursement request and, if
accepted, assign the maximum reimbursable amount to it . . . ”
Actions = collections of parametrised INSERT’s/DELETE’s
pending request id, its responsible employee, and her intended destination:
SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest);
StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id;
INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submit
Here, a new request is generated by removing from Pending the entry that matches the given
then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple,
the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service
@genpk, returning a fresh primary key value.
ReviewRequest examines an employee trip request and, if accepted, assigns its maxim
reimbursable amount. The action can be executed only if a request in CurrReq actually exist
SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’
ENABLES RvwRequest(id, emp, dest);
RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id;
INSERT INTO CurrReq(id, emp, dest, status)
VALUES(id, emp, dest, @status(emp, dest));
INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt)
VALUES(@genpk(), id, @maxAmnt(emp, dest))}
• Use SELECT inside VALUES to get a bulk update
• @ to specify service call invocations
formal
parameters
dapSL: execution semantics
CurrReq
ID Empl Dest Status
1 Bob NY submitd
2 Kriss Rome submitd
TrvlMaxAmnt
ID FID maxAmnt
- - -DB_state
Example 3. We focus on three tasks of the process in Example 1, showing their encodin
dapSL. StartWF creates a new travel reimbursement request by picking a pending requests
the current DB. We represent this in dapSL as an action with three formal parameters, denot
pending request id, its responsible employee, and her intended destination:
SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest);
StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id;
INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi
Here, a new request is generated by removing from Pending the entry that matches the give
then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple
the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service
@genpk, returning a fresh primary key value.
ReviewRequest examines an employee trip request and, if accepted, assigns its maxim
reimbursable amount. The action can be executed only if a request in CurrReq actually exi
SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’
ENABLES RvwRequest(id, emp, dest);
RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id;
INSERT INTO CurrReq(id, emp, dest, status)
VALUES(id, emp, dest, @status(emp, dest));
INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt)
VALUES(@genpk(), id, @maxAmnt(emp, dest))}
dapSL: execution semantics
CurrReq
ID Empl Dest Status
1 Bob NY submitd
2 Kriss Rome submitd
TrvlMaxAmnt
ID FID maxAmnt
- - -DB_state
Example 3. We focus on three tasks of the process in Example 1, showing their encodin
dapSL. StartWF creates a new travel reimbursement request by picking a pending requests
the current DB. We represent this in dapSL as an action with three formal parameters, denot
pending request id, its responsible employee, and her intended destination:
SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest);
StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id;
INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi
Here, a new request is generated by removing from Pending the entry that matches the give
then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple
the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service
@genpk, returning a fresh primary key value.
ReviewRequest examines an employee trip request and, if accepted, assigns its maxim
reimbursable amount. The action can be executed only if a request in CurrReq actually exi
SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’
ENABLES RvwRequest(id, emp, dest);
RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id;
INSERT INTO CurrReq(id, emp, dest, status)
VALUES(id, emp, dest, @status(emp, dest));
INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt)
VALUES(@genpk(), id, @maxAmnt(emp, dest))}
Query
dapSL: execution semantics
CurrReq
ID Empl Dest Status
1 Bob NY submitd
2 Kriss Rome submitd
TrvlMaxAmnt
ID FID maxAmnt
- - -DB_state
Example 3. We focus on three tasks of the process in Example 1, showing their encodin
dapSL. StartWF creates a new travel reimbursement request by picking a pending requests
the current DB. We represent this in dapSL as an action with three formal parameters, denot
pending request id, its responsible employee, and her intended destination:
SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest);
StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id;
INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi
Here, a new request is generated by removing from Pending the entry that matches the give
then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple
the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service
@genpk, returning a fresh primary key value.
ReviewRequest examines an employee trip request and, if accepted, assigns its maxim
reimbursable amount. The action can be executed only if a request in CurrReq actually exi
SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’
ENABLES RvwRequest(id, emp, dest);
RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id;
INSERT INTO CurrReq(id, emp, dest, status)
VALUES(id, emp, dest, @status(emp, dest));
INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt)
VALUES(@genpk(), id, @maxAmnt(emp, dest))}
InstantiateQuery
2 Kriss Rome
dapSL: execution semantics
CurrReq
ID Empl Dest Status
1 Bob NY submitd
2 Kriss Rome submitd
TrvlMaxAmnt
ID FID maxAmnt
- - -DB_state
Example 3. We focus on three tasks of the process in Example 1, showing their encodin
dapSL. StartWF creates a new travel reimbursement request by picking a pending requests
the current DB. We represent this in dapSL as an action with three formal parameters, denot
pending request id, its responsible employee, and her intended destination:
SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest);
StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id;
INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi
Here, a new request is generated by removing from Pending the entry that matches the give
then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple
the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service
@genpk, returning a fresh primary key value.
ReviewRequest examines an employee trip request and, if accepted, assigns its maxim
reimbursable amount. The action can be executed only if a request in CurrReq actually exi
SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’
ENABLES RvwRequest(id, emp, dest);
RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id;
INSERT INTO CurrReq(id, emp, dest, status)
VALUES(id, emp, dest, @status(emp, dest));
INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt)
VALUES(@genpk(), id, @maxAmnt(emp, dest))}
RunInstantiateQuery
2 Kriss Rome
RvwRequest(2,Kriss,Rome)
dapSL: execution semantics
CurrReq
ID Empl Dest Status
1 Bob NY submitd
2 Kriss Rome submitd
TrvlMaxAmnt
ID FID maxAmnt
- - -DB_state
Example 3. We focus on three tasks of the process in Example 1, showing their encodin
dapSL. StartWF creates a new travel reimbursement request by picking a pending requests
the current DB. We represent this in dapSL as an action with three formal parameters, denot
pending request id, its responsible employee, and her intended destination:
SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest);
StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id;
INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi
Here, a new request is generated by removing from Pending the entry that matches the give
then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple
the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service
@genpk, returning a fresh primary key value.
ReviewRequest examines an employee trip request and, if accepted, assigns its maxim
reimbursable amount. The action can be executed only if a request in CurrReq actually exis
SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’
ENABLES RvwRequest(id, emp, dest);
RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id;
INSERT INTO CurrReq(id, emp, dest, status)
VALUES(id, emp, dest, @status(emp, dest));
INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt)
VALUES(@genpk(), id, @maxAmnt(emp, dest))}
Service callsRvwRequest(2,Kriss,Rome)
dapSL: execution semantics
CurrReq
ID Empl Dest Status
1 Bob NY submitd
2 Kriss Rome submitd
TrvlMaxAmnt
ID FID maxAmnt
- - -DB_state
Example 3. We focus on three tasks of the process in Example 1, showing their encodin
dapSL. StartWF creates a new travel reimbursement request by picking a pending requests
the current DB. We represent this in dapSL as an action with three formal parameters, denot
pending request id, its responsible employee, and her intended destination:
SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest);
StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id;
INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi
Here, a new request is generated by removing from Pending the entry that matches the give
then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple
the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service
@genpk, returning a fresh primary key value.
ReviewRequest examines an employee trip request and, if accepted, assigns its maxim
reimbursable amount. The action can be executed only if a request in CurrReq actually exis
SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’
ENABLES RvwRequest(id, emp, dest);
RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id;
INSERT INTO CurrReq(id, emp, dest, status)
VALUES(id, emp, dest, @status(emp, dest));
INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt)
VALUES(@genpk(), id, @maxAmnt(emp, dest))}
Service callsRvwRequest(2,Kriss,Rome)
dapSL: execution semantics
CurrReq
ID Empl Dest Status
1 Bob NY submitd
2 Kriss Rome submitd
TrvlMaxAmnt
ID FID maxAmnt
- - -DB_state
Example 3. We focus on three tasks of the process in Example 1, showing their encodin
dapSL. StartWF creates a new travel reimbursement request by picking a pending requests
the current DB. We represent this in dapSL as an action with three formal parameters, denot
pending request id, its responsible employee, and her intended destination:
SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest);
StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id;
INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi
Here, a new request is generated by removing from Pending the entry that matches the give
then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple
the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service
@genpk, returning a fresh primary key value.
ReviewRequest examines an employee trip request and, if accepted, assigns its maxim
reimbursable amount. The action can be executed only if a request in CurrReq actually exis
SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’
ENABLES RvwRequest(id, emp, dest);
RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id;
INSERT INTO CurrReq(id, emp, dest, status)
VALUES(id, emp, dest, @status(emp, dest));
INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt)
VALUES(@genpk(), id, @maxAmnt(emp, dest))}
status(Kriss,Rome)=acceptd
maxAmnt(Kriss,Rome)=900
genpk()=10
Update!Service callsRvwRequest(2,Kriss,Rome)
dapSL: execution semantics
CurrReq
ID Empl Dest Status
1 Bob NY submitd
2 Kriss Rome acceptd
TrvlMaxAmnt
ID FID maxAmnt
10 2 900DB_state’
Example 3. We focus on three tasks of the process in Example 1, showing their encodin
dapSL. StartWF creates a new travel reimbursement request by picking a pending requests
the current DB. We represent this in dapSL as an action with three formal parameters, denot
pending request id, its responsible employee, and her intended destination:
SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest);
StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id;
INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi
Here, a new request is generated by removing from Pending the entry that matches the give
then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple
the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service
@genpk, returning a fresh primary key value.
ReviewRequest examines an employee trip request and, if accepted, assigns its maxim
reimbursable amount. The action can be executed only if a request in CurrReq actually exis
SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’
ENABLES RvwRequest(id, emp, dest);
RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id;
INSERT INTO CurrReq(id, emp, dest, status)
VALUES(id, emp, dest, @status(emp, dest));
INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt)
VALUES(@genpk(), id, @maxAmnt(emp, dest))}
status(Kriss,Rome)=acceptd
maxAmnt(Kriss,Rome)=900
genpk()=10
Towards implementing dapSL
• dapSL specification is maintained by the RDBMS
• Interaction is provided by a Flow Engine, which:
• executes calls to the RDBMS
• interplays with external services through a Service
Manager
vanese, Montali, Patrizi, Rivkin
DB
Engine
Flow
Engine
Service
Manager
Persistent Storage
DAPHNE system
DAPHNE
state
dapSL Spec.
RDBMS
...
user
input
web
service
Fig. 2: Conceptual architecture of DAPHNE
status of CurrReq is updated by calling service @status, that tak
me and a trip destination, and returns a new status value. Also, a new tu
reimbursable amount is added to TrvlMaxAmnt. To get the maximu
rvlMaxAmnt, we employ service @maxAmnt with the same argument
Reimb updates the current request by adding a compiled form wi
Three modalities of DAPHNE
Modeling and In-Database Management of Relational, Dat
Enactment
I I0
Enactment with history recall
t0 t1
. . . tn tn+1
Sta
s0
The three main usage modalities for DAPHNE, and ske
ructures stored within the DBMS
gement system (DBMS) to support its execution. The DB
ta relevant to the input dapSL model and supports, th
derlying DBMS, the application of a set of operation
dapSL actions. The Flow Engine constitutes the applicati
Enactment
n-Database Management of Relational, Data-Aware Processe
Enactment with history recall
t0 t1
. . . tn tn+1
State space construction
s0
s1
s2 s3
. . .
usage modalities for DAPHNE, and sketch of the corre
within the DBMS
DBMS) to support its execution. The DBMS takes care o
l, Data-Aware Processes 7
State space construction
s0
s1
s2 s3
...
Enactment with history recall
State space construction
“casually run the process”
“casually run the process
and record its execution”
“automatically generate
(all?) possible executions
for formal analysis”
Three modalities of DAPHNE
Modeling and In-Database Management of Relational, Dat
Enactment
I I0
Enactment with history recall
t0 t1
. . . tn tn+1
Sta
s0
The three main usage modalities for DAPHNE, and ske
ructures stored within the DBMS
gement system (DBMS) to support its execution. The DB
ta relevant to the input dapSL model and supports, th
derlying DBMS, the application of a set of operation
dapSL actions. The Flow Engine constitutes the applicati
Enactment
n-Database Management of Relational, Data-Aware Processe
Enactment with history recall
t0 t1
. . . tn tn+1
State space construction
s0
s1
s2 s3
. . .
usage modalities for DAPHNE, and sketch of the corre
within the DBMS
DBMS) to support its execution. The DBMS takes care o
l, Data-Aware Processes 7
State space construction
s0
s1
s2 s3
...
Enactment with history recall
State space construction
“casually run the process”
“casually run the process
and record its execution”
“automatically generate
(all?) possible executions
for formal analysis”
Unique database to represent all
the modalities!
Implementing three modalities
Idea: Use actual SQL and (its dialects) to represent
dapSL specifications in RDBMSs
Implementing three modalities
Idea: Use actual SQL and (its dialects) to represent
dapSL specifications in RDBMSs
Pros: doesn’t require special knowledge

+ can exploit various RDBMS features
Implementing three modalities
Idea: Use actual SQL and (its dialects) to represent
dapSL specifications in RDBMSs
Pros: doesn’t require special knowledge

+ can exploit various RDBMS features
Cons: specifying a workflow inside the RDBMS could
be quite complex
Implementing three modalities
features
Not the easiest way to specify your workflow inside t
RDBMS
Implementing three modalities
Problem #1: how to represent the whole system
evolution in the DB and respect integrity
constraints between relations over time?
Solution: use a clever encoding of relations into
tables that account for temporal and atemporal
parts
Implementing three modalities
CurrReq_raw
RID Empl Dest Status
4 Bob NY submitd
5 Kriss Rome submitd
6 Kriss Rome acceptd
TrvlMaxAmnt_raw
RID maxAmnt
15 900
CurrReq_log
state ID RID
2 1 4
2 2 5
3 2 4
3 2 6
TrvlMaxAmnt_log
state ID RID FID
3 10 15 2
FK_TrvlMaxAmnt_CurrReq
CurrReq
ID Empl Dest Status
1 Bob NY submitd
2 Kriss Rome acceptd
TrvlMaxAmnt
ID FID maxAmnt
10 2 900
FK_TrvlMaxAmnt_CurrReq
Implementing the modalities
Problem #2 how to model CA rules and actions?
Solution: represent the process layer using
stored procedures
Implementing the modalities
SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest);
StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id;
INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submit
Here, a new request is generated by removing from Pending the entry that matches the given
then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple,
the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service
@genpk, returning a fresh primary key value.
ReviewRequest examines an employee trip request and, if accepted, assigns its maxim
reimbursable amount. The action can be executed only if a request in CurrReq actually exist
SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’
ENABLES RvwRequest(id, emp, dest);
RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id;
INSERT INTO CurrReq(id, emp, dest, status)
VALUES(id, emp, dest, @status(emp, dest));
INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt)
VALUES(@genpk(), id, @maxAmnt(emp, dest))}
A compact Review Request action in dapSL
turns into…
Implementing the modalities
…
…
~250 lines total
Representing dapSL spec.
• How do we translate the specifications?
• Define an object model for dapSL using jOOQ,
including component-specific translators
Implementing the 3rd modality
• The state-space is in general infinite
Implementing the 3rd modality
• The state-space is in general infinite
• Use the finite-state abstraction technique of
DCDSs
• the abstraction can be automatically
constructed using DAPHNE (service) APIs
Implementing the 3rd modality
• The state-space is in general infinite
• Use the finite-state abstraction technique of DCDSs
• the abstraction can be automatically constructed
using DAPHNE (service) APIs
• The generated state space is stored in the DB
use SQL to run analytic queries
the same model for enactment and verification!
Connections with other
approaches
• dapSL is a front-end language for DCDSs
• We know how to relate DCDSs (and thus dapSL) to:
✓ GSM-based business artifacts
✓ -Petri nets equipped with resources and tokens
with abstract data
✓ recent variants of (colored) Petri nets equipped
with a DB storage
⌫<latexit sha1_base64="YGPqV/Iq5qj1Ohe4ayAdToTjy64=">AAAB6nicbZC7SgNBFIbPeo3rLWppMxgEq7Bro40YtLGMaC6QLGF2MpsMmZ1dZs4KYQn4AjYWitj6LvZ2vo2TS6GJPwx8/P85zDknTKUw6HnfztLyyuraemHD3dza3tkt7u3XTZJpxmsskYluhtRwKRSvoUDJm6nmNA4lb4SD63HeeODaiETd4zDlQUx7SkSCUbTWXVtlnWLJK3sTkUXwZ1C6/HQvHgGg2il+tbsJy2KukElqTMv3UgxyqlEwyUduOzM8pWxAe7xlUdGYmyCfjDoix9bpkijR9ikkE/d3R05jY4ZxaCtjin0zn43N/7JWhtF5kAuVZsgVm34UZZJgQsZ7k67QnKEcWqBMCzsrYX2qKUN7HdcewZ9feRHqp2XfK/u3fqlyBVMV4BCO4AR8OIMK3EAVasCgB0/wAq+OdJ6dN+d9WrrkzHoO4I+cjx/NK4+h</latexit><latexit sha1_base64="GWRCYrUuf4tRLwmEljXBNHCMHTs=">AAAB6nicbZC7SgNBFIbPxltcb1FLm8EgWIVdG23EoI1lRHOBZAmzk5NkyOzsMjMrhCWPYGOhiKW+i72N+DZOLoUm/jDw8f/nMOecMBFcG8/7dnJLyyura/l1d2Nza3unsLtX03GqGFZZLGLVCKlGwSVWDTcCG4lCGoUC6+HgapzX71FpHss7M0wwiGhP8i5n1FjrtiXTdqHolbyJyCL4MyhefLjnyduXW2kXPludmKURSsME1brpe4kJMqoMZwJHbivVmFA2oD1sWpQ0Qh1kk1FH5Mg6HdKNlX3SkIn7uyOjkdbDKLSVETV9PZ+Nzf+yZmq6Z0HGZZIalGz6UTcVxMRkvDfpcIXMiKEFyhS3sxLWp4oyY6/j2iP48ysvQu2k5Hsl/8Yvli9hqjwcwCEcgw+nUIZrqEAVGPTgAZ7g2RHOo/PivE5Lc86sZx/+yHn/Ab66kRU=</latexit><latexit sha1_base64="GWRCYrUuf4tRLwmEljXBNHCMHTs=">AAAB6nicbZC7SgNBFIbPxltcb1FLm8EgWIVdG23EoI1lRHOBZAmzk5NkyOzsMjMrhCWPYGOhiKW+i72N+DZOLoUm/jDw8f/nMOecMBFcG8/7dnJLyyura/l1d2Nza3unsLtX03GqGFZZLGLVCKlGwSVWDTcCG4lCGoUC6+HgapzX71FpHss7M0wwiGhP8i5n1FjrtiXTdqHolbyJyCL4MyhefLjnyduXW2kXPludmKURSsME1brpe4kJMqoMZwJHbivVmFA2oD1sWpQ0Qh1kk1FH5Mg6HdKNlX3SkIn7uyOjkdbDKLSVETV9PZ+Nzf+yZmq6Z0HGZZIalGz6UTcVxMRkvDfpcIXMiKEFyhS3sxLWp4oyY6/j2iP48ysvQu2k5Hsl/8Yvli9hqjwcwCEcgw+nUIZrqEAVGPTgAZ7g2RHOo/PivE5Lc86sZx/+yHn/Ab66kRU=</latexit><latexit sha1_base64="U7EZbS6a8V4gnG4KkgSjlFXrLVM=">AAAB6nicbVA9TwJBEJ3DL8Qv1NJmIzGxInc2WhJtLDEKksCF7C17sGFv77I7a0Iu/AQbC42x9RfZ+W9c4AoFXzLJy3szmZkXZVIY9P1vr7S2vrG5Vd6u7Ozu7R9UD4/aJrWa8RZLZao7ETVcCsVbKFDyTqY5TSLJH6Pxzcx/fOLaiFQ94CTjYUKHSsSCUXTSfU/ZfrXm1/05yCoJClKDAs1+9as3SJlNuEImqTHdwM8wzKlGwSSfVnrW8IyyMR3yrqOKJtyE+fzUKTlzyoDEqXalkMzV3xM5TYyZJJHrTCiOzLI3E//zuhbjqzAXKrPIFVssiq0kmJLZ32QgNGcoJ45QpoW7lbAR1ZShS6fiQgiWX14l7Yt64NeDu6DWuC7iKMMJnMI5BHAJDbiFJrSAwRCe4RXePOm9eO/ex6K15BUzx/AH3ucPXfON1A==</latexit>
What’s next?
• Benchmarking on data-intensive (and not only) scenarios
• Interfacing DAPHNE with concrete languages
• Augment the state-space construction with native temporal
Model Checking capabilities
• DAPHNE generates logs with all performed actions and data
changes —> investigate possible applications of logs to:
• business auditing in small- and average-sized companies
• (multi-perspective) process mining
Thank you!
PostDoc and PhD Positions
at KRDB Research Centre in Bolzano
This year we are starting 5 new projects involving OBDA / VKGs


• EU Project INODE on data management infrastructures (3 years)

• Italian basic research project HOPE on open data publishing (3 years)
• CHIST-ERA EU Project PACMEL on OBDA for process mining (2 years)
• ESF Project IDEE on data integration in the energy sector (3 years)

• Industrial project on temporal OBDA (9 months)
We are hiring 5-6 new postdocs on these projects

We are also opening several 4-year PhD positions with bursary
For more info, CONTACT ASAP diego.calvanese@unibz.it

More Related Content

Similar to Modelling and In-Database Management of Relational, Data-aware Processes

Basic Sql Handouts
Basic Sql HandoutsBasic Sql Handouts
Basic Sql Handouts
jhe04
 
help me Java projectI put problem and my own code in the linkmy .pdf
help me Java projectI put problem and my own code in the linkmy .pdfhelp me Java projectI put problem and my own code in the linkmy .pdf
help me Java projectI put problem and my own code in the linkmy .pdf
arihantmum
 
Dm adapter RubyConf.TW
Dm adapter RubyConf.TWDm adapter RubyConf.TW
Dm adapter RubyConf.TW
codingforrent
 

Similar to Modelling and In-Database Management of Relational, Data-aware Processes (20)

Introduction to Zend Framework web services
Introduction to Zend Framework web servicesIntroduction to Zend Framework web services
Introduction to Zend Framework web services
 
PHPUnit elevato alla Symfony2
PHPUnit elevato alla Symfony2PHPUnit elevato alla Symfony2
PHPUnit elevato alla Symfony2
 
Function Procedure Trigger Partition.pdf
Function Procedure Trigger Partition.pdfFunction Procedure Trigger Partition.pdf
Function Procedure Trigger Partition.pdf
 
Martin Fowler's Refactoring Techniques Quick Reference
Martin Fowler's Refactoring Techniques Quick ReferenceMartin Fowler's Refactoring Techniques Quick Reference
Martin Fowler's Refactoring Techniques Quick Reference
 
How to create payslip through self service
How to create payslip through self serviceHow to create payslip through self service
How to create payslip through self service
 
GraphQL, Redux, and React
GraphQL, Redux, and ReactGraphQL, Redux, and React
GraphQL, Redux, and React
 
computer project code ''payroll'' (based on datafile handling)
computer project code ''payroll'' (based on datafile handling)computer project code ''payroll'' (based on datafile handling)
computer project code ''payroll'' (based on datafile handling)
 
Oracle database - Get external data via HTTP, FTP and Web Services
Oracle database - Get external data via HTTP, FTP and Web ServicesOracle database - Get external data via HTTP, FTP and Web Services
Oracle database - Get external data via HTTP, FTP and Web Services
 
Basic Sql Handouts
Basic Sql HandoutsBasic Sql Handouts
Basic Sql Handouts
 
RESTful API 제대로 만들기
RESTful API 제대로 만들기RESTful API 제대로 만들기
RESTful API 제대로 만들기
 
Angular Promises and Advanced Routing
Angular Promises and Advanced RoutingAngular Promises and Advanced Routing
Angular Promises and Advanced Routing
 
help me Java projectI put problem and my own code in the linkmy .pdf
help me Java projectI put problem and my own code in the linkmy .pdfhelp me Java projectI put problem and my own code in the linkmy .pdf
help me Java projectI put problem and my own code in the linkmy .pdf
 
0 to App faster with NodeJS and Ruby
0 to App faster with NodeJS and Ruby0 to App faster with NodeJS and Ruby
0 to App faster with NodeJS and Ruby
 
Cassandra Day Chicago 2015: 0 to App Faster with Node.js and Ruby
Cassandra Day Chicago 2015: 0 to App Faster with Node.js and RubyCassandra Day Chicago 2015: 0 to App Faster with Node.js and Ruby
Cassandra Day Chicago 2015: 0 to App Faster with Node.js and Ruby
 
Dm adapter
Dm adapterDm adapter
Dm adapter
 
Dm adapter RubyConf.TW
Dm adapter RubyConf.TWDm adapter RubyConf.TW
Dm adapter RubyConf.TW
 
Oracle - Program with PL/SQL - Lession 07
Oracle - Program with PL/SQL - Lession 07Oracle - Program with PL/SQL - Lession 07
Oracle - Program with PL/SQL - Lession 07
 
Using Change Streams to Keep Up with Your Data
Using Change Streams to Keep Up with Your DataUsing Change Streams to Keep Up with Your Data
Using Change Streams to Keep Up with Your Data
 
Implementing data sync apis for mibile apps @cloudconf
Implementing data sync apis for mibile apps @cloudconfImplementing data sync apis for mibile apps @cloudconf
Implementing data sync apis for mibile apps @cloudconf
 
Intro to Ember.JS 2016
Intro to Ember.JS 2016Intro to Ember.JS 2016
Intro to Ember.JS 2016
 

Recently uploaded

GENETICALLY MODIFIED ORGANISM'S PRESENTATION.ppt
GENETICALLY MODIFIED ORGANISM'S PRESENTATION.pptGENETICALLY MODIFIED ORGANISM'S PRESENTATION.ppt
GENETICALLY MODIFIED ORGANISM'S PRESENTATION.ppt
SyedArifMalki
 
THE ROLE OF BIOTECHNOLOGY IN THE ECONOMIC UPLIFT.pptx
THE ROLE OF BIOTECHNOLOGY IN THE ECONOMIC UPLIFT.pptxTHE ROLE OF BIOTECHNOLOGY IN THE ECONOMIC UPLIFT.pptx
THE ROLE OF BIOTECHNOLOGY IN THE ECONOMIC UPLIFT.pptx
ANSARKHAN96
 
Warming the earth and the atmosphere.pptx
Warming the earth and the atmosphere.pptxWarming the earth and the atmosphere.pptx
Warming the earth and the atmosphere.pptx
GlendelCaroz
 
HIV AND INFULENZA VIRUS PPT HIV PPT INFULENZA VIRUS PPT
HIV AND INFULENZA VIRUS PPT HIV PPT  INFULENZA VIRUS PPTHIV AND INFULENZA VIRUS PPT HIV PPT  INFULENZA VIRUS PPT

Recently uploaded (20)

Heads-Up Multitasker: CHI 2024 Presentation.pdf
Heads-Up Multitasker: CHI 2024 Presentation.pdfHeads-Up Multitasker: CHI 2024 Presentation.pdf
Heads-Up Multitasker: CHI 2024 Presentation.pdf
 
EU START PROJECT. START-Newsletter_Issue_4.pdf
EU START PROJECT. START-Newsletter_Issue_4.pdfEU START PROJECT. START-Newsletter_Issue_4.pdf
EU START PROJECT. START-Newsletter_Issue_4.pdf
 
Energy is the beat of life irrespective of the domains. ATP- the energy curre...
Energy is the beat of life irrespective of the domains. ATP- the energy curre...Energy is the beat of life irrespective of the domains. ATP- the energy curre...
Energy is the beat of life irrespective of the domains. ATP- the energy curre...
 
Precision Farming in Fruit Crops presentation
Precision Farming in Fruit Crops presentationPrecision Farming in Fruit Crops presentation
Precision Farming in Fruit Crops presentation
 
X-rays from a Central “Exhaust Vent” of the Galactic Center Chimney
X-rays from a Central “Exhaust Vent” of the Galactic Center ChimneyX-rays from a Central “Exhaust Vent” of the Galactic Center Chimney
X-rays from a Central “Exhaust Vent” of the Galactic Center Chimney
 
Soil and Water Conservation Engineering (SWCE) is a specialized field of stud...
Soil and Water Conservation Engineering (SWCE) is a specialized field of stud...Soil and Water Conservation Engineering (SWCE) is a specialized field of stud...
Soil and Water Conservation Engineering (SWCE) is a specialized field of stud...
 
GBSN - Microbiology (Unit 4) Concept of Asepsis
GBSN - Microbiology (Unit 4) Concept of AsepsisGBSN - Microbiology (Unit 4) Concept of Asepsis
GBSN - Microbiology (Unit 4) Concept of Asepsis
 
Harry Coumnas Thinks That Human Teleportation is Possible in Quantum Mechanic...
Harry Coumnas Thinks That Human Teleportation is Possible in Quantum Mechanic...Harry Coumnas Thinks That Human Teleportation is Possible in Quantum Mechanic...
Harry Coumnas Thinks That Human Teleportation is Possible in Quantum Mechanic...
 
THE FUNDAMENTAL UNIT OF LIFE CLASS IX.ppt
THE FUNDAMENTAL UNIT OF LIFE CLASS IX.pptTHE FUNDAMENTAL UNIT OF LIFE CLASS IX.ppt
THE FUNDAMENTAL UNIT OF LIFE CLASS IX.ppt
 
GENETICALLY MODIFIED ORGANISM'S PRESENTATION.ppt
GENETICALLY MODIFIED ORGANISM'S PRESENTATION.pptGENETICALLY MODIFIED ORGANISM'S PRESENTATION.ppt
GENETICALLY MODIFIED ORGANISM'S PRESENTATION.ppt
 
THE ROLE OF BIOTECHNOLOGY IN THE ECONOMIC UPLIFT.pptx
THE ROLE OF BIOTECHNOLOGY IN THE ECONOMIC UPLIFT.pptxTHE ROLE OF BIOTECHNOLOGY IN THE ECONOMIC UPLIFT.pptx
THE ROLE OF BIOTECHNOLOGY IN THE ECONOMIC UPLIFT.pptx
 
Fun for mover student's book- English book for teaching.pdf
Fun for mover student's book- English book for teaching.pdfFun for mover student's book- English book for teaching.pdf
Fun for mover student's book- English book for teaching.pdf
 
Vital Signs of Animals Presentation By Aftab Ahmed Rahimoon
Vital Signs of Animals Presentation By Aftab Ahmed RahimoonVital Signs of Animals Presentation By Aftab Ahmed Rahimoon
Vital Signs of Animals Presentation By Aftab Ahmed Rahimoon
 
Manganese‐RichSandstonesasanIndicatorofAncientOxic LakeWaterConditionsinGale...
Manganese‐RichSandstonesasanIndicatorofAncientOxic  LakeWaterConditionsinGale...Manganese‐RichSandstonesasanIndicatorofAncientOxic  LakeWaterConditionsinGale...
Manganese‐RichSandstonesasanIndicatorofAncientOxic LakeWaterConditionsinGale...
 
GBSN - Biochemistry (Unit 3) Metabolism
GBSN - Biochemistry (Unit 3) MetabolismGBSN - Biochemistry (Unit 3) Metabolism
GBSN - Biochemistry (Unit 3) Metabolism
 
GBSN - Microbiology (Unit 5) Concept of isolation
GBSN - Microbiology (Unit 5) Concept of isolationGBSN - Microbiology (Unit 5) Concept of isolation
GBSN - Microbiology (Unit 5) Concept of isolation
 
Warming the earth and the atmosphere.pptx
Warming the earth and the atmosphere.pptxWarming the earth and the atmosphere.pptx
Warming the earth and the atmosphere.pptx
 
ABHISHEK ANTIBIOTICS PPT MICROBIOLOGY // USES OF ANTIOBIOTICS TYPES OF ANTIB...
ABHISHEK ANTIBIOTICS PPT MICROBIOLOGY  // USES OF ANTIOBIOTICS TYPES OF ANTIB...ABHISHEK ANTIBIOTICS PPT MICROBIOLOGY  // USES OF ANTIOBIOTICS TYPES OF ANTIB...
ABHISHEK ANTIBIOTICS PPT MICROBIOLOGY // USES OF ANTIOBIOTICS TYPES OF ANTIB...
 
HIV AND INFULENZA VIRUS PPT HIV PPT INFULENZA VIRUS PPT
HIV AND INFULENZA VIRUS PPT HIV PPT  INFULENZA VIRUS PPTHIV AND INFULENZA VIRUS PPT HIV PPT  INFULENZA VIRUS PPT
HIV AND INFULENZA VIRUS PPT HIV PPT INFULENZA VIRUS PPT
 
Vital Signs of Animals Presentation By Aftab Ahmed Rahimoon
Vital Signs of Animals Presentation By Aftab Ahmed RahimoonVital Signs of Animals Presentation By Aftab Ahmed Rahimoon
Vital Signs of Animals Presentation By Aftab Ahmed Rahimoon
 

Modelling and In-Database Management of Relational, Data-aware Processes

  • 1. Diego Calvanese, Marco Montali, Fabio Patrizi, Andrey Rivkin Modelling and In-Database Management of Relational, Data-aware Processes
  • 2.
  • 4. Complex systems Number One (Jackson Pollock, 1950)
  • 7. Is there a remedy? process data
  • 9. Data-aware processes • An “urban legend” • Cons: no formal definition of the concept (only a set of “recommendations”) • Pros: very permissive and allow to attack the dichotomy problem from various perspectives
  • 11. Travel reimbursement in a company Financial accounting review Employee prepare travel request prepare reimbursement request request info send result Travel log data
  • 13. In database expert’s mind External input Financial accounting review Employee prepare travel request prepare reimbursement request request info send result Travel log data • We have a fixed storage… • … and some process in mind
  • 14. In database expert’s mind Financial accounting review Employee prepare travel request prepare reimbursement request request info send result Travel log data External input • We have a fixed storage… • … and some process in mind How to model, implement, and analyse this DAP?
  • 15. Relational data-aware processes Setting: • the database is given, and can be directly accessed and updated by running processes • builds on the previously proposed formalism of DCDSs Desiderata: • A representation of DCDSs fully embedded in SQL • An execution engine running on top of an RDBMS + logging functionalities • Suitable for formal analysis
  • 16. dapSL data-aware process specification language dapSL specification data layer process layer • A relational database • Supported constraints: PK, FK, CHECK • Data updates via atomic actions • Control-flow via CA-rules (determine when actions can be executed) • Data injections via service calls
  • 17. dapSL: modeling Data layer uses the standard SQL DDL CurrReq ID Empl Dest Status 1 Bob NY submitd 2 Kriss Rome submitd TrvlMaxAmnt ID FID maxAmnt - - - “requests under process” “maximum allowed trip budgets” {submitd, acceptd, reimbursed, …} FK_TrvlMaxAmnt_CurrReq
  • 18. dapSL: modeling “. . . examine an employee’s trip reimbursement request and, if accepted, assign the maximum reimbursable amount to it . . . ” CA-rules = SELECT queries with action signature references dapSL. StartWF creates a new travel reimbursement request by picking a pending requests the current DB. We represent this in dapSL as an action with three formal parameters, denot pending request id, its responsible employee, and her intended destination: SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest); StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi Here, a new request is generated by removing from Pending the entry that matches the give then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service @genpk, returning a fresh primary key value. ReviewRequest examines an employee trip request and, if accepted, assigns its maxim reimbursable amount. The action can be executed only if a request in CurrReq actually exi SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’ ENABLES RvwRequest(id, emp, dest); RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(id, emp, dest, @status(emp, dest)); INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt) VALUES(@genpk(), id, @maxAmnt(emp, dest))}
  • 19. dapSL: modeling “. . . examine an employee’s trip reimbursement request and, if accepted, assign the maximum reimbursable amount to it . . . ” CA-rules = SELECT queries with action signature references dapSL. StartWF creates a new travel reimbursement request by picking a pending requests the current DB. We represent this in dapSL as an action with three formal parameters, denot pending request id, its responsible employee, and her intended destination: SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest); StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi Here, a new request is generated by removing from Pending the entry that matches the give then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service @genpk, returning a fresh primary key value. ReviewRequest examines an employee trip request and, if accepted, assigns its maxim reimbursable amount. The action can be executed only if a request in CurrReq actually exi SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’ ENABLES RvwRequest(id, emp, dest); RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(id, emp, dest, @status(emp, dest)); INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt) VALUES(@genpk(), id, @maxAmnt(emp, dest))} the rule condition the parametrised action
  • 20. dapSL: modeling “. . . examine an employee’s trip reimbursement request and, if accepted, assign the maximum reimbursable amount to it . . . ” Actions = collections of parametrised INSERT’s/DELETE’s pending request id, its responsible employee, and her intended destination: SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest); StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submit Here, a new request is generated by removing from Pending the entry that matches the given then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple, the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service @genpk, returning a fresh primary key value. ReviewRequest examines an employee trip request and, if accepted, assigns its maxim reimbursable amount. The action can be executed only if a request in CurrReq actually exist SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’ ENABLES RvwRequest(id, emp, dest); RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(id, emp, dest, @status(emp, dest)); INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt) VALUES(@genpk(), id, @maxAmnt(emp, dest))} • Use SELECT inside VALUES to get a bulk update • @ to specify service call invocations
  • 21. dapSL: modeling “. . . examine an employee’s trip reimbursement request and, if accepted, assign the maximum reimbursable amount to it . . . ” Actions = collections of parametrised INSERT’s/DELETE’s pending request id, its responsible employee, and her intended destination: SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest); StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submit Here, a new request is generated by removing from Pending the entry that matches the given then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple, the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service @genpk, returning a fresh primary key value. ReviewRequest examines an employee trip request and, if accepted, assigns its maxim reimbursable amount. The action can be executed only if a request in CurrReq actually exist SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’ ENABLES RvwRequest(id, emp, dest); RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(id, emp, dest, @status(emp, dest)); INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt) VALUES(@genpk(), id, @maxAmnt(emp, dest))} • Use SELECT inside VALUES to get a bulk update • @ to specify service call invocations formal parameters
  • 22. dapSL: execution semantics CurrReq ID Empl Dest Status 1 Bob NY submitd 2 Kriss Rome submitd TrvlMaxAmnt ID FID maxAmnt - - -DB_state Example 3. We focus on three tasks of the process in Example 1, showing their encodin dapSL. StartWF creates a new travel reimbursement request by picking a pending requests the current DB. We represent this in dapSL as an action with three formal parameters, denot pending request id, its responsible employee, and her intended destination: SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest); StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi Here, a new request is generated by removing from Pending the entry that matches the give then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service @genpk, returning a fresh primary key value. ReviewRequest examines an employee trip request and, if accepted, assigns its maxim reimbursable amount. The action can be executed only if a request in CurrReq actually exi SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’ ENABLES RvwRequest(id, emp, dest); RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(id, emp, dest, @status(emp, dest)); INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt) VALUES(@genpk(), id, @maxAmnt(emp, dest))}
  • 23. dapSL: execution semantics CurrReq ID Empl Dest Status 1 Bob NY submitd 2 Kriss Rome submitd TrvlMaxAmnt ID FID maxAmnt - - -DB_state Example 3. We focus on three tasks of the process in Example 1, showing their encodin dapSL. StartWF creates a new travel reimbursement request by picking a pending requests the current DB. We represent this in dapSL as an action with three formal parameters, denot pending request id, its responsible employee, and her intended destination: SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest); StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi Here, a new request is generated by removing from Pending the entry that matches the give then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service @genpk, returning a fresh primary key value. ReviewRequest examines an employee trip request and, if accepted, assigns its maxim reimbursable amount. The action can be executed only if a request in CurrReq actually exi SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’ ENABLES RvwRequest(id, emp, dest); RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(id, emp, dest, @status(emp, dest)); INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt) VALUES(@genpk(), id, @maxAmnt(emp, dest))} Query
  • 24. dapSL: execution semantics CurrReq ID Empl Dest Status 1 Bob NY submitd 2 Kriss Rome submitd TrvlMaxAmnt ID FID maxAmnt - - -DB_state Example 3. We focus on three tasks of the process in Example 1, showing their encodin dapSL. StartWF creates a new travel reimbursement request by picking a pending requests the current DB. We represent this in dapSL as an action with three formal parameters, denot pending request id, its responsible employee, and her intended destination: SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest); StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi Here, a new request is generated by removing from Pending the entry that matches the give then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service @genpk, returning a fresh primary key value. ReviewRequest examines an employee trip request and, if accepted, assigns its maxim reimbursable amount. The action can be executed only if a request in CurrReq actually exi SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’ ENABLES RvwRequest(id, emp, dest); RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(id, emp, dest, @status(emp, dest)); INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt) VALUES(@genpk(), id, @maxAmnt(emp, dest))} InstantiateQuery 2 Kriss Rome
  • 25. dapSL: execution semantics CurrReq ID Empl Dest Status 1 Bob NY submitd 2 Kriss Rome submitd TrvlMaxAmnt ID FID maxAmnt - - -DB_state Example 3. We focus on three tasks of the process in Example 1, showing their encodin dapSL. StartWF creates a new travel reimbursement request by picking a pending requests the current DB. We represent this in dapSL as an action with three formal parameters, denot pending request id, its responsible employee, and her intended destination: SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest); StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi Here, a new request is generated by removing from Pending the entry that matches the give then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service @genpk, returning a fresh primary key value. ReviewRequest examines an employee trip request and, if accepted, assigns its maxim reimbursable amount. The action can be executed only if a request in CurrReq actually exi SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’ ENABLES RvwRequest(id, emp, dest); RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(id, emp, dest, @status(emp, dest)); INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt) VALUES(@genpk(), id, @maxAmnt(emp, dest))} RunInstantiateQuery 2 Kriss Rome
  • 26. RvwRequest(2,Kriss,Rome) dapSL: execution semantics CurrReq ID Empl Dest Status 1 Bob NY submitd 2 Kriss Rome submitd TrvlMaxAmnt ID FID maxAmnt - - -DB_state Example 3. We focus on three tasks of the process in Example 1, showing their encodin dapSL. StartWF creates a new travel reimbursement request by picking a pending requests the current DB. We represent this in dapSL as an action with three formal parameters, denot pending request id, its responsible employee, and her intended destination: SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest); StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi Here, a new request is generated by removing from Pending the entry that matches the give then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service @genpk, returning a fresh primary key value. ReviewRequest examines an employee trip request and, if accepted, assigns its maxim reimbursable amount. The action can be executed only if a request in CurrReq actually exis SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’ ENABLES RvwRequest(id, emp, dest); RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(id, emp, dest, @status(emp, dest)); INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt) VALUES(@genpk(), id, @maxAmnt(emp, dest))}
  • 27. Service callsRvwRequest(2,Kriss,Rome) dapSL: execution semantics CurrReq ID Empl Dest Status 1 Bob NY submitd 2 Kriss Rome submitd TrvlMaxAmnt ID FID maxAmnt - - -DB_state Example 3. We focus on three tasks of the process in Example 1, showing their encodin dapSL. StartWF creates a new travel reimbursement request by picking a pending requests the current DB. We represent this in dapSL as an action with three formal parameters, denot pending request id, its responsible employee, and her intended destination: SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest); StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi Here, a new request is generated by removing from Pending the entry that matches the give then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service @genpk, returning a fresh primary key value. ReviewRequest examines an employee trip request and, if accepted, assigns its maxim reimbursable amount. The action can be executed only if a request in CurrReq actually exis SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’ ENABLES RvwRequest(id, emp, dest); RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(id, emp, dest, @status(emp, dest)); INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt) VALUES(@genpk(), id, @maxAmnt(emp, dest))}
  • 28. Service callsRvwRequest(2,Kriss,Rome) dapSL: execution semantics CurrReq ID Empl Dest Status 1 Bob NY submitd 2 Kriss Rome submitd TrvlMaxAmnt ID FID maxAmnt - - -DB_state Example 3. We focus on three tasks of the process in Example 1, showing their encodin dapSL. StartWF creates a new travel reimbursement request by picking a pending requests the current DB. We represent this in dapSL as an action with three formal parameters, denot pending request id, its responsible employee, and her intended destination: SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest); StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi Here, a new request is generated by removing from Pending the entry that matches the give then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service @genpk, returning a fresh primary key value. ReviewRequest examines an employee trip request and, if accepted, assigns its maxim reimbursable amount. The action can be executed only if a request in CurrReq actually exis SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’ ENABLES RvwRequest(id, emp, dest); RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(id, emp, dest, @status(emp, dest)); INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt) VALUES(@genpk(), id, @maxAmnt(emp, dest))} status(Kriss,Rome)=acceptd maxAmnt(Kriss,Rome)=900 genpk()=10
  • 29. Update!Service callsRvwRequest(2,Kriss,Rome) dapSL: execution semantics CurrReq ID Empl Dest Status 1 Bob NY submitd 2 Kriss Rome acceptd TrvlMaxAmnt ID FID maxAmnt 10 2 900DB_state’ Example 3. We focus on three tasks of the process in Example 1, showing their encodin dapSL. StartWF creates a new travel reimbursement request by picking a pending requests the current DB. We represent this in dapSL as an action with three formal parameters, denot pending request id, its responsible employee, and her intended destination: SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest); StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submi Here, a new request is generated by removing from Pending the entry that matches the give then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service @genpk, returning a fresh primary key value. ReviewRequest examines an employee trip request and, if accepted, assigns its maxim reimbursable amount. The action can be executed only if a request in CurrReq actually exis SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’ ENABLES RvwRequest(id, emp, dest); RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(id, emp, dest, @status(emp, dest)); INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt) VALUES(@genpk(), id, @maxAmnt(emp, dest))} status(Kriss,Rome)=acceptd maxAmnt(Kriss,Rome)=900 genpk()=10
  • 30. Towards implementing dapSL • dapSL specification is maintained by the RDBMS • Interaction is provided by a Flow Engine, which: • executes calls to the RDBMS • interplays with external services through a Service Manager vanese, Montali, Patrizi, Rivkin DB Engine Flow Engine Service Manager Persistent Storage DAPHNE system DAPHNE state dapSL Spec. RDBMS ... user input web service Fig. 2: Conceptual architecture of DAPHNE status of CurrReq is updated by calling service @status, that tak me and a trip destination, and returns a new status value. Also, a new tu reimbursable amount is added to TrvlMaxAmnt. To get the maximu rvlMaxAmnt, we employ service @maxAmnt with the same argument Reimb updates the current request by adding a compiled form wi
  • 31. Three modalities of DAPHNE Modeling and In-Database Management of Relational, Dat Enactment I I0 Enactment with history recall t0 t1 . . . tn tn+1 Sta s0 The three main usage modalities for DAPHNE, and ske ructures stored within the DBMS gement system (DBMS) to support its execution. The DB ta relevant to the input dapSL model and supports, th derlying DBMS, the application of a set of operation dapSL actions. The Flow Engine constitutes the applicati Enactment n-Database Management of Relational, Data-Aware Processe Enactment with history recall t0 t1 . . . tn tn+1 State space construction s0 s1 s2 s3 . . . usage modalities for DAPHNE, and sketch of the corre within the DBMS DBMS) to support its execution. The DBMS takes care o l, Data-Aware Processes 7 State space construction s0 s1 s2 s3 ... Enactment with history recall State space construction “casually run the process” “casually run the process and record its execution” “automatically generate (all?) possible executions for formal analysis”
  • 32. Three modalities of DAPHNE Modeling and In-Database Management of Relational, Dat Enactment I I0 Enactment with history recall t0 t1 . . . tn tn+1 Sta s0 The three main usage modalities for DAPHNE, and ske ructures stored within the DBMS gement system (DBMS) to support its execution. The DB ta relevant to the input dapSL model and supports, th derlying DBMS, the application of a set of operation dapSL actions. The Flow Engine constitutes the applicati Enactment n-Database Management of Relational, Data-Aware Processe Enactment with history recall t0 t1 . . . tn tn+1 State space construction s0 s1 s2 s3 . . . usage modalities for DAPHNE, and sketch of the corre within the DBMS DBMS) to support its execution. The DBMS takes care o l, Data-Aware Processes 7 State space construction s0 s1 s2 s3 ... Enactment with history recall State space construction “casually run the process” “casually run the process and record its execution” “automatically generate (all?) possible executions for formal analysis” Unique database to represent all the modalities!
  • 33. Implementing three modalities Idea: Use actual SQL and (its dialects) to represent dapSL specifications in RDBMSs
  • 34. Implementing three modalities Idea: Use actual SQL and (its dialects) to represent dapSL specifications in RDBMSs Pros: doesn’t require special knowledge
 + can exploit various RDBMS features
  • 35. Implementing three modalities Idea: Use actual SQL and (its dialects) to represent dapSL specifications in RDBMSs Pros: doesn’t require special knowledge
 + can exploit various RDBMS features Cons: specifying a workflow inside the RDBMS could be quite complex
  • 36. Implementing three modalities features Not the easiest way to specify your workflow inside t RDBMS
  • 37. Implementing three modalities Problem #1: how to represent the whole system evolution in the DB and respect integrity constraints between relations over time? Solution: use a clever encoding of relations into tables that account for temporal and atemporal parts
  • 38. Implementing three modalities CurrReq_raw RID Empl Dest Status 4 Bob NY submitd 5 Kriss Rome submitd 6 Kriss Rome acceptd TrvlMaxAmnt_raw RID maxAmnt 15 900 CurrReq_log state ID RID 2 1 4 2 2 5 3 2 4 3 2 6 TrvlMaxAmnt_log state ID RID FID 3 10 15 2 FK_TrvlMaxAmnt_CurrReq CurrReq ID Empl Dest Status 1 Bob NY submitd 2 Kriss Rome acceptd TrvlMaxAmnt ID FID maxAmnt 10 2 900 FK_TrvlMaxAmnt_CurrReq
  • 39. Implementing the modalities Problem #2 how to model CA rules and actions? Solution: represent the process layer using stored procedures
  • 40. Implementing the modalities SELECT id, emp, dest FROM Pending ENABLES StartWF(id, emp, dest); StartWF(id, emp, dest):{DELETE FROM Pending WHERE Pending.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(@genpk(), emp, dest, submit Here, a new request is generated by removing from Pending the entry that matches the given then inserting a new tuple into CurrReq with the emp and dest values of the deleted tuple, the status set to ‘submitd’. To get a unique id for such a tuple, we invoke the nullary service @genpk, returning a fresh primary key value. ReviewRequest examines an employee trip request and, if accepted, assigns its maxim reimbursable amount. The action can be executed only if a request in CurrReq actually exist SELECT id, emp, dest FROM CurrReq WHERE CurrReq.status = ‘submitd’ ENABLES RvwRequest(id, emp, dest); RvwRequest(id, emp, dest):{DELETE FROM CurrReq WHERE CurrReq.id = id; INSERT INTO CurrReq(id, emp, dest, status) VALUES(id, emp, dest, @status(emp, dest)); INSERT INTO TrvlMaxAmnt(tid, tfid, tmaxAmnt) VALUES(@genpk(), id, @maxAmnt(emp, dest))} A compact Review Request action in dapSL turns into…
  • 42. Representing dapSL spec. • How do we translate the specifications? • Define an object model for dapSL using jOOQ, including component-specific translators
  • 43. Implementing the 3rd modality • The state-space is in general infinite
  • 44. Implementing the 3rd modality • The state-space is in general infinite • Use the finite-state abstraction technique of DCDSs • the abstraction can be automatically constructed using DAPHNE (service) APIs
  • 45. Implementing the 3rd modality • The state-space is in general infinite • Use the finite-state abstraction technique of DCDSs • the abstraction can be automatically constructed using DAPHNE (service) APIs • The generated state space is stored in the DB use SQL to run analytic queries the same model for enactment and verification!
  • 46. Connections with other approaches • dapSL is a front-end language for DCDSs • We know how to relate DCDSs (and thus dapSL) to: ✓ GSM-based business artifacts ✓ -Petri nets equipped with resources and tokens with abstract data ✓ recent variants of (colored) Petri nets equipped with a DB storage ⌫<latexit sha1_base64="YGPqV/Iq5qj1Ohe4ayAdToTjy64=">AAAB6nicbZC7SgNBFIbPeo3rLWppMxgEq7Bro40YtLGMaC6QLGF2MpsMmZ1dZs4KYQn4AjYWitj6LvZ2vo2TS6GJPwx8/P85zDknTKUw6HnfztLyyuraemHD3dza3tkt7u3XTZJpxmsskYluhtRwKRSvoUDJm6nmNA4lb4SD63HeeODaiETd4zDlQUx7SkSCUbTWXVtlnWLJK3sTkUXwZ1C6/HQvHgGg2il+tbsJy2KukElqTMv3UgxyqlEwyUduOzM8pWxAe7xlUdGYmyCfjDoix9bpkijR9ikkE/d3R05jY4ZxaCtjin0zn43N/7JWhtF5kAuVZsgVm34UZZJgQsZ7k67QnKEcWqBMCzsrYX2qKUN7HdcewZ9feRHqp2XfK/u3fqlyBVMV4BCO4AR8OIMK3EAVasCgB0/wAq+OdJ6dN+d9WrrkzHoO4I+cjx/NK4+h</latexit><latexit sha1_base64="GWRCYrUuf4tRLwmEljXBNHCMHTs=">AAAB6nicbZC7SgNBFIbPxltcb1FLm8EgWIVdG23EoI1lRHOBZAmzk5NkyOzsMjMrhCWPYGOhiKW+i72N+DZOLoUm/jDw8f/nMOecMBFcG8/7dnJLyyura/l1d2Nza3unsLtX03GqGFZZLGLVCKlGwSVWDTcCG4lCGoUC6+HgapzX71FpHss7M0wwiGhP8i5n1FjrtiXTdqHolbyJyCL4MyhefLjnyduXW2kXPludmKURSsME1brpe4kJMqoMZwJHbivVmFA2oD1sWpQ0Qh1kk1FH5Mg6HdKNlX3SkIn7uyOjkdbDKLSVETV9PZ+Nzf+yZmq6Z0HGZZIalGz6UTcVxMRkvDfpcIXMiKEFyhS3sxLWp4oyY6/j2iP48ysvQu2k5Hsl/8Yvli9hqjwcwCEcgw+nUIZrqEAVGPTgAZ7g2RHOo/PivE5Lc86sZx/+yHn/Ab66kRU=</latexit><latexit sha1_base64="GWRCYrUuf4tRLwmEljXBNHCMHTs=">AAAB6nicbZC7SgNBFIbPxltcb1FLm8EgWIVdG23EoI1lRHOBZAmzk5NkyOzsMjMrhCWPYGOhiKW+i72N+DZOLoUm/jDw8f/nMOecMBFcG8/7dnJLyyura/l1d2Nza3unsLtX03GqGFZZLGLVCKlGwSVWDTcCG4lCGoUC6+HgapzX71FpHss7M0wwiGhP8i5n1FjrtiXTdqHolbyJyCL4MyhefLjnyduXW2kXPludmKURSsME1brpe4kJMqoMZwJHbivVmFA2oD1sWpQ0Qh1kk1FH5Mg6HdKNlX3SkIn7uyOjkdbDKLSVETV9PZ+Nzf+yZmq6Z0HGZZIalGz6UTcVxMRkvDfpcIXMiKEFyhS3sxLWp4oyY6/j2iP48ysvQu2k5Hsl/8Yvli9hqjwcwCEcgw+nUIZrqEAVGPTgAZ7g2RHOo/PivE5Lc86sZx/+yHn/Ab66kRU=</latexit><latexit sha1_base64="U7EZbS6a8V4gnG4KkgSjlFXrLVM=">AAAB6nicbVA9TwJBEJ3DL8Qv1NJmIzGxInc2WhJtLDEKksCF7C17sGFv77I7a0Iu/AQbC42x9RfZ+W9c4AoFXzLJy3szmZkXZVIY9P1vr7S2vrG5Vd6u7Ozu7R9UD4/aJrWa8RZLZao7ETVcCsVbKFDyTqY5TSLJH6Pxzcx/fOLaiFQ94CTjYUKHSsSCUXTSfU/ZfrXm1/05yCoJClKDAs1+9as3SJlNuEImqTHdwM8wzKlGwSSfVnrW8IyyMR3yrqOKJtyE+fzUKTlzyoDEqXalkMzV3xM5TYyZJJHrTCiOzLI3E//zuhbjqzAXKrPIFVssiq0kmJLZ32QgNGcoJ45QpoW7lbAR1ZShS6fiQgiWX14l7Yt64NeDu6DWuC7iKMMJnMI5BHAJDbiFJrSAwRCe4RXePOm9eO/ex6K15BUzx/AH3ucPXfON1A==</latexit>
  • 47. What’s next? • Benchmarking on data-intensive (and not only) scenarios • Interfacing DAPHNE with concrete languages • Augment the state-space construction with native temporal Model Checking capabilities • DAPHNE generates logs with all performed actions and data changes —> investigate possible applications of logs to: • business auditing in small- and average-sized companies • (multi-perspective) process mining
  • 49. PostDoc and PhD Positions at KRDB Research Centre in Bolzano This year we are starting 5 new projects involving OBDA / VKGs 
 • EU Project INODE on data management infrastructures (3 years)
 • Italian basic research project HOPE on open data publishing (3 years) • CHIST-ERA EU Project PACMEL on OBDA for process mining (2 years) • ESF Project IDEE on data integration in the energy sector (3 years)
 • Industrial project on temporal OBDA (9 months) We are hiring 5-6 new postdocs on these projects
 We are also opening several 4-year PhD positions with bursary For more info, CONTACT ASAP diego.calvanese@unibz.it