Object-centric Process Mining Model: Difference between revisions

From QPR ProcessAnalyzer Wiki
Jump to navigation Jump to search
No edit summary
 
(16 intermediate revisions by the same user not shown)
Line 1: Line 1:
<div style="border:1px solid #dfdfdf;padding:0.5em 1em 0.5em 1em;background-color:#E7EAEC;margin:10px 0px 0px 10px;">
<div style="border:1px solid #dfdfdf;padding:0.5em 1em 0.5em 1em;background-color:#E7EAEC;margin:10px 0px 0px 10px;">
This page describes functionality that hasn't fully been released.
Note: This page describes functionality that hasn't fully been released.
</div>
</div>


QPR ProcessAnalyzer supports object-centric process mining models (OCPM) based on the OCEL 2.0 standard (https://www.ocel-standard.org).
QPR ProcessAnalyzer supports object-centric process mining (OCPM) based on the OCEL 2.0 standard (https://www.ocel-standard.org). To use OCPM, you need to create an OCPM model. The OCPM model can be analyzed in the '''OCPM flowchart''' and regular charts through converting the OCPM eventlog into case-centric eventlogs using OCPM perspectives.
 
== Create OCPM model ==
== Create OCPM model ==
New OCPM model is created as follows:
New OCPM model is created as follows:
# In the Workspace, open the project where to created the model.
# In the Workspace, open the project where to created the model.
# Select "NEW" in top right menu and select "OCPM model"
# Select '''NEW"''' in top right menu and select '''OCPM model'''.
# Define a name for the new model and click '''Create'''.
# Define a name for the new model and click '''Create'''.


Line 14: Line 15:
# In the Workspace, select the OCPM model and click '''Properties'''.
# In the Workspace, select the OCPM model and click '''Properties'''.
# In the dialog, open the '''Datasource''' tab.
# In the dialog, open the '''Datasource''' tab.
# Add following kind of configuration to the textbox:
# Add following kind of configuration to the textbox where each of the values are datatable names in the project:
<pre>
<pre>
{
{
   "Objects": "ocpm_model - objects",
   "Objects": "OCPM: objects",
   "Events": "ocpm_model - events",
   "Events": "OCPM: events",
   "ObjectToObject": "ocpm_model - object-object",
   "ObjectToObject": "OCPM: object-object",
   "EventToObject": "ocpm_model - event-object",
   "EventToObject": "OCPM: event-object",
   "ObjectTypes": {
   "ObjectTypes": {
     "Invoice": "ocpm_model - objecttype-Invoice",
     "Invoice": "OCPM object: Invoice",
     "Payment": "ocpm_model - objecttype-Payment",
     "Payment": "OCPM object: Payment",
     "Purchase Order": "ocpm_model - objecttype-Purchase Order"
     "Purchase Order": "OCPM object: Purchase Order"
   },
   },
   "EventTypes": {  
   "EventTypes": {  
     "Approve Purchase Requisition": "ocpm_model - eventtype-Approve Purchase Requisition",
     "Approve Purchase Requisition": "OCPM event: Approve Purchase Requisition",
     "Change PO Quantity": "ocpm_model - eventtype-Change PO Quantity",
     "Change PO Quantity": "OCPM event: Change PO Quantity",
     "Create Purchase Order": "ocpm_model - eventtype-Create Purchase Order",
     "Create Purchase Order": "OCPM event: Create Purchase Order",
     "Insert Invoice": "ocpm_model - eventtype-Insert Invoice",
     "Insert Invoice": "OCPM event: Insert Invoice",
     "Insert Payment": "ocpm_model - eventtype-Insert Payment"
     "Insert Payment": "OCPM event: Insert Payment"
   }
   }
}
}
Line 37: Line 38:


== Import from OCEL file ==
== Import from OCEL file ==
New OCPM model is created from an OCEL 2.0 JSON file as follows:
# In the Workspace, open the project where to import the model.
# Select '''NEW"''' in top right menu and select '''Import Model'''.
# Select the OCEL 2.0 JSON file from the disk and click '''Open'''.


== OCPM model structure ==
== OCPM model structure ==
OCPM model has the following tables:
OCPM model uses datatables described in the table below. Datatables can be named freely because the model configuration selects the datatable for each type of data. The datatables need to use the column names specified in the table below because those are the column names assumed by the OCPM calculation.
 
{| class="wikitable"
{| class="wikitable"
!'''Datatable'''
!'''Datatable'''
Line 59: Line 65:
|-
|-
||Object-object relations
||Object-object relations
||Describes relations between objects and objects (one row per relation).
||Relations between objects (one row per relation).
||
||
* '''OcelObjectObjectSourceId''': Source object id.
* '''OcelObjectObjectSourceId''': Source object id of the relation.
* '''OcelObjectObjectTargetId''': Target object id.
* '''OcelObjectObjectTargetId''': Target object id of the relation.
* '''OcelObjectObjectQualifier''': Describes the type of the relation (not used currently).
* '''OcelObjectObjectQualifier''': Describes the type of the relation (not used currently).
|-
|-
||Event-object relations
||Event-object relations
||Describes relations between events and objects (one row per relation).
||Relations between events and objects (one row per relation).
||
||
* '''OcelEventObjectSourceId''': Object id in the relation.
* '''OcelEventObjectSourceId''': Object id of the relation.
* '''OcelEventObjectTargetId''': Event id in the relation.
* '''OcelEventObjectTargetId''': Event id of the relation.
* '''OcelEventObjectQualifier''': Describes the type of the relation (not used currently).
* '''OcelEventObjectQualifier''': Describes the type of the relation (not used currently).
|-
|-
Line 76: Line 82:
||
||
* '''OcelObjectTypeObjectId''': Object id.
* '''OcelObjectTypeObjectId''': Object id.
* '''OcelObjectTypeTime''': Timestamp starting from the attribute value is valid (not used currently).
* '''OcelObjectTypeTime''': Timestamp where the attribute value is valid from (not used currently).
* '''OcelObjectTypeChangedField''': Changed object attribute name (not used currently).
* '''OcelObjectTypeChangedField''': Changed attribute name (not used currently).
* '''<Object attributes>''': All object attributes.
* '''<Object attributes>''': Columns for each of the object attribute values (column name is the attribute name).
|-
|-
||Event attributes (several tables)
||Event attributes (several tables)
Line 84: Line 90:
||
||
* '''OcelEventTypeEventId''': Event id.
* '''OcelEventTypeEventId''': Event id.
* '''<Event attributes>''': All event attributes.
* '''<Event attributes>''': Columns for each of the event attribute values (column name is the attribute name).
|}
|}


Datatables can be named freely, but the column names are predefined.
== OCPM perspectives ==
 
== OCPM Perspectives ==
Perspectives convert an OCPM model into the traditional case-centric model, allowing to analyze OCPM models in charts in dashboards. A single perspective is not able describe the OCPM model entirely, but just from a certain limited "perspective". By using several perspectives, it's possible to get a more complete picture of the OCPM model. The perspective starts from a certain object type and traverses the object-object relations as many steps as desired.
Perspectives convert an OCPM model into the traditional case-centric model, allowing to analyze OCPM models in charts in dashboards. A single perspective is not able describe the OCPM model entirely, but just from a certain limited "perspective". By using several perspectives, it's possible to get a more complete picture of the OCPM model. The perspective starts from a certain object type and traverses the object-object relations as many steps as desired.


Line 95: Line 99:
* '''Object type''': The object type that all events should be projected to.
* '''Object type''': The object type that all events should be projected to.
* '''Event types''': An array of event type names whose attributes are to be included into the perspective. If not defined, all the event types will be included, but their type specific attributes are not included.
* '''Event types''': An array of event type names whose attributes are to be included into the perspective. If not defined, all the event types will be included, but their type specific attributes are not included.
* '''Number of relation steps''': Specifies how many object-object relations will betraversed in order to find events connected to the specified object type. Default value is 0, which means that only those events are returned that are directly connected to objects of the specified object type.
* '''Number of relation steps''': Specifies how many object-object relations will be traversed in order to find events connected to the specified object type. Default value is 0, which means that only those events are returned that are directly connected to objects of the specified object type.


Generates a projection where resulting rows, each representing one event, are mapped to objects of type "Payment". If an event in OCEL model is not connected to Payment-object, even after performing two iterations of searches via ObjectToObject-table rows), that event will not show up in the result.  
Generates a projection where resulting rows, each representing one event, are mapped to objects of type "Payment". If an event in OCEL model is not connected to Payment-object, even after performing two iterations of searches via ObjectToObject-table rows), that event will not show up in the result.  


