1 Introduction
2 Problem statement and preliminaries
2.1 Motivating example
Activity | Description |
---|---|
Incident logging | The first-level agent needs to log the details of the incident and assign the affected person |
Incident classification | Depending on the logged details, the appropriate classification needs to be chosen |
Initial diagnosis | The assigned first-level supporter needs to search through the Configuration Management Database (CMDB) for the described problem and has to detect the configuration item (CI) that needs fixing |
Functional escalation | If no solution can be found, the first-level supporter has to route the incident ticket to the responsible second-level group |
Investigation and diagnosis | A second-level supporter needs to perform a technical investigation and diagnosis of the reported incident. The solution is reported back to the first-level group in a protocol entry |
Resolution and recovery | Once the solution for the incident is found, it needs to be logged. If required, the customer is informed |
Incident closure | If a new solution has been found, the first level supported needs to check whether it may be reused later. If this is the case, the solution needs to be entered into the knowledge base (KB). Finally, the incident is closed |
Abbreviation | Complete event name |
---|---|
Person | Person added |
Details | Details logged |
Classification | Classification specified |
CI | CI selected |
Group | Group changed |
Comment | New comment created |
Protocol | New protocol created |
Solution | Solution assigned |
KB update | KB update performed |
Status | Status changed |
2.2 Imperative modeling of processes
2.3 Declarative modeling of processes
Rule | Explanation | Cat. | Positive and negative examples | |||
---|---|---|---|---|---|---|
\(\textit{Participation}( a )\)
|
\( a \) occurs at least once
|
\(\mathcal {C}_E( a )\)
|
\(\checkmark \)
\( bcac \)
|
\(\checkmark \)
\( bcaac \)
|
\(\times \)
\( bcc \)
|
\(\times \)
\( c \)
|
\( Init ( a )\)
|
\( a \) is the first to occur |
\(\mathcal {C}_E( a )\)
|
\(\checkmark \)
\( acc \)
|
\(\checkmark \)
\( abac \)
|
\(\times \)
\( cc \)
|
\(\times \)
\( bac \)
|
\( End ( a )\)
|
\( a \) is the last to occur |
\(\mathcal {C}_E( a )\)
|
\(\checkmark \)
\( bca \)
|
\(\checkmark \)
\( baca \)
|
\(\times \)
\( bc \)
|
\(\times \)
\( bac \)
|
\( RespondedExistence ( a , b ) \)
| If \( a \) occurs in the trace, then \( b \) occurs as well |
\(\mathcal {C}_R( a , b )\)
|
\(\checkmark \)
\( bcaac \)
|
\(\checkmark \)
\( bcc \)
|
\(\times \)
\( caac \)
|
\(\times \)
\( acc \)
|
\( Precedence ( a , b )\)
|
\( b \) occurs only if preceded by \( a \)
|
\(\mathcal {C}_R^{\rightarrow }( a , b )\)
|
\(\checkmark \)
\( cacbb \)
|
\(\checkmark \)
\( acc \)
|
\(\times \)
\( ccbb \)
|
\(\times \)
\( bacc \)
|
\( AlternatePrecedence ( a , b )\)
| Each time \( b \) occurs, it is preceded by \( a \) and no other \( b \) can recur in between |
\(\mathcal {C}_R^{\rightarrow }( a , b )\)
|
\(\checkmark \)
\( cacba \)
|
\(\checkmark \)
\( abcaacb \)
|
\(\times \)
\( cacbba \)
|
\(\times \)
\( acbb \)
|
\( ChainPrecedence ( a , b )\)
| Each time \( b \) occurs, then \( a \) occurs immediately beforehand |
\(\mathcal {C}_R^{\rightarrow }( a , b )\)
|
\(\checkmark \)
\( abca \)
|
\(\checkmark \)
\( abaabc \)
|
\(\times \)
\( bca \)
|
\(\times \)
\( bacb \)
|
\( CoExistence ( a , b )\)
| If \( b \) occurs, then \( a \) occurs, and vice versa |
\(\mathcal {C}_R( a , b )\)
|
\(\checkmark \)
\( cacbb \)
|
\(\checkmark \)
\( bcca \)
|
\(\times \)
\( cac \)
|
\(\times \)
\( bcc \)
|
\( Succession ( a , b )\)
|
\( a \) occurs if and only if it is followed by \( b \)
|
\(\mathcal {C}_R^{\rightarrow }( a , b )\)
|
\(\checkmark \)
\( cacbb \)
|
\(\checkmark \)
\( accb \)
|
\(\times \)
\( bac \)
|
\(\times \)
\( bcca \)
|
\( AlternateSuccession ( a , b )\)
|
\( a \) and \( b \) if and only if the latter follows the former, and they alternate each other in the trace |
\(\mathcal {C}_R^{\rightarrow }( a , b )\)
|
\(\checkmark \)
\( cacbab \)
|
\(\checkmark \)
\( abcabc \)
|
\(\times \)
\( caacbb \)
|
\(\times \)
\( bac \)
|
\( ChainSuccession ( a , b )\)
|
\( a \) and \( b \) occur if and only if the latter immediately follows the former |
\(\mathcal {C}_R^{\rightarrow }( a , b )\)
|
\(\checkmark \)
\( cabab \)
|
\(\checkmark \)
\( ccc \)
|
\(\times \)
\( cacb \)
|
\(\times \)
\( cbac \)
|
\( NotSuccession ( a , b )\)
|
\( a \) can never occur before \( b \)
|
\(\mathcal {C}_R^{\rightarrow }( b , a )\)
|
\(\checkmark \)
\( bbcaa \)
|
\(\checkmark \)
\( cbbca \)
|
\(\times \)
\( aacbb \)
|
\(\times \)
\( abb \)
|
\( NotCoExistence ( a , b )\)
|
\( a \) and \( b \) never occur together |
\(\mathcal {C}_R( a , b )\)
|
\(\checkmark \)
\( cccbbb \)
|
\(\checkmark \)
\( ccac \)
|
\(\times \)
\( accbb \)
|
\(\times \)
\( bcac \)
|
2.4 Modeling of activity life cycles
3 Integrated matching approach
3.1 Type-level matching using Declare rules
(a) Mapping \( var \)
| |
---|---|
Variable \( var (e) \in X \)
| Event \(e \in E \)
|
\( x _1\)
| CI selected |
\( x _2\)
| Classification specified |
\( x _3\)
| New comment created |
\( x _4\)
| Details logged |
\( x _5\)
| Group changed |
\( x _6\)
| KB update performed |
\( x _7\)
| Person added |
\( x _8\)
| New protocol created |
\( x _9\)
| Solution assigned |
\( x _{10}\)
| Status changed |
(b) Mapping \( val \)
| |
---|---|
Value \(val(a) \in 1..|{ A}|\)
| Activity \(a\in { A}\)
|
1 | Incident logging |
2 | Incident classification |
3 | Initial diagnosis |
4 | Functional escalation |
5 | Investigation and diagnosis |
6 | Resolution and recovery |
7 | Incident closure |
NVALUE
constraint available in many constraint problem solvers [28]. This constraint ensures that each value in the domain of the variables is assigned at least once. Still, the complexity of the matching problem remains very high. In the following, we present an approach to tackle this complexity issue by combining the information available in the log with knowledge on the process model structure.