Skip to main content

Celonis Product Documentation

PROCESS EQUALS
Description

PROCESS EQUALS matches the variants of a process based on simple expressions. PROCESS EQUALS is less powerful than MATCH_PROCESS_REGEX and MATCH_PROCESS but it is also simpler to use.

Syntax
 PROCESS [ ON activity_table.string_column ] [ NOT ] equals [ start ] activity ( to activity )* [ end ]
  • activity_table.string_column: A string column of an activity table. By default, the activity column of the default activity table is used.

  • equals: EQUALS | #

  • start: START | ^ (The case has to match from the start)

  • end: END | $ (The case has to match till the end)

  • to: TO | ->

  • activity: ANY | * | single_activity | grouped_activity

    • single_activity: [LIKE] activity (Activity name. LIKE allows you to use wildcards in your activity name. LIKE reacts case sensitive.)

    • grouped_activity: (single_activity, ..., single_activity) (All activities in the list are possible options for this process step, which means that the value in the activity table column has to match one of the listed activities names.)

If the activity name does not exist, then a warning is displayed. In this scenario PROCESS EQUALS will have no matches, and PROCESS NOT EQUALS will match everything.

Empty cases, meaning cases without activities or only null activities, match PROCESS NOT EQUALS.

Null values

Null values in the specified string column are ignored.

Result

PROCESS EQUALS returns for each case whether the activities of this case match or do not match the pattern given by the simple expression. The result is case-based and can be used together with FILTER and CASE WHEN statements or in other contexts in which a condition is expected.

Use Cases
Examples

[1]

PROCESS EQUALS to filter down to cases where activity 'A' is directly followed by 'B'. Where in the case the activity 'A' is followed by 'B' doesn't matter in this case.

Query

Filter

         FILTER PROCESS EQUALS 'A' to 'B';
        

Column1

         "Table1"."CASE_ID"
        

Column2

         "Table1"."ACTIVITY"
        

Input

Output

Table1

CASE_ID : string

ACTIVITY : string

TIMESTAMP : date

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'B'

Tue Jan 01 2019 13:00:02.000

'1'

'C'

Tue Jan 01 2019 13:00:03.000

'2'

'A'

Tue Jan 01 2019 13:00:00.000

'2'

'C'

Tue Jan 01 2019 13:00:00.000

Result

Column1 : string

Column2 : string

'1'

'A'

'1'

'B'

'1'

'C'

[2]

ANY or short * is placeholder for no activity or an arbitrary number of activities. Therefore in this example all three cases are in the result.

Query

Filter

         FILTER PROCESS EQUALS 'A' to ANY to 'C';
        

Column1

         "Table1"."CASE_ID"
        

Column2

         "Table1"."ACTIVITY"
        

Input

Output

Table1

CASE_ID : string

ACTIVITY : string

TIMESTAMP : date

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'C'

Tue Jan 01 2019 13:00:02.000

'2'

'A'

Tue Jan 01 2019 13:00:00.000

'2'

'B'

Tue Jan 01 2019 13:00:02.000

'2'

'C'

Tue Jan 01 2019 13:00:04.000

'3'

'A'

Tue Jan 01 2019 13:00:00.000

'3'

'B'

Tue Jan 01 2019 13:00:02.000

'3'

'B'

Tue Jan 01 2019 13:00:04.000

'3'

'C'

Tue Jan 01 2019 13:00:06.000

Result

Column1 : string

Column2 : string

'1'

'A'

'1'

'C'

'2'

'A'

'2'

'B'

'2'

'C'

'3'

'A'

'3'

'B'

'3'

'B'

'3'

'C'

[3]

With END the given pattern has to match directly before the end of the case.

Query

Filter

         FILTER PROCESS EQUALS 'A' END;
        

Column1

         "Table1"."CASE_ID"
        

Column2

         "Table1"."ACTIVITY"
        

Input

Output

Table1

CASE_ID : string

ACTIVITY : string

TIMESTAMP : date

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'B'

Tue Jan 01 2019 13:00:02.000

'2'

'B'

Tue Jan 01 2019 13:00:00.000

'2'

'A'

Tue Jan 01 2019 13:00:02.000

Result

Column1 : string

Column2 : string

'2'

'B'

'2'

'A'

[4]

With START the given pattern has to match directly from the case start.

Query

Filter

         FILTER PROCESS EQUALS START 'A';
        

Column1

         "Table1"."CASE_ID"
        

Column2

         "Table1"."ACTIVITY"
        

Input

Output

Table1

CASE_ID : string

ACTIVITY : string

TIMESTAMP : date

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'B'

Tue Jan 01 2019 13:00:02.000

'2'

'B'

Tue Jan 01 2019 13:00:00.000

'2'

'A'

Tue Jan 01 2019 13:00:02.000

Result

Column1 : string

Column2 : string

'1'

'A'

'1'

'B'

[5]

PROCESS EQUALS to filter down to cases starting with activity 'A' or 'B', directly followed by 'C':

Query

Filter

         FILTER PROCESS EQUALS START ( 'A' , 'B' ) to 'B';
        

Column1

         "Table1"."CASE_ID"
        

Column2

         "Table1"."ACTIVITY"
        

Input

Output

Table1

CASE_ID : string

ACTIVITY : string

TIMESTAMP : date

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'B'

Tue Jan 01 2019 13:00:02.000

'1'

'C'

Tue Jan 01 2019 13:00:03.000

