Use a Factory and Shift Calendar Template |
Scroll Previous Topic Top Next Topic More |
If a factory and shift calendar is provided, the process times can be displayed as "net process times" in the front end. You can decide to only use these net times in the app or to have both types of time representation in the app and switch the whole app from gross to net process times and back with a button.
Gross process time is the interval between two timestamps by just calculating their delta while the net process time is the delta between two timestamps expressed in working hours only. Breaks, holidays, weekends or shift-ends are subtracted. The mpmX Template App provides a factory and shift calendar template for easy reuse. The steps are explained below. Of course, the template can be replaced by a custom calendar, provided, that the format of the custom calendar is adapted as explained in step 5.
Please note, that every time-related measure is provided as net time if the factory and shift calendar is used, except for the ProcessStepDuration: This time measure is not converted to net, because times outside of the shifts cannot be calculated. Therefore, if overtime would have worked, it would not be recorded. Instead NetProcessStepDuration is set to ProcessStepDuration and an overtime flag is calculated, which shows whether this process time has been worked outside of the shifts, i.e. in overtime. It is assumed that the process step times are recorded in such a way that the process time counts as net time (i.e. breaks, shift ends are booked out). Should this not be the case, the total net process time may be a bit too high.
When using the factory and shift calendar a new PPI AVG/Med Workdays becomes available. This PPI counts the workdays where the case was open, which gives a more accurate measure on the net work days than the net days shown by the PPI AVG/Med Lead Time:
To provide a factory and shift calendar, perform the following steps. If the shift calendar is set, all time-related values are expressed as net time:
1.Go to the mpmX_repository/[mvProcessDescription]/mpmX_config_repository.
2.Adjust the Data Model's Net and Gross Time Setting.
If the variable is set to 0, all time-related values are expressed as net time. If the variable is set to 1, two columns are created for each time-related field, eg. CaseLeadTime and NetCaseLeadTime, so that the app can switch with a button between net and gross time representation. The default is "0". |
Let mvNetAndGrossTimes = 0;
3.Adjust process step duration settings.
Choose if you would like to calculate the net process step duration by setting mvCalculateNetProcessStepDuration to "1" or not by setting it to "0". The default is "0". Keep in mind that if work was done outside of a shift, the process step duration is reduced, although work was done. This might give the impression, that work was done faster than it was in reality. Of course, you can always see, if the overtimeflag is "1", thus, you always have an indicator for extra hours - in this case the delta of the netProcessStepDuration and the ProcessStepDuration is the extra time worked. |
Let mvCalculateNetProcessStepDuration = 0;
4.Choose if the event calender is calculated.
Choose if you like to calculate the event calender (1) or not (0). Keep in mind: if the calender is calculated, the script performance will be slower. The event Calendar is needed for displaying in which shift an event took place, but this is not the case in most process mining projects. Therefore, the default is 0.
Let mvCalculateEventCalender = 0;
5.Adjust holiday settings.
If you like to eliminate holidays from the process times, set the variable mvEliminateHolidays to 1.
Let mvEliminateHolidays = 1;
If you would like to ingore holidays, set the variable mvEliminateHolidays to 0.
Let mvEliminateHolidays = 0;
6.Choose a holiday calendar.
a)For German holidays: Decide between the 16 German regions or German national holidays only.
Change the values in the variable mvHolidayCalender to the required region. The following values can be set (multiple values can be used, separated by comma):
Bundesweit, Sachsen, Sachsen-Anhalt, Brandenburg,Thüringen, Rheinland-Pfalz, Saarland, Nordrhein-Westfalen, Niedersachsen, Mecklenburg-Vorpommern, Schleswig-Holstein, Hamburg, Bremen, Bayern, Baden-Württemberg, Berlin
Please do not change the format of the variable mvHolidayCalender. Each value needs to be put between chr(39)&' and '&chr(39), you can list various values comma-separated. |
Let mvHolidayCalender = chr(39) & 'Bundesweit' & chr(39) & 'Baden-Württemberg' & chr(39);
b)If you would like to use another holiday calender than the template, refer to the calender file by the variable mvHolidayCalenderFile.
Please provide the same data-file format with respect to column names and data preparation as you find in the .csv-file "HolidayCalendar_Germany". |
Let mvHolidayCalenderFile = '$(LangAndMasterItemsConnection)/HolidayCalendar_Germany.csv';
7.Optional: If you do not use the mpmX Template Factory and Shift Calendar, change the calendar-table name.
•Provide the calendar as resident-table before calling the mining algorithms in step three.
•Change the calendars name in the variable mvFactoryShiftCalender. (Default is 'MPMTemplateAppFactoryAndShiftCalender'.)
Let mvFactoryShiftCalender = 'MPMTemplateAppFactoryAndShiftCalender';
•A calendar to calculate the net process times needs to provide the following information:
field 1: |
%DateKey |
field 4: |
holiday (1 to mark holidays and 0 to mark non-holidays) |
field 5: |
isWorkday (1 to mark workdays and 0 to mark off-workdays; please note: set weekends to 1 if work was done these days) |
field 6 to X: |
shiftStart_1, ... to shiftStart_n (provide one column for each shift that contains the shift START time in hh:mm-format) |
field X to 2X-6: |
shiftEnd_1, ... to shiftEnd_n (provide one column for each shift that contains the shift END time in hh:mm-format) |
8.If the mpmX Template App Factory and Shift Calendar is used, define the shifts. If you use a custom factory and shift calender then go to step 5.
Several shifts per day can be created by copying the line with the weekday from the inline table and increasing the shift ID in the column "shift".
Attention: Start and end times may not overlap for shifts on one day. |
Examples:
•If you work around the clock, enter shift "1" and enter "00:00" to "23:59" in startTime. See Tuesday in the table below.
•If, for example, two shifts are worked, startTime and endTime are maintained for one line with shift = 1 and one line with shift = 2 for each weekday. There may be breaks between shifts. See Wednesday or Thursday in the example below.
•If a shift extends beyond midnight, the shift must be split into two shifts: Day 1 from shift start to midnight and day 2 from midnight to shift end. See Friday second shift to Saturday first shift.
ShiftTimes:
load * inline [weekday_Event, shift, startTime, endTime
Mon, |
1, |
08:30, |
14:30 |
Tue, |
1, |
00:00, |
23:59 |
Wed, |
1, |
08:30 |
13:30 |
Wed, |
2, |
14:30, |
18:30 |
Thu, |
1, |
08:30, |
13:30 |
Thu, |
2, |
14:30, |
18:30 |
Fri, |
1, |
08:30, |
13:30 |
Fri, |
2, |
14:30, |
23:59 |
Sat, |
1, |
00:00, |
02:30 |
]; |
|
|
|
Please be aware that the abbreviations depend on the app settings in the 0.Init tab. Therefore, the days in the factory and shift calendar must be changed if you change the shortcuts of the "DayNames" in the 0.Init tab to another language than English (i.e. mon., tue. will be replaced with mo., di. in German). Otherwise, the calendar will not work. |