Appendix: Example Data¶
This section will provide example xml data for setting up shift capacity rules and resource buckets.
Shift Capacity Rules¶
Multiple rules¶
This example shows setting up multiple shift capacity rules for a resource. One limits the number of activities over any 42 hour period to 5, and the second limits the total duration of the activities within any 18 hour period to 5 hours.
<Resources>
<id>R1</id>
<location_id_start>R1</location_id_start>
<location_id_end>R1</location_id_end>
<resource_type_id>Default</resource_type_id>
<rule_collection_id>Rules</rule_collection_id>
</Resources>
...
<Rule_Collection>
<id>Rules</id>
</Rule_Collection>
<Rule>
<rule_type_id>SHIFT_MAX_TOTAL_ACTIVITY_COUNT</rule_type_id>
<id>Rule1</id>
<global>false</global>
</Rule>
<Rule>
<rule_type_id>SHIFT_MAX_TOTAL_DURATION</rule_type_id>
<id>Rule2</id>
<global>false</global>
</Rule>
<Rule_Parameter>
<rule_type_id>SHIFT_MAX_TOTAL_ACTIVITY_COUNT</rule_type_id>
<rule_id>Rule1</rule_id>
<parameter_id>MaximumCount</parameter_id>
<parameter_value>5</parameter_value>
</Rule_Parameter>
<Rule_Parameter>
<rule_type_id>SHIFT_MAX_TOTAL_ACTIVITY_COUNT</rule_type_id>
<rule_id>Rule1</rule_id>
<parameter_id>ReferencePeriod</parameter_id>
<parameter_value>PT42H</parameter_value>
</Rule_Parameter>
<Rule_Parameter>
<rule_type_id>SHIFT_MAX_TOTAL_DURATION</rule_type_id>
<rule_id>Rule2</rule_id>
<parameter_id>MaximumTotalDuration</parameter_id>
<parameter_value>PT5H</parameter_value>
</Rule_Parameter>
<Rule_Parameter>
<rule_type_id>SHIFT_MAX_TOTAL_DURATION</rule_type_id>
<rule_id>Rule2</rule_id>
<parameter_id>ReferencePeriod</parameter_id>
<parameter_value>PT18H</parameter_value>
</Rule_Parameter>
<Rule_Parameter>
<rule_type_id>SHIFT_MAX_TOTAL_DURATION</rule_type_id>
<rule_id>Rule2</rule_id>
<parameter_id>IncludeTravel</parameter_id>
<parameter_value>false</parameter_value>
</Rule_Parameter>
<Rule_Collection_Rule>
<rule_collection_id>Rules</rule_collection_id>
<rule_type_id>SHIFT_MAX_TOTAL_ACTIVITY_COUNT</rule_type_id>
<rule_id>Rule1</rule_id>
</Rule_Collection_Rule>
<Rule_Collection_Rule>
<rule_collection_id>Rules</rule_collection_id>
<rule_type_id>SHIFT_MAX_TOTAL_DURATION</rule_type_id>
<rule_id>Rule2</rule_id>
</Rule_Collection_Rule>
Custom metric rule¶
This example sets up custom metrics against an activity and a rule to limit the total custom metric value per shift (not over a reference period) to 30.
<Activity>
<id>1</id>
<activity_class_id>CALL</activity_class_id>
<activity_type_id>Default</activity_type_id>
<location_id>1</location_id>
<do_on_site>false</do_on_site>
<base_value>1000</base_value>
<duration>PT1H</duration>
</Activity>
...
<Resources>
<id>R1</id>
<location_id_start>R1</location_id_start>
<location_id_end>R1</location_id_end>
<resource_type_id>Default</resource_type_id>
<rule_collection_id>Rules</rule_collection_id>
</Resources>
...
<Rule>
<rule_type_id>SHIFT_CUSTOM_METRIC</rule_type_id>
<id>Rule1</id>
<global>false</global>
</Rule>
<Rule_Parameter>
<rule_type_id>SHIFT_CUSTOM_METRIC</rule_type_id>
<rule_id>Rule1</rule_id>
<parameter_id>MaximumTotalValue</parameter_id>
<parameter_value>30</parameter_value>
</Rule_Parameter>
<Rule_Parameter>
<rule_type_id>SHIFT_CUSTOM_METRIC</rule_type_id>
<rule_id>Rule1</rule_id>
<parameter_id>MetricId</parameter_id>
<parameter_value>Units</parameter_value>
</Rule_Parameter>
<Rule_Collection>
<id>Rules</id>
</Rule_Collection>
<Rule_Collection_Rule>
<rule_collection_id>Rules</rule_collection_id>
<rule_type_id>SHIFT_CUSTOM_METRIC</rule_type_id>
<rule_id>Rule1</rule_id>
</Rule_Collection_Rule>
<Custom_Metric>
<id>Units</id>
<default_value>10</default_value>
</Custom_Metric>
<Activity_Custom_Metric>
<custom_metric_id>Units</custom_metric_id>
<activity_id>1</activity_id>
<value>1</value>
</Activity_Custom_Metric>
...
Shift capacity rule override¶
This example shows how the resource rule can be overridden by a shift rule on the day 1 shift. The rule type at both shift and resource level is set to'SHIFT_MAX_TOTAL_ACTIVITY_COUNT' and the 'NumberOfShifts' parameter is set on both rules to 1. Hence, the shift rule overrides the resource rule. The day 2 shift has no overrides, and so the resource level rule is used for validation during this shift.
<Activity>
<id>A1</id>
<activity_class_id>CALL</activity_class_id>
<activity_type_id>Default</activity_type_id>
<location_id>A1</location_id>
<do_on_site>false</do_on_site>
<base_value>6000</base_value>
<duration>PT1H</duration>
</Activity>
...
<Resources>
<id>R1</id>
<location_id_start>R1</location_id_start>
<location_id_end>R1</location_id_end>
<resource_type_id>Default</resource_type_id>
<rule_collection_id>RuleAtResource</rule_collection_id>
</Resources>
<Shift>
<id>44fbeafaed90441d87c80326b1acac83</id>
<resource_id>R1</resource_id>
<start_datetime>2023-01-01T09:00:00+00:00</start_datetime>
<end_datetime>2023-01-01T17:00:00+00:00</end_datetime>
<actual>true</actual>
<split_allowed>false</split_allowed>
<rule_collection_id>RuleAtShift</rule_collection_id>
</Shift>
<Shift>
<id>ad553c8eac574e6995a135109931ff8f</id>
<resource_id>R1</resource_id>
<start_datetime>2023-01-02T09:00:00+00:00</start_datetime>
<end_datetime>2023-01-02T17:00:00+00:00</end_datetime>
<actual>true</actual>
<split_allowed>false</split_allowed>
</Shift>
<Rule>
<rule_type_id>SHIFT_MAX_TOTAL_ACTIVITY_COUNT</rule_type_id>
<id>Rule1</id>
<global>false</global>
</Rule>
<Rule>
<rule_type_id>SHIFT_MAX_TOTAL_ACTIVITY_COUNT</rule_type_id>
<id>Rule2</id>
<global>false</global>
</Rule>
<Rule_Parameter>
<rule_type_id>SHIFT_MAX_TOTAL_ACTIVITY_COUNT</rule_type_id>
<rule_id>Rule1</rule_id>
<parameter_id>MaximumCount</parameter_id>
<parameter_value>2</parameter_value>
</Rule_Parameter>
<Rule_Parameter>
<rule_type_id>SHIFT_MAX_TOTAL_ACTIVITY_COUNT</rule_type_id>
<rule_id>Rule1</rule_id>
<parameter_id>NumberOfShifts</parameter_id>
<parameter_value>1</parameter_value>
</Rule_Parameter>
<Rule_Parameter>
<rule_type_id>SHIFT_MAX_TOTAL_ACTIVITY_COUNT</rule_type_id>
<rule_id>Rule2</rule_id>
<parameter_id>MaximumCount</parameter_id>
<parameter_value>3</parameter_value>
</Rule_Parameter>
<Rule_Parameter>
<rule_type_id>SHIFT_MAX_TOTAL_ACTIVITY_COUNT</rule_type_id>
<rule_id>Rule2</rule_id>
<parameter_id>NumberOfShifts</parameter_id>
<parameter_value>1</parameter_value>
</Rule_Parameter>
<Rule_Collection>
<id>RuleAtResource</id>
</Rule_Collection>
<Rule_Collection>
<id>RuleAtShift</id>
</Rule_Collection>
<Rule_Collection_Rule>
<rule_collection_id>RuleAtResource</rule_collection_id>
<rule_type_id>SHIFT_MAX_TOTAL_ACTIVITY_COUNT</rule_type_id>
<rule_id>Rule1</rule_id>
</Rule_Collection_Rule>
<Rule_Collection_Rule>
<rule_collection_id>RuleAtShift</rule_collection_id>
<rule_type_id>SHIFT_MAX_TOTAL_ACTIVITY_COUNT</rule_type_id>
<rule_id>Rule2</rule_id>
</Rule_Collection_Rule>
Rule Parameter Override¶
This example shows how the resource rule can be overridden by a rule parameter override for a particular period of time. The default count of the parallel resource is set to 1, but there is then an override created for between 13:00 and 17:00 of the shift, changing this number to 2 using an absolute value. Note that if is_relative was set to 'true' and the 'parameter_value' was set to '1', the result would be identical.
<!--
<Activity>
<id>A1</id>
<activity_class_id>CALL</activity_class_id>
<activity_type_id>AT1</activity_type_id>
<location_id>LOC</location_id>
<do_on_site>false</do_on_site>
<base_value>12000</base_value>
<duration>PT4H</duration>
</Activity>
...
<Location>
<id>LOC</id>
<latitude>51.43004817659699</latitude>
<longitude>-0.7106514944668443</longitude>
</Location>
<Resources>
<id>P1</id>
<location_id_start>LOC</location_id_start>
<location_id_end>LOC</location_id_end>
<resource_type_id>Default</resource_type_id>
<resource_class_id>PARALLEL</resource_class_id>
<rule_collection_id>Rules1</rule_collection_id>
<cost_ph>0</cost_ph>
</Resources>
<Rule>
<rule_type_id>PARALLEL_ACTIVITY_COUNT</rule_type_id>
<id>Rule1</id>
<global>false</global>
</Rule>
<Rule_Collection>
<id>Rules1</id>
</Rule_Collection>
<Rule_Collection_Rule>
<rule_collection_id>Rules1</rule_collection_id>
<rule_type_id>PARALLEL_ACTIVITY_COUNT</rule_type_id>
<rule_id>Rule2</rule_id>
</Rule_Collection_Rule>
<Rule_Parameter>
<rule_type_id>PARALLEL_ACTIVITY_COUNT</rule_type_id>
<rule_id>Rule1</rule_id>
<parameter_id>MaximumCount</parameter_id>
<parameter_value>1</parameter_value>
</Rule_Parameter>
<Shift>
<id>23f1ab55ec4448c2985a087a4bb16dd2</id>
<resource_id>P1</resource_id>
<start_datetime>2020-02-24T09:00:00+00:00</start_datetime>
<end_datetime>2020-02-24T17:00:00+00:00</end_datetime>
<actual>true</actual>
</Shift>
<Rule_Parameter_Override>
<id>1</id>
<rule_id>Rule2</rule_id>
<rule_type_id>PARALLEL_ACTIVITY_COUNT</rule_type_id>
<parameter_id>MaximumCount</parameter_id>
<parameter_value>2</parameter_value>
<start_time>2020-02-24T13:00:00+00:00</start_time>
<end_time>2020-02-24T17:00:00+00:00</end_time>
<is_relative>false</is_relative>
<override_priority>1</override_priority>
</Rule_Parameter_Override>
--!>
Resource Buckets¶
Input¶
This first example shows how a resource bucket can be set up in the Resources table.
<Resources>
<id>Bucket Resource 1</id>
<location_id_start>BR1</location_id_start>
<resource_type_id>Default</resource_type_id>
<max_travel>PT1H</max_travel>
<resource_class_id>BUCKET</resource_class_id>
<rule_collection_id>BucketRules</rule_collection_id>
</Resources>
Output¶
This example shows the output data for an allocation to a resource bucket. Note that there are no activity start or end times.
<Allocation>
<activity_id>A1</activity_id>
<resource_id>Bucket Resource 1</resource_id>
<visit_id>1</visit_id>
<visit_status>10</visit_status>
<plan_id>1</plan_id>
<visit_type>CALL</visit_type>
<date_time_fixed>false</date_time_fixed>
<duration>PT1H</duration>
<fixed_resource>false</fixed_resource>
<shift_id>S1</shift_id>
<rank>0</rank>
<shift_start_datetime>2020-02-24T09:00:00+00:00</shift_start_datetime>
<same_location>false</same_location>
<allocation_source>0</allocation_source>
<location_id>A1</location_id>
</Allocation>