The result will have the following columns:
The resulting perspective eventlog will have the following columns:
OcelEventId (primary key)
* OcelEventId
OcelObjectId (primary key)
* OcelObjectId (mapped to case id)
OcelEventTime
* OcelEventTime (mapped to timestamp)
<all the object type specific columns found in Payment object type table>
* All the object type attributes in the perspective's select object type.
<all the event type specific columns found in all the 8 event types listed in EventTypes-property>
* All the event type attributes in all the perspective's select event types.


== Differences to OCEL 2.0 standard ==
== Differences to OCEL 2.0 standard ==

Latest revision as of 09:11, 26 June 2024

Note: This page describes functionality that hasn't fully been released.

QPR ProcessAnalyzer supports object-centric process mining (OCPM) based on the OCEL 2.0 standard (https://www.ocel-standard.org). To use OCPM, you need to create an OCPM model. The OCPM model can be analyzed in the OCPM flowchart and regular charts through converting the OCPM eventlog into case-centric eventlogs using OCPM perspectives.

Create OCPM model

New OCPM model is created as follows:

  1. In the Workspace, open the project where to created the model.
  2. Select NEW" in top right menu and select OCPM model.
  3. Define a name for the new model and click Create.

Configure OCPM model datatables

Datatables for the OCPM model can be configured as follows:

  1. In the Workspace, select the OCPM model and click Properties.
  2. In the dialog, open the Datasource tab.
  3. Add following kind of configuration to the textbox where each of the values are datatable names in the project:
{
  "Objects": "OCPM: objects",
  "Events": "OCPM: events",
  "ObjectToObject": "OCPM: object-object",
  "EventToObject": "OCPM: event-object",
  "ObjectTypes": {
    "Invoice": "OCPM object: Invoice",
    "Payment": "OCPM object: Payment",
    "Purchase Order": "OCPM object: Purchase Order"
  },
  "EventTypes": { 
    "Approve Purchase Requisition": "OCPM event: Approve Purchase Requisition",
    "Change PO Quantity": "OCPM event: Change PO Quantity",
    "Create Purchase Order": "OCPM event: Create Purchase Order",
    "Insert Invoice": "OCPM event: Insert Invoice",
    "Insert Payment": "OCPM event: Insert Payment"
  }
}

Import from OCEL file

New OCPM model is created from an OCEL 2.0 JSON file as follows:

  1. In the Workspace, open the project where to import the model.
  2. Select NEW" in top right menu and select Import Model.
  3. Select the OCEL 2.0 JSON file from the disk and click Open.

OCPM model structure

OCPM model uses datatables described in the table below. Datatables can be named freely because the model configuration selects the datatable for each type of data. The datatables need to use the column names specified in the table below because those are the column names assumed by the OCPM calculation.

Datatable Content Columns
Objects Objects in the model (one row per object).
  • OcelObjectId: Unique id for the object (among all objects in the model).
  • OcelObjectType: Object type name (such as Order, Invoice, Delivery).
Events Events in the model (one row per event).
  • OcelEventId: Unique id for the event (among all events in the model).
  • OcelEventType: Event type name (such as Order created, Invoice sent).
  • OcelEventTime: Event timestamp.
Object-object relations Relations between objects (one row per relation).
  • OcelObjectObjectSourceId: Source object id of the relation.
  • OcelObjectObjectTargetId: Target object id of the relation.
  • OcelObjectObjectQualifier: Describes the type of the relation (not used currently).
Event-object relations Relations between events and objects (one row per relation).
  • OcelEventObjectSourceId: Object id of the relation.
  • OcelEventObjectTargetId: Event id of the relation.
  • OcelEventObjectQualifier: Describes the type of the relation (not used currently).
Object attributes (several tables) Object attribute values, each object type in a separate table (one row per object).
  • OcelObjectTypeObjectId: Object id.
  • OcelObjectTypeTime: Timestamp where the attribute value is valid from (not used currently).
  • OcelObjectTypeChangedField: Changed attribute name (not used currently).
  • <Object attributes>: Columns for each of the object attribute values (column name is the attribute name).
Event attributes (several tables) Event attribute values, each event type in a separate table (one row per event).
  • OcelEventTypeEventId: Event id.
  • <Event attributes>: Columns for each of the event attribute values (column name is the attribute name).

OCPM perspectives

Perspectives convert an OCPM model into the traditional case-centric model, allowing to analyze OCPM models in charts in dashboards. A single perspective is not able describe the OCPM model entirely, but just from a certain limited "perspective". By using several perspectives, it's possible to get a more complete picture of the OCPM model. The perspective starts from a certain object type and traverses the object-object relations as many steps as desired.

To define a perspective, the following settings are defined:

  • Object type: The object type that all events should be projected to.
  • Event types: An array of event type names whose attributes are to be included into the perspective. If not defined, all the event types will be included, but their type specific attributes are not included.
  • Number of relation steps: Specifies how many object-object relations will be traversed in order to find events connected to the specified object type. Default value is 0, which means that only those events are returned that are directly connected to objects of the specified object type.

Generates a projection where resulting rows, each representing one event, are mapped to objects of type "Payment". If an event in OCEL model is not connected to Payment-object, even after performing two iterations of searches via ObjectToObject-table rows), that event will not show up in the result.

The resulting perspective eventlog will have the following columns:

  • OcelEventId
  • OcelObjectId (mapped to case id)
  • OcelEventTime (mapped to timestamp)
  • All the object type attributes in the perspective's select object type.
  • All the event type attributes in all the perspective's select event types.

Differences to OCEL 2.0 standard

The OCPM models in QPR ProcessAnalyzer are mainly following the OCEL 2.0 standard, but there are the following exceptions:

  • Changing of object attributes values over time is not supported.
  • ocel_time field of each event type table is moved to events table as every event anyways has a timestemp.
  • *_map_type are not needed as the model settings are used for the same purpose.
  • Object type tables: If OcelObjectTypeChangedField is not null, all the other field values are copied from the previous entry having the same OcelObjectTypeObjectId, except:
    • OcelObjectTypeChangedField, which has the name(s) of the changed field(s) as comma separated string.
    • The actual changed field, which has the new value.
    • OcelObjectTypeTime, which has the timestamp when the value changed.