'2'

'B'

Tue Jan 01 2019 13:00:00.000

'2'

'B'

Tue Jan 01 2019 13:00:00.000

'3'

'D'

Tue Jan 01 2019 13:00:00.000

'3'

'B'

Tue Jan 01 2019 13:00:00.000

Result

Column1 : string

Column2 : string

'1'

'A'

'1'

'B'

'1'

'C'

'2'

'B'

'2'

'B'

[6]

It is also possible to use a shorter syntax. The example query is identical to PROCESS EQUALS START 'A' TO 'B' END.

Query

Filter

         FILTER PROCESS # ^ 'A' -> 'B' $;
        

Column1

         "Table1"."CASE_ID"
        

Column2

         "Table1"."ACTIVITY"
        

Input

Output

Table1

CASE_ID : string

ACTIVITY : string

TIMESTAMP : date

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'B'

Tue Jan 01 2019 13:00:02.000

'2'

'B'

Tue Jan 01 2019 13:00:00.000

'2'

'A'

Tue Jan 01 2019 13:00:02.000

Result

Column1 : string

Column2 : string

'1'

'A'

'1'

'B'

[7]

With LIKE wildcards can be used for the activity names.

Query

Filter

         FILTER PROCESS EQUALS START 'A' TO LIKE 'B%' END;
        

Column1

         "Table1"."CASE_ID"
        

Column2

         "Table1"."ACTIVITY"
        

Input

Output

Table1

CASE_ID : string

ACTIVITY : string

TIMESTAMP : date

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'BC'

Tue Jan 01 2019 13:00:02.000

'2'

'A'

Tue Jan 01 2019 13:00:00.000

'2'

'B'

Tue Jan 01 2019 13:00:02.000

Result

Column1 : string

Column2 : string

'1'

'A'

'1'

'BC'

'2'

'A'

'2'

'B'

[8]

Restricts the result to cases where A isn't directly followed by C.

Query

Filter

         FILTER PROCESS NOT EQUALS 'A' to 'C';
        

Column1

         "Table1"."CASE_ID"
        

Column2

         "Table1"."ACTIVITY"
        

Input

Output

Table1

CASE_ID : string

ACTIVITY : string

TIMESTAMP : date

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'C'

Tue Jan 01 2019 13:00:02.000

'2'

'A'

Tue Jan 01 2019 13:00:00.000

'2'

'B'

Tue Jan 01 2019 13:00:02.000

'2'

'C'

Tue Jan 01 2019 13:00:04.000

'3'

'A'

Tue Jan 01 2019 13:00:00.000

'3'

'B'

Tue Jan 01 2019 13:00:02.000

'3'

'B'

Tue Jan 01 2019 13:00:04.000

'3'

'C'

Tue Jan 01 2019 13:00:06.000

Result

Column1 : string

Column2 : string

'2'

'A'

'2'

'B'

'2'

'C'

'3'

'A'

'3'

'B'

'3'

'B'

'3'

'C'

[9]

PROCESS EQUALS to filter down to cases where activity 'A1' is directly followed by 'B1' with a custom activity expression. Where in the case the activity 'A1' is followed by 'B1' doesn't matter in this case.

Query

Filter

         FILTER PROCESS ON "Table1"."ACTIVITY" || '1' EQUALS 'A1' to 'B1';
        

Column1

         "Table1"."CASE_ID"
        

Column2

         "Table1"."ACTIVITY"
        

Input

Output

Table1

CASE_ID : string

ACTIVITY : string

TIMESTAMP : date

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'B'

Tue Jan 01 2019 13:00:02.000

'1'

'C'

Tue Jan 01 2019 13:00:03.000

'2'

'A'

Tue Jan 01 2019 13:00:00.000

'2'

'C'

Tue Jan 01 2019 13:00:00.000

Result

Column1 : string

Column2 : string

'1'

'A'

'1'

'B'

'1'

'C'

[10]

Filter process equals non-existing activity: Empty result and warning.

Query

Filter

         FILTER PROCESS EQUALS 'X';
        

Column1

         "Table1"."CASE_ID"
        

Column2

         "Table1"."ACTIVITY"
        

Input

Output

Table1

CASE_ID : string

ACTIVITY : string

TIMESTAMP : date

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'B'

Tue Jan 01 2019 13:00:02.000

'1'

'C'

Tue Jan 01 2019 13:00:03.000

'2'

'A'

Tue Jan 01 2019 13:00:00.000

'2'

'C'

Tue Jan 01 2019 13:00:00.000

(empty table)

Warning

MATCH_PROCESS / PROCESS EQUALS: Could not find activity ['X'].

[11]

Example for empty cases (no activities or all activities are null) which match for PROCESS NOT EQUALS.

Query

Filter

         FILTER PROCESS NOT EQUALS 'B';
        

Column1

         "CaseTable"."CASE_ID"
        

Input

Output

ActivityTable

CASE_ID : string

ACTIVITY : string

TIMESTAMP : date

'1'

'A'

Fri Jan 01 2016 01:00:00.000

'2'

'B'

Fri Jan 01 2016 02:00:00.000

'3'

null

Fri Jan 01 2016 03:00:00.000

CaseTable

CASE_ID : string

'1'

'2'

'3'

'4'

Foreign Keys

CaseTable.CASE_ID

ActivityTable.CASE_ID

Result

Column1 : string

'1'

'3'

'4'

See also: