Declarative Structures
Declare Patterns
Action Existence
Putting the name of the node represents that the node exists in the trace
Action : The node 'Action' exists
'First Action' : The node 'First Action' exists (' allows to have spaces in the action name)
Action Constraints
It is possible to define restrictions to actions between brackets ([]). Constraints can be temporal:
Action[-1d] : Exists a node called 'Action' with a duration inferior to one day
Action[1h3m1s-5h2m3s] : Exists a node called 'Action' with a duration between 1:03:01 and 5:02:03
Action[2d2h-]: Exists a Node called 'Action' with a duration superior to 2 days and 2 hours
And parametrical:
Action[var0=='value1'] : Exists an 'Action' which trace variable 'var0' is equal to 'value1'
Action[.var0=='value1'] : Exists an 'Action' which event variable 'var0' is equal to 'value1'.
The '.' denotes that is referred to an event variable
And a combination:
Action[.var0=='value1',vart=='val0',-1d] : Exists an 'Action' which event variable 'var0'
is equal to 'value1', and trace variable 'vart' is equal to 'val0' with a
duration of less than 1 day
Sequence Operation (>)
Represents nodes that are sequentially followed
Action > ConsecutiveAction: There is an 'Action' and an immediately Consecutive 'ConsecutiveAction'
It is possible to add Constraints to Sequences:
(Action0>Action1)[-1d] : Exists and execution of 'Action1' and consecutively 'Action1'
where the timing difference is less than 1 day
Derivation Operation (>>)
Represent nodes that are sequentially derivated. This means that the event will appear after the first node, but not necessarily immediately
Action0>>Action1 : Exists an 'Action1' that appears after an 'Action0'
It is possible to combine Derivations and sequences
Action0>Action1>>Action2>Action3: Exists a sequence of events that
have an 'Action0' and consecutively 'Action1' and after that
(not necessary to be consecutively) an 'Action2' consecutively followed by 'Action3'
It is also possible to add Constraints to Combinations
(Action0>Action1>>Action2>Action3)[3d-] : The previous sequence has a duration of more than 3 days.
Action Not Existence (!)
The Action or Sequence not Exists
!Action : The event 'Action' does not exist in the trace
!(Action0>>Action1) : There is not an 'Action1' after any 'Action0' in the trace
First Event (^)
The Event is the first of the trace
^'@Start': The Event '@Start' is the first of the trace
Last Event ($)
The Event is the last of the trace
$'@End': The Event '@End' is the last of the trace
Combination of Structures (& and |)
^'@Start' & ('@Start'>>Action2) : The event '@Start' is the first and exists a Derivation '@Start>>Action2' in the trace
Action0 | (Action1>>Action2) : There is an Action0 or a Derivation 'Action1>>Action2' in the trace
Advanced Structures
Response (->*)
A->*B: If A occurs, then B occurs always after A
Alternate Response (->+)
A->+B: If A occurs, then B occurs always after A before another A occurs
Chain Response (->)
A->B : Immediately after each A there is a B
Precedence (*<-)
B*<-A: If there is a B then, always there is an A before
Alternate Precedence (+<-)
B+<-A: If there is a B then always there is an A before and none B in the middle
Chain Precedence (<-)
B<-A: If there is a B then always there are an A preceding immediately
Succession (=>*)
`A=>*B`: A Occurs if and only if is followed by a B and B occurs if and only if is preceded by an A
Alternate Succession (=>+)
A=>+B: A Occurs if and only if is followed by a B and B occurs if and only if is preceded by an A, and never was a B in the middle
Chain Succession (=>)
A=>B: A occurs always immediately before B and B occurs always immediately after A