Business Calendar

From QPR ProcessAnalyzer Wiki
Jump to navigation Jump to search

The business calendar defines a weekly calendar for working/office/factory/etc. time, which can be used in the duration calculation to get durations which only covers the working time (instead of 24 hour per day). Each model can have its own business calendar and in addition, business calendars can be defined when writing expressions. In dimensions and measures calculating durations, there is a Use business calendar checkbox determining whether durations are calculated 24 hour per day or using the business calendar of the model.

Defining Business Calendar

Business calendar can be defined for a model as follows: Open the models list, click the menu for a model and select Business calendar. In the dialog, the Weekly Business Time tab allows to define the weekly schedule where each row is a period within a day. Note that the weekly schedule periods must not overlap each other.

The Holidays tab allows to define days, when there is exceptionally no business hours. If you need to set the ending time to a midnight, use value 12:00 AM / 00:00 (i.e. same as the day begin time). If there is a need for a period that spans to multiple days, define them as separate rows where the previous ends at midnight and the next period starts at the beginning of the day.

Using Business Calendars in Expressions

In the expression language, a business calendar is created with the BusinessCalendar function using the following calendar definition:

  "WeeklyWorkingHours": [
    #{ "WeekDay": 1, "StartHour": 8, "EndHour": 16 },
    #{ "WeekDay": 2, "StartHour": 8, "EndHour": 11 },
    #{ "WeekDay": 2, "StartHour": 12, "EndHour": 17 },
    #{ "WeekDay": 3, "StartHour": 8, "EndHour": 16 },
    #{ "WeekDay": 4, "StartHour": 8, "EndHour": 16 },
    #{ "WeekDay": 5, "StartHour": 8, "EndHour": 15 }
  "ExceptionDays": [ "2020-12-06", "2020-12-24", "2020-12-25", "2020-12-26", "2021-01-01", "2021-01-06" ]

This example defines the following weekly schedule: Monday 8-16, Tuesday 8-11 and 12-17, Wednesday 8-16, Thursday 8-16 and Friday 8-15. There is no working time in Saturday and Sunday, as they are not defined in the example calendar.

The structure in the business calendar initialization has the following properties:

  • WeeklyWorkingHours: Defines the weekly working calendar. The items in the array are individual working periods. One working period can span only within the same day. There can be several working periods in the same day. The WeekDay is defined as a number between 0 (Sunday) and 6 (Saturday). The StartHour and EndHour needs to be between 0 and 24. If no weekly schedule is defined, 24h/days calendar is assumed.
  • ExceptionDays: List of dates, when there is exceptionally no working time (e.g. holidays). Exception days are defined as a string array where each day is defined using format yyyy-MM-dd. Defining exception days is not mandatory.

Calculating Duration between Timestamps

Durations based on the business calendar are calculated by using the TimeDiff function that is available in the Business Calendar object:

let calendar = BusinessCalendar(#{
  "WeeklyWorkingHours": [
    #{ "WeekDay": 1, "StartHour": 8, "EndHour": 16 },
    #{ "WeekDay": 2, "StartHour": 8, "EndHour": 11 },
    #{ "WeekDay": 2, "StartHour": 12, "EndHour": 17 }
  "ExceptionDays": [ "2020-12-06", "2020-12-24", "2020-12-25", "2020-12-26", "2021-01-01", "2021-01-06" ]
calendar.timeDiff(DateTime(2020, 12, 1), DateTime(2021, 1, 1));

Duration Calculation in Process Mining Objects

Process mining objects have the following properties and functions available for duration calculation:

Object type 24/7 durations Business calendar durations
  • Duration property
  • DurationBetweenEvents function
  • Duration(businessCalendar) function
  • DurationBetweenEvents function (5. parameter)
  • AverageDuration property
  • MedianDuration property
  • DurationStandardDeviation property
  • AverageDuration(BusinessCalendar) function
  • MedianDuration(BusinessCalendar) function
  • DurationStandardDeviation(BusinessCalendar) function
  • Duration property
  • Duration(BusinessCalendar) function