Schema Entities¶
Entity: Activity (Input)¶
Activity defines what is to be scheduled. Activities can be things such as service calls, work breaks or private appointments where a resource is not available for work. An activity could be split, prioritized, deprioritized or treated in a special way in relation to other activities.
A 'repeatable' activity can be created that can be scheduled to resources indefinitely, i.e. as long as there is enough space in a resource's route, multiple visits (essentially occurrences) of this activity will be allocated to the resource. A 'repeatable' activity defines a multi-visit activity. This is restricted to be used in Cyclic Scheduling only.
Activities can be identified as being able to be split into a number of consecutive visits spread over shifts. This is achieved by setting Split Allowed to true.
Warning
An activity should not be marked as splittable if it has different start and end locations, since in this case it is undefined where the resource would be when the split occurs. In addition, an activity cannot be split between shifts for bucket resources.
Activities at the same location can be treated in a special way to either force all activities at the location to be scheduled together, or to give the scheduler an extra incentive to do so. This is achieved via the attribute do_on_location_incentive. For example, suppose a resource is working on an activity at a certain location where there are several other activities outstanding. If an urgent activity then came into the system he could still be sent away from that location to do the urgent activity before returning later to finish the other activities there. In fact, the other activities may even be scheduled elsewhere in this situation. By setting a soft constraint the resource could be made to stay on location unless the urgent job was particularly valuable. By setting a hard constraint you can ensure that the resource will never be sent away from the location in these circumstances. Of course, in the normal run of things you can expect all activities at a location to be scheduled together, as this would be the best schedule.
We can make a distinction between location and locality by making use of the do_in_locality_incentive attribute. This can be used in conjunction with the do_on_location_incentive. For example, we could have a block of flats, each flat has a different location but the same locality. We can then set a hard constraint on the location but a soft constraint on the locality and schedule jobs within the same location together, i.e. jobs at each flat first.
If the do_in_locality_incentive is not set then the do_on_location_incentive will apply for locations and localities.
A soft constraint is set by using a positive value. A value of 1 has no effect. A value greater than 1 makes it more likely that another activity at the same location will be scheduled immediately after this one, by increasing the value of the visits. The value represents the maximum multiplier that may be applied to the visit value when activities at the same location are scheduled together. The actual multiplier applied increases with the total number of same location activities scheduled within a single trip.
Note
To be precise, the exact multiplier applied is equal to the ((n - 1) / n)th power of the incentive, where n is the number of visits at the same location scheduled together. For example, if two visits at the same location are scheduled together, and each has a do on location incentive of 1.5, the value of each visit will be multiplied by the square root of 1.5, or about 1.225. If 10 visits at the same location are scheduled together, then a visit with an incentive of 2 would have its value increased by a factor of 1.866 (2 ^ (9/10)), while a visit with no incentive would retain its original value.
Note
Note that the resource location will also be considered when applying the incentive. If a resource starts a shift at the same location as an activity with a do on location incentive, and the activity is scheduled at the start of the shift, then the incentive will apply to the activity. For the purposes of the calculation, this is treated as if an extra activity were scheduled at the location.
If a hard constraint is required the value of 'do_on_location_incentive' should be set to -1. In this situation whenever a resource is scheduled to arrive at a location, he must carry out all work it is possible for him to do at that time. More specifically, if there is another activity at the location with a do_on_location_incentive of -1, then he must carry out this activity unless one of the following conditions holds:
- The resource is not permitted to carry out the activity, for example due to not having the correct skills.
- The activity is not available to be carried out at any time within the shift in question.
- Only applicable if the parameter 'DoOnLocationCheckSingleLocation' is set to true: The only activities scheduled within the shift in question are also at this location.
The third exception condition is not considered by default as it can have confusing side effects.
Warning
A value of -1 for do_on_location_incentive may cause activities to be unscheduled, when they could otherwise be scheduled. Do not use this value unless you are confident that you understand the behaviour it will cause.
Note
The recommended values for do_on_location_incentive are -1 or anything between 1 and 2 (values higher than 2 can be used but aren't recommended as they may start to have a detrimental effect on the general schedule quality).
A value greater than 1 will act as a multiplier on the value of doing the activity whenever it has been scheduled after another activity at the same location. It will also trigger the optimiser to specifically attempt to schedule this activity with other activities at the location. However, this will not force the optimiser to reject changes that would actually improve the schedule.
Two consecutive activities are considered to be at the same location if a locality is specified for both locations, and it is the same; or if locality is not specified on one or both locations, and the two location ids are the same.
Note
To send a break into the system requires sending an Activity element with an activity_class_id = "BREAK", this must be sent in conjunction with an Activity_Status element which contains the desired duration of the break, as well as its current status (unallocated, allocated, on site, travelling etc.) and an Activity_SLA element detailing the window within which this break must be scheduled.
Note
To send a private activity into the system requires sending an Activity element with an activity_class_id = "PRIVATE", this must be sent in conjunction with an Activity_Status element which contains the desired duration of the activity, as well as a date_time_fixed detailing when the activity starts. The status should be set to committed (30). It is not necessary to send an Activity_SLA for private activities.
Note
By default all CALL and DEPOT class activities are expected to have a location. BREAK activities are expected to not have a location, while for PRIVATE activities a location is optional. However, BREAK and PRIVATE activities should be fixed to a particular resource via the activity status.
If locationless activities are required in the more general sense, this can be enabled by setting the parameter 'AllowLocationlessActivities' to true.
Note
Where Split Allowed is set to True against an activity then the DSE is free to split the activity over consecutive shifts, or around activities marked as interruptable. Thus it is possible that, in order to squeeze one last activity into a shift that the DSE schedules say the last 5 minutes of an activity to be completed at the start of the next shift. This is probably undesirable from a business perspective and so to allow the EA to prohibit this behaviour a further additional string field Min Split with default value PT1H is used. Where Split Allowed is set to false this field will not be used (and need not be set to any particular value). Where Split Allowed is set to true then the DSE will ensure that no part of the activity is split into a section where the time at location is scheduled to be less than the time specified by Min Split.
Note
Priority. Where the activity is using an SLA Type based upon the 'POWER_BASED' mechanism type this attribute will have no effect on the scheduling of the activity.
Warning
In order for an Activity to be considered for scheduling an Activity_Status and Activity_SLA must also be created.
Note
Committing a split activity commits the whole activity and makes it unsplit i.e. it will assume it is all happening now.
If just the first part of the activity needs to be committed but not all, then a new activity for the part not to be committed needs to be created, and the original activity adjusted, and tied to part 1 using a pre-req or a time constraint.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the activity. | PK | M |
| activity_class_id | String(10) | Defines the type of activity. Foreign Key: Activity_Class Allowed Values: BREAK, CALL, DEPOT, PRIVATE, REPEATABLE, WRAPPER | M(CALL) | |
| activity_type_id | String(32) | Describes the type of activity. E.g. service call. Foreign Key: Activity_Type Notes: Must exist as Activity Type. | M(Default) | |
| appointed | Boolean | Defines whether this activity represents an appointment that has been booked. | O | |
| auto_duration | Time Span | Defines the estimated duration of the activity, as determined automatically using the Schedule Archive. Notes: This should not be filled in externally. | O | |
| auto_duration_enabled | Boolean | Defines whether an auto_duration should be used for this activity. | O | |
| base_value | Double | Defines the basic marginal value of scheduling this activity compared to not scheduling it. Notes: May be used where Mechanism Type = ‘POWER_BASED’ for the SLA | O | |
| calendar_id | String(32) | Defines the id of the calendar to use when applying SLA times to this activity. Foreign Key: Calendar | O | |
| colour | String(9) | Used for display purposes. Notes: Format: #RRGGBB | O | |
| contract_id | String(32) | Defines the id of the contract that this activity relates to. Foreign Key: Contract | O | |
| cost_of_split | Double | Defines the cost incurred each time the activity is split. Notes: Only applies if split_allowed = true. Each time the activity is split this value is added to the cost. This can be used to avoid unnecessary splitting of activities. E.g. if it is split into 3 segments the cost is applied twice. | O | |
| customer | String(100) | Defines the customer that this activity relates to. Foreign Key: Customer Notes: Note that 'customer' does not follow the standard naming format of columns that reference parent tables ('table_name'_id). This does not signify any differences - it is for technical reasons that it is different. | O | |
| date_time_created | Date Time | Defines the date time the activity was created. | O | |
| date_time_open | Date Time | Defines the date and time the activity was opened to be processed. | O | |
| description | String(2000) | Describes the activity if required. | O | |
| display_context_id | String(32) | Provides the context to determine which list should be used when viewing in the Scheduling Workbench. Notes: This should match the id of a Display_Context row defined in the system data | O | |
| do_in_locality_incentive | Double | Defines how activities at the same locality should be scheduled. | O | |
| do_on_location_incentive | Double | Defines how activities at the same location should be scheduled. Notes: See notes above. | O | |
| duration | Time Span | Defines an alternative option for where duration is taken from Notes: Only used if duration is not specified on any activity_status. If duration is also not specified on the activity, the value on the activity type will be used. | O | |
| end_location_id | String(32) | Defines the location at which the activity ends. Foreign Key: Location Notes: Only required if the end location is different from the activity start location. | O | |
| external_ref | String(40) | Defines a string used by the EA to identify this activity. | O | |
| icon_id | String(32) | The id of an icon to use for this activity. Foreign Key: Icon | O | |
| interrupt | Boolean | Defines whether this activity is allowed to be used to split an activity where split_allowed is set to true. | O | |
| interrupt_multiplier | Double | Defines a multiplier that is applied to the cost_of_split of a splittable activity when interrupted by this activity. Notes: Only applies where interrupt=true. If several activities interrupt a splittable activity within the same split the highest value multiplier will be applied. | O | |
| interrupt_priority | Integer | Defines the priority of this activity when considering whether to use it to interrupt a splittable activity. This is compared to the split_minimum_priority on the splittable activity. Notes: Only applies where interrupt=true. | O | |
| last_visited_date_time | Date Time | For a REPEATABLE activity used with a modelling pattern, this is the last time a visit to the activity occurred. Notes: This is for use with Cyclic Scheduling. | O | |
| location_id | String(32) | Defines the location where the activity is to take place. Foreign Key: Location | O | |
| maximum_displaceable_priority | Integer | When appointment booking for this activity, the engine will attempt to displace any other activities of this priority or less. | O | |
| memo | String(4000) | Provides general information about the activity to be displayed. Notes: Large amounts of data held here can impact performance of the software and should be kept to a minimum. | O | |
| min_split | Time Span | Defines the minimum on site duration for any visit to a split activity. | O | |
| modelling_pattern_id | String(32) | Defines the unique identifier for the modelling pattern. Foreign Key: Modelling_Pattern Notes: Only required for cyclic scheduling. Can either be linked to a number of activities of type CALL or a single activity of type REPEATABLE. | O | |
| priority | Integer | Defines the priority of this activity. The greater the number the greater the priority. Notes: This is used in the appointment booking process when displacing activities. | O | |
| reactive | Boolean | Defines whether the activity is reactive. Used in conjunction with the Schedule Distribution Service. Notes: When not present the value from Activity_Type.reactive is used. | O | |
| remote_fulfillment | Boolean | If true, this indicates that a resource can carry out this work without visiting the activity location. | O | |
| separation_group_id | String(32) | Defines the id of the separation group this activity belongs to. Foreign Key: Separation_Group | O | |
| service_level | String(100) | Used for information and reporting only. Has no impact on scheduling. Notes: If not specified the value on the Activity_Type will be used. | O | |
| sla_template_id | String(32) | Defines which SLA Template should be used. Foreign Key: SLA_Template Notes: If the activity has any Activity_SLAs specified against it, then these will be used instead of the template. | O | |
| split_allowed | Boolean | Defines whether the activity is allowed to split. Notes: This should not be allowed for an activity with different start and end locations | O | |
| split_minimum_priority | Integer | Defines the minimum split priority required for this activity to be split, and the minimum interrupt priority required for another activity to be able to interrupt this activity. Notes: Only applies where split_allowed=true. | O | |
| split_model_id | String(32) | Defines which split model to use for split settings. Foreign Key: Split_Model Notes: If specified, all split settings will be taken from the split model (even if set to null). | O | |
| time_zone | String(32) | Defines the id of the time zone related to this activity. | O |
Examples¶
<Activity>
<id>Example1</id>
<location_id>NG161QD</location_id>
</Activity>
<Activity>
<id>Example2</id>
<activity_class_id>CALL</activity_class_id>
<activity_type_id>AT2</activity_type_id>
<location_id>NG161QD</location_id>
<priority>2</priority>
<split_allowed> true</split_allowed>
<do_on_location_incentive>1</do_on_location_incentive>
<min_split>PT2H0M0S</min_split>
<priority>3</priority>
<description>All attributes defined</description>
<date_time_created>2006-01-03T12:01:00.0000000+01:00</date_time_created>
<date_time_open>2006-01-03T12:01:00.0000000+01:00</date_time_open>
<external_ref>Test 8</external_ref>
</Activity>
Entity: Activity_Availability_Set (Input)¶
Links an activity to an availability set.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | The id of the activity. Foreign Key: Activity | PK | M |
| availability_set_id | String(32) | The id of the availability set. Foreign Key: Availability_Set | PK | M |
Entity: Activity_Category (Input)¶
Represents an association between an activity and a category.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | The id of the activity to be associated with a category and categorisation. Foreign Key: Activity | PK | M |
| categorisation_id | String(32) | The id of the categorisation to link to the activity. Foreign Key: Category | PK | M |
| category_id | String(32) | The id of the category to link to the activity. Foreign Key: Category | M |
Entity: Activity_Class (Lookup)¶
Activity Class defines what sort of activity is represented. Activities can relate to some operational process, a resource rest period or a private activity where the resource is unavailable to be scheduled for work. Activity Class is a method of incorporating these different types of activities into the scheduling process.
There are six classes of activities :-
BREAK: which defines a period of time within a time window where the resource must stop servicing call class activities.
CALL: which defines an activity a resource must undertake at a location.
DEPOT: defines the location of a depot to be used for part replenishment.
PRIVATE: defines periods of time when the resource is not available to service activities of any other class.
REPEATABLE: defines an activity that can be undertaken multiple times.
WRAPPER: defines an activity to be carried out as an initial or final task in a batch of work.
Note
Activity Class values are setup internally and need not be provided by the EA
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(10) | Defines a unique id for the activity class. Allowed Values: BREAK, CALL, DEPOT, PRIVATE, REPEATABLE, WRAPPER | PK | M |
| description | String(100) | Describes activity class purpose. | O | |
| message_id | Integer | Defines the id of the message describing the activity class purpose. | O |
Entity: Activity_Custom_Metric (Input)¶
This defines the value an activity has against a custom metric. This value is used for the activity when validating shift rules or parallel rules involving custom metrics.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | The id for the activity the metric is being specified for Foreign Key: Activity | PK | M |
| custom_metric_id | String(32) | The id of the custom metric being used Foreign Key: Custom_Metric | PK | M |
| value | Double | The value to use for the activity | M |
Entity: Activity_Custom_URL (Input)¶
Defines the custom url to be used for a particular activity. Custom url parameters can be specified for the activity, the use of which is defined on the URL_Parameter record for the specific custom url id (see example below).
<Activity_Custom_URL>
<activity_id>SVC_1</activity_id>
<custom_url_id>urlActivities</custom_url_id>
<custom_parameter_value1>SVC_1</custom_parameter_value1>
</Activity_Custom_URL>
<Custom_URL>
<id>urlActivities</id>
<name>Prepare work order</name>
<custom_action>ACTIVITY_DETAIL_FORM</custom_action>
</Custom_URL>
<URL_String>
<custom_url_id>urlActivities</custom_url_id>
<sequence>1</sequence>
<string_value>https://example.com/</string_value>
</URL_String>
<URL_Parameter>
<custom_url_id>urlActivities</custom_url_id>
<sequence>2</sequence>
<custom_parameter>1</custom_parameter>
</URL_Parameter>
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Defines the activity linked to the specified custom url. Foreign Key: Activity | PK | M |
| custom_url_id | String(32) | Defines the custom url linked to the specified activity. Foreign Key: Custom_URL | PK | M |
| custom_parameter_value1 | String(2000) | Defines the first custom url parameter value to be used in the custom url for this activity. The sequence in the url string is defined on URL_Parameter. See example code above. | O | |
| custom_parameter_value2 | String(2000) | Defines the second custom url parameter value to be used in the custom url for this activity. The sequence in the url string is defined on URL_Parameter. See example code above. | O | |
| custom_parameter_value3 | String(2000) | Defines the third custom url parameter value to be used in the custom url for this activity. The sequence in the url string is defined on URL_Parameter. See example code above. | O | |
| custom_parameter_value4 | String(2000) | Defines the fourth custom url parameter value to be used in the custom url for this activity. The sequence in the url string is defined on URL_Parameter. See example code above. | O |
Entity: Activity_Group (Input)¶
Activity Group defines related activities either as pre-requisites, co-requisite, or combined activities, or as a suggested ordering between the activities. The type of activity group is indicated by the value in attribute pre_co_req.
A pre-requisite is an activity that must be started/completed before another activity can commence. There can optionally be specified a minimum delay after the start of the pre-requisite before this activity can commence, and a maximum time after the start of the pre-requisite before which this activity must commence. If the activity cannot be started before this time, then it will not be allocated. However, the first part of the pre-requisite may still be allocated, unless the attribute all_or_nothing is set to true.
A corequisite defines two activities that must be scheduled to start at the same time.
A combined activity group links two activities such that they will be scheduled either back-to-back with the same resource, or to be commenced at the same time by two different resources (essentially a co-requisite). The choice of how the activity is scheduled is left to the DSE, which will adopt optimum choice for the schedule.
A suggested ordering defines two activities that should ideally be scheduled one after the other.
Note
Where same_resource is set to true the DSE will only allow the allocation of the activity to the resource that was allocated the pre-requisite.
Note
Set Activity_Group.overlap_allowed attribute to true to allow overlaps between a pre-req and its dependent. This attribute is defaulted to false if not provided.
The dependent activity should always start at the same time or after its pre-req. Obviously, for the activities to overlap they have to be allocated to different resources (set Activity_Group.same_resource to false).
This only applies to pre-requisite activities.
Note
For pre-requisites the 2 linked activities are ordered as follows :-
activity_id1 = Activity A
activity_id2 = Activity B
Then Activity B must be done before Activity A.
Note
For co-requisites the linking can be in any order. Three co-requisite activities A,B and C can be linked as A,B and A,C or A,B and B,C.
Note
For combined activities configured as follows:-
activity_id1 = A
activity_id2 = B
If the above are scheduled back-to-back then the ordering may be either A-B or B-A.
Note
In order to share skills across co-requisite allocations refer to entity Activity_Skill.
Note
This can also be used to define a suggested order between the activities. If activity A should be done immediately before activity B, the data should be set as follows:
activity_id1 = Activity B
activity_id2 = Activity A
pre_co_req = ORDER_ONE_WAY
To specify that the activities should be done one after the other in either direction, set pre_co_req to ORDER_TWO_WAY.
By default, activities ordered with ORDER_ONE_WAY or ORDER_TWO_WAY will only be allowed in the same shift. To allow the activities to access consecutive shifts, set allow_ordered_across_shifts to true.
The attribute order_incentive provides a multiplier that will be applied to the value of the scheduled activities if the suggested ordering is followed. If no order_incentive is specified this will be treated as a forced ordering which the DSE must follow.
If the ordering is not forced but you do wish to enforce that the activities are carried out by the same resource then the same_resource flag should be set to true.
Both ORDER_ONE_WAY and ORDER_TWO_WAY cannot be used with appointment booking. The use of appointment booking with suggested order activities is not supported.
ORDER_TWO_WAY activities may be scheduled in parallel with each other to a parallel resource.
Warning
The use of activity groups significantly increases the complexity of the scheduling problem, and as such they should be used with care. If more than 5 activities need to be linked together in a single group structure, then IFS PSO Product Development must be consulted and thorough testing must be performed to confirm successful operation.
Appointment booking of linked activities is considerably more complex than single activities, since the related activities may cause potential slots to be blocked out resulting in fewer offers being made. As such IFS PSO Product Development strongly recommend that appointment booking is only done for activities with one related activity - either pre-req or co-req. If a situation arises where more complex structures need to be appointment booked, then IFS PSO Product Development must be consulted and thorough testing must be performed to confirm that the ABE is making satisfactory offers.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id1 | String(32) | Specifies the id of the activity this relates to. Foreign Key: Activity Notes: No circular references between Activity Id1 and Activity Id2. | PK | M |
| activity_id2 | String(32) | Specifies the id of the pre-requisite or co-requisite activity. Foreign Key: Activity Notes: For pre-requisites this activity must come before activity_id1. | PK | M |
| pre_co_req | String(20) | Defines the type of link being made between the activities. Allowed Values: PRE, CO, COMBINED, ORDER_ONE_WAY, ORDER_TWO_WAY | PK | M |
| all_or_nothing | Boolean | Specifies that this activity can be allocated only if all pre-requisites can also be allocated. Notes: Only applies if pre_co_req = PRE. | M(false) | |
| end_time_calculation_method | String(8) | Specifies how the end time will be calculated for co-requisite and combined calls that start at the same time. Allowed Values: STANDARD, PARENT, EARLIEST, LATEST Notes: Only applies if pre_co_req = CO or COMBINED. | M(STANDARD) | |
| min_delay | Time Span | Defines the time delay that activity 1 must wait to start after pre-requisite activity 2 has started. Notes: Only applies if pre_co_req = PRE. | M(PT0S) | |
| same_resource | Boolean | Defines whether the same resource that performs the pre-requisite must perform activity 1. Notes: Not applicable for co-requisite or combined links. | M(false) | |
| activity_group_sla_model_id | String(32) | Defines an SLA model to be applied to the value of a visit to a dependent activity based on its scheduling in relation to a pre-requisite visit. Foreign Key: Activity_Group_SLA_Model Notes: Only applies if pre_co_req = PRE. | O | |
| allow_ordered_across_shifts | Boolean | If true, ordered activities are allowed to be scheduled across consecutive shifts. Notes: Only applies if pre_co_req = ORDER_ONE_WAY or ORDER_TWO_WAY | O | |
| keep_splits_together | Boolean | For co-requisites that are splittable this determines whether the individual visits should all start and end at the same time, or just the start time of the first visits. Notes: Only applies if pre_co_req = CO or COMBINED. | O | |
| max_delay | Time Span | Defines the time delay after start of pre-requisite activity before which activity must commence. Notes: Only applies if pre_co_req = PRE. | O | |
| max_delay_start_proportion | Double | Specifies that the max delay will apply from the time when this proportion of the pre-requisite activity has been completed. Notes: Must be between 0 and 1. Only applies if pre_co_req = PRE. | O | |
| min_delay_start_proportion | Double | Specifies that the min delay will apply from the time when this proportion of the pre-requisite activity has been completed. Notes: Must be between 0 and 1. Only applies if pre_co_req = PRE. | O | |
| order_incentive | Double | Defines a multiplier on the value of scheduling the activities if the DSE follows the suggested order of the two activities. Notes: Only applies if pre_co_req = ORDER_ONE_WAY or ORDER_TWO_WAY. If no value is supplied then the order is assumed to be forced. | O | |
| overlap_allowed | Boolean | Specifies whether the dependent activity is allowed to start at the same time or after the start of its pre-requisite activity Notes: The activities are allocated to different resources (same_resource attribute has to be false). This only applies to pre-requisite activities. | O |
Examples¶
<Activity_Group>
<activity_id1>Test19-A</activity_id1>
<activity_id2>Test19-B</activity_id2>
<pre_co_req>PRE</pre_co_req>
</Activity_Group>
<Activity_Group>
<activity_id1>Test19-B</activity_id1>
<activity_id2>Test19-C</activity_id2>
<pre_co_req>PRE</pre_co_req>
<all_or_nothing>true</all_or_nothing>
<min_delay>PT1H5M0S</min_delay>
<same_resource>true</same_resource>
<max_delay>PT6H0M0S</max_delay>
</Activity_Group>
<Activity_Group>
<activity_id1>Act-A</activity_id1>
<activity_id2>Act-B</activity_id2>
<pre_co_req>COMBINED</pre_co_req>
</Activity_Group>
Entity: Activity_Group_SLA (Input)¶
Sets the SLA type to use to determine the visit value proportion when the delay between pre-requisite and dependent activities is within the specified start and end delays.
If there are multiple items within a model then these should not overlap.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_group_sla_model_id | String(32) | Specifies the id of the model this belongs to. Foreign Key: Activity_Group_SLA_Model | PK | M |
| start_delay | Time Span | Defines the minimum delay for which this SLA type should be applied. | PK | M |
| end_delay | Time Span | Defines the maximum delay for which this SLA type should be applied. | M | |
| sla_type_id | String(32) | Specifies the id of the SLA type to apply. Foreign Key: SLA_Type | M |
Entity: Activity_Group_SLA_Model (Input)¶
Activity group SLA models are used to model how the value of a visit to an activity with a pre-requisite activity is affected by its scheduling in relation to the pre-requisite visit. For example, this could be used to prefer that the dependent activity is carried out within 1 day of the pre-requisite activity, but still allow it to be scheduled with a larger gap if required.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id for the model. | PK | M |
| description | String(2000) | Provides a description of this model. | O |
Entity: Activity_Incentive (Input)¶
This links an activity to an incentive, allowing visits to the activity to contribute to the incentive.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the id of the activity this relates to. Foreign Key: Activity | PK | M |
| incentive_id | String(32) | Specifies the id of the incentive this relates to. Foreign Key: Incentive | PK | M |
Entity: Activity_Operation (Input)¶
Links an operation to a repeatable activity.
Note
This is only intended for use with repeatable activities and cyclic scheduling.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | The identifier of the (repeatable) activity. Foreign Key: Activity | PK | M |
| operation_id | String(32) | The identifier of the operation. Foreign Key: Operation | PK | M |
| earliest_start | Date Time | If specified, this is the earliest time that the operation can be carried out for this activity. | O | |
| last_performed | Date Time | If specified, this is the last time (before the current schedule time) that the operation was performed. | O | |
| latest_start | Date Time | If specified, this is the latest time that the operation can be carried out for this activity. | O |
Entity: Activity_Operation_Usage (Input)¶
Defines the current usage of the specified class for this activity and operation.
Note
This is only intended for use with repeatable activities and cyclic scheduling.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | The identifier of the (repeatable) activity. Foreign Key: Activity_Operation | PK | M |
| operation_id | String(32) | The identifier of the operation. Foreign Key: Activity_Operation | PK | M |
| usage_class_id | String(32) | The identifier for the class of usage. Foreign Key: Usage_Class | PK | M |
| last_recorded_usage | Double | The last recorded usage (at the start of the scheduling period). | M | |
| last_recorded_usage_datetime | Date Time | The time of the last recorded usage Notes: If not specified this is assumed to be the start of the scheduling period (i.e. the current usage). | O |
Entity: Activity_Part (Input)¶
Activity part defines what parts and how much is used when the activity is completed.
Note
For a non-reusable part, when the part is not to be consumed but is still required as a constraint the part_usage should be specified as 0. For reusable parts, the part_usage should always be greater than 0.
Warning
The use of parts significantly increases the complexity of the scheduling problem and as such they should be used with care. If more than 5 parts are required to constrain an individual activity then IFS PSO Product Development must be consulted as to the likely impact. Through testing must be performed to confirm the successful operation and impact on the DSE.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the id of the activity this relates to. Foreign Key: Activity | PK | M |
| part_id | String(32) | Specifies the id of the part this relates to. Foreign Key: Part | PK | M |
| part_usage | Integer | Defines the quantity of part needed to complete activity. Notes: Use value of 0 if the part is required as a constraint but is not to be consumed by the activity. | M(1) | |
| refill_to_capacity | Boolean | Specifies whether this activity when visited will refill a resource to capacity. Notes: Only used when the activity supplies parts - i.e. when the value for part usage is negative. | M(false) | |
| unlimited_supply | Boolean | If set to true then the part_usage value will be ignored, and this activity can supply as many parts as required. Notes: Only to be used when refill_to_capacity is set to true. Value will be ignored otherwise. | M(false) |
Example¶
<Activity_Part>
<part_id>TEST30</part_id>
<activity_id>TEST30</activity_id>
<part_usage>1</part_usage>
</Activity_Part>
Entity: Activity_Pool (Input)¶
Activity pools provide a way of grouping activities together. This can be used to set availabilities or resource preferences across the entire pool.
A pool can be scheduled as a block, which means that any activities in the block that are scheduled will be scheduled together, without interruption from any activities from outside the block. This can be across multiple shifts and may include breaks.
A pool may have a parent pool defined. This can assist with the structure for defining pre-requisite links between pools. A pre-requisite link between two parent pools (say, Pool1 and Pool2) would mean that the all of activities belonging to all of the child pools for Pool1 would need to be completed before any activity belonging to any child pool of Pool2 could begin.
Note
Activities may only belong to a single pool that is to be scheduled as a block, or is linked to another pool.
Note
A link may only be defined between two pools if they have the same parent pool (or they both do not have a parent pool). Both pools must also have the same value for schedule_as_block.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies the id of the activity pool. | PK | M |
| schedule_as_block | Boolean | Specifies whether the activities in this pool should be scheduled as a block. | M(false) | |
| description | String(2000) | Describes the activity pool if required. | O | |
| parent_activity_pool_id | String(32) | The id for this pool's parent pool. Foreign Key: Activity_Pool | O |
Entity: Activity_Pool_Avail_Set (Input)¶
Links an activity pool to an availability set.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_pool_id | String(32) | The id of the activity pool. Foreign Key: Activity_Pool | PK | M |
| availability_set_id | String(32) | The id of the availability set. Foreign Key: Availability_Set | PK | M |
Entity: Activity_Pool_Category (Input)¶
Represents an association between an activity pool and a category.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_pool_id | String(32) | The id of the activity pool to be associated with a category and categorisation. Foreign Key: Activity_Pool | PK | M |
| categorisation_id | String(32) | The id of the categorisation to link to the activity pool. Foreign Key: Category | PK | M |
| category_id | String(32) | The id of the category to link to the activity pool. Foreign Key: Category | M |
Entity: Activity_Pool_Item (Input)¶
Defines an activity's inclusion within an activity pool. Activities may belong to more than one pool, but may only belong to one pool that is to be scheduled as a block.
Note
Depot and repeatable activities may not be added to a pool that is to be scheduled as a block or is linked to another pool.
Note
An activity may only be added to a pool that is not a parent pool to any other pools.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the id of the activity to be included in the pool. Foreign Key: Activity | PK | M |
| activity_pool_id | String(32) | Specifies the id of the activity pool for the activity to be included in. Foreign Key: Activity_Pool | PK | M |
Entity: Activity_Pool_Link (Input)¶
Defines a link between two activity pools to indicate that one pool is a pre-requisite of another - i.e. all of the activities from one pool must be completed before any activities from the dependent pool can begin.
Note
If activity_pool_id is set to Pool1 and link_activity_pool_id is set to Pool2, with link_type PRE, then Pool2 is the pre-requisite for Pool1. If the link_type is set to POST, then Pool1 is the pre-requisite for Pool2.
Note
A link may only be defined between two pools if they have the same parent pool (or they both do not have a parent pool). Both pools must also have the same value for schedule_as_block.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_pool_id | String(32) | Specifies the id for an activity pool being linked to. Foreign Key: Activity_Pool | PK | M |
| link_activity_pool_id | String(32) | Specifies the id for the activity pool linking to activity_pool_id. Foreign Key: Activity_Pool | PK | M |
| link_type | String(4) | Defines the nature of the link between the two pools. Allowed Values: PRE, POST | M(PRE) | |
| require_fully_allocated | Boolean | Specifies whether all activities within the pre-requisite pool must be allocated for the dependent pool to be scheduled. | M(false) | |
| minimum_delay | Time Span | Defines a minimum delay that must occur between the activities from the pre-requisite pool before the activities in the dependent pool can begin. | O |
Entity: Activity_Pool_Wrapper (Input)¶
Wrapper activities are activities that need to be done before and/or after regular activities in a pool.
Note
Even if an activity pool has multiple activities in it, the wrapper activity will apply to the entire pool, not each activity within the pool.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_pool_id | String(32) | Specifies the id activity pool. Foreign Key: Activity_Pool | PK | M |
| wrapper_activity_id | String(32) | Specifies the id of the wrapper activity. Foreign Key: Activity | PK | M |
| link_type | String(4) | Specifies whether the wrapper activity should be done before the activity pool activities, after them, or both. Allowed Values: PRE, POST, BOTH | M | |
| time_context | String(6) | Specifies for what period of time the wrapper activity is required to be scheduled within. Allowed Values: SHIFT, WINDOW | M | |
| delay_cost_ph | Double | Defines an additional cost per hour to be applied between wrapper activities and the activity pool activities. Notes: For wrapper activities before the activity pool, the cost is applied from the end of the wrapper activity and the end of the last relevant activity from the activity pool. For wrapper activites after, the cost is from the start of the first relevant activity to the start of the wrapper activity. | O | |
| is_required | Boolean | If set to false, then the wrapper activity will not be required for any resource by default. Notes: If null, this will be assumed true. Notes: Use this in conjuction with is_required in Resource_Wrapper to create exceptions | O |
Entity: Activity_Productive_Time (Input)¶
This defines periods of productive time for an activity, which are applied against incentives and rules. This is primarily intended for use with automated resource planning.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the id of the activity this relates to. Foreign Key: Activity | PK | M |
| productivity_category_id | String(32) | Specifies the category of productive time. Foreign Key: Productivity_Category | PK | M |
| start_offset | Time Span | Defines the offset from the visit start that this period of productive time begins. | PK | M |
| duration | Time Span | Defines the duration of the productive time. | M |
Entity: Activity_Resource_Pool_Set (Input)¶
Defines which activities are linked together to form a "chain". All activities in the chain must be scheduled to resources from a single Resource Pool, although there may be several alternative Resource Pools in the Resource Pool Set. Some Resource Pools may be preferred to others.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the id of the activity Foreign Key: Activity | PK | M |
| resource_pool_set_id | String(32) | Specifies the id of the Resource Pool Set Foreign Key: Resource_Pool_Set | PK | M |
| chain | String(32) | Describes which chain this activity belongs to. All activities with the same chain identifier will form a single chain, and they will all be allocated to resources from a single Resource Pool | M |
Example¶
<Activity_Resource_Pool_Set>
<activity_id>process1</activity_id>
<resource_pool_set_id>ProcessingRoutes</resource_pool_set_id>
<chain>251</chain>
</Activity_Resource_Pool_Set>
Entity: Activity_Skill (Input)¶
Specifies a skill that a resource must have in order for that activity to be allocated to the resource. When determining what skills an activity requires, a union of the skills between activity skill and activity type skill will be made.
Note
Attribute share_with_corequisite if set to TRUE would accept the skill against the activity or against any activity in the same Activity_Group where Activity_Group.pre-co-req = ‘CO’. This enables co-requisites to be scheduled where any of the resources assigned to the co-requisite activity group can have the required skills. For example there could be a co-requisite group of five activities where the skill must be in at least one of just three of them for example.
e.g. activity groups could be:
1 & 2
1 & 3
2 & 4
2 & 5
Activity_Skill. share_with_corequisite would be against activity 1 and set to TRUE. In this case the skill could be on activity 1, 2 or 3, but not 4 and 5, as they are not directly linked to activity 1.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the id of the activity this relates to. Foreign Key: Activity | PK | M |
| skill_id | String(32) | Specifies the id of the skill this relates to. Foreign Key: Skill | PK | M |
| share_with_corequisites | Boolean | Defines whether the fulfilment of this skill constraint by allocation of a resource with the required skills is shared with other activities within the co-req Activity_Group where the allocated resource may not have those skills. Notes: Only has an effect if the activity belongs to an activity group where Activity_Group.pre_co_req = 'CO'. | O |
Example¶
<Activity_Skill>
<activity_id>TEST33</activity_id>
<skill_id>TEST33</skill_id>
</Activity_Skill>
<Activity_Skill>
<activity_id>TEST33</activity_id>
<skill_id>TEST33</skill_id>
<share_with_corequisite>true</share_with_corequisite>
</Activity_Skill>
Entity: Activity_SLA (Input)¶
Assigns an SLA of a given type to an activity. An activity of class CALL or BREAK that falls within the scheduling window must have an Activity_SLA for it to be considered by the scheduler. Unless stated otherwise, the system will attempt to schedule the start of the activity within the defined SLA period.
It is possible to define up to 2 SLA models for an activity - 1 start based and 1 end based. At least 1 of these models is required for activities of type CALL or BREAK (unless the activity is fixed to a time). By default SLAs will default to start_based. Within each model the times must not overlap, but the models will be applied independently, so if both models are used for an activity it will be expected that the times in each model will overlap.
Example:
2 hour response deadline:
Activty_SLA from 09:00 to 11:00, SLA_Type IN, start_based = true
Activity_SLA from 11:00 to 17:00, SLA_Type OUT, start_based = true
4 hour fix deadline:
Activty_SLA from 09:00 to 13:00, SLA_Type IN, start_based = false
Activity_SLA from 13:00 to 17:00, SLA_Type OUT, start_based = false
2 hour response and 4 hour fix:
Activty_SLA from 09:00 to 11:00, SLA_Type IN1, start_based = true
Activity_SLA from 11:00 to 17:00, SLA_Type OUT1, start_based = true
Activty_SLA from 09:00 to 13:00, SLA_Type IN2, start_based = false
Activity_SLA from 13:00 to 17:00, SLA_Type OUT2, start_based = false
The DSE would calculate the value of an activity by applying ageing factors and proportions from both models. For simplicity we should advise that if both models are being used for an activity then one of the two is kept simple - e.g. the end based SLA is flat with a drop in proportion after the deadline. If only one of the two models is used then the structure is essentially as it is now anyway.
Note
An Activity may have more than one Activity_SLA. For example there may be a need to have primary, secondary and tertiary SLAs defined to reflect the operational objectives should the primary or secondary SLAs be missed. The periods of time for each SLA must not overlap. The SLAs are uniquely identified for each Activity by Activity_SLA.priority.
Note
Activities of class PRIVATE do not normally need an SLA since it is expected to start at a known time specified on the Activity_Status entity.
Note
If the activity is scheduled by the DSE the start date and time of the activity will always be within one of the Activities defined SLAs. By default the system will schedule the activity so that at least the start date is within the SLA but the end date may be beyond the end of the SLA. A system parameter can be set so that the end date and time of the activity must also fall within the SLA.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the id of the activity this relates to. Foreign Key: Activity | PK | M |
| priority | Integer | Defines the uniqueness of the SLA. Notes: Required to provide a unique key for each SLA. | PK | M(1) |
| sla_type_id | String(32) | Specifies the id of the SLA type this relates to. Foreign Key: SLA_Type | PK | M |
| start_based | Boolean | Defines whether the start of the activity must be scheduled within the defined SLA period. Notes: Set to false to be end based SLA. | PK | M(true) |
| datetime_start | Date Time | Defines the date and time at which the SLA begins for this activity. | M | |
| datetime_end | Date Time | Defines the date time at which the SLA ends for this activity. Must be after Time Start. | O |
Example¶
<Activity_SLA>
<sla_type_id>SLA_TYPE_1</sla_type_id>
<activity_id>Test7</activity_id>
<priority>1</priority>
<datetime_start>2006-01-03T12:01:00.0000000+01:00</datetime_start>
<datetime_end>2006-01-04T13:30:00.0000000+01:00</datetime_end>
</Activity_SLA>
Entity: Activity_Status (Input)¶
This is used to assign a particular activity status to an activity after its initial load. As an activity goes through its life cycle the status needs to be updated. An Activity must always have at least one Activity Status. When an Activity is created and it is unallocated then the Activity Status should be created as unallocated. If a resource is allocated then the appropriate status is used and resource id applied. Should activity duration change then the Activity Status will be updated.
Activity Moving Rules¶
The DSE will enforce the following rules depending on status of an Activity.
- Completed (status 70), Incomplete (80) and Visit Complete (68) activities will never be moved or extended.
- Pending Completion (status 65) activities are treated by the DSE in the same way as On Site activities. Note however that the schedule dispatch service will treat pending completion activities in the same way as completed activities.
- On Site (status 60) activities will never be moved. The travel for an On Site activity is never changed. If the activity is taking longer than the anticipated duration an ‘ActivityDurationExceeded’ exception will be raised.
- The logic for activities at status waiting at location (55) is exactly the same as for travelling activities.
- The start travel time and end travel time for a Travelling activity (status 50) is never changed. The activity start time will be the later of (its current value, the dataset time). The duration of the activity is never changed: hence the activity end time must change if the activity start time changes. If the travel is taking longer than the expected duration, a TravelDurationExceeded exception will be raised.
- Any activities of status less than Travelling which are also Activity Status fixed – i.e. fixed to resource and date_time_fixed will be placed at their fixed times, regardless of whether this is in the past or overlapping other activities. The DSE will never change a fixed time or unfix an activity. An activity of status at least committed is treated as resource fixed regardless of the fixed flag.
- Once all activities covered by points 1-5 have been included in the schedule, the DSE will schedule the remaining committed activities in a set order:
- Activities at status Accepted (40), ordered first by commit_sort_value (lowest first) and then by date_time_status (earliest first)
- Activities at status Downloaded (35), ordered first by commit_sort_value (lowest first) and then by date_time_status (earliest first)
- Activities at status Sent (32), ordered first by commit_sort_value (lowest first) and then by date_time_status (earliest first)
- Activities at status Committed (30), ordered first by commit_sort_value (lowest first) and then by date_time_status(earliest first)
- Other than for ordering purposes, the DSE will treat all non-fixed activities of status committed through to accepted in the same manner.
Note
By default, if multiple consecutive statuses of travelling (resp. on site) are sent, then the DSE will use the first update (ordered by date_time_stamp), and take the date_time_status from this update as the travel start time (resp. on site time). This behaviour can be switched to always using the most recent update, via the parameter 'UseLatestUpdateForStatusTime'.
The behaviour of committed activities can be adjusted through the use of the parameter 'CommittedActivitiesConstraintsOption'. The default setting is 1, which means that the DSE will attempt to obey all activity related constraints – i.e. time constraints such as availabilities, and group constraints such as co-requisite constraints. Alternatively, this parameter can be set to 0, which means that no activity related constraints will be observed on committed activities. In either case, all resource time constraints are adhered to where possible.
The behaviour can also be adjusted through the parameter 'ScheduleCommittedActivitiesInActiveShift'. The default for this is true, which means that committed activities will only be scheduled into the ‘active’ shift. The active shift is defined to be the shift for the resource which overlaps the current timeline. If no such shift exists it is the earliest shift which starts in the future. If the parameter is set to false, the DSE will consider all current and future shifts for the resource when scheduling committed activities. Note that once a resource has logged off the shift is treated as being in the past. In either case, when a committed activity cannot be scheduled validly, it will be scheduled in the active shift.
The DSE will then take each activity committed to the resource in the order defined in 6, and look for valid slots to schedule these activities. The earliest place it will consider must be :-
- After the current timeline
- After all previously processed committed activities
- A slot is considered valid if the travel from the previous location, the activity itself, and the travel to the next location can all be added without overlapping other activities already processed, and without going beyond the end of the shift time. In addition any other constraints applied to the activity must be valid, if these constraints are being enforced.
If no valid slot can be found, the activity will simply be appended to the route of the final shift being considered (either the active shift or the final shift for this resource).
All other activities not yet processed will be submitted to the Optimiser for scheduling. Scheduling periods will be submitted to the Optimiser for any periods of time that are (a) after the dataset time, and (b) longer than the minimum length (10 minutes), and (c) are before the end of the scheduling period, and (d) are after the scheduled time of all non-fixed committed activities. Activities that are fixed but do not have a location will be sent to the optimiser as MustBeScheduled activities, whenever the optimiser needs to know about them. This is effectively whenever a location for the activity cannot be predetermined.
Application of the Activity Moving Rules¶
Currently the activity moving rules are applied whenever the DSE receives an update. Since this invariably updates the dataset time, this shouldn't need to be changed. However, if there is ever a need for something more sophisticated, the rules below were the original rules set out.
When the dataset time changes, all resources will have the Activity Moving Rules applied to their entire schedules.
When a Resource, Shift, or Location used by a Resource changes (or other Resource-based changes), that resource will have the Activity Moving Rules applied to their entire schedule.
When an Activity, Activity Status or activity constraints change (or other activity-based changes), the resource which is currently allocated to that activity will have the Activity Moving Rules applied to their schedules. Note: activities which were previously unfixed and of status less than AsNext, and which remain so, need not cause the Activity Moving Rules to be re-applied.
Activities will not be uncommitted when a resource logs off a shift. The DSE will never change the activity status of an activity except to change activities of status 0 (unallocated) to status 10 (allocated) and vice versa.
Note
Status for Private Activities is assumed to be 30 (Committed) when they are created.
Note
Activities of class 'PRIVATE' i.e. private appointments must provide the attribute date_time_fixed to specify the start of the private activity. Otherwise the activity will be rejected.
Note
Activity_Status.date_time_fixed must be set for activities of type 'PRIVATE', it is optional on other activity classes. It is generally not recommended to set this for other classes of activities since it gives the DSE no leeway in building a schedule. Such a hard time constraint may lead to less optimal schedules. An alternative approach is to provide a narrow SLA for the activity of say 1 hour so that DSE has scope to move the activity. See further notes below for date_time_fixed.
The DSE will force the activity into the route of the resource if the 'Activity Status: Date Time Fixed' is used in conjunction with 'Activity Status: Fixed'.
Note
Status of -1 indicates that the Activity will not be considered by the DSE for allocation. Activities with status -1 will be reported as unallocated.
Warning
The use of date_time_fixed will cause all other time constraints to be ignored. This includes SLAs . Use with great care it can seriously impact the level of optimisation possible.
Warning
If a resource is fixed to an Activity i.e. only that resource can do the activity, it will override skills and most other resource constraints. It will not override the max travel, and it does not guarantee that the activity is scheduled. Fixing the time will override any availability or SLA constraints. Again, this does not ensure that the activity is scheduled. Fixing both the resource and time will ensure the activity is scheduled.
Note
When Activities are fixed to a resource by the external application the Resources.max_travel or Resource_Type.max_travel constraint may be broken. The scheduler will allow other activities to be scheduled, provided the max_travel rule is obeyed on the travel to these activities, but does not apply it on the travel to the fixed activity / travel home.
Note
Parameter 'SortValuePrecedenceMaximumStatus' can be set to any committed status - 30, 32, 35 or 40. Any activities committed to a resource (and not date_time_fixed) which are between the statuses of committed and the value of this parameter will be ordered by commit_sort_value first, then by date_time_status and then by status_id. Any activities at a status above the value of this parameter will be ordered using the existing ordering - status_id, then commit_sort_value, then date_time_status. The parameter defaults to 30 (Committed) which implies the existing behaviour - the ordering of committed activities is by status id first and then by commit_sort_value and then by date_time_status.
Note
Commit Sort Value. The lowest value committed activity will appear first in the list of activities. If the values were the same, or null for several activities then the date_time_status would be used to determine the order.
When manual status changes are made via the scheduling workbench this will automatically populate the correct commit sort value to ensure the activity is scheduled in the required order in the route. Any dispatch suggestions made by the scheduling dispatch service will also specify the correct commit sort value to use.
If committing directly from an external application, it is possible to request that the Input Manager populate the commit sort value automatically. To use this functionality, the attribute 'commit_sort_date_time' must be populated on the activity status record. The input manager will then fill in the correct commit sort value for the resource specified on the activity status row, based on the activity being expected to start at the time specified on the commit_sort_date_time attribute.
For example, suppose a resource already has committed activities starting at 9am and 10am. An activity status row is then sent to the system to commit another activity to the same resource, with the commit_sort_date_time set to 9:30am. The input manager would then populate the correct commit sort value so that this activity would appear between the two previously committed activities.
Note
For a split activity, a status of -1 (do not schedule) will be ignored if sent to a follow-on visit.
Note
The expected_arrival_time attribute is primarily for use with travelling status activities, where it can be used to override the expected time for the travel to the activity to end. The activity would also be expected to start at this time unless other restrictions (such as an availability constraint) apply. While the attribute can also be used with committed status activities, it is recommended to use other options such as earliest_start_datetime or date_time_fixed here instead.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the id of the activity this relates to. Foreign Key: Activity | PK | M |
| date_time_status | Date Time | Defines the date and time the status took effect in the real world. | PK | M |
| status_id | Integer | Describes the current status of activity. Foreign Key: Status_Type Notes: See entity Status_Type. | PK | M(0) |
| visit_id | Integer | Defines the visit the status change relates too. | PK | M(1) |
| date_time_stamp | Date Time | Defines the date and time at which the record was created | M | |
| fixed | Boolean | Defines whether the resource is to be fixed to this activity Notes: If true, resource_id must also be provided and cannot be changed by the DSE. The DSE will only consider scheduling the activity into the route of this resource. However, there is no guarantee that the activity will actually be scheduled to the resource – the activity can still be unallocated. | M(false) | |
| commit_sort_date_time | Date Time | The time at which the activity is intended to start. Notes: This is used by the input manager to automatically populate the commit sort value. | O | |
| commit_sort_value | Double | Defines the committed status order of activities. Notes: The lowest value committed activity would appear first. | O | |
| date_time_earliest | Date Time | Defines the earliest time an activity can be allocated. Notes: Applies only to calls with a status less than or equal to 40 - i.e. from status 0 (Unallocated) to status 40 (Accepted). Once a resource starts travelling to an activity these no longer have an effect and the resource is expected (by default) to start working on the activity at the time they are expected to arrive | O | |
| date_time_fixed | Date Time | Specifies the date and time the activity is fixed to start at. Notes: This must be provided if the Activity has as an activity_class_id = ‘PRIVATE’ | O | |
| duration | Time Span | Defines the current duration of the Activity Notes: Duration can be optionally updated on the creation of a new status. If not provided the previous value will be kept. If no duration is provided on any status record then the duration from the Activity Type will be used. | O | |
| duration_override | Time Span | If specified, this duration will be used directly as the expected duration of the activity, ignoring any other settings that affect the duration (auto duration, resource proficiency etc.) Notes: The value will be taken from the latest activity status update row - if this is null then the duration will be calculated as normal. For repeatable or depot activities this is the duration of an individual visit, and the value will be taken from the latest status row for that visit. | O | |
| expected_arrival_time | Date Time | Sets the expected arrival time for a travelling activity. | O | |
| highlight | String(100) | Defines whether the activity should be highlighted in the exception window on the Scheduling Workbench. Text used in this field will be displayed. | O | |
| memo | String(2000) | Provides general information about the activity and this status to be displayed. Notes: Large amounts of data held here can impact performance of the software and should be kept to a minimum. | O | |
| reason | String(200) | Provides details about manual allocation. | O | |
| reason_value | String(40) | Specifies the Entry.value used as the reason. | O | |
| resource_id | String(32) | Defines the resource allocated to the activity for this status. Notes: Must be provided if status is greater than 0. | O | |
| source | Integer | Provides details about where the change to the status originated from. Notes: The Scheduling Workbench will populate this with 1. It is advised that if a commit is made externally this is populated with 99, though this is not required. | O |
Examples¶
<Activity_Status>
<activity_id>Test7</activity_id>
<duration>PT1H00M</duration>
<date_time_stamp>2006-01-03T11:45:00.0000000-00:00</date_time_stamp>
<date_time_status>2006-01-03T11:45:00.0000000-00:00</date_time_status>
</Activity_Status>
<Activity_Status>
<activity_id>Test8</activity_id>
<status_id>0</status_id>
<visit_id>1</visit_id>
<date_time_stamp>2006-01-03T11:45:00.0000000-00:00</date_time_stamp>
<date_time_status>2006-01-03T11:45:00.0000000-00:00</date_time_status>
<duration>PT0H15M5S</duration>
<fixed>false</fixed>
<date_time_fixed>2006-01-03T12:45:00.0000000-00:00</date_time_fixed>
<memo>test 8 activity status</memo>
<highlight>test 8 highlight</highlight>
<reason>test 8 reason</reason>
<rank>1</rank>
</Activity_Status>
Entity: Activity_Type (Input)¶
Describes a type of activity. Many different types of activities may be scheduled and from an operational process perspective it is useful to know what type the different activities are. At least 1 activity type must be loaded into the DSE. The default will be a type of 'Default'.
Note
When an Activity Type is updated the new value for duration will be used on all Activities linked to that type which do not have a duration specified. Altering Activity Type during scheduling can adversely impact the schedules and should be avoided. Activity Types should normally be sent as part of an initial load to avoid this.
Note
Many attributes can be set on Activity_Type and also on Activity. If this is the case then the attribute on the Activity if specified will override the attribute on the Activity_Type, unless otherwise stated.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the activity type. | PK | M |
| base_value | Double | Defines the basic marginal value of scheduling this activity compared to not scheduling it. Notes: May be used where Mechanism Type = ‘POWER_BASED’ for the SLA_Type. Will be used when not defined on the Activity. With a base value of 0 the activity will not be scheduled. | M(1000) | |
| cost_of_split | Double | Defines the default cost incurred each time an activity of this type is split. | M(0) | |
| interrupt | Boolean | Defines whether activities of this type are allowed to be used to interrupt a splittable activity. | M(false) | |
| min_split | Time Span | Defines the minimum on site duration for any visit to a split activity of this type. | M(PT1H) | |
| on_location_duration_factor | Double | A factor to be applied to the duration of all tasks scheduled for the same visit at the same location. Notes: Values between 0.001 and 1 (inclusive). | M(1) | |
| priority | Integer | Defines the priority of activities of this type. The greater the number the greater the priority. Notes: This is used in the appointment booking process when displacing activities. For breaks, when breaks are sourced from a rota in the ARP, the priority used is the value priority on RAM_Activity_Type. For the parameter 'ARPBreakPriority' to be used for breaks instead, set the parameter 'ARPBreakPriority' to any value other than the default value, which is -1. | M(1) | |
| remote_fulfillment | Boolean | If true, this indicates that a resource can carry out activities of this type without visiting the activity location. | M(false) | |
| split_allowed | Boolean | Defines whether activities of this type are allowed to be split. | M(false) | |
| auto_duration_enabled | Boolean | Defines whether an auto_duration should be used for activities of this type. Notes: Changing the value of auto_duration_enabled will only apply to activities that are updated after that point. | O | |
| calendar_id | String(32) | Defines the id of the calendar to use when applying SLA times to activities of this type. Foreign Key: Calendar | O | |
| colour | String(9) | Used for display purposes. Notes: Format: #RRGGBB | O | |
| contract_id | String(32) | Specifies the id of the contract that this activity type relates to. Foreign Key: Contract | O | |
| customer | String(100) | Specifies the customer that this activity type relates to. Foreign Key: Customer Notes: Note that 'customer' does not follow the standard naming format of columns that reference parent tables ('table_name'_id). This does not signify any differences - it is for technical reasons that it is different. | O | |
| description | String(2000) | Provides a description for this activity type. | O | |
| display_context_id | String(32) | Provides the context to determine which list should be used when viewing in the Scheduling Workbench. Notes: This should match the id of a Display_Context row defined in the system data | O | |
| do_in_locality_incentive | Double | Defines how activities at the same locality should be scheduled. | O | |
| do_on_location_incentive | Double | Specifies how activities at the same location should be scheduled. Notes: See notes for the entity 'Activity'. | O | |
| duration | Time Span | Defines the standard duration of an activity of this type. Notes: When duration is not provided on the Activity Status then this duration must be provided on the Activity Type. If this duration is amended on the Activity Type then the new duration will be applied to all activities of that type. | O | |
| icon_id | String(32) | The id of an icon to use for this activity type. Foreign Key: Icon | O | |
| ignore_days_old | Integer | Do not pass activities to the scheduler where the number of days exceeds Activity. date_time_open date. Notes: If null all activities included. This is used to remove activities from the plan. | O | |
| interrupt_multiplier | Double | Defines a multiplier that is applied to the cost_of_split of a splittable activity when interrupted by an activity of this type. | O | |
| interrupt_priority | Integer | Specifies the priority of an activity of this type when considering whether to use it to interrupt a splittable activity. This is compared to the split_minimum_priority on the splittable activity. | O | |
| maximum_displaceable_priority | Integer | When appointment booking for activities of this type, the engine will attempt to displace any other activities of this priority or less. | O | |
| reactive | Boolean | Used in conjunction with the Schedule Distribution Service to indicate if the activity is reactive. | O | |
| separation_group_id | String(32) | Specifies the id of the separation group activities of this type belong to. Foreign Key: Separation_Group | O | |
| service_level | String(100) | Used for information and reporting only. Has no impact on scheduling. | O | |
| sla_template_id | String(32) | Defines which SLA Template should be used. Foreign Key: SLA_Template | O | |
| split_minimum_priority | Integer | Defines the minimum split priority required for an activity of this type to be split into a shift, and the minimum interrupt priority required for another activity to be able to interrupt an activity of this type. | O | |
| split_model_id | String(32) | Defines which split model to use for split settings. Foreign Key: Split_Model Notes: If specified, all split settings will be taken from the split model (even if set to null). | O | |
| time_zone | String(32) | Specifies the id of the time zone related to this activity type. | O |
Default Entries¶
| ID | Description | Duration | Ignore Days Old |
|---|---|---|---|
| Default | Default activity type. | PT1H0M0S | 30 |
Example¶
<Activity_Type>
<id>TEST11</id>
<description>Activity Type Test 11</description>
<duration>PT0H30M</duration>
<ignore_days_old>1000</ignore_days_old>
</Activity_Type>
Entity: Activity_Type_App_Template (Input)¶
Used to associate an Activity_Type to an Appointment_Template, for use in the Appointment Booking screen on the Scheduling Workbench.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_type_id | String(32) | Specifies the id of the activity type this relates to. Foreign Key: Activity_Type | PK | M |
| appointment_template_id | String(32) | Specifies the id of the appointment template this relates to. Foreign Key: Appointment_Template | PK | M |
| default_template | Boolean | Defines whether this template should be used by default for activities of this type. | M(false) |
Entity: Activity_Type_Avail_Set (Input)¶
Links an activity type to an availability set.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_type_id | String(32) | The id of the activity type. Foreign Key: Activity_Type | PK | M |
| availability_set_id | String(32) | The id of the availability set. Foreign Key: Availability_Set | PK | M |
Entity: Activity_Type_Category (Input)¶
Represents the association between an activity type and a category.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_type_id | String(32) | The id of the activity type to be associated with a category and categorisation. Foreign Key: Activity_Type | PK | M |
| categorisation_id | String(32) | The id of the categorisation to link to the activity type. Foreign Key: Category | PK | M |
| category_id | String(32) | The id of the category to link to the activity type. Foreign Key: Category | M |
Entity: Activity_Type_Custom_Metric (Input)¶
This defines the value activities of an activity type have against a custom metric. This value is used for the activity when validating rules of type 'SHIFT_CUSTOM_METRIC'. The value can be overridden for individual activities via the Custom_Metric_Activity table.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_type_id | String(32) | The id for the activity type the metric is being specified for Foreign Key: Activity_Type | PK | M |
| custom_metric_id | String(32) | The id of the custom metric being used Foreign Key: Custom_Metric | PK | M |
| value | Double | The value to use for activities of the activity type | M |
Entity: Activity_Type_Custom_URL (Input)¶
Defines the custom url to be used for a particular activity type. Custom url parameters can be specified for the activity type, the use of which is defined on the URL_Parameter record for the specific custom url id (see example below).
<Activity_Type_Custom_URL>
<activity_type_id>SERVICE</activity_type_id>
<custom_url_id>urlActivityTypes</custom_url_id>
<custom_parameter_value1>SERVICE</custom_parameter_value1>
</Activity_Type_Custom_URL>
<Custom_URL>
<id>urlActivityTypes</id>
<name>Prepare work order</name>
<custom_action>ACTIVITY_DETAIL_FORM</custom_action>
</Custom_URL>
<URL_String>
<custom_url_id>urlActivityTypes</custom_url_id>
<sequence>1</sequence>
<string_value>https://example.com/</string_value>
</URL_String>
<URL_Parameter>
<custom_url_id>urlActivityTypes</custom_url_id>
<sequence>2</sequence>
<custom_parameter>1</custom_parameter>
</URL_Parameter>
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_type_id | String(32) | Defines the activity type linked to the specified custom url. Foreign Key: Activity_Type | PK | M |
| custom_url_id | String(32) | Defines the custom url linked to the specified activity type. Foreign Key: Custom_URL | PK | M |
| custom_parameter_value1 | String(2000) | Defines the first custom url parameter value to be used in the custom url for this activity type. The sequence in the url string is defined on URL_Parameter. See example code above. | O | |
| custom_parameter_value2 | String(2000) | Defines the second custom url parameter value to be used in the custom url for this activity type. The sequence in the url string is defined on URL_Parameter. See example code above. | O | |
| custom_parameter_value3 | String(2000) | Defines the third custom url parameter value to be used in the custom url for this activity type. The sequence in the url string is defined on URL_Parameter. See example code above. | O | |
| custom_parameter_value4 | String(2000) | Defines the fourth custom url parameter value to be used in the custom url for this activity type. The sequence in the url string is defined on URL_Parameter. See example code above. | O |
Entity: Activity_Type_Part (Input)¶
Records the part(s) requirement for an activity type.
Warning
The use of parts significantly increases the complexity of the scheduling problem and as such they should be used with care. If more than 5 parts are required to constrain an individual activity then IFS PSO Product Development must be consulted as to the likely impact. Through testing must be performed to confirm the successful operation and impact on the DSE.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_type_id | String(32) | Specifies the id of the activity type this relates to. Foreign Key: Activity_Type | PK | M |
| part_id | String(32) | Specifies the id of the part this relates to. Foreign Key: Part | PK | M |
| part_usage | Integer | Specifies the quantity of part needed for an activity type. Notes: Use value of 0 if the part is required as a constraint but is not to be consumed by the activity. | M(1) | |
| refill_to_capacity | Boolean | Specifies whether this activity when visited will refill a resource to capacity. Notes: Only used when the activity supplies parts - i.e. when the value for part usage is negative. | M(false) | |
| unlimited_supply | Boolean | If set to true then the part_usage value will be ignored, and this activity can supply as many parts as required. Notes: Only to be used when refill_to_capacity is set to true. Value will be ignored otherwise. | M(false) |
Example¶
<Activity_Type_Part>
<part_id>part1</part_id>
<activity_type_id>activityType1</activity_type_id>
</Activity_Type_Part>
Entity: Activity_Type_Skill (Input)¶
Records a skill needed for an activity of this type. When determining what skills an activity requires, a union of the skills between activity skill and activity type skill will be made.
Note
Attribute share_with_corequisite if set to TRUE would accept the skill against the activity or against any activity in the same Activity_Group where Activity_Group.pre-co-req = ‘CO’. This enables co-requisites to be scheduled where any of the resources assigned to the co-requisite activity group can have the required skills. For example there could be a co-requisite group of five activities where the skill must be in at least one of just three of them for example.
e.g. activity groups could be:
1 & 2
1 & 3
2 & 4
2 & 5
Activity_Skill. share_with_corequisite would be against activity 1 and set to TRUE. In this case the skill could be on activity 1, 2 or 3, but not 4 and 5, as they are not directly linked to activity 1.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_type_id | String(32) | Specifies the id of the activity type this relates to. Foreign Key: Activity_Type | PK | M |
| skill_id | String(32) | Specifies the id of the skill this relates to. Foreign Key: Skill | PK | M |
| share_with_corequisites | Boolean | Defines whether the fulfilment of this skill constraint by allocation of a resource with the required skills is shared with other activities of this type with in the co-req Activity_Group where the allocated resource may not have those skills. Notes: Only has an effect if the activity of this type belongs to an activity group where Activity_Group.pre_co_req = 'CO'. | O |
Example¶
<Activity_Type_Skill>
<skill_id>Test18</skill_id>
<activity_type_id>Test18</activity_type_id>
</Activity_Type_Skill>
Entity: Activity_Usage_Period (Input)¶
Defines the expected usage against this activity of the specified class and between the specified dates.
Note
This is only intended for use with repeatable activities and cyclic scheduling.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | The identifier of the (repeatable) activity. Foreign Key: Activity | PK | M |
| start_date | Date Time | The date from which this usage level applies. | PK | M |
| usage_class_id | String(32) | The identifier for the class of usage. Foreign Key: Usage_Class | PK | M |
| end_date | Date Time | The date until which this usage level applies. | M | |
| usage_per_day | Double | The usage per day during this period. | M |
Entity: Additional_Attribute (Input)¶
This is used to hold additional attributes that are not used in the scheduling but need to be displayed within the scheduling software to provide additional end user information. Additional attributes can be added for either activities, resources or locations. Additional_Attribute should be used in preference to Additional_Attributes since this gives the external system a higher degree of control over the additional attributes. This attribute should be used moderately.
Warning
The use of additional attributes should be strictly limited. The loading and transfer of this data is additional overhead placed on the scheduling system and excessive use may have performance implications.
We advise that the use of additional attributes is kept to a maximum of 4 additional attributes per activity, and 10 per resource. Any performance issues resulting from these limits being exceeded will not be treated as software related issues.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the attribute. Notes: This must be provided by the external system. | PK | M |
| data_type | String(10) | Specifies the data type to be used for sorting and filtering. Allowed Values: BOOLEAN, DATETIME, DOMAIN, DOUBLE, INTEGER, STRING, TIME, TIMESPAN, URL | M | |
| label | String(100) | Defines a label descriptor to be shown next to value. | M | |
| sequence | Integer | Defines the sequence in which the labels and values should appear on the screen or be processed. | M | |
| activity_id | String(32) | Specifies the id of the activity this relates to. Foreign Key: Activity Notes: Only one of activity id, resource id and location id must be supplied. | O | |
| domain_type_id | String(32) | Defines the id of the domain of values to be used for validating input into this additional attribute. | O | |
| label_value | String(2000) | Specifies the value of the attribute. Notes: For non-string data types, the label_value should be in standard xml format for the type of data. For example, BOOLEAN values should be true/false. DOMAIN values will be treated the same as STRING values. TIME and TIMESPAN values will be treated equally. | O | |
| location_id | String(32) | Specifies the id of the location this relates to. Foreign Key: Location Notes: Only one of activity id, resource id and location id must be supplied. | O | |
| resource_id | String(32) | Specifies the id of the resource this relates to. Foreign Key: Resources Notes: One of and only one of activity id, resource id and location id must be supplied. | O |
Example¶
<Additional_Attribute>
<id>1234</id>
<resource_id>TEST35-D</resource_id>
<label>MPAN</label>
<sequence>1</sequence>
<label_value>G6765Y</label_value>
<data_type>STRING</data_type>
</Additional_Attribute>
<Additional_Attribute>
<id>12345</id>
<label>Contact</label>
<label_value>http://www.ifsworld.com</label_value>
<activity_id>1</activity_id>
<resource_id />
<sequence>0</sequence>
<location_id />
<data_type>URL</data_type>
</Additional_Attribute>
Entity: Additional_Attributes (Input)¶
This is now obsolete, and the Additional_Attribute table should be used instead.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the id of the activity this relates to. Foreign Key: Activity Notes: One of and only one of activity id, resource id and location id must be supplied. | PK | M |
| label | String(30) | Defines a label descriptor to be shown next to value. | PK | M |
| location_id | String(32) | Specifies the id of the location this relates to. Foreign Key: Location Notes: Only one of activity id, resource id and location id must be supplied. | PK | M |
| resource_id | String(32) | Specifies the id of the resource this relates to. Foreign Key: Resources Notes: One of and only one of activity id, resource id and location id must be supplied. | PK | M |
| data_type | String(10) | Specifies the data type to be used for sorting and filtering. Allowed Values: BOOLEAN, INTEGER, DOUBLE, STRING, URL | M(string) | |
| sequence | Integer | Defines the sequence in which the labels and values should appear on the screen or be processed. | M(0) | |
| domain_type_id | String(32) | Defines the id of the domain of values to be used for validating input into this additional attribute. | O | |
| label_value | String(2000) | Specifies the value of the attribute. | O |
Example¶
<Additional_Attributes>
<resource_id>TEST35-D</resource_id>
<label>MPAN</label>
<sequence>1</sequence>
<label_value>G6765Y</label_value>
<data_type>STRING</data_type>
</Additional_Attributes>
<Additional_Attributes>
<label>Contact</label>
<label_value>http://www.ifsworld.com</label_value>
<activity_id>1</activity_id>
<resource_id />
<sequence>0</sequence>
<location_id />
<data_type>URL</data_type>
</Additional_Attributes>
Entity: Aggregate_Member (Output)¶
This records which activities have been grouped to form a single aggregated activity.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Defines the id of the original input activity. | PK | M |
| aggregated_activity_id | String(32) | Defines the id of the aggregated activity. Foreign Key: Aggregated_Activity | PK | M |
| plan_id | Int64 | Defines the plan id. | O |
Entity: Aggregated_Activity (Output)¶
Aggregated activities are created by the Schedule Distribution Service when the feeder mode aggregation mechanism is activated. See the Architecture and Sizing guide for details of this functionality. The aggregated activities are returned in the plan output. Allocation rows may refer to aggregated activities (via the activity_id), and if so details of the aggregated activity are also recorded. The Aggregated_Activity record contains basic details of the aggregated activity, and the Aggregate_Member record details which individual activities make up the aggregated activity.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id. | PK | M |
| activity_type_id | String(32) | Defines the id of the activity type which all activities belong to. | O | |
| duration | Time Span | Defines the duration of the aggregated activity. | O | |
| latitude | Double | Specifies the latitude of the aggregated activity location. | O | |
| longitude | Double | Specifies the longitude of the aggregated activity location. | O | |
| plan_id | Int64 | Defines the plan id Foreign Key: Plan | O | |
| priority | Integer | Defines the priority of the aggregated activity. | O |
Entity: Allocation (Output)¶
Allocation records are returned to the EA each time a schedule is generated by the Dynamic Scheduling Engine. It provides information about the allocation of a resource undertaking an activity at a given time.
Note
An allocation will be returned for each visit made in response to an activity. The field Visit ID is used to identify each visit within the plan.
Warning
Commit Sort Value. The lowest value committed activity will appear first in the list of activities. If the values were the same, or null for several activities then the date_time_status would be used to determine the order.
Example¶
<Allocation>
<activity_id>TEST35-B</activity_id>
<visit_id>-1</visit_id>
<activity_start>0001-01-02T00:00:00+00:00</activity_start>
<activity_end>0001-01-02T00:20:00+00:00</activity_end>
<visit_status>0</visit_status>
<plan_id>1347</plan_id>
<rank>-1</rank>
</Allocation>
<Allocation>
<activity_id>TEST27-B</activity_id>
<resource_id>Test25max</resource_id>
<visit_id>1</visit_id>
<activity_start>2006-01-03T09:59:00+00:00</activity_start>
<activity_end>2006-01-03T10:14:00+00:00</activity_end>
<visit_status>10</visit_status>
<plan_id>1347</plan_id>
<duration>PT15M</duration>
<shift_id>Test25max_03/01/2006 09:00</shift_id>
<rank>1</rank>
</Allocation>
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Defines the id of the activity this relates to. | PK | M |
| visit_id | Integer | Defines the id of the visit this relates to. Notes: When an activity duration spans several shifts then each visit is identified by incrementing the visit id. Value of -1 when not allocated. | PK | M(1) |
| plan_id | Int64 | Specifies the id of the plan from the DSE to which the allocation belongs. This enables plans to be stored by an EA over a period of time. Foreign Key: Plan Notes: Each schedule plan is given a unique number by which it can be identified. | M | |
| rank | Integer | Specifies the position of this visit in the plan (e.g. 7th visit). Notes: Value of -1 when not allocated. Starts from 1. | M | |
| visit_status | Integer | Defines the status of the visit. Notes: See entity Status_Type. | M(0) | |
| activity_end | Date Time | Specifies the time at which the resource finished (or is scheduled to finish) the activity. | O | |
| activity_start | Date Time | Specifies the date and time at which the resource arrived (or is scheduled to arrive) at the activity. Notes: See Date Time Fixed also. | O | |
| allocation_source | Integer | Defines the source of the allocation. Notes: For committed activities this maps to the source attribute on the latest Activity_Status. For schedulable activities this will be 0 to indicate an automatic allocation. | O | |
| commit_sort_value | Double | Determines committed status order of activities. Notes: The lowest value committed activity would appear first. | O | |
| date_time_earliest | Date Time | Determines the earliest time an activity can be allocated. | O | |
| date_time_fixed | Boolean | Indicates whether the activity planned start time is fixed to this time. Notes: Used to indicate manual allocations and fixed time appointments. | O | |
| delay_date_time_earliest | Date Time | Indicates the time to which the activity has been delayed. The activity cannot start before this time if set. | O | |
| duration | Time Span | Defines the duration of the visit. Notes: Duration can be amended and so needs to be passed to enable restarts. Would map to Activity Status.Duration. | O | |
| duration_overhead | Time Span | Specifies how much of the activity's duration was added as a duration overhead. | O | |
| end_location_id | String(32) | Specifies the location at the end of the allocated activity. Notes: Will only be populated if the activity has an end location specified. | O | |
| fixed_resource | Boolean | Indicates whether the resource has been fixed to this activity. | O | |
| fulfilled_remotely | Boolean | For remote fulfillment activities, this specifies whether the work is actually planned to be carried out remotely. Notes: Will only be populated for activities with remote_fulfillment enabled. When populated, will be set to false if unallocated, or if the allocated resource is expected to be at the activity location anyway. | O | |
| location_id | String(32) | Specifies the location at the start of the allocated activity. Notes: If the activity has a single location, this will also be the location at the end of the activity. | O | |
| parallel_index | Integer | Specifies the activity's position in the plan when multiple activities are scheduled in parallel (to a parallel resource). | O | |
| resource_id | String(32) | Defines the id of the resource to which the activity is assigned. Foreign Key: Plan_Route Notes: Will be populated with the resource the activity is assigned to. Will be left blank if the activity is unallocated. | O | |
| same_location | Boolean | Indicates whether the previous activity on the resource's route is at the same site. Notes: This can be used by the EA to identify if consecutive activities are on the same site. | O | |
| shift_id | String(32) | Defines the shift id of the route this allocation belongs to. Notes: If the shift has been generated from a Shift Pattern then the shift id here will not be populated. Will be blank if the activity has not been allocated. | O | |
| shift_pattern_id | String(32) | Specifies the Shift Pattern id from which this route and shift were derived. Notes: If the shift has been created using a shift pattern then the shift pattern id is populated. | O | |
| shift_start_datetime | Date Time | Defines the start date time of the shift. Foreign Key: Plan_Route Notes: Will always be populated unless visit_status is unallocated. | O | |
| visit_type | String(10) | Defines the type of visit this represents. Notes: See entity Activity_Class. | O |
Entity: Allocation_Data (Output)¶
Allocation data records are returned to the EA and provide a history of the status, duration and SLA changes to the allocation.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Defines the id of the activity this belongs to. Foreign Key: Allocation | PK | M |
| visit_id | Integer | Defines the id of the visit this belongs to. Foreign Key: Allocation | PK | M(1) |
| plan_id | Int64 | Defines the id of the plan from the DSE to which the allocation belongs. This enables plans to be stored by an EA over a period of time. Notes: Each schedule plan is given a unique number by which it can be identified. | M | |
| accepted_datetime | Date Time | Defines the time at which the activity was first accepted. | O | |
| commit_datetime | Date Time | Defines the time at which the activity was first committed. | O | |
| downloaded_datetime | Date Time | Defines the time at which the activity was first downloaded. | O | |
| expected_duration | Time Span | Defines the duration specified before the status is On Site. | O | |
| expected_start | Date Time | Specifies the activity start date when the status first becomes committed. | O | |
| pending_complete_datetime | Date Time | Defines the time at which the activity was first set to pending completion. | O | |
| sent_datetime | Date Time | Defines the time at which the activity was first sent. | O | |
| sla_jeopardy_time | Date Time | Defines the end of the jeopardy SLA time. | O | |
| sla_start_time | Date Time | Defines the start time of the first SLA for the activity. | O | |
| travel_start | Date Time | Defines the start of travel to activity. | O | |
| waiting_datetime | Date Time | Defines the time at which the activity was first set to waiting. | O |
Entity: Allocation_Hint (Input)¶
The table stores information related to an existing schedule or plan that can be used as a reference or baseline during the scheduling process. This allows DSE to reload or utilize an existing plan for further optimisation or simulation. The table serves as an input for continuing or modifying an already defined schedule.
The DSE will prioritize using information from Allocation_Hint before checking the records in the Allocation table from an existing output plan. Activities allocated through Allocation_Hint will not be reprocessed, even if the same records are present in Allocation.
Note
This table and the Split_Resource_Order_Hint table are only usable within a LOAD file.
Note
For Bucket resources, activity_start should be set to the shift start time so that the activity can be allocated to the shift matching this start time.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Defines the id of the activity this relates to. Foreign Key: Activity | PK | M |
| visit_id | Integer | Defines the id of the visit this relates to. | PK | M(1) |
| activity_start | Date Time | Specifies the date and time at which the resource arrived (or is scheduled to arrive) at the activity. | M | |
| resource_id | String(32) | Defines the id of the resource this relates to. Foreign Key: Resources | M | |
| delay_date_time_earliest | Date Time | Indicates the time to which the activity has been delayed. The activity cannot start before this time if set. | O |
Entity: Allocation_Operation (Output)¶
Specified when an operation is expected to be performed during a visit to an activity.
Note
This is only intended for use with repeatable activities and cyclic scheduling.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | The identifier of the (repeatable) activity. Foreign Key: Allocation | PK | M |
| operation_id | String(32) | The identifier of the operation. | PK | M |
| visit_id | Integer | An identifier for this visit to the activity. Foreign Key: Allocation | PK | M |
| operation_end_time | Date Time | The time that the operation is expected to be completed. | M | |
| operation_start_time | Date Time | The time that the operation is planned to start. | M | |
| plan_id | Int64 | The identifier for the plan. | M |
Entity: Allocation_Part (Output)¶
This reports which parts have been used on which activities. Where the resource has gained parts, the quantity shown will be negative. Where a part was required but not consumed, the quantity shown will be zero.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Defines the id of the activity this relates to. Foreign Key: Allocation | PK | M |
| part_id | String(32) | Defines the id of the part this relates to. | PK | M |
| visit_id | Integer | Defines the id of the visit this relates to. Foreign Key: Allocation Notes: When an activity duration spans several shifts then each visit is identified by incrementing the visit id. Value of -1 when not allocated. | PK | M |
| part_usage | Integer | Specifies the number of parts consumed. | M | |
| plan_id | Int64 | Defines the id of the plan from the DSE to which the allocation belongs. This enables plans to be stored by an EA over a period of time. Notes: Each schedule plan is given a unique number by which it can be identified. | M | |
| resource_id | String(32) | Defines the id of the resource this belongs to. | M | |
| part_change_time | Date Time | The time at which the part change occurs. | O | |
| vehicle_id | String(32) | If populated, this will be the id of the vehicle that the part is taken from or added to. | O |
Entity: Application_Dataset (Data)¶
This table is used to exclude the processing of particular datasets by a given application type.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| application_type_id | String(32) | Defines the id of the application the entry relates to. | PK | M |
| dataset_id | String(32) | The dataset the application can or cannot process. Foreign Key: Dataset | PK | M |
| organisation_id | Integer | Defines the id of the organisation for this dataset Foreign Key: Dataset | PK | M |
| disallowed | Boolean | If true the application will not process the dataset Notes: Boolean specifying whether an application can work on a dataset. | M(true) |
Default Entries¶
| ID | Dataset ID | Disallowed |
|---|---|---|
Entity: Appointment_History (System)¶
Logs all appointment requests, their timings, and their success or failure.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | Int64 | A unique identifier. | PK | M |
| appointment_request_id | String(32) | The appointment request id the appointment relates to. | M | |
| dataset_id | String(32) | The dataset id the appointment relates to. | M | |
| load_internal_id | Int64 | The internal id of the LOAD the appointment request relates to. | M | |
| organisation_id | Integer | The organisation id the appointment relates. | M | |
| request_datetime | Date Time | The time of the appointment request. | M | |
| input_datetime | Date Time | The time the input was completed. | O | |
| input_reference_internal_id | Int64 | The internal id of the input reference the appointment request relates to. | O | |
| offered_slots | Integer | The number of appointment slots offered. | O | |
| output_datetime | Date Time | The time the plan output was generated. | O | |
| plan_id | Int64 | The plan id the appointment request relates to. | O | |
| requested_slots | Integer | The number of appointment slots requested. | O | |
| response_datetime | Date Time | The time of the appointment response. | O | |
| success | Boolean | Indicates whether or not the appointment was processed successfully. | O |
Entity: Appointment_Offer (Output)¶
This holds the list of possible appointments to be offered in response to an Appointment Request.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| appointment_request_id | String(32) | Specifies the unique id of the Appointment Request. | PK | M |
| id | Integer | A sequential number starting from 0 for each request for each offer. | PK | M |
| offer_end_datetime | Date Time | Defines the date and time of the end of the appointment slot being offered. Notes: Must be after offer_start_datetime. | M | |
| offer_start_datetime | Date Time | Defines the date and time of the start of the appointment slot being offered. | M | |
| offer_value | Double | Specifies the relative value of the appointment. | M | |
| plan_id | Int64 | Defines the plan id the offer is on. Foreign Key: Plan | M | |
| available | Boolean | Defines whether the slot is available. Notes: If not present or true then the slot is available. If false then the slot is not available. | O | |
| prospective_allocation_start | Date Time | The prospective start of the allocation. Notes: When scheduled the activity may be allocated at a different time. | O | |
| prospective_resource_id | String(32) | The prospective resource for the allocation. Notes: When scheduled the activity may be allocated to a different resource. | O | |
| reason_type_id | Integer | Specifies the reason code for the slot not being available. Notes: Only populated if available = false. | O | |
| window_end_datetime | Date Time | Defines the date and time of the end of the full appointment window for which a slot was requested. | O | |
| window_start_datetime | Date Time | Defines the date and time of the start of the full appointment window for which a slot was requested. | O |
Entity: Appointment_Offer_Response (Input)¶
This holds the response from the external system as to which appointment offer has been accepted.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| appointment_offer_id | Integer | Defines the id of the appointment offer being accepted. Notes: If null or -1 then all appointment offers for the appointment request have been rejected. If not null or -1 then this offer has been accepted. | PK | M(-1) |
| appointment_request_id | String(32) | Defines the unique identifier of the appointment request this relates to. Foreign Key: Appointment_Request | PK | M |
| input_updated | Boolean | Indicates whether the input data has been updated to reflect the accepted appointment. | M(true) |
Entity: Appointment_Request (Input)¶
This is used to record the need for an appointment request within the system. Each time an appointment is required for an activity a request is entered here with a unique id. A set of possible appointments are then returned by the scheduler and stored in Appointment Offer.
Warning
Appointment booking of linked activities is considerably more complex than single activities as the related activities may cause potential slots to be blocked out resulting in fewer offers being made. As such RnD strongly recommend that appointment booking is only done for activities with one related activity - either pre-req or co-req. If a situation arises where more complex structures need to be appointment booked then RnD must be consulted as to the likelihood of successful operation and through testing performed to confirm that the ABE is making satisfactory offers.
Warning
When appointment booking it is important to limit the number of 'slots' that are considered. The ABE is designed to respond quickly to an appointment request. It is strongly recommended that appointment offers are not requested for more than 20 slots. If more than 20 slots are needed, then these need to be requested in 'batches' of 20.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the appointment request. | PK | M |
| activity_id | String(32) | Defines the id of an activity for which an appointment is required. Foreign Key: Activity | M | |
| appointment_base_datetime | Date Time | Specifies the base date and time for applying delays and offsets. Notes: If not provided, offset is applied from the current schedule start. | O | |
| appointment_template_datetime | Date Time | Specifies the base date and time to use when applying the appointment template for this request. Notes: Only applies if an appointment template id is specified. | O | |
| appointment_template_duration | Time Span | Defines the duration for which the appointment template should be applied. Notes: Only applies if an appointment template id is specified. | O | |
| appointment_template_id | String(32) | Defines the id of the appointment template to be used for this appointment request. Foreign Key: Appointment_Template | O | |
| appointment_window_length | Time Span | Defines the length of the appointment slot to be used. Notes: If not provided then the returned slots will be the size of availabilities specified for the Appointment Requests. | O | |
| blocking | Boolean | Requests that the appointment offer time slots be blocked out to prevent concurrent appointment requests from using them. Notes: When set to false the Appointment_Summary must be used to check if the offer specified in the Appointment_Offer_Response was successfully appointed. Default Value: If not provided the value from Appointment_Template.blocking is used. If no appointment template is provided the default value will be true. | O | |
| distance_threshold_km | Double | The maximum distance from a shift start location to the activity location in order for the resource to be considered for the appointment offer. Notes: If a value is specified, it overrides the maximum distance specified in the Appointment_Template entity. | O | |
| granularity | Time Span | Used to specify that returned slots should be rounded to start and finish at granular times. Notes: Only applies if the appointment window length is less than the full availability of the slot. Example: If a one hour slot is requested between 9am and 11am, with a granularity of 30 minutes, the possible slots returned will be 9am-10am, 9:30am-10:30am or 10am-11am. | O | |
| offer_expiry_datetime | Date Time | Specifies the date and time that any offers for the appointment request will expire. Notes: Must be in the future. | O | |
| request_datetime | Date Time | The time stamp for this request. Notes: This is used when applying the offer_expiry_window on the appointment template. | O | |
| slot_usage_rule_set_id | String(32) | The id of the slot usage rules that should be used with this request. Foreign Key: Slot_Usage_Rule_Set | O | |
| utilisation_multiplier | Double | A multiplier for the maximum shift utilisation to limit the amount of time the offers consume in each shift. Notes: If an offer in a shift makes the shift utilisation higher than the maximum shift utilisation, the offer will not be available. Values between 0 and 1. | O |
Entity: Appointment_Summary (Output)¶
This returns summary information about a booked appointment. This information is sent after an appointment offer response has been received.
When responding to a non-blocking appointment request, the appointed attribute should be used to see if the appointment offer response was successful.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| appointment_request_id | String(32) | Defines the id of the appointment request this relates to. | PK | M |
| activity_id | String(32) | Defines the id of the activity the request was made for. | M | |
| appointed | Boolean | States whether an appointment slot has been accepted for this request. | M | |
| input_updated | Boolean | States whether the input data has yet been updated to reflect the accepted slot. | M | |
| plan_id | Int64 | Defines the id of plan this information relates to. | M | |
| request_outstanding | Boolean | States whether there is still an appointment request outstanding for this activity. | M | |
| appointment_end_datetime | Date Time | Defines the start date and time of the accepted appointment slot. | O | |
| appointment_start_datetime | Date Time | Defines the end date and time of the accepted appointment slot. | O | |
| appointment_value | Double | The value of the accepted appointment, corresponding to the offer_value on the accepted appointment offer. | O |
Entity: Appointment_Template (Input)¶
This enables a pattern of requests to be defined for appointments. The system will automatically create these appointment requests internally over the scheduling window.
Warning
When appointment booking it is important to limit the number of 'slots' that are considered. The ABE is designed to respond quickly to an appointment request. It is strongly recommended that appointment offers are not requested for more than 20 slots. If more than 20 slots are needed, then these need to be requested in 'batches' of 20.
Note
Please note that when an Appointment_Template is used for an appointment request, the slots to consider will only be based on the associated Appointment_Template_Item rows. Any availability or availability pattern rows linked directly to the appointment request will be ignored, and will not be treated as potential slots to consider.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the appointment template. | PK | M |
| blocking | Boolean | Requests that the appointment offer time slots be blocked out to prevent concurrent appointment requests from using them. Notes: When set to false the Appointment_Summary must be used to check if the offer specified in the Appointment_Offer_Response was successfully appointed. | M(true) | |
| day_pattern | String(7) | Specifies the days on which slots should be requested. Notes: This should be 7 characters, with each character either 'Y' to include that day, or 'N' to exclude it. The first character corresponds to Monday. Example: The string 'YYYYYNN' indicates Monday to Friday appointments only. | M | |
| default_template | Boolean | Indicates whether this template should be used as the default template on the appointment booking client. | M(false) | |
| exclude_to_template_start | Boolean | Indicates whether appointment slots should only be offered from the next start point of the template. | M(false) | |
| number_of_slots | Integer | Defines the maximum number of appointment slots to return. | M | |
| offer_expiry_window | Time Span | Defines the length of time from the request_datetime on the appointment request after which offers will be expired. | M | |
| appointment_window_length | Time Span | Specifies the length of the slots that should be returned. | O | |
| description | String(2000) | Describes this appointment template. | O | |
| distance_threshold_km | Double | The maximum distance from a shift start location to the activity location in order for the resource to be considered for the appointment offer. Notes: If specified will be overridden by maximum distance km value provided in the 'Appointment_Request' entity, if both are specified. | O | |
| granularity | Time Span | See granularity on Appointment_Request. | O | |
| minimum_delay | Time Span | Specifies the minimum amount of time after the appointment_base_datetime from which the appointments should be offered. If appointment_base_datetime is not specified, current schedule time is considered. | O | |
| slot_usage_rule_set_id | String(32) | The id of the slot usage rules that should be used with this template. Foreign Key: Slot_Usage_Rule_Set | O | |
| start_based | Boolean | Defines whether only the activity start time need be within the returned slot, or whether the entire activity must be scheduled within the slot. | O | |
| template_start_day_of_week | Integer | Specifies the day of week from which the template should start, with 0=Monday. | O | |
| template_start_time_of_day | Time Span | Specifies the time of day from which the template should start. | O | |
| time_zone | String(32) | Specifies the time zone to use when applying time of day attributes on Appointment Template and Appointment Template Item. Notes: If null the local system timezone will be used. | O | |
| utilisation_multiplier | Double | Defines a multiplier for the maximum shift utilisation to limit the amount of time the offers consume in each shift. Notes: If an offer in a shift makes the shift utilisation higher than the maximum shift utilisation, the offer will not be available. Values between 0 and 1. | O |
Example¶
This will request one hour morning and afternoon slots for a week, starting from the next Monday after the schedule time.
<Appointment_Template>
<id>SAMPLE_TEMPLATE</id>
<day_pattern>YYYYYNN</day_pattern>
<number_of_slots>10</number_of_slots>
<appointment_window_length>P1H</appointment_window_length>
<granularity>PT30M</granularity>
<template_start_day_of_week>0</template_start_day_of_week>
<template_start_time_of_day>PT9H</template_start_time_of_day>
<exclude_to_template_start>true</exclude_to_template_start>
<start_based>true</start_based>
<offer_expiry_window>PT5M</offer_expiry_window>
<default_template>true</default_template>
</Appointment_Template>
<Appointment_Template_Item>
<appointment_template_id>SAMPLE_TEMPLATE</appointment_template_id>
<slot_start_time>PT9H</slot_start_time>
<slot_end_time>PT12H</slot_end_time>
</Appointment_Template_Item>
<Appointment_Template_Item>
<appointment_template_id>SAMPLE_TEMPLATE</appointment_template_id>
<slot_start_time>PT13H</slot_start_time>
<slot_end_time>PT17H</slot_end_time>
</Appointment_Template_Item>
Entity: Appointment_Template_Item (Input)¶
Defines the slots that should be used for an appointment template.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| appointment_template_id | String(32) | Defines the id of the appointment template this relates to. Foreign Key: Appointment_Template | PK | M |
| slot_start_time | Time Span | Specifies the start time of the slot to be requested. | PK | M |
| slot_end_time | Time Span | Specifies the end time of the slot to be requested. | M | |
| slot_usage_window_end | Time Span | Specifies the end time of the slot usage window for the utilisation check. | O | |
| slot_usage_window_start | Time Span | Specifies the start time of the slot usage window for the utilisation check. | O |
Entity: Appt_Request_Slot_Usage (Input)¶
Used to associate an Appointment_Request to either one or multiple slot usage rule sets.
Note
It is also possible to link an appointment request to a single slot usage rule set via the attribute on the appointment request row. However, using this child table allows multiple rule sets to be set on a single appointment request. If both methods are used then all specified rules will apply.
Note
Any slot usage rule sets set in this way will override all rule sets specified against the template.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| appointment_request_id | String(32) | The id of the appointment request this relates to. Foreign Key: Appointment_Request | PK | M |
| slot_usage_rule_set_id | String(32) | The id of the slot usage rule set to use with this request. Foreign Key: Slot_Usage_Rule_Set | PK | M |
Entity: Appt_Template_Slot_Usage (Input)¶
Used to associate an Appointment_Template to either one or multiple slot usage rule sets.
Note
It is also possible to link an appointment template to a single slot usage rule set via the attribute on the appointment template row. However, using this child table allows multiple rule sets to be set on a single appointment template. If both methods are used then all specified rules will apply.
Note
If any slot usage rule sets are set directly against the appointment request (either on the appointment request itself or via the Appt_Request_Slot_Usage table), then these will override all rule sets specified against the template.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| appointment_template_id | String(32) | The id of the appointment template this relates to. Foreign Key: Appointment_Template | PK | M |
| slot_usage_rule_set_id | String(32) | The id of the slot usage rule set to use with this template. Foreign Key: Slot_Usage_Rule_Set | PK | M |
Entity: Availability (Input)¶
This is used to record periods of time when either activities, activity types, locations and location types have access or are available for use in scheduling. In many cases locations and activities will have the same availability times and in this case the availabilities can be recorded against the activity type or location type. This is also used to define slots of availability for Appointment Request.
Location availabilities will take precedence over location type. Activity availabilities will take precedence over activity type availabilities. Location and activity availabilities will be intersected together (though see the note on 'LOCATION_OVERRIDE' below). Thus an activity availability of 9am until 1pm combined with a location availability of 12pm until 5pm will result in overall availability of 12pm until 1pm.
Periods of unavailability can also be specified by setting the attribute 'available' to false. If any periods of unavailability are specified these times will be excluded from the available times for the activity. For example an availability of 9am until 5pm combined with an unavailable time of 9am until 12pm would result in overall availability of 12pm until 5pm. If only unavailable times are specified the activity is assumed to be available everywhere apart from these times.
Note
Attribute start_based will determine whether the availability in question is enforced only against the proposed start time of the activity, or against the entire duration of the activity. As a simple example, suppose an activity has availability from 9:00-17:00, and is scheduled at 16:30 for one hour. If start_based is true this is valid, but if false it is invalid since the activity will not be completed until after the availability has ended.
If this attribute is not specified the DSE will use the setting EnforceConstraintsOnCallEnd to determine the default mode.
This setting will be applied to the entire duration of the activity, not just the end time as it is currently.
If a mixture of start based and full duration availability is used (i.e. start_based set to true on some Availability and false on others), the activity can only be scheduled where it is fully available. For example, if a start based availability is set for Monday, and a full duration availability for Tuesday, then the activity could only be scheduled on the Tuesday, since it is not fully available on Monday.
Note
The attribute 'availability_type' may take either the value 'ACCEPTED_APPOINTMENT' or 'LOCATION_OVERRIDE'. In either case, this is only allowed when the availability is directly linked to an activity, and will be ignored if specified against activity_type or location.
The 'ACCEPTED_APPOINTMENT' type should be used to specify an appointment window for the activity. The time specified is intersected with any other availability specified. The Appointment Booking Engine will ignore this availability if rebooking an appointment for the activity.
The 'LOCATION_OVERRIDE' type should be used to override the location availability for a particular activity. This should be used where the availability specified on the location is more restrictive than should be the case for this activity. The periods specified will override the location availability for that activity, and be intersected with any other specified availability in the usual way (ignoring the original location availability).
Note
Availability constraints are always optional. If no availability applies then there is no availability restriction. If only periods of unavailability are defined, the activity (or location etc.) will be considered available outside these times. If any periods of availability are defined (either through use of Availability or Availability_Pattern), then the activity (or location etc.) will only be considered available at the times specified.
Note
Availabilities for different activity pools are intersected, whereas multiple availabilities against the same pool are combined. For example, suppose an activity belongs to two pools (Pool1 and Pool2). Pool1 has availabilities from 9am to 11am and also from 1pm to 3pm. Pool2 is available from 10am to 4pm. The activity would be available from 10am to 11am and from 1pm to 3pm.
Warning
Availabilities should not be sent that fall outside of the SLAs that apply to an activity or outside the period covered by the scheduling window and appointment window.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the availability. | PK | M |
| datetime_end | Date Time | Specifies the end of the availability period. | M | |
| datetime_start | Date Time | Specifies the start of the availability period. | M | |
| activity_id | String(32) | Defines the id of the activity this relates to. Foreign Key: Activity Notes: None or no more than one of these foreign keys must be provided. | O | |
| activity_pool_id | String(32) | Defines the id of the activity pool this relates to. The availability will apply to all activities in the activity pool. Foreign Key: Activity_Pool | O | |
| activity_type_id | String(32) | Defines the id of the activity type this relates to. Foreign Key: Activity_Type | O | |
| appointment_request_id | String(32) | Appointment offer id Foreign Key: Appointment_Request | O | |
| availability_type | String(32) | Defines the type of availability. Allowed Values: 'ACCEPTED_APPOINTMENT', 'LOCATION_OVERRIDE' | O | |
| available | Boolean | Defines whether the period between the specified times is to be treated as available. | O | |
| location_id | String(32) | Defines the id of the location this relates to. Foreign Key: Location | O | |
| location_type_id | String(32) | Defines the id of the location type this relates to. Foreign Key: Location_Type | O | |
| start_based | Boolean | Enforces availability against either the start time of the activity or the total duration of activity. Notes: If not set the parameter value for EnforceConstraintsOnCallEnd is used to determine the mode. | O |
Examples¶
<Availability>
<id>Test9</id>
<activity_id>Test9</activity_id>
<datetime_start>2006-01-03T11:46:00.0000000-00:00</datetime_start>
<datetime_end>2006-01-03T20:46:00.0000000-00:00</datetime_end>
</Availability>
<Availability>
<id>Test10</id>
<location_id>Test10</location_id>
<datetime_start>2006-01-03T11:46:00.0000000-00:00</datetime_start>
<datetime_end>2006-01-03T20:46:00.0000000-00:00</datetime_end>
</Availability>
<Availability>
<id>Test11</id>
<activity_type_id>Test11</activity_type_id>
<datetime_start>2006-01-03T11:46:00.0000000-00:00</datetime_start>
<datetime_end>2006-01-03T20:46:00.0000000-00:00</datetime_end>
</Availability>
<Availability>
<id>Test12</id>
<location_type_id>Test12</location_type_id>
<datetime_start>2006-01-03T11:46:00.0000000-00:00</datetime_start>
<datetime_end>2006-01-03T20:46:00.0000000-00:00</datetime_end>
</Availability>
<Availability>
<id>Test13</id>
<activity_id>Test13</activity_id>
<datetime_start>2006-01-03T09:30:00.0000000-00:00</datetime_start>
<datetime_end>2006-01-03T10:30:00.0000000-00:00</datetime_end>
<available>false</available>
</Availability>
<Availability>
<id>Test14</id>
<activity_id>Test14</activity_id>
<datetime_start>2006-01-03T10:00:00.0000000-00:00</datetime_start>
<datetime_end>2006-01-03T12:00:00.0000000-00:00</datetime_end>
<availability_type>ACCEPTED_APPOINTMENT</availability_type>
</Availability>
Entity: Availability_Pattern (Input)¶
This enables a pattern of availabilities to be defined for either a Location, Location Type, Appointment Request, Activity or Activity_Type_Id. The system will automatically create these availabilities over the scheduling window.
Note
If operating across multiple time zones, ensure the time_zone attribute is set accordingly.
Note
See 'Availability' for details on the attribute 'availability_type'.
Note
Attribute start_based will determine whether the availability in question is enforced only against the proposed start time of the activity, or against the entire duration of the activity. As a simple example, suppose an activity has availability from 9:00-17:00, and is scheduled at 16:30 for one hour. If start_based is true this is valid, but if false it is invalid since the activity will not be completed until after the availability has ended.
If this attribute is not specified, the DSE will use the setting EnforceConstraintsOnCallEnd to determine the default mode.
This setting will be applied to the entire duration of the activity, not just the end time as it is currently.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the availability pattern. | PK | M |
| close_time | Time Span | Specifies the closing time of the availability. Notes: Must be greater than open_time. | M | |
| day_pattern | String(7) | Seven character string indicating each day of the week the default pattern should apply too. Notes: Each character represents Monday – Sunday. ‘Y’ indicates the shift should be applied for this day. | M(YYYYYNN) | |
| open_time | Time Span | Defines the time each day specified in day_pattern when the availability starts. | M(PT8H) | |
| period_end_datetime | Date Time | Defines the end date and time for the pattern to be applied. Notes: Cannot be before period_start_datetime. | M | |
| period_start_datetime | Date Time | Specifies the starting date and time for the pattern to be applied. | M | |
| activity_id | String(32) | Specifies the activity to which the availability pattern should be applied. Foreign Key: Activity Notes: One of Location Type Id, Location Id, Appointment Request.id, Activity Id location type id or activity type id must be provided. | O | |
| activity_pool_id | String(32) | Defines the id of the activity pool this relates to. The availability will apply to all activities in the activity pool. Foreign Key: Activity_Pool | O | |
| activity_type_id | String(32) | Specifies the activity type to which the availability should be applied. Foreign Key: Activity_Type Notes: One of Location Type Id, Location Id, Appointment Request.id, Activity Id location type id or activity type id must be provided. | O | |
| appointment_request_id | String(32) | Specifies the id of the appointment request to which the availability pattern should be applied. Foreign Key: Appointment_Request Notes: One of Location Type Id, Location Id, Appointment Request.id, Activity Id location type id or activity type id must be provided. | O | |
| availability_type | String(32) | Specifies the type of availability. Allowed Values: 'ACCEPTED_APPOINTMENT','LOCATION_OVERRIDE' | O | |
| location_id | String(32) | Specifies the location to which the availability pattern should be applied. Foreign Key: Location Notes: One of Location Type Id, Location Id, Appointment Request.id, Activity Id location type id or activity type id must be provided. | O | |
| location_type_id | String(32) | The location type to which the availability pattern should be applied. Foreign Key: Location_Type Notes: One of Location Type Id, Location Id, Appointment Request.id, Activity Id location type id or activity type id must be provided. | O | |
| start_based | Boolean | Enforce availability against start time of activity or total duration of activity. Notes: If not set the parameter value for EnforceConstraintsOnCallEnd is used to determine the mode. | O | |
| time_zone | String(32) | The UTC timezone code to be used for open_time, close_time and day_pattern. | O |
Entity: Availability_Set (Input)¶
Defines a collection of availability periods that can be linked to activities. This can be used as a simpler way of defining the same availabilities for multiple activities.
Extra functionality can be enabled through availability sets to place additional restrictions on the schedule based on which availability period the activities are scheduled to. For example, the one_resource_per_availability setting can limit the activities linked to the availability set to use the same resource when scheduled to the same availability period. They can be scheduled to a different resource in the next period in the set, as long as there is only a single resource being used per availability period.
Note
Availabilities will be combined or intersected depending on how they are linked to an activity. Availabilities that link to an individual activity directly (whether that is through an ordinary availability, or through an availability set) will be combined. Similarly, if availabilities are linked to an activity via its location, they will be combined.
However, a location availability and a pool availability and a direct availability would all be intersected, as they have different sources. Availabilities for different activity pools would be intersected, whereas multiple availabilities for the same activity pool would be combined.
Note
Availability sets defined against an activity directly or via an activity pool will take precedence over any availability sets defined against an activity type. So if there are any availability sets defined directly or via a pool, all activity type availability sets for the activity would be ignored.
Note
The one_resource_per_availability functionality cannot be used for activities linked to the availability set via their location or location type.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique identifier for the availability set. | PK | M |
| availability_cost | Double | Defines the one off cost of utilising an availability window. | O | |
| availability_visit_cost | Double | The cost applied to every CALL class activity scheduled within an availability window. | O | |
| available | Boolean | Defines whether the periods within the set are to be treated as available. | O | |
| description | String(2000) | A description of the availability set. | O | |
| one_resource_per_availability | Boolean | If enabled, activities linked to the availability set must all be scheduled to the same resource, if scheduled within the same availability period. Notes: If enabled, the availabilities within the availability set must be non-overlapping. Notes: May not be enabled if available is set to false. | O | |
| persist_category_metrics | Boolean | Defines whether categories should still apply against category rules in between activities within an availability in the availability set. Notes: Only applicable if one_resource_per_availability is enabled. | O |
Entity: Availability_Set_Item (Input)¶
Defines an individual availability period belonging to an availability set.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| availability_set_id | String(32) | The id of the availability set. Foreign Key: Availability_Set | PK | M |
| id | String(32) | An identifier for the availability set item, unique within the availability set. | PK | M |
| datetime_end | Date Time | Specifies the end of the availability period. | M | |
| datetime_start | Date Time | Specifies the start of the availability period. | M | |
| availability_cost | Double | Defines the one off cost of utilising an availability window. Notes: If specified will override Availability_Set | O | |
| availability_visit_cost | Double | The cost applied to every CALL class activity scheduled within an availability window. Notes: If specified will override Availability_Set | O | |
| start_based | Boolean | Enforces availability against either the start time of the activity or the total duration of activity. Notes: If not set the parameter value for EnforceConstraintsOnCallEnd is used to determine the mode. | O |
Entity: Broadcast (Input)¶
This defines how plans and other outputs are to be communicated to external applications and users. Values should be set up with assistance from IFS. See also Broadcast Parameter.
Note
Schedule quality is expressed as a percentage from 1 – 100. Higher percentage quality plans take longer to produce so there is a trade-off between speed and quality of optimisation. This is not to say that the optimisation is poor. A 100 percent optimisation is achieved after a period of time in which the optimiser has not been able to improve the quality. Schedules have a quality of 0 until every element has been processed at least once. Thereafter the quality of a resource's schedule is dependent on how many times it has been improved recently.
Quality is a relative concept and the quality of two different schedules are not comparable. It is used primarily for internal purposes and as an indicator of the number of improvements the scheduler is making relative to the problem space.
Note
Broadcast.allocation_type = 1, 2, 4, 8, 16 indicates the plan data is associated with the Dynamic Scheduling Engine, Appointment Booking Engine, Manual Scheduling, Schedule Dispatch Service or the scheduling Travel Analyser. This is a binary field where the values are added together to specify multiple types. Broadcast.allocation_type is used in broadcasts to select what type of data should be output. Schedule Explainability Service broadcasts are not supported in broadcasts.
Note
When the Schedule Broadcast Manager is set up to broadcast plans of type CHANGE with once_only set to false if one of the change files cannot be broadcast for whatever reason, the next broadcast it attempts will be of type COMPLETE. This is to ensure that no changes are missed by the external application picking up the broadcasts.
Note
The input_reference_id attribute is used to ensure that a particular input has been processed before a broadcast is sent. This would most commonly be the input reference id of the current input. A typical use case for this is with appointment booking, where a broadcast request has been included with an appointment request. Setting the input_reference_id will ensure that the broadcast includes the appointment offers relating to this request. Please note that this cannot be used to specify the id of an input reference that does not yet exist in the system. If this is the case, then the attribute will be ignored.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the broadcast. | PK | M |
| active | Boolean | Indicator to turn broadcast on or off. | M(true) | |
| broadcast_type_id | String(32) | Identifies what type of broadcast type this is and what Broadcast_Parameters are required for this Broadcast. Foreign Key: Broadcast_Type | M | |
| minimum_plan_quality | Double | Indicates that the plan will only be broadcast when the Plan Quality is greater or equal to this value. Notes: Also see Plan entity where the quality is recorded. Quality is expressed as a percentage ranging from 0 to 100. | M(100) | |
| minimum_step_interval | Integer | A broadcast will only be sent every 'x' plans. | M(1) | |
| once_only | Boolean | If set to true the plan will only be broadcast once, the first time it is required. The broadcast will then be discarded. Notes: When processing STATIC schedules all broadcasts are considered once only. | M(false) | |
| plan_type | String(10) | Defines the type of plan to be generated i.e. a full plan or changes since the last plan. Allowed Values: CHANGE = Only changes in the last plan. COMPLETE = Whole plan sent. INTERNAL = Used to inform the DSE of when to write plans internally, where no external plans are required. ADMIN = Broadcasts for internal administrative purposes. Only used by the Scheduling Administration Service. WORKBENCH = Broadcasts manual change requests to a third party rather than sending them to the Schedule Input Manager. The Schedule Broadcast Manager is not required. This can be overridden for accepting schedule exceptions by setting the StandardSendScheduleExceptionAccepts parameter to yes. | M | |
| allocation_type | Integer | Defines the type of allocation used. This is a binary addition. To specify Dynamic Scheduling and Manual Scheduling the value would be 5, 1+4. To include Scheduling Dispatch the value would be 13. Schedule Explainability Service broadcasts are not supported in broadcasts. Allowed Values: 1 = Dynamic Scheduling 2 = Appointment Booking Engine 4 = Manual Scheduling 8 = Schedule Dispatch Service 16 = Scheduling Travel Analyser | O | |
| description | String(2000) | Broadcast description. | O | |
| expiry_datetime | Date Time | Defines the date and time the broadcast should be expired. Notes: If the schedule time (taken from the latest Input_Reference.datetime) goes beyond the expiry_datetime, then this broadcast request will be ignored and no plan will be generated. | O | |
| input_reference_id | String(100) | Contains the identifier of the input reference which would trigger this broadcast. The broadcast will not be issued until the input from the identified Input_Reference had been processed. Notes: The input reference specified should match the input reference id of either the current input or of a pre-existing input. If other criteria such as plan quality were not met then the broadcast will not be processed. | O | |
| maximum_frequency | Time Span | Defines the minimum amount of time elapsed since the previous broadcast before sending an updated one. Notes: Specifying this in addition to the appointment allocation type can have a negative effect on the performance of the system and is not advised. | O | |
| maximum_wait | Time Span | If specified, then the plan will be broadcast when either (a) the minimum plan quality is attained, or (b) when the Maximum Wait is hit, whichever occurs first. If there is no Maximum Wait, then the plan is broadcast when the quality target is met. | O | |
| minimum_visit_status | Integer | If specified, then the Allocation rows where the visit_status is less than the minimum_visit_status will be removed from the broadcast (as well as associated allocation data and allocation part rows). | O | |
| time_filter_end | Date Time | If specified, then the activities whose start time is after or at the exact time of this filter will not be broadcasted. | O | |
| time_filter_start | Date Time | If specified, then the activities whose end time is before or at the exact time of this filter will not be broadcasted. | O |
Examples¶
Definition of a standard broadcast.
<Broadcast>
<id>Email_BroadCast_Output</id>
<active>true</active>
<broadcast_type_id>EMAIL</broadcast_type_id>
<description>Test Broadcast Email</description>
<plan_type>COMPLETE</plan_type>
<once_only>true</once_only>
</Broadcast>
Definition of an internal broadcast for use by the Scheduling Administration Service including input reference header record and parameter records. This will tell the Administration Service you would like a broadcast to be sent to you on the 10th failed attempt to contact an Input Manager Service. The Administration Service would attempt to contact all running Input Managers every 30 seconds (Default) and would create Application_Instance_Status rows for all running Input Managers every 60 seconds (Default).
When specifying admin broadcasts they must be put into the SCHED_ADMIN dataset. This is done on the input reference.
<Input_Reference>
<datetime>2007-10-12T03:00:00+00:00</datetime>
<id>ADMIN_BROADCASTS</id>
<input_type>LOAD</input_type>
<dataset_id>SCHED_ADMIN</dataset_id>
</Input_Reference>
<Broadcast>
<id>ADM_SIM_NotResponding_Email</id>
<broadcast_type_id>EMAIL</broadcast_type_id>
<description>SIM Broadcast Email</description>
<plan_type>ADMIN</plan_type>
</Broadcast>
<Broadcast_Parameter>
<broadcast_id>ADM_SIM_NotResponding_Email</broadcast_id>
<parameter_name>to_address</parameter_name>
<parameter_value>support@xxx.com</parameter_value>
</Broadcast_Parameter>
<Broadcast_Parameter>
<broadcast_id>ADM_SIM_NotResponding_Email</broadcast_id>
<parameter_name>smtp_server</parameter_name>
<parameter_value>mail.xxx.com</parameter_value>
</Broadcast_Parameter>
<Broadcast_Parameter>
<broadcast_id>ADM_SIM_NotResponding_Email</broadcast_id>
<parameter_name>application_type_id</parameter_name>
<parameter_value>SIM</parameter_value>
</Broadcast_Parameter>
<Broadcast_Parameter>
<broadcast_id>ADM_SIM_NotResponding_Email</broadcast_id>
<parameter_name>failed_attempt_count</parameter_name>
<parameter_value>10</parameter_value>
</Broadcast_Parameter>
Example of broadcasting manual change requests to a third party rather than sending them to the Schedule Input Manager. If the broadcast is to a webservice it can be coded so the Scheduling Workbench passes a language id and displays an error message to the user when needed.
<Broadcast>
<id>MyWorkbenchBroadcast</id>
<active>true</active>
<broadcast_type_id>FILE</broadcast_type_id>
<description>Example</description>
<plan_type>WORKBENCH</plan_type>
</Broadcast>
<Broadcast_Parameter>
<broadcast_id>MyWorkbenchBroadcast</broadcast_id>
<parameter_name>file</parameter_name>
<parameter_value>C:\IFS\Scheduling\Broadcast</parameter_value>
</Broadcast_Parameter>
Entity: Broadcast_Data (System)¶
Stores POLLING broadcast data prepared by the Schedule Broadcast Manager.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| broadcast_id | String(32) | The broadcast id the broadcast relates to. | PK | M |
| dataset_id | String(32) | The dataset id the broadcast data relates to. | PK | M |
| organisation_id | Integer | The organisation id the broadcast data relates to. | PK | M |
| plan_id | Int64 | The plan id the broadcast data relates to. | PK | M |
| input_reference_internal_id | Int64 | The internal id of the input reference the broadcast data relates to. | M | |
| plan_type | String(32) | The type of this plan. Notes: Complete plan = ‘COMPLETE’ Plan containing only changes since last plan = ‘CHANGE’ | M |
Entity: Broadcast_History (System)¶
Logs all attempts to broadcast plans by the Schedule Broadcast Manager, and their success or failure.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | Int64 | A unique identifier. | PK | M |
| application_instance_id | String(128) | The id of the broadcast manager instance that sent the broadcast. | M | |
| broadcast_datetime | Date Time | The time of the broadcast. | M | |
| broadcast_id | String(32) | The broadcast id the broadcast relates to. | M | |
| dataset_id | String(32) | The dataset id the broadcast relates to. | M | |
| organisation_id | Integer | The organisation id the broadcast relates to. | M | |
| success | Boolean | Indicates whether or not the broadcast was sent successfully. | M | |
| update_type | String(32) | Indicates the type of update that is being broadcast Allowed Values: PLAN,WORKBENCH,ADMIN | M | |
| input_reference_internal_id | Int64 | The internal id of the input reference the broadcast relates to. | O | |
| message | String(2000) | The message returned from the receiving system. | O | |
| plan_id | Int64 | The plan id the broadcast relates to. | O | |
| response | Int64 | The response code returned from the receiving system. | O | |
| result_code | Integer | The http result code returned from the receiving system. Notes: Records result code only for REST Broadcast Type. | O | |
| send_time_taken | Time Span | The time elapsed while sending the broadcast. Notes: For example, the time taken for the receiving web application to process the broadcast and return a result. | O | |
| user_id | String(256) | The id of the user who made the change. | O |
Entity: Broadcast_Parameter (Input)¶
This defines the various parameter values required for each Broadcast. The required parameters are created automatically depending on the Broadcast Type being used.
Plans may be generated by a number of applications such as the DSE or ABE. Using parameter plan_filter it is possible to only broadcast plans from specified applications.
Note
Parameter ’data_tables’ can be included on any broadcast to specify what additional tables of data should be included with the plan. This enables any data currently held in the scheduling system to be output. The parameter value is a comma delimited set of table names.
Note
When entering the file_path for a FILE broadcast it is possible to enter a specific file name or just a folder. The folder approach is quite useful because you can then examine the progress of the plan because the broadcasts are separate and do not overwrite the previous one. See example below.
Note
When broadcasting plans as files it is possible to ensure uniqueness of the name by providing a value for parameter ‘filename_format’ of ‘GUID’.
Note
When entering the required_tables for a broadcast, it is possible to enter a single table name or a list of comma separated table names. All other tables will not be included in the broadcast.
Note
When entering the excluded_tables for a broadcast, it is also possible to enter a single table name or a list of comma separated table names. The specified table(s) will not be included in the broadcast. All other tables will be included.
Note
For a REST broadcast HTTP basic authentication is implemented, it is recommended that HTTPs be used for a secure connection.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| broadcast_id | String(32) | Defines a unique id for the broadcast parameter. Foreign Key: Broadcast | PK | M |
| parameter_name | String(100) | Defines the name of the broadcast parameter. | PK | M |
| parameter_value | String(1000) | Defines the actual value of the broadcast parameter. | M |
Default Entries Created Based Upon Broadcast Type¶
| Broadcast Types | Parameter Name | Description | M/O For Broadcast Type |
|---|---|---|---|
| to_address | Email address of broadcast recipient. | M | |
| smtp_server | Full SMTP server name of the recipient. If specified incorrectly, SMTP error server such as ''server response was: 5.7.57 SMTP'' will occur. | M | |
| FILE | file_path | File path to output plan. | M |
| REST | mediatype | The media type for the content of the request and response message. Accepted values are :- application/json text/json application/xml text/xml application/octet-stream | M |
| REST | httpmethod | The http method to use for the request. Default is 'POST'. Accepted values are :- POST PATCH | O |
| REST | etag | An optional etag value to use for the request. This will be added as an If-Match header. | O |
| REST | auth_token_url | An optional OAuth 2.0 token endpoint URL to obtain bearer token. If provided, Broadcast Manager will use it to authenticate using client credentials flow. Otherwise basic authentication will be used. | O |
| REST | auth_token_url_cert _thumbprint | The certificate thumbprint for the OAuth token endpoint. See the Administration Guide section on Certificate Thumbprints for more information. | O |
| REST | compression | An optional parameter indicating the compression method to use. Default is no compression. Accepted values are :- gzip | O |
| REST | url_cert_thumbprint | The certificate thumbprint for the webservice address. See the Administration Guide section on Certificate Thumbprints for more information. | O |
| WEBSERVICE FTP REST | url | Path to FTP site or webservice address. | M |
| WEBSERVICE FTP REST | username | The username for logon credentials. Only needed when logon credentials are needed. | O |
| WEBSERVICE FTP REST | password | The password for logon credentials. Only needed when logon credentials are needed. The password gets encrypted before it is saved in the database, hence the value available in the database is not the real password. | O |
| WEBSERVICE | wsid | The defined id for the webservice data to be sent back to. | M |
| WEBSERVICE | authentication | The authentication method to use when sending credentials, e.g. 'Basic' for basic authentication. If not supplied the default method will be Negotiate. | O |
| WEBSERVICE REST | timeout | Timeout to be used on webservice calls in milliseconds. | O(1000000) |
| WEBSERVICE | external_reference | An external reference for inclusion in the webservice call. | O |
| WCF | address | Path to WCF receiving service. | M |
| WCF | binding | Name of binding to use. Allowed values are:- BINDING_WS_HTTP_SECURITY_NONE BINDING_WS_HTTP BINDING_NET_TCP_SECURITY_NONE BINDING_NET_TCP BINDING_BASIC_HTTP BINDING_BASIC_HTTPS http (equivalent to BINDING_WS_HTTP_SECURITY_NONE) nettcp (equivalent to BINDING_NET_TCP_SECURITY_NONE) The exact configuration can be modified if required via the configuration file. | O(http) |
| WCF | method | Method to use when sending data. Allowed values are:- Broadcast360 Broadcast360Workbench | O(Broadcast360) |
| EMAIL FILE WEBSERVICE FTP | data_tables | Comma delimited set of tables to be output in the broadcast. | O |
| EMAIL FILE WEBSERVICE FTP | plan_filter | Now obsolete - replaced by allocation_type attribute on Broadcast entity. | O |
| EMAIL FILE FTP | filename_format | The default format is the current timestamp, but by specifying this parameter with the value 'GUID', you can change this format to be a GUID followed by _360Output.xml. This will ensure uniqueness. Allowed values are: TIMESTAMP GUID | O(TIMESTAMP) |
| ALL | application_type_id | Application Type this admin broadcast is for. | M only for plan_type ADMIN |
| ALL | failed_attempt_count | Now obsolete - replaced by check_in_expired_time | O |
| ALL | check_in_expired_time | Amount of time to have expired since application last checked in before broadcast is sent | M only for plan_type ADMIN |
| ALL | ping_rate | How often to contact the application to see if it is still alive in seconds. | O(10) only for plan_type ADMIN |
| ALL | data_ping_rate | How often to create Application_Instance_Status records for the application in seconds. | O(30) only for plan_type ADMIN |
| ALL | required_tables | A comma separated list of the names of the tables that are required to be included in the broadcast. All other tables will be excluded. | O |
| ALL | excluded_tables | A comma separated list of the names of the tables that are required to be excluded in the broadcast. All other tables will be included. | O |
Examples¶
File broadcast to a directory.
<Broadcast>
<id>ao1</id>
<active>true</active>
<broadcast_type_id>FILE</broadcast_type_id>
<description>Results</description>
<plan_type>COMPLETE</plan_type>
<minimum_plan_quality>80</minimum_plan_quality>
<minimum_step_interval>1</minimum_step_interval>
<once_only>false</once_only>
<maximum_wait>PT30M</maximum_wait>
</Broadcast>
<Broadcast_Parameter>
<broadcast_id>ao1</broadcast_id>
<parameter_name>file_path</parameter_name>
<parameter_value>c:\IFS\Scheduling\broadcast</parameter_value>
</Broadcast_Parameter>
Other parameter examples.
<Broadcast_Parameter>
<broadcast_id>Email_Broadcast_Output</broadcast_id>
<parameter_name>to_address</parameter_name>
<parameter_value>admin@xxx.com</parameter_value>
</Broadcast_Parameter>
<Broadcast_Parameter>
<broadcast_id>1</broadcast_id>
<parameter_name>data_tables</parameter_name>
<parameter_value>Activity,Activity_Status</parameter_value>
</Broadcast>
<Broadcast_Parameter>
<broadcast_id>1</broadcast_id>
<parameter_name>filename_format</parameter_name>
<parameter_value>GUID</parameter_value>
</Broadcast_Parameter>
<Broadcast_Parameter>
<broadcast_id>1</broadcast_id>
<parameter_name>required_tables</parameter_name>
<parameter_value>Plan,Allocation</parameter_value>
</Broadcast_Parameter>
<Broadcast_Parameter>
<broadcast_id>1</broadcast_id>
<parameter_name>excluded_tables</parameter_name>
<parameter_value>Plan,Allocation</parameter_value>
</Broadcast_Parameter>
Entity: Broadcast_Type (Lookup)¶
This defines the various methods of broadcasting plans to external applications and users.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Unique id. Allowed Values: EMAIL, FILE, FTP, INTERNAL, POLLING, WCF, WEBSERVICE, REST | PK | M |
| description | String(100) | Broadcast type description. | O |
Default Entries¶
| ID | Description |
|---|---|
| DATABASE | Plan stored on a database |
| Email data plan | |
| FILE | Produce plan as flat file |
| FTP | File transfer plan |
| POLLING | Plan sent in response to remoting call |
| REST | Plan output to RESTful endpoint |
| WCF | Plan output to a WCF service |
| WEBSERVICE | Plan output to a webservice |
Entity: Calendar (Input)¶
This defines a calendar which can be applied to the SLAs of an activity. The slopes on the SLA will only apply during active calendar periods. The calendar consists of a weekly pattern, defined as Calendar_Item rows, plus overrides for particular days, e.g. bank holidays. These are defined as Special_Day and Special_Day_Item rows.
For example, suppose an activity has a primary SLA starting on Friday morning at 9am and finishing at 5pm Monday night (80 hours in total). Suppose the SLA has a slope from 1 to 0.9 during this time. If we say the activity has a base value of 1000, then at 9am on Monday morning we find ourselves 90% through the SLA period, so the value of the activity would be 910.
However if the activity can only be done during normal weekday working (for example, due to resource shifts or the activity's availabilities), in reality only half of the available time has been used up. To allow for this we can apply a calendar to say that the SLA slope only applies between 9am-5pm Monday-Friday. This would mean that only 16 hours of the total 80 hours counts as available time, and for the remaining time the SLA is 'suspended' without changing its value. As a result on Monday morning it is treated as still being only half way through the SLA period, so is still worth 950.
Note
Calendars do not affect the availability of the activity - they only impact how the slope of the activity SLA changes over time.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the calendar. | PK | M |
| description | String(2000) | Provides a description of the calendar. | O | |
| time_zone | String(32) | The time zone to use when applying the calendar. If not supplied the local server time zone will be used. | O |
Entity: Calendar_Item (Input)¶
This defines the general pattern of active periods for the calendar.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| calendar_id | String(32) | Specifies the id of the calendar this belongs to. Foreign Key: Calendar | PK | M |
| day_of_week | Integer | Specifies the day of week for this active period (0=Sunday, 6=Saturday). | PK | M |
| start_time | Time Span | Specifies the start time for this active period. | PK | M |
| end_time | Time Span | Specifies the end time for this active period. | M |
Entity: Capacity (Input)¶
This defines the parts capacity that can be carried by a resource. It consists of an overall maximum volume and weight that can be carried, a default maximum part quantity, and individual capacities for particular parts.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines the unique id for this capacity. | PK | M |
| description | String(2000) | Provides a description for this capacity. | O | |
| maximum_part_quantity | Integer | Specifies the default maximum quantity of a part that can be carried in this capacity. Notes: If this is set to 0 then only parts specified via a Capacity_Part record can be carried in this capacity. | O | |
| maximum_volume | Double | Specifies the overall maximum part volume that can be carried in this capacity. Notes: If the maximum volume is null then there is no overall maximum volume. | O | |
| maximum_weight | Double | Specifies the overall maximum part weight that can be carried in this capacity. This is calculated separately to volume. Notes: If the maximum weight is null then there is no overall maximum weight. | O |
Entity: Capacity_Part (Input)¶
This defines an override for the maximum quantity of stock that can be carried for a particular part. If the maximum quantity is null then there is no maximum. If exclusivity required is set to true then the resource must carry only this part for this capacity requirement.
Warning
When defining capacities for specific parts no more than 20 parts should have specific part limits.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| capacity_id | String(32) | Defines the unique id for the capacity. Foreign Key: Capacity | PK | M |
| part_id | String(32) | Specifies the Unique identifier for the part to which this capacity applies. Foreign Key: Part | PK | M |
| exclusivity_required | Boolean | Indicates whether the part must be carried for the capacity requirement. | M(false) | |
| maximum_quantity | Integer | Defines the maximum quantity of stock to be carried. | O |
Entity: Categorisation (Input)¶
Represents a high-level grouping or classification of categories, serving as a parent entity for organising them into meaningful groups. This can be used for filtering or grouping resources and activities in the Scheduling Workbench, or for defining rules that can restrict how the categories can be scheduled in parallel with each other.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique identifier for the categorisation. | PK | M |
| description | String(2000) | A description of the categorisation. | O |
Entity: Category (Input)¶
Defines specific items or entities within a categorisation. Activities and resources can belong to up to one category per categorisation.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| categorisation_id | String(32) | The id of the categorisation this category belongs to. Foreign Key: Categorisation | PK | M |
| id | String(32) | A unique identifier for the category. | PK | M |
| description | String(2000) | A description of the category. | O |
Entity: Category_Custom_Metric (Input)¶
Defines the value a custom metric has for activities belonging to a particular category.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| categorisation_id | String(32) | The id of the categorisation to link to this custom metric. Foreign Key: Category | PK | M |
| category_id | String(32) | The id of the category to link to this custom metric. Foreign Key: Category | PK | M |
| custom_metric_id | String(32) | The id of the custom metric to associate with a categorisation and category. Foreign Key: Custom_Metric | PK | M |
| metric_value | Double | A value to represent the custom metric for the category. | M |
Entity: Child_Schedule (Input)¶
Defines the child schedule datasets to be created when using the DISTRIBUTED or DISTRIBUTED_STATIC process types. A scheduling problem using this process type can have multiple child datasets attached to it which are processed according to different settings. Input data is always sent into the parent dataset, and the system will automatically determine which child datasets need to be updated as a result of any change.
Note
Distributed scheduling is only available when the DSE is running in SEGMENT mode.
For 'DISTRIBUTED', exactly one child schedule of process type DYNAMIC, APPOINTMENT or REACTIVE must be specified. This should have no schedule start time meaning it is taken from the time on the parent dataset. A schedule end time and potentially an appointment window duration should be specified. This schedule will always be updated in real time.
For 'DISTRIBUTED_STATIC' there should be no dynamic child schedules.
The remaining child schedules must all be STATIC. For 'DISTRIBUTED' there may be zero, one or many of these datasets. For 'DISTRIBUTED_STATIC' there must be at least one. It is possible to get the static schedules to be updated on a periodic basis. For example, the child datasets could be configured to have a week-long dynamic schedule, a month-long static schedule that refreshes once per hour, and a year-long static schedule that generates only once per day.
By default, static schedules will not be updated, so they will only be produced once per LOAD. If updates are required, then the attribute ‘maximum_refresh_frequency’ should be set on the Child_Schedule row. This only applies for the 'DISTRIBUTED' process type. This sets a minimum elapsed time from the current schedule time when the schedule was previously updated to the current schedule time when it is refreshed. For example, if the parameter was set to 4 hours, and the initial static schedule was created at 5am, then it wouldn’t begin to create another until the schedule time reaches 9am
Note
The 'profile_id' attribute can be used against the 'dynamic' child dataset, and this profile will then be used by the DSE and other services when processing this dataset. Note that when generating plans for the static child datasets, the DSE will always use the profile associated with the parent dataset, since the DSE does not process the static datasets directly.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| child_dataset_id | String(32) | Dataset id for the child dataset. | PK | M |
| process_type | String(32) | Identifies a particular process to be executed for this child schedule. Notes: See Input_Reference.process_type for more information. Allowed Values: DYNAMIC, APPOINTMENT, REACTIVE, STATIC | M | |
| appointment_window_duration | Time Span | This specifies the duration of the appointment window. This is in addition to the scheduling window and starts after the scheduling window ends. Notes: See Input_Reference.appointment_window_duration for more information. | O | |
| maximum_refresh_frequency | Time Span | Specifies how often a static child schedule is updated. Notes: If continuous updates are required this should be set to 0 seconds. By default, static schedules are not updated. Notes: Only applies for the 'DISTRIBUTED' process type. | O | |
| profile_id | String(32) | The profile of the configuration parameters to use for the input. Notes: This is intended only for overriding the profile used for the dynamic child dataset. | O | |
| schedule_end_time | Date Time | The child schedule end time. Notes: This must be within the scheduling period of the parent dataset. If not specified the parent's schedule end time will be used. | O | |
| schedule_start_time | Date Time | The child schedule start time. Notes: This must be within the scheduling period of the parent dataset. If not specified the parent's schedule start time will be used. | O |
Entity: Contract (Input)¶
Contracts can be used for display purposes on the Scheduling Workbench, and are also used in Target-Based Scheduling and the Schedule Archive reporting tables.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines the unique id for the contract. | PK | M |
| description | String(2000) | Provides a description of this contract. | O |
Entity: Custom_Exception (Input)¶
This defines custom exceptions to be used in the Scheduling Workbench.
Warning
The use of custom exceptions should be limited. No more than 10 custom exceptions should be defined per scheduling problem.
Note
The Dynamic Scheduling Engine and Scheduling Query Manager need to be restarted in order for the custom exception data to show up.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines the unique id for the custom exception. | PK | M |
| schedule_exception_type_id | Integer | Defines the unique id for the exception type of this custom exception. Notes: Custom exception types must be > 1000. Exceptions between 0-999 are reserved for internal use. | M | |
| activity_id | String(32) | Provides the id of the activity that this exception relates to. Foreign Key: Activity | O | |
| resource_id | String(32) | Provides the id of the resource that this exception relates to. Foreign Key: Resources | O | |
| visit_id | Integer | Provides the id of the visit that this exception relates to. | O |
Entity: Custom_Exception_Data (Input)¶
This defines the custom exceptions data to be used in the Scheduling Workbench.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| custom_exception_id | String(32) | Specifies the id of the custom exception this relates to. Foreign Key: Custom_Exception | PK | M |
| sequence | Integer | Specifies the sequence in which the data columns will be displayed. | PK | M(1) |
| label | String(40) | Defines the label to be used. | M | |
| value | String(256) | Defines the value for the label. | M |
Entity: Custom_Metric (Input)¶
This defines a custom metric that can be specified against activities when used with the 'SHIFT_CUSTOM_METRIC' rule type, within the 'SHIFT_CAPACITY' rule category. The rule defines a limit to the total metric value that is permitted within a shift or within a reference period, and each activity may have a value assigned to it for the metric that can be used as its contribution to the rule. See the Rule_Type table for further details on setting up a custom metric rule.
Note
If a categorisation id value is specified against a custom metric, then this custom metric should only apply to categorisations (not activities). Any Activity_Custom_Metric or Activity_Type_Custom_Metric rows associated with this custom metric will be considered invalid.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the custom metric. | PK | M |
| default_value | Double | The default value to be used for each activity where its metric value is not otherwise specified. | M | |
| categorisation_id | String(32) | Specifies the id of the categorisation to associate this custom metric with. Foreign Key: Categorisation | O | |
| description | String(2000) | A description of the custom metric. | O |
Entity: Custom_URL (Input)¶
This defines a custom URL link to be used by applications. Customer URLs can be linked to activities and/or resources, and the URL link will show on the activity or resource details panel as appropriate.
The URL is defined via a combination of URL_String and URL_Parameter records. We advise that care is taken in setting up the URL, using a method that minimises the amount of data that needs to be sent into the system. There are examples below of the options available.
For simple linking of a custom url to an entity, any of the Activity Id, Resource Id, Location Id, Activity Type or Resource ID can be supplied on the Custom_URL table. Where possible, it is advised to use Activity_Type and/or Resource_Type links, and use the URL_Parameter to customise the link to the individual activity or resource.
Alternatively, the custom url id can be linked to either an Activity, Activity Type, Resource, Resource Type or Location by adding a record in the respective 'linking' table, e.g. Activity_Custom_URL. This way of setting up custom urls is particularly recommended when the Activity_Type / Resource_Type link cannot be used. A single custom url record can be added to the Custom_URL table and a record per activity can be added to the Activity_Custom_URL table. Custom parameters can be set within the linking table to be used within the URL.
Warning
The use of custom URLs should be limited, especially where individual Custom_URL rows are added for each activity. The loading and transfer of this data is additional overhead placed on the scheduling system and excessive use may have performance implications.
We advise that the use of custom URLs is kept to a maximum of 10 per activity or resource, for performance and display reasons. If Custom URL records are being created individually for each activity, we recommend a maximum of 4 per activity. Any performance issues resulting from these limits being exceeded will not be treated as software related issues.
Note
The 'navigable_target_name' attribute can be used to configure how and when new windows are opened when a user clicks on the link. Any urls with the same target name will open in the same window (or tab), while a new tab will be used for each different target name.
If no target is specified then by default a new window will open each time the link is clicked. This behaviour can be changed via the parameter 'CustomURLsSingleDefaultWindow', to open all links with no target specified in the same window or tab.
Note
By default, custom URL links have the 'noreferrer' and 'nofollow' attributes set. However, for links with a navigable_target_name, or where the parameter 'CustomURLsSingleDefaultWindow' is set to true, only the 'nofollow' attribute is set. This is because the 'noreferrer' attribute can prevent the target from being applied correctly on some browsers.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the custom url. | PK | M |
| name | String(100) | Provides the domain description. | M | |
| activity_id | String(32) | Specifies the id of the activity that this url relates to. Foreign Key: Activity Obsolete: Activity_Custom_URL must now be used to link an activity to a custom url. | O | |
| activity_type_id | String(32) | Specifies the id of the activity type that this url relates to. Foreign Key: Activity_Type Obsolete: Activity_Type_Custom_URL must now be used to link an activity type to a custom url. | O | |
| custom_action | String(100) | Specifies where the URL link should be located in the Scheduling Workbench. Allowed Values: ACTIVITY_DETAIL_FORM = Activity Detail Form. RESOURCE_DETAIL_FORM = Resource Detail Form. | O | |
| location_id | String(32) | Specifies the id of the location that this url relates to. Foreign Key: Location Obsolete: Location custom url is not supported anymore. | O | |
| navigable_target_name | String(32) | Specifies the name of the target to use when opening this url. Notes: This must not start with '_' | O | |
| resource_id | String(32) | Specifies the id of the resource that this url relates to. Foreign Key: Resources Obsolete: Resource_Custom_URL must now be used to link a resource to a custom url. | O | |
| resource_type_id | String(32) | Specifies the id of the resource type that this url relates to. Foreign Key: Resource_Type Obsolete: Resource_Type_Custom_URL must now be used to link a resource type to a custom url. | O |
Examples¶
This example provides a custom URL link for all activities of type ACT_TYPE1, with the url set to 'http://sample-url.com?id={activityId}&lang=en'.
<Custom_URL>
<id>urlActivities</id>
<name>Prepare work order</name>
<custom_action>ACTIVITY_DETAIL_FORM</custom_action>
<activity_type_id>ACT_TYPE1</activity_type_id>
</Custom_URL>
<URL_String>
<custom_url_id>urlActivities</custom_url_id>
<sequence>1</sequence>
<string_value>http://sample-url.com?id=</string_value>
</URL_String>
<URL_Parameter>
<custom_url_id>urlActivities</custom_url_id>
<sequence>2</sequence>
<parameter_value>id</parameter_value>
<parameter_value_table>Activity</parameter_value_table>
</URL_Parameter>
<URL_String>
<custom_url_id>urlActivities</custom_url_id>
<sequence>3</sequence>
<string_value>&lang=en</string_value>
</URL_String>
This example provides a custom URL link for each activity linked to the URL, with the url set to 'http://sample-url.com?skillId={skillId}'. Here the skillId comes from a custom parameter setting.
<Activity_Custom_URL>
<activity_id>SVC_1</activity_id>
<custom_url_id>urlActivities</custom_url_id>
<custom_parameter_value1>skill_1</custom_parameter_value1>
</Activity_Custom_URL>
<Custom_URL>
<id>urlActivities</id>
<name>Prepare work order</name>
<custom_action>ACTIVITY_DETAIL_FORM</custom_action>
</Custom_URL>
<URL_String>
<custom_url_id>urlActivities</custom_url_id>
<sequence>1</sequence>
<string_value>http://sample-url.com?skillId=</string_value>
</URL_String>
<URL_Parameter>
<custom_url_id>urlActivities</custom_url_id>
<sequence>2</sequence>
<custom_parameter>1</custom_parameter>
</URL_Parameter>
Entity: Customer (Input)¶
Customers can be used for display purposes on the Scheduling Workbench, and are also used in Target-Based Scheduling and the Schedule Archive reporting tables.
Warning
Note that a customer field is referenced on a few tables (namely Activity and Activity_Type) as customer and not customer_id, as the standard naming format of columns that reference parent tables is. This does not signify any differences - it is for technical reasons that it is different.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(100) | Defines a unique id for the customer. | PK | M |
| description | String(2000) | Provides a description for this customer. | O |
Entity: Dataset (Data)¶
This is used to define discrete sets of data for scheduling. By default there is one dataset called Default. Where installations wish to schedule multiple sets of data as different scheduling problems then a separate dataset must be used for each. The dataset id only has to be specified as part of the Input_Reference and not included in the data for each entity input into the system.
Datasets are also used internally by the software. These datasets will not normally be visible to the end user and data associated with these internal datasets must never be altered manually. Child datasets will be created automatically with a dataset_type of ‘SEGMENT’, ‘OBSOLETE’ and are used internally by the applications.
Note
The ‘SCHED_ADMIN’ is installed by default and should not be removed.
Note
For the attribute Dataset.running_state the Scheduling Administration Service removes PAUSED and EXPIRED datasets based on two separate timers. For example, a PAUSED dataset might be removed after being inactive for say 2 weeks, while an EXPIRED dataset could be removed immediately or perhaps after a day or so to allow for backup. The time would be from the Dataset.last_update_datetime. There is an additional running_state of DELETING. This is used to mark a dataset for deletion after it has been EXPIRED for the required length of time.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Unique id for the data set. Notes: Reserved ids 'SCHED_ADMIN'. Value set by EA when the dataset type = 'COMPLETE'. Otherwise it is a guid set internally. | PK | M |
| organisation_id | Integer | The organisation this dataset belongs to. | PK | M(1) |
| dataset_class | String(32) | This is only for internal use and will be populated automatically. Allowed Values: ADMIN, SCHEDULING, WISE, WISE_AUTO, PORTAL, MODELLING | M(SCHEDULING) | |
| dataset_type | String(32) | This is only for internal use and will be populated automatically. Allowed Values: COMPLETE, DELETING, EXPIRED, OBSOLETE, SEGMENT, MASTER, ATOMIC | M | |
| last_update_datetime | Date Time | Used internally to indicate when there was last an update for this dataset. | M | |
| running_state | String(32) | This is used to control the processing of datasets by the DSE for different types of operation. Allowed Values: RUNNING, GENERATED, PAUSED, EXPIRED, DELETING, NO_DATA Notes: In a normal dynamic situation a dataset will always be in a ‘RUNNING’ state. If the process_type on the INPUT_REFERENCE is STATIC, PLAN or MANUAL then only LOAD data is expected, so once the DSE has finished processing the data it will drop the dataset and mark it as PAUSED, to make sure it is not reprocessed. If a new LOAD comes in for this dataset, the running_state will be updated back to RUNNING. If a temporary dataset has been created for some reason (e.g. DST, partial reschedule) then the dataset can be marked as EXPIRED once it is no longer needed. | M(NO_DATA) | |
| alias_id | String(100) | Internal identifier to be populated by applications when dataset_id is provided. Notes: For internal use only. This will contain a readable identifier for when dataset_type = SEGMENT, OBSOLETE | O | |
| dataset_id | String(32) | The id of the parent dataset which must also be of dataset_type = 'COMPLETE' Notes: For internal use only. Only used where dataset_type is not ‘COMPLETE’. | O | |
| description | String(2000) | Name and description. | O | |
| display_context_id | String(32) | Provides the context to determine which list should be used when viewing in the Scheduling Workbench. Notes: This should match the id of a Display_Context row defined in the system data | O | |
| external_id | String(80) | An external id for the dataset. | O | |
| footprint | Double | An estimate of the size of the dataset as a scheduling problem. | O | |
| process_type | String(32) | Identifies a particular process to be executed for this data. Notes: For internal use only. Updated on a LOAD input. See Input_Reference.process_type for more information. | O | |
| profile_id | String(32) | The profile of the configuration parameters to use for the input set of reference data. | O |
Default Entries¶
| ID | Description |
|---|---|
| SCHED_ADMIN | Internal dataset only |
Entity: Dataset_Segment_Mapping (Input)¶
For internal use only.
Entity: Dataset_Status (System)¶
For internal use only.
Entity: Depot_Transfer (Input)¶
Depot transfers allow for parts to be transferred from one depot to another (from a parent depot to a child depot). The transfer will have an associated time delay and cost.
Note
Depot transfers do not allow for chaining transfers together. A part will only be transferred from the parent to the child if needed at the child depot, not if it can be transferred from the child depot elsewhere.
Note
Depot transfers should not be used with reusable parts.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id_child | String(32) | Specifies a unique identifier for the depot the part is being transferred to. Foreign Key: Activity Notes: Should not be the same as activity_id_parent. | PK | M |
| activity_id_parent | String(32) | Specifies a unique identifier for the depot the part is being transferred from. Foreign Key: Activity Notes: Should not be the same as activity_id_child. | PK | M |
| transfer_settings_id | String(32) | Specifies a unique identifier for the transfer settings used. Foreign Key: Depot_Transfer_Settings | M |
Entity: Depot_Transfer_Settings (Input)¶
Depot transfer settings determine which parts can be transferred between two depots, and what the rules are around how long it will take to transfer the part and what this will cost. Default transfer rules can be used if not explicitly defined for each part.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the depot transfer settings. | PK | M |
| apply_to_all | Boolean | Defines whether the rule set should apply to all parts held at the parent depot, or only to the parts explicitly specified by Part_Transfer_Settings. | M(false) | |
| description | String(2000) | Describes the depot transfer settings. | O | |
| transfer_rule_set_id | String(32) | Defines a unique id for the default transfer rule set to use. Foreign Key: Transfer_Rule_Set | O |
Entity: Distance_Penalty (Input)¶
This details the penalties that are linked to a given travel cost model. See 'Travel Cost Model' for details.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| distance_penalty_type_id | String(32) | Specifies the type of the travel penalty Foreign Key: Distance_Penalty_Type Allowed Values: JOURNEY_DISTANCE_KM, SHIFT_TRAVEL_DISTANCE_KM | PK | M |
| threshold_value | Double | Specifies the threshold distance (km) from which the penalty is applied. | PK | M |
| travel_cost_model_id | String(32) | Defines the id of the travel cost model this penalty relates to. Foreign Key: Travel_Cost_Model | PK | M |
| additional_cost_km | Double | Specifies the additional cost per km to apply once the threshold value is exceeded. | O | |
| additional_journey_time | Time Span | Specifies the additional journey time to apply once the threshold value is exceeded. | O | |
| penalty | Double | Defines a one off penalty to apply for exceeding the threshold value. | O |
Entity: Distance_Penalty_Type (Lookup)¶
Lists the different types of travel penalty that can be applied.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id. | PK | M |
| message_id | Integer | The id of the message describing this penalty type. | O |
Entity: Event_Type (Lookup)¶
DSE internal lookup table to record types of events which occur during the operation of an external application and which impact the schedule.
- Resource On. Resource has started their shift.
- Resource Off. Resource has finished work for their current shift.
- Resource Fix. Provides the system with the current real-time position of the resource. Either a location id or latitude and longitude co-ordinates should be provided.
- Break On. Resource has started a break.
- Break Off. Resource has completed their break.
- Attention On. Resource requires attention. This will prompt the 'Resource Attention' exception to be raised for this resource.
- Attention Off. Resource no longer requires attention.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Unique identifier. Allowed Values: RO = Resource On, RF = Resource Off, FIX = Co-ordinate fix, BO = Break On, BF = Break Off, AO = Attention On, AF = Attention Off | PK | M |
| description | String(100) | Event Type description | M |
Entity: Expl_Split_Resource_Order (Input)¶
Defines the order of preference of resources to choose from when splitting an activity for an explanation request.
Note
See Split_Resource_Order for more details of how this ordering is used.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the id of the activity this relates to. Foreign Key: Activity | PK | M |
| explanation_request_id | String(32) | Specifies the id of the explanation request this relates to. Foreign Key: Explanation_Request | PK | M |
| sequence | Integer | Defines the position in the sequence. | PK | M |
| resource_id | String(32) | Specifies the id of the resource this relates to. Foreign Key: Resources | M |
Entity: Explanation_Message_Param (Output)¶
Stores the parameters to be used in a descriptive message to go with an Explanation_Outcome row.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| explanation_outcome_id | String(32) | The id of the Explanation_Outcome this message links to Foreign Key: Explanation_Outcome_Message | PK | M |
| explanation_response_id | String(32) | The id of the response this message is associated with Foreign Key: Explanation_Outcome_Message | PK | M |
| message_sequence | Integer | Represents the order of the messages belonging to the outcome. Foreign Key: Explanation_Outcome_Message | PK | M |
| parameter_sequence | Integer | Represents the order in which the parameters are used in the message | PK | M |
| parameter_type | String(32) | The type of the parameter, can be both generic types such as STRING and INTEGER, or internal types such as RESOURCE_ID or ACTIVITY_ID | M(STRING) | |
| plan_id | Int64 | Defines the id for the plan the outcome is on Foreign Key: Plan | M | |
| value | String(200) | The value of the parameter, to be shown in the message | M |
Entity: Explanation_Outcome (Output)¶
Represents the result of an attempt that has been made for an Explanation_Request. The Schedule Explainability Service will attempt to schedule the requested activity in multiple positions within the schedule. This table gives an overview of the result from the attempt made for the chosen position.
Note
Since the activity may have linked activities, multiple activities may need to be allocated as part of the attempt. The specific details about the attempted allocations are stored in the Explanation_Outcome_Alloc table.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| explanation_response_id | String(32) | The id of the response this attempt is associated with Foreign Key: Explanation_Response | PK | M |
| id | String(32) | A unique id for the attempt | PK | M |
| explanation_result_type_id | Integer | The explanation result type, specifying if an attempt succeeded or why it failed Foreign Key: Explanation_Result_Type | M | |
| plan_id | Int64 | Defines the id for the plan the outcome is on Foreign Key: Plan | M | |
| reason_level_id | Integer | The reason for the result of the attempt, either 'Success' or the level at which the attempt failed Notes: Possible values: 0 = Success, 10 = Visit, 20 = Shift, 30 = Resource, 40 = Schedule | M | |
| failing_activity_id | String(32) | The id of the activity that caused the attempt to fail | O | |
| failing_activity_start | Date Time | The scheduled start time of the activity that caused the attempt to fail | O | |
| failing_resource_id | String(32) | The id of the resource that caused the attempt to fail | O | |
| failing_shift_start_datetime | Date Time | The start time of the shift that caused the attempt to fail | O | |
| failing_visit_id | Integer | The visit id of the actvity that caused the attempt to fail | O | |
| plan_margin_difference | Double | The change to the overall plan margin as a result of this attempt | O |
Entity: Explanation_Outcome_Alloc (Output)¶
Represents the details of the allocations that make up an individual attempt as part of an explanation request. For example, an attempt may consist of allocating two linked activities.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| explanation_outcome_id | String(32) | The id of the Explanation_Outcome this allocation links to Foreign Key: Explanation_Outcome | PK | M |
| explanation_response_id | String(32) | The id of the response this attempt is associated with Foreign Key: Explanation_Outcome, Explanation_Response | PK | M |
| id | String(32) | A unique id for the attempt | PK | M |
| activity_id | String(32) | The id of the activity being allocated | M | |
| plan_id | Int64 | Defines the id for the plan the outcome is on Foreign Key: Plan | M | |
| reason_type_id | Integer | The reason type id to explain why this allocation was included | M | |
| activity_start | Date Time | The time at which the activity is scheduled to start at | O | |
| rank | Integer | The visit index within the route being allocated to | O | |
| resource_id | String(32) | The id of the resource being allocated to | O | |
| shift_start_datetime | Date Time | The start time of the shift the activity is being allocated into | O | |
| visit_id | Integer | The visit id for the activity being allocated | O |
Entity: Explanation_Outcome_Message (Output)¶
Represents a message belonging to an Explanation_Outcome.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| explanation_outcome_id | String(32) | The id of the Explanation_Outcome this message links to Foreign Key: Explanation_Outcome | PK | M |
| explanation_response_id | String(32) | The id of the response this message is associated with Foreign Key: Explanation_Outcome | PK | M |
| sequence | Integer | Represents the order of the messages belonging to the outcome. | PK | M |
| message_id | Integer | The message id for a description of extra details about the failure | M | |
| plan_id | Int64 | Defines the id for the plan the outcome is on Foreign Key: Plan | M |
Entity: Explanation_Request (Input)¶
Represents a request made to the Schedule Explainability Service.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id for the request | PK | M |
| explanation_type | String(11) | Specifies whether this is an explanation or validation request Allowed Values: EXPLANATION, VALIDATION | M(EXPLANATION) | |
| linked_call_attempts | Integer | The number of attempts the Schedule Explanation Service will make at allocating linked calls for each position tried for the requested activity | M(3) | |
| linked_deallocation_option | String(20) | The option to use when deciding which linked calls to deallocate (to be rescheduled as part of the explanation process) Notes: Permitted values: DEALLOCATE_ALL, DEALLOCATE_FORCED, DEALLOCATE_NONE Notes: DEALLOCATE_ALL will remove all linked calls and calls which must be scheduled along with the requested activity. DEALLOCATE_FORCED will remove co-requisites, calls the requested activity is a pre-requisite of and calls which must be scheduled along with the requested activity. DEALLOCATE_NONE will not remove any activities other than the requested activity. | M(DEALLOCATE_ALL) | |
| plan_id | Int64 | The id for the plan the request will be processed against | M | |
| requested_at_datetime | Date Time | The time at which the request was made | M | |
| activity_id | String(32) | The id of the activity the request is being made for Foreign Key: Activity | O | |
| end_datetime_range | Date Time | The end time of the date range specified for the request | O | |
| position | Integer | The position of the request | O | |
| resource_id | String(32) | The id of the resource the request is being made for Foreign Key: Resources | O | |
| start_datetime_range | Date Time | The start time of the date range specified for the request | O |
Entity: Explanation_Request_Change (Input)¶
Represents a change request made to the Schedule Explainability Service.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | The id of the activity the change is being made for Foreign Key: Activity | PK | M |
| explanation_request_id | String(32) | The id of the request this change is associated with Foreign Key: Explanation_Request | PK | M |
| visit_id | Integer | The id of the visit this relates to | PK | M |
| resource_id | String(32) | The id of the resource the change is being made for Foreign Key: Resources | M | |
| base_duration | Time Span | The base duration of the activity | O | |
| fixed_date_time | Date Time | The fixed date time of the activity | O | |
| override_duration | Time Span | The overridden duration of the activity | O | |
| shift_start_time | Date Time | The start date time of the shift | O |
Entity: Explanation_Response (Output)¶
Represents the response to a request made to the Schedule Explainability Service.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id for the response | PK | M |
| explanation_request_id | String(32) | The id of the request this response is associated with | M | |
| explanation_type | String(11) | Specifies whether this is an explanation or validation request Allowed Values: EXPLANATION, VALIDATION | M(EXPLANATION) | |
| plan_id | Int64 | Defines the id for the plan the response is on Foreign Key: Plan | M | |
| requested_plan_id | Int64 | The id for the plan the request was made against Foreign Key: Plan | M | |
| response_status | Integer | Represents the status of the response | M | |
| activity_id | String(32) | The id of the activity the request was made for | O |
Entity: Explanation_Result_Type (Lookup)¶
Represents the types of reasons why an allocation attempt failed, or if it was successful. Used by the Schedule Explainability Service when explaining the results of various allocation attempts.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | Integer | A unique id for the result type | PK | M |
| message_id | Integer | The message id for the message giving a description or the result type | M |
Entity: External_Change_Req_Resource (Input)¶
For an 'External_Change_Request', this table returns all resources that the external change request applies to, when the change applies to multiple resources (i.e. it is a bulk change).
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| external_change_request_id | String(32) | The unique identifier of the external change request this relates to. Foreign Key: External_Change_Request | PK | M |
| resource_id | String(32) | The unique identifier of the resource that this change should apply to. Foreign Key: Resources | PK | M |
| external_change_type_id | String(32) | A unique identifier of the external change type this relates to. Foreign Key: External_Change_Type | M |
Entity: External_Change_Request (Input)¶
An 'External_Change_Request' is sent when a workbench user requests to make a change to the input data based on one of the supported 'External_Change_Type' options. The request row itself, along with related child data, will contain all the information requested by the integration in order to make the change. Note that no changes are made directly in PSO based on this request, it is expected that the change request will be handled by the integration, and the integration will then update the PSO input data as appropriate.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | The unique identifier for each external change request. | PK | M |
| external_change_type_id | String(32) | The unique identifier of the external change type associated with the request. Foreign Key: External_Change_Type | M | |
| activity_id | String(32) | The unique identifier of the activity to which this request applies. Foreign Key: Activity | O | |
| datetime_end | Date Time | The end time selected by the user, if appropriate (e.g. when requesting to create a private activity, the end time of the activity). | O | |
| datetime_start | Date Time | The start time selected by the user, if appropriate (e.g. when requesting to create a private activity, the start time of the activity). | O | |
| description | String(2000) | The description provided by the user, if appropriate (e.g. when requesting to create a private activity, a description for the private activity). | O | |
| resource_id | String(32) | The unique identifier of the resource to which this request applies. Foreign Key: Resources | O |
Entity: External_Change_Request_Item (Input)¶
When an 'External_Change_Request' is sent, this table will include all user selected items, based on the 'External_Change_Select_Item' records associated with the change type.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| external_change_request_id | String(32) | The unique identifier of the external change request this relates to. Foreign Key: External_Change_Request | PK | M |
| external_change_select_id | String(32) | The unique identifier of the external change selection this relates to. | PK | M |
| sequence | Integer | The sequence value of the selected item. | PK | M |
| external_change_type_id | String(32) | The unique identifier of the external change type this relates to. Foreign Key: External_Change_Type | M | |
| value | String(100) | The actual value of the selected item. | M |
Entity: External_Change_Select (Input)¶
This table and the related 'External_Change_Select_Item' table are used to define options that the user must select from when making a request of this type. For example, when creating a private activity, it may be required that the user select a reason for the private activity being needed (sickness, holiday etc.). An External_Change_Select row should then be included, with 'External_Change_Select_Item' rows listing the possible options.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| external_change_type_id | String(32) | The unique identifier of the external change type associated with the selection. Foreign Key: External_Change_Type | PK | M |
| id | String(32) | The unique identifier for each external change selection. | PK | M |
| header | String(100) | The header or title that will be displayed to the user for this selection. | M | |
| sequence | Integer | If multiple external change select rows are needed for the same change type, the sequence will determine the order in which the selection drop-downs are displayed. | M(1) |
Entity: External_Change_Select_Item (Input)¶
This table lists the items that can be selected for each specified 'External_Change_Select'. For example, if the user is required to select a reason for creating a private activity, this table would list the possible reasons to select from (Sickness, Holiday etc.).
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| external_change_select_id | String(32) | The unique identifier of the external change select this item relates to. Foreign Key: External_Change_Select | PK | M |
| external_change_type_id | String(32) | The unique identifier of the external change type this relates to. Foreign Key: External_Change_Select | PK | M |
| sequence | Integer | The sequence order to determine where this item should appear in the drop-down of selectable items. | PK | M |
| label | String(100) | The label text to display for this item in the selection drop-down. | M | |
| value | String(100) | The item value, which will be returned if this item is selected when a request is made. | M |
Entity: External_Change_Type (Input)¶
This table is used to indicate which external change types are supported by the integration. The id must be one of the values supported by PSO, which currently includes 'CREATE_PRIVATE' and 'DELETE_PRIVATE', used to request the creation and deletion of private activities. If a change type is supported, then a workbench user will be given the option to make these requests (provided they have permission), and this will result in an 'External_Change_Request' record being sent back to the integration via a 'WORKBENCH' broadcast. Note that this broadcast must also be in place so that the request can be sent to the integration, instead of to the PSO system. The integration should then process these requests, make any changes in the back-end system, and send the resulting change to the input data through to PSO. No changes will be made to PSO directly as a result of the request.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id for the external change type. Allowed Values: CREATE_PRIVATE, DELETE_PRIVATE | PK | M |
| allow_bulk | Boolean | Indicates whether bulk operation are supported by the integration for this change type. For example, to create private activities for multiple resources at once. | M(false) | |
| supported | Boolean | Indicates if the specific external change type is supported by the integration. | M(true) |
Entity: Fuel_Type (Input)¶
Defines the type of fuel used in the vehicle.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id for the fuel type | PK | M |
| description | String(2000) | Description of the type of fuel used in the vehicle | O |
Entity: Icon (Input)¶
An icon to be used when displaying data in the application. This can currently be linked to resource types and activity types.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id for the icon. | PK | M |
| icon_type_id | String(32) | The type of the icon. Foreign Key: Icon_Type Allowed Values: DEFAULT, EXTERNAL_URL | M | |
| path | String(2000) | The reference path for the icon (either the icon name for DEFAULT type icons, or the url for EXTERNAL_URL type). | M |
Entity: Icon_Type (Lookup)¶
A lookup table of icon types.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id of the icon type. | PK | M |
| message_id | Integer | A description for this icon type. | M |
Entity: Incentive (Input)¶
Incentives add value to the total plan margin when activities are scheduled to resources that meet the conditions of the incentive being applied. The conditions relate to sets of skills that the resource must satisfy. Incentives can also be restricted to only apply to a given set of activities.
In this way it is possible to encourage the DSE to use resources with particular skills to carry out certain activities, without requiring this as a hard constraint.
The primary use for incentives is in automated resource planning, but they can also be used in other scheduling problems if appropriate.
Warning
Before using Incentives IFS PSO Product Development must be consulted.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the incentive. | PK | M |
| global | Boolean | Defines whether the incentive applies to all activities. | M | |
| description | String(2000) | Provides a description for this incentive. | O |
Entity: Incentive_Availability (Input)¶
This links an incentive to a period of availability where it is applicable. If no availabilities are specified then the incentive is always applicable.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| availability_id | String(32) | Defines a unique id for availability period of the incentive. Foreign Key: Availability | PK | M |
| incentive_id | String(32) | Specifies the id of the incentive this availability relates to. Foreign Key: Incentive | PK | M |
Entity: Input_Load_Status (System)¶
For internal use only.
Entity: Input_Reference (Input)¶
This is used to associate an input file and scheduling time with a plan returned from the Scheduling software. The plan will contain the reference to this input data set.
One and only one record of this type should be in each data input, it is effectively the header record. This record is used to define the following :-
- The current time to the scheduler. All activity status changes, schedule events within the data must be at or before this time.
- What dataset the data belongs to, if not supplied it will default to 'Default'.
- What organisation id the data belongs to, if not supplied it will default to 1.
- Is it an initialisation of the system or an update to existing data.
- The scheduling window to be used.
- Should the scheduler produce a one off schedule or continuously seek to improve the schedule.
- The source of the data i.e. who created it.
To initialise the scheduler for the first time the attribute Input_Reference.input_type must be set to ‘LOAD’. This will stop the scheduler of processing any data it currently has for the specified dataset. To stop the scheduler from processing current data but without loading a new set of data set Input_Reference.input_type to ‘STOP’. To stop future processing but keep any data that has already been processed, set Input_Reference.input_type to ‘PAUSE’.
If subsequent data inputs wish to apply updates, or just advance the time the scheduler is working to then the Input_Reference.input_type must be set to ‘CHANGE’. Any number of change files can be sent. It is strongly recommended that the changes are presented to scheduler in chronological order to ensure the best scheduling decisions are made.
The following values for Input_Reference.input_type are supported :-
SETUP = Used when the system first starts to load system reference data.
LOAD = Used by an application to provide an initial load of data and soft restart of the scheduler.
COMPLETE = Used by an external application to provide a complete replacement data set without a restart of the system.
CHANGE = Used to provide an update of existing data.
DATA = Used to change only information in data entry tables.
STOP = When submitted will set the dataset to expired and will not process any data included with the STOP action.
PAUSE = When submitted will stop processing of data, but not set the dataset to expired.
Note
Data Path can point to additional XML files conforming to this definition to be loaded. This file is merged with existing XML data set prior to processing. The XML file may itself also point to an additional file of XML to be loaded. All files specified will be merged and validated against the interface specification.
Note
Dataset_id is used to define discrete sets of data to be scheduled. When supplied this attribute is added to the primary key of all input/output entities. Each dataset is processed separately by the Scheduling system. Several schedulers can be configured to pick up the waiting datasets as they become free for processing.
Note
When the DSE is restarted it starts processing the data from the last LOAD operation and applies all changes forward from that.
Note
Appointment Booking Duration defines the period to be used by the Appointment Booking Engine Service (ABE) to provide appointments. It is only required if the ABE is in use. By default it is set to the Scheduling Window. This provides the option of having e.g. a scheduling window of 7 days and an appointment booking window of 6 months. In such circumstances, the DSE would do an approximate schedule in the period between 7 days and 6 months, and the ABE would book appointments based on this plan.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| dataset_id | String(32) | Defines the id to be used to identify which data set the data belongs to and should be stored against. This enables the system to be used for multiple and discrete sets of data to be scheduled. Notes: This forms part of the primary key for all subsequent data loaded with this input reference. If not supplied then the default dataset_id is used (taken the parameter DefaultDatasetId, default value 'Default'. | PK | M |
| datetime | Date Time | Defines a unique id for the current time. Notes: This informs the system of the current time. | PK | M |
| id | String(100) | Defines a unique id for the input. Notes: Unique external identifier for the input. | PK | M |
| organisation_id | Integer | Specifies the id of the organisation to which the data belongs. Notes: This forms part of the primary key for all subsequent data loaded with this input reference. If not supplied then the default org_id of 1 is used. | PK | M(1) |
| input_type | String(20) | Indicates if the input data set is an initial load or a change to the data. ‘LOAD’ will initiate a data clear down within the scheduling system prior to the loading of new data. Allowed Values: SETUP, LOAD, COMPLETE, CHANGE, DATA, PAUSE, STOP | M(LOAD) | |
| load_status | Integer | For internal use. | M(0) | |
| process_type | String(32) | Identifies a particular process to be executed for this input data. Allowed Values: APPOINTMENT – For use when scheduling over longer scheduling windows, typically when appointment booking is required. DYNAMIC – To be used when dynamic scheduling is required. MANUAL – To be used when manual overrides are being applied to the plan but no scheduling to take place. PLAN – Used when advanced planning is required. CYCLIC – Used when scheduling with modelling patterns. STATIC – Used for static scheduling. REACTIVE – Used when running almost statically, but with a few updates per day. DISTRIBUTED - Used when scheduling with child schedules. DISTRIBUTED_STATIC - Used for static scheduling with child schedules. MANUAL_STATIC – An initial static schedule is created, and then manual overrides can be applied, but no further optimisation is performed. INCREMENTAL - Schedules activity pools incrementally, according to dependency links between the pools. | M(DYNAMIC) | |
| application_instance_id | String(128) | Specifies the id of the instance of the application creating the Input_Reference Notes: Normally server name. | O | |
| application_type_id | String(32) | Defines an optional identifier used to record the source of the data. | O | |
| appointment_window_duration | Time Span | This specifies the duration of the appointment window. This is in addition to the scheduling window and starts after the scheduling window ends. Notes: This defines the window in which appointment planning is used. It defines a period that follows after the scheduling window. The DSE will make a quick and approximate schedule in the appointment window, and a fully-optimised schedule in the normal scheduling window. If the ABE is being used, it will offer appointments over entire period of scheduling and appointment planning. | O | |
| data_path | String(100) | This specifies a path to and file name location from which a file of XML conforming to this standard can be loaded. Notes: Valid full path and file name. The loaded file may itself contain an Input Reference.Data Path to additional files. | O | |
| dataset_id_parent_dataset | String(32) | For internal use only. | O | |
| description | String(2000) | Provides a short description of the input data. If the Archive database is being used, this description is also used for the Audit row's description. | O | |
| duration | Time Span | This specifies the duration of the scheduling window. Notes: If not provided the value from the parameters is used. This may only be set on the LOAD file, and updates in CHANGE files will be ignored. Also see schedule_end_datetime. | O | |
| enacting_app_instance_id | String(128) | Specifies the id of the application instance which processed the data. | O | |
| enacting_app_type_id | String(32) | Specifies the type of the application instance which processed the data. | O | |
| input_datetime | Date Time | Populated internally to indicate when the data was entered into the database. | O | |
| internal_id_parent_dataset | Int64 | For internal use only. | O | |
| licence_key | String(4000) | This is the licence string supplied for operation of the software. Notes: This string is normally supplied automatically from configuration parameters within the installation. See note above. | O | |
| load_id | String(100) | The input reference id of the LOAD this change was intended for. If load_id is specified and does not match the id of the current load the input will not be applied. Notes: Only applicable for input_type of CHANGE, PAUSE or STOP. | O | |
| manual_scheduling_window_end | Date Time | The DSE will not attempt to schedule activities before this time, unless a Shift specifically permits it. Activities of status Committed or greater, and fixed activities, may still be scheduled before this time. | O | |
| profile_id | String(32) | The profile to be used for associating specific parameters with this input for processing. Notes: If not provided default parameters will be used. If provided the parameters associated with the profile will be used. If a parameter is not present in the profile then the default value will be used. This field only has an effect for input type of ‘LOAD’. | O | |
| schedule_end_datetime | Date Time | This can be used to set the schedule end time instead of using Input_Reference.duration. If present, the schedule_end_datetime will override the duration. Notes: The schedule_end_datetime is timezone specific. In general it is recommended to set this to midnight, or a time which no shifts overlap. As with duration, this may only be set on the LOAD file, and updates in CHANGE files will be ignored. | O | |
| source | String(50) | Specifies where data originates from. | O | |
| user_id | String(256) | Specifies the id of the user who sent these changes. Notes: When changes are sent from the Scheduling Workbench the user_id = user logon id | O |
Example¶
<Input_Reference>
<id>Test Create</id>
<datetime>2006-01-03T08:01:00.0000000-00:00</datetime>
<description>Test create data</description>
<input_type>LOAD</input_type>
</Input_Reference>
Entity: Isochrone_Point (Output)¶
These are returned by the Travel Analysis service in response to an Isochrone_Request. The sequence of points together define the requested isochrone.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| isochrone_request_id | String(32) | The id of the isochrone request this relates to. | PK | M |
| sequence | Integer | The sequence of this point within the isochrone. | PK | M |
| latitude | Double | The latitude of this point. | M | |
| longitude | Double | The longitude of this point. | M | |
| plan_id | Int64 | The plan this isochrone point relates to. Foreign Key: Plan | O |
Entity: Isochrone_Request (Input)¶
Used to request an isochrone, which is the sequence of points of equal travel time from a particular location. The centre location can be defined either by specifying a latitude and longitude or by using an existing location within the input data.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the isochrone. | PK | M |
| calculate_envelope | Boolean | Specifies whether to return only the outer points that can be reached within the time. If false return all points that can be reached within the time. | M(true) | |
| end_datetime | Date Time | If specified, the travels will be calculated assuming they end at this time. Notes: Only one of start_datetime and end_datetime should be supplied. | O | |
| grid_metres | Double | Specifies that a grid of points this distance apart should be used as the basis of the calculation. | O | |
| latitude | Double | Specifies the latitude of the centre location of the isochrone. Notes: Required if location_id is not supplied. Range from -90 to +90. | O | |
| location_id | String(32) | Defines the id of the centre location of the isochrone. Foreign Key: Location | O | |
| longitude | Double | Defines the longitude of the centre location of the isochrone. Notes: Required if location_id is not supplied. Range from -180 to +180. | O | |
| profile_id_travel | String(32) | Defines the id of the Profile to use when calculating travel times. The corresponding Travel_Time_Profile to be used is then defined by setting the parameter TravelTimeProfileId on the specified Profile. | O | |
| speed_factor | Double | Defines an additional speed factor to apply when calculating travels. Notes: A speed factor of 2 will mean journeys take twice as long. | O | |
| start_datetime | Date Time | If specified, the travels will be calculated assuming they start at this time. Notes: Only one of start_datetime and end_datetime should be supplied. | O | |
| travel_time | Time Span | Defines the maximum travel time on which the isochrone calculation should be based. | O |
Entity: Load_Info (System)¶
For internal use only.
Entity: Location (Input)¶
Location entries need to be created for activities, resources, shifts where required. The EA is responsible for providing accurate location information. It is strongly advisable to have all location information validated prior to sending to the scheduling system.
Note
When the system is determining distances using the travel matrix it will search using the lat/long provided.
Warning
Only locations referenced by activities or resources that are being considered by the schedule should be sent to PSO.
Examples¶
<Location>
<id>TEST26min-d</id>
<latitude>52.9240</latitude>
<longitude>-1.2487</longitude>
</Location>
<Location>
<id>TEST26max</id>
<location_type_id>Test26</location_type_id>
<location_geocode_id>TEST26</location_geocode_id>
<latitude>52.9240</latitude>
<longitude>1.2487</longitude>
<name>TEST26max</name>
<address_line1>ad1</address_line1>
<address_line2>ad2</address_line2>
<address_line3>ad3</address_line3>
<address_line4>ad4</address_line4>
<address_line5>ad5</address_line5>
<address_line6>ad6</address_line6>
<city>city</city>
<region>region</region>
<state>state</state>
<addtime>PT0H30M</addtime>
</Location>
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Unique id. | PK | M |
| address_line1 | String(128) | The first address line for this location. | O | |
| address_line2 | String(128) | The second address line for this location. | O | |
| address_line3 | String(128) | The third address line for this location. | O | |
| address_line4 | String(128) | The fourth address line for this location. | O | |
| address_line5 | String(128) | The fifth address line for this location. | O | |
| address_line6 | String(128) | The sixth address line for this location. | O | |
| addtime | Time Span | Specifies the amount of time to be added to the travel of an activity for gaining access to this location. If two consecutive activities are at the same location, the time is only added to the first travel. Activities are considered to be at the same location if a locality is specified for both locations, and it is the same; or if locality is not specified on one or both locations, and the two location ids are the same. Notes: Default value will be taken from the Location Type if present. | O | |
| city | String(40) | Specifies address city | O | |
| description | String(2000) | Provides a description of the Location, which may be shown in the Scheduling Workbench | O | |
| duration_overhead | Time Span | Specifies the amount of time to be added to the expected duration of the first activity at a location or locality. If two consecutive activities are at the same location, the time is only added to the first activity. Activities are considered to be at the same location if a locality is specified for both locations, and it is the same; or if locality is not specified on one or both locations, and the two location ids are the same. Notes: Default value will be taken from the Location Type if present. | O | |
| lack_of_coverage | Boolean | If provided, the Time Horizon parameter or Resource.maximum_committed_activities are overridden when considering commits for activities at a location marked 'lack of coverage'. Notes: Used by the Schedule Dispatch Service. | O | |
| latitude | Double | Provides the latitude in decimal degrees. Notes: Range from -90 to +90. | O | |
| locality | String(32) | If the activity location has the attribute locality set to 'Site 1' then the do_in_locality_incentive is applied to all other activities that are linked to a location with Location.locality = 'Site 1'. The do_on_location_incentive will be used if the do_in_locality_incentive is not set. | O | |
| location_type_id | String(32) | Specifies the id of the location type for this location. Foreign Key: Location_Type | O | |
| longitude | Double | Provides the longitude in decimal degrees. Notes: Range from -180 to +180 | O | |
| name | String(64) | Specifies the location name if required. | O | |
| post_code_zip | String(20) | Specifies post code / zip. | O | |
| region | String(40) | Specifies address region | O | |
| state | String(40) | Specifies address country | O |
Entity: Location_Availability_Set (Input)¶
Links a location to an availability set.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| availability_set_id | String(32) | The id of the availability set. Foreign Key: Availability_Set | PK | M |
| location_id | String(32) | The id of the location. Foreign Key: Location | PK | M |
Entity: Location_Region (Input)¶
This links each location with a region entity. A location can belong to more than one region.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| location_id | String(32) | Defines the unique id of the location. Foreign Key: Location | PK | M |
| region_id | String(32) | Defines the unique id of the region. Foreign Key: Region | PK | M |
Example¶
<Location_Region>
<region_id>TEST34</region_id>
<location_id>3165</location_id>
</Location_Region>
Entity: Location_Type (Input)¶
Location types are used to associate availabilities with a type of location. This is used to reduce the amount of availabilities to be loaded for each location, rather they can be loaded against the location type. Location types do not have to be used. Where the location has a location type with availabilities and the location has availabilities then the location availabilities take precedence.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines the unique id of the location type. | PK | M |
| addtime | Time Span | Defines the amount of time to be added to the travel of an activity at the location with this location type. | O | |
| description | String(2000) | Provides name and description of the location type. | O | |
| duration_overhead | Time Span | Specifies the amount of time to be added to the expected duration of the first activity at a location or locality. | O | |
| lack_of_coverage | Boolean | If provided, the Time Horizon parameter or Resource. maximum_ committed_ activities are overridden when considering commits for activities at a location marked 'lack of coverage'. Notes: Used by Schedule Dispatch Service. | O |
Example¶
<Location_Type>
<id>LT Test 13</id>
<description>Test 13 location type</description>
<addtime>PT03H10M</addtime>
</Location_Type>
Entity: Location_Type_Avail_Set (Input)¶
Links a location type to an availability set.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| availability_set_id | String(32) | The id of the availability set. Foreign Key: Availability_Set | PK | M |
| location_type_id | String(32) | The id of the location type. Foreign Key: Location_Type | PK | M |
Entity: Modelling_Pattern (Input)¶
This defines the set of rules to be applied to dataset activities for the modelling application.
Note
Min delay will be used in the following way. Suppose you have a pattern containing activities 1,2,3 and 4 with a 1 week interval. If the step was two, then activities 1 and 3 would be scheduled a week apart, as would activities 2 and 4. Furthermore, activity 2 would be scheduled between 1 and 3 with a gap of at least the min_delay between 1 and 2, and also between 2 and 3.
Note
For more detail and examples of how the various features of the modelling pattern are used by the Scheduling Engine, please refer to Scheduling Concepts - Long-Term Scheduling Guide.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines the unique id of the Modelling Pattern. | PK | M |
| interval | Time Span | Specifies the amount of time to be reserved between each activity using this pattern. Allowed Values: Interval should larger than zero. | M | |
| same_resource | Boolean | Indicates whether the same resource is used for all activities with this pattern | M(false) | |
| step | Integer | Specifies the step for which to apply the specified interval. | M(1) | |
| value_multiplier | Double | Defines how much to increase the value of later activities in the pattern, once the first activity is scheduled. This is to encourage it to schedule entire patterns, rather than leaving bits of different patterns unscheduled. | M(1) | |
| base_datetime | Date Time | Specifies the date and time the interval should be added to in order to calculate the target time for the first visit of the activity. Notes: If not specified, the first visit will be scheduled as early as possible. | O | |
| description | String(2000) | Provides a description of the Modelling Pattern, which may be shown in the Scheduling Workbench | O | |
| leeway | Time Span | Specifies the amount of leeway to be allowed either side of the calculated time from the interval. If 'leeway_before' is specified, then this will only apply asymmetrically, i.e. after the calculated time from the interval. | O | |
| leeway_before | Time Span | Specifies the amount of leeway to be allowed before the calculated time from the interval. If not specified, the 'leeway' value will be used instead. | O | |
| leeway_percentage | Double | Specifies the percentage of the interval to be used as the amount of leeway to be allowed after the calculated time from the interval. | O | |
| leeway_percentage_before | Double | Specifies the percentage of the interval to be used as the amount of leeway to be allowed before the calculated time from the interval. | O | |
| min_delay | Time Span | Determines the minimum time that should be left between activities in the pattern. Notes: For use only when step > 1. | O |
Entity: Object_Deletion (Input)¶
In order to delete an object from the DSE data set, an object deletion must be sent. Deletions should be done prior to new data stream being loaded. If referential constraints are broken then object exceptions will be created. When deleting objects consider the impacts in terms of cascade deletes. Cascade deletes can be stopped by setting the cascade column of the object deletion. If this value is null, the value of the parameter CascadeSchedulingObjectDeletions will be used instead. Object deletions can have a negative impact on the performance of the system and should be avoided if possible. Note that to update an object you do not need to delete it first, just send in the amended object using the same primary key.
Warning
All time spans are represented in the format "P0Y0M0DT0H0M0S" or just "PT0H0M0S" for a value less than one day.
Where the primary key of the object to be deleted is a datetime or time span then the full xml format must be specified in these fields for the deletion to take effect. e.g. 2007-12-03T12:00:00+01:00
For full specification of duration refer to this link:-
http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#duration
Warning
The use of object deletions should be restricted as much as possible since their use has an adverse effect on performance.
Warning
The use of object_deletions should be avoided if at all possible. They should be limited to the complete removal of objects from the dataset when it is essential that these are removed. Objects should not be added and deleted continuously since this will lead to sub optimal system performance. To update an object resend the object with the same primary key, do not delete and resend it. Do not delete objects which do not exist, this will slow the system down.
Warning
Object Deletions of the following objects will have major impacts on the schedule if there are currently any child objects since these will also be deleted unless cascading deletes is turned off. It is recommended to turn off cascading deletes for these object types, or not delete them at all.
Activity_Type
Location_Type
Resource_Type
SLA Type - This will cause all Activity_SLAs of that type to be deleted, unless cascading is disabled, possibly resulting in the activity not being scheduled.
Shift Type - This will cause all Shifts of that type to be deleted, unless cascading is disabled, possibly resulting in no activities being allocated to resources
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| object_pk_name1 | String(40) | Specifies the name of the column. | PK | M |
| object_pk_name2 | String(40) | Specifies the name of the column. | PK | M |
| object_pk_name3 | String(40) | Specifies the name of the column. | PK | M |
| object_pk_name4 | String(40) | Specifies the name of the column. | PK | M |
| object_pk1 | String(100) | Provides primary key value 1. | PK | M |
| object_pk2 | String(32) | Provides primary key value 2. Notes: Second part if composite primary key. | PK | M |
| object_pk3 | String(32) | Provides primary key value 3. Notes: Third part if composite primary key. | PK | M |
| object_pk4 | String(32) | Provides primary key value 4. Notes: Fourth part if composite primary key. | PK | M |
| object_type_id | String(40) | Specifies the type of object which will be deleted. Notes: Valid entity name | PK | M |
| cascade | Boolean | Specifies if this object deletion should also cascade delete child objects Notes: If set to null, the value of the CascadeSchedulingObjectDeletions parameter will be used | O |
Example¶
<Object_Deletion>
<object_type_id>Activity</object_type_id>
<object_pk1>00001</object_pk1>
<object_pk_name1>id</object_pk_name1>
<cascade>true</cascade>
</Object_Deletion>
Entity: Object_Group (Input)¶
This enables an Activity, Activity Type, Resource, Resource_Type to be linked to more than one Group. Groups are used to control viewing and update access privileges to users. There may be instances where for example activities needed to be grouped geographically for dispatching but also need to be organized by cost centers for reporting.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the object group. | PK | M |
| group_id | String(32) | Defines the unique id of the group. | M | |
| activity_id | String(32) | Defines the unique id of the activity. Foreign Key: Activity | O | |
| activity_type_id | String(32) | Defines the unique id of the activity type. Foreign Key: Activity_Type | O | |
| resource_id | String(32) | The resource id. Foreign Key: Resources | O | |
| resource_type_id | String(32) | The resource type id. Foreign Key: Resource_Type | O |
Example¶
<Object_Group>
<id>1234</id>
<group_id>TEST32</group_id>
<resource_id>TEST32</resource_id>
</Object_Group>
Entity: Operation (Input)¶
Defines an operation that can be linked to a repeatable activity. This represents a task that may need to be carried out during a visit to this activity.
For example, if the activity is to maintain a piece of machinery, the operation could be a particular type of maintenance that needs to be carried out.
Multiple operations can be linked to the same activity, each with different rules regarding how frequently they need to be carried out.
An operation can also have a 'subsequent operation' specified. If so, the subsequent operation will need to be performed next after this operation, instead of simply repeating this operation. If the 'subsequent_only' attribute is set, then this operation will not be scheduled initially, but only as the subsequent operation to a different operation.
For example, if operations A and B have each other as 'subsequent operations', then they must be performed in the order A -> B -> A -> B -> ...
Note
This is only intended for use with repeatable activities and cyclic scheduling.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | An identifier for this operation. | PK | M |
| allow_parallel_operations | Boolean | Specifies if this operation can be carried out at the same time as other operations being performed on the activity. | M(true) | |
| base_value | Double | The base value for performing this operation. | M(1000) | |
| duration | Time Span | The expected duration of this operation. | M | |
| once_only | Boolean | If true then this operation will only be scheduled once and will not be repeated. Notes: If a operation_id_subsequent is specified then this value is ignored. | M(false) | |
| subsequent_only | Boolean | If true then this operation will only be scheduled as subsequent to another operation. | M(false) | |
| usage_model_id | String(32) | The identifier of the usage model linked to this operation. Foreign Key: Usage_Model | M | |
| description | String(2000) | A description for the operation. | O | |
| operation_id_subsequent | String(32) | The identifier of the operation that must follow this one. Foreign Key: Operation | O |
Entity: Operation_Hierarchy (Input)¶
This allows operations to be placed in a hierarchy. In such cases, whenever a parent operation is carried out, the child operation will also be taken to have been carried out.
Note
This is only intended for use with repeatable activities and cyclic scheduling.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| operation_id_child | String(32) | The identifier for the child operation. Foreign Key: Operation | PK | M |
| operation_id_parent | String(32) | The identifier for the parent operation. Foreign Key: Operation | PK | M |
Entity: Operation_Ordering (Input)¶
This allows a specific ordering of operations to be defined when multiple operations are carried out within a visit.
Note
This is only intended for use with repeatable activities and cyclic scheduling.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| operation_id_from | String(32) | The identifier of the operation that must be carried out first. Foreign Key: Operation | PK | M |
| operation_id_to | String(32) | The identifier of the operation that must be carried out second. Foreign Key: Operation | PK | M |
Entity: Operation_Skill (Input)¶
Used to set a skill requirement for a particular operation.
Note
This is only intended for use with repeatable activities and cyclic scheduling.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| operation_id | String(32) | The identifier of the operation. Foreign Key: Operation | PK | M |
| skill_id | String(32) | The identifier of the skill. Foreign Key: Skill | PK | M |
Entity: Part (Input)¶
Defines parts to be carried by resources and used by activities.
If a part is reusable, then it will not be consumed by activities that require it. That is to say that a resource with a single reusable part can carry out multiple activities that require one unit of the part. This would normally be applied where a resource needs a certain tool or kit in order to carry out an activity.
If a reusable part is taken from a depot then the resource can also return the part to the depot later, so that it can also be used by other resources. In this case an hourly cost is applied to encourage resources to return the part when they no longer require it. This is specified via the cost_ph attribute.
Warning
The use of parts adds significant complexity to the scheduling problem, and as such should be as limited as possible.
Note
If a part is global, then it will be placed into a global part stock that is accessible to all resources. Global part stock is not linked to a resource or depot. See scheduling concept guide on parts for more information.
Note
If a resource_pool_set_id is specified, the part can be defined in shared part stocks. These function the same as a global stock, but can only be accessed by members of the resource pools specified. Parts should not be specified as both Global and Shared. See scheduling concept guide on parts for more information.
Note
If a part is reusable, a default cost per hour of 1 is applied if not already specified.
Note
If a part is marked as a vehicle part, then any part stock for this part should be either vehicle part stock or depot part stock. It should not be a global or resource pool set part. When a resource picks up this part from a depot, it will always be added to the vehicle part stock.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the part. | PK | M |
| is_global | Boolean | Indicates whether the part is global. | M(false) | |
| is_vehicle_part | Boolean | Indicates whether the part is related to vehicle stock instead of direct resource stock. | M(false) | |
| cost_ph | Double | For reusable parts, the cost per hour to apply when the part is removed from a depot. This defaults to 1 if not specified. | O | |
| description | String(2000) | Provides a description of the part. | O | |
| resource_pool_set_id | String(32) | If specified, defines the part as belonging to shared part stocks. Shared part stocks will be created for resource pools in the set. Foreign Key: Resource_Pool_Set | O | |
| reusable | Boolean | Indicates whether the part is used up when required by activities. | O | |
| volume | Double | Specifies the unit volume of the part to be used in capacity calculations. | O | |
| weight | Double | Specifies the unit weight of the part to be used in capacity calculations. | O |
Example¶
<Part>
<id>Test16max</id>
<description>test part 16</description>
</Part>
Entity: Part_Stock (Input)¶
Defines the amount of stock for parts carried by resources or resource types and/or available from depot activities. Also used to specify global part stock.
This can be used to specify parts against a resource or resource type which can be time dependent. If no available_datetime is specified then the part is assumed to be available to the resource or resource type from the start of the schedule, otherwise the part is only available from the specified time. The override_existing states whether this part is in addition to any parts currently held by the resource or resource type (set to false), or whether it replaces any existing parts (set to true). See example below.
Part stock can also be specified for vehicles. The setup is the same as that described for resources above, except that the vehicle_id should be provided, instead of a resource_id or resource_type_id. The part itself must be marked as a vehicle part via the 'is_vehicle_part' attribute.
Part stock can also be specified for depot activities. The setup is the same as that described for resources above, except that the activity_id for the depot activity should be provided, instead of a resource_id or resource_type_id.
A part stock can also be specified for global parts. In this case there is no need to link the part to either a resource or a depot, but the part_id should match the id of a part with the 'global' flag set.
Finally, a Part stock can be specified for shared parts. In this case the resource_pool_id of the resource pool able to access the stock should be specified, and the part_id should match the part_id of a part with a resource_pool_set_id.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the part stock. | PK | M |
| override_existing | Boolean | Defines whether this stock replace any existing stock, rather than being added to it. | M(true) | |
| part_id | String(32) | Defines the unique id of the part. Foreign Key: Part | M | |
| stock | Integer | Defines the quantity of stock. | M | |
| activity_id | String(32) | Provides the activity id of the depot requiring a stock update. Foreign Key: Activity Notes: This must be an activity of class ‘DEPOT’. | O | |
| available_datetime | Date Time | Specifies the date and time the stock becomes available. | O | |
| resource_id | String(32) | Specifies the id of the resource carrying the stock. Foreign Key: Resources Notes: For resource part stock, exactly one of resource_id and resource_type_id must be specified. | O | |
| resource_pool_id | String(32) | If specified, the part stock will be designated as a shared part stock accessible by members of the resource pool indicated. Foreign Key: Resource_Pool | O | |
| resource_type_id | String(32) | Specifies the id of the type of the resource carrying the stock. Foreign Key: Resource_Type Notes: For resource part stock, exactly one of resource_id and resource_type_id must be specified. | O | |
| vehicle_id | String(32) | Specifies the id of the vehicle carrying the stock. Foreign Key: Vehicle Notes: If specified, the part stock will belong to the vehicle and not directly to the resource. No resource_id or resource_type_id should be specified. | O |
Example¶
As an example, take the following xml:
<Part_Stock>
<id>1</id>
<part_id>KEYBOARD</part_id>
<resource_id>RES1</resource_id>
<stock>5</stock>
<override_existing>true</override_existing>
</Part_Stock>
<Part_Stock>
<id>2</id>
<part_id> KEYBOARD </part_id>
<resource_id>RES1</resource_id>
<stock>2</stock>
<available_datetime>2010-10-13T08:00:00</available_datetime>
<override_existing>false</override_existing>
</Part_Stock>
<Part_Stock>
<id>3</id>
<part_id> KEYBOARD </part_id>
<resource_id>RES1</resource_id>
<stock>6</stock>
<available_datetime>2010-10-15T08:00:00</available_datetime>
<override_existing>true</override_existing>
</Part_Stock>
This would mean that the resource has 5 KEYBOARD parts at the start of the schedule today, picks up an extra two on Wednesday (regardless of how many he has used at this point), and then starts Friday with 6 KEYBOARD parts (again regardless of how many he has used up to this point). So if he were to carry out activities on Tuesday and Thursday which required 3 KEYBOARDs each, his stock levels at the end of each day would be :-
Monday 5 (initial stock)
Tuesday 2 (used 3)
Wednesday 4 (2 added)
Thursday 1 (used 3)
Friday 6 (reset to 6)
Any Resource_Parts specified will be treated as Part_Stock with no available_datetime. Resource_Parts entity is obsolete, since the Part_Stock table effectively replaces it.
Entity: Part_Transfer_Settings (Input)¶
Part transfer settings can be used when transferring parts from one depot to another. Part transfer settings allow specific parts to be linked to transfer settings, and this can override the default transfer rules (defined in Depot_Transfer_Settings) to use for this part.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| depot_transfer_settings_id | String(32) | Specifies a unique identifier for the depot transfer settings these settings are included in. Foreign Key: Depot_Transfer_Settings | PK | M |
| part_id | String(32) | Specifies a unique identifier for the part the settings apply to. Foreign Key: Part | PK | M |
| transfer_rule_set_id | String(32) | Specifies a unique identifier for the set of transfer rules to use for this part. Foreign Key: Transfer_Rule_Set | O |
Entity: Plan (Output)¶
Each time a plan is produced an entry is created here. This defines the plan id, the date and time the plan was produced and the type of travel calculation used.
Note
Schedule quality is expressed as a percentage from 0 - 100. Higher percentage quality plans take longer to produce so there is a trade-off between speed and quality of optimisation. This is not to say that the optimisation is poor. A 100 percent optimisation is achieved after a period of time in which the optimiser has not been able to improve the quality. Schedules have a quality of 0 until every element has been processed at least once. Thereafter the quality of a resource's schedule is dependent on how many times it has been improved recently.
Note
Quality is relative to the size and complexity of the scheduling problem being resolved. It actually measures the rate of change in the plan through improvements to the plan. So a plan of quality 80 is improving more slowly than a plan with quality 50. Quality is relative to the size of the problem so a quality of 50 may be producing a very good plan for a large scheduling problem, and a quality of 80 would be needed to produce a good plan for a less complex scheduling problem.
Note
Plan.allocation_type = 2, 4, 8, 16 indicates the plan data is associated with the Appointment Booking Engine, Manual Scheduling, Schedule Dispatch Service or the Scheduling Travel Analyser. This is a binary field where the values are added together to specify multiple types. Plan.allocation_type is used in broadcasts to select what type of data should be output.
Note
Plan.last_plan_id is populated by the Scheduling Broadcast Manager and is not populated in the scheduling database.
Note
The input and output from the system are asynchronous. In order for the plan to be matched with a given input the input_reference_id should be used. Many inputs may be processed before a plan is produced in which case the Plan. input_reference_id will be the last one processed.
In circumstance where updates are being supplied slowly, you might do the following:
Input ref 1
Broadcast (input ref 1)
Input ref 2
Broadcast (input ref 2)
Input ref 3
Broadcast (input ref 3)
Input ref 4
Broadcast (input ref 4)
Input ref 5
Broadcast (input ref 5)
In each case, the input reference is processed and the results are broadcast before the next update is received.
Now, if the updates are provided more quickly, you may get something like this:
Input ref 1
Input ref 2
Broadcast (input ref 2)
Input ref 3
Input ref 4
Broadcast (input ref 4)
Input ref 5
Broadcast (input ref 5)
Here, input references 1 and 2 have been processed together, and the broadcast gives the input reference of the last input processed. So when you see “Broadcast(input ref 2)”, you know that it has processed inputs 1 and 2. Similarly, when you see “Broadcast (input ref 4)”, you know it has processed inputs 3 and 4.
Thus, as long as the input references are in order, you always know which ones have been processed in any broadcast.
Note
Plan_Margin is used as a measure of how good the plan is using the values supplied to it. The Plan_Margin is calculated as the sum of all allocated activity values, minus the travel costs.
An allocated activity has a value determined by its “base value” (derived from the Activity or Activity_Type entity), which is then modified by various multipliers. For instance, an activity’s value may decline over time because of a slope specified in an SLA_Type record.
The travel costs are the sum of two components: time cost, and distance cost. Each resource has a “cost per km”, which is used to calculate the distance costs for any travel that they do; and each resource also has a time cost “cost_ph”, which is applied to all travel and activity time. If a resource is working in an overtime period, then the “cost_phot” value is used instead.
The value for the Plan_Margin contains only those activities and travels the scheduler can schedule and does not include those activities whose status is committed (30) or above, and have not been fixed to a datetime/resource.
Plan_Margin includes only schedulable activities. Non-schedulable activities (e.g. activities fixed to a resource and time) are not included in the calculation.
Note
Statistics for utilisation and total time for activities/breaks/etc. will not include parallel and bucket resources.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | Int64 | System generated plan id. | PK | M |
| allocation_type | Integer | Type of allocation used. This is a binary addition. To specify Dynamic Scheduling and Appointment the value would be 3, 1+2. To include Scheduling Dispatch the value would be 11. Allowed Values: 1 = Dynamic Scheduling 2 = Appointment Booking Engine 4 = Manual Scheduling 8 = Schedule Dispatch Service 16 = Scheduling Travel Analyser | M(1) | |
| input_reference_date_time | Date Time | The date and time the data was loaded to create this plan. | M | |
| input_reference_id | String(100) | Unique external identifier of the input file used for plan generation. | M | |
| input_reference_internal_id | Int64 | The internal id for the last input reference processed. | M | |
| load_status | Integer | For internal use only. | M(0) | |
| organisation_id | Integer | Organisation for dataset | M(1) | |
| output_datetime | Date Time | The date and time the plan was calculated | M | |
| plan_type | String(32) | The type of this plan. Notes: Complete plan = ‘COMPLETE’ Plan containing only changes since last plan = ‘CHANGE’ | M | |
| schedule_from | Date Time | The start date of the scheduling window | M | |
| schedule_to | Date Time | The end date of the scheduling window. Notes: Must be after Schedule From date time. | M | |
| application_instance_id | String(128) | The id of the application instance writing the plan. | O | |
| application_type_id | String(32) | The type of the application instance writing the plan. | O | |
| appointment_window_end | Date Time | The end of the appointment booking window | O | |
| average_travel_distance | Double | The average distance each resource spends travelling. | O | |
| average_travel_time | Time Span | The average amount of time each resource spends travelling. | O | |
| broadcast_id | String(32) | The broadcast id for which the plan was generated. Notes: Enables plans for different broadcasts to be identified. | O | |
| dataset_id | String(32) | Id for dataset. | O | |
| dataset_type | String(32) | The type of the dataset that the plan relates to. | O | |
| diagnostics | String(500) | For internal use only. | O | |
| last_plan_id | Int64 | The previous plan id. Notes: Needed to ensure that when a Changes only plan is sent the previous plan id is known so that it is know that no changes have been missed. | O | |
| licence_information | String(1000) | Licence information detailing customer name and licence restrictions. | O | |
| load_input_ref_internal_id | Int64 | The internal id of the load input reference. | O | |
| plan_margin | Double | Net value of the entire schedule. | O | |
| profile_id | String(32) | The profile used for generating this plan. | O | |
| quality | Double | Indicates the quality of the plan produced. Notes: 0 = Plan not ready. 100 = Plan will not be improved further. Values between 0 and 100 indicate the current quality of the plan. | O | |
| software_version | String(100) | Software version of the software generating the plan. | O | |
| time_taken | Time Span | The amount of time it took to optimise the data. | O | |
| total_allocations | Integer | The total number of allocations made in the plan. | O | |
| total_break_time | Time Span | The total amount of time spent as breaks. | O | |
| total_on_site_time | Time Span | The total amount of time spent on-site doing activities. | O | |
| total_private_time | Time Span | The total amount of time spent undertaking private activities. | O | |
| total_travel_distance | Double | The total amount of travel in the plan. | O | |
| total_travel_time | Time Span | The total amount of time spent by all resources included in the plan in travelling. | O | |
| total_unutilised_time | Time Span | The total amount of unused shift time in the schedule. | O | |
| travel_type | String(32) | Describes the type of travel calculation used in deriving the plan. Notes: Specifies how the distance was calculated. Values are: Lat/Long | O | |
| utilisation | Double | The amount of resource availability utilised in the plan as a %. Notes: This is a percentage of the time available as defined by shifts including the overtime. Time consumed on private appointments is counted as utilised time. | O |
Example¶
<Plan>
<id>1347</id>
<output_datetime>2007-02-19T20:17:03.203125+00:00</output_datetime>
<travel_type>X/Y</travel_type>
<schedule_from>2006-01-03T00:00:00+00:00</schedule_from>
<schedule_to>2006-01-05T00:00:00+00:00</schedule_to>
<input_reference_datetime>2006-01-03T08:01:00+00:00</input_reference_datetime>
<allocation_type>1</allocation_type>
<input_reference_id>Test Create</input_reference_id>
<quality>91.538461538461533</quality>
<plan_type>COMPLETE</plan_type>
<diagnostics>91.5384615384615</diagnostics>
<time_taken>PT31.484375S</time_taken>
<average_travel_time>PT31M9.214S</average_travel_time>
<average_travel_distance>22428.275212969056</average_travel_distance>
<total_allocations>14</total_allocations>
<total_travel_time>PT7H16M9S</total_travel_time>
<total_travel_distance>313995.8529815668</total_travel_distance>
<utilisation>11.438097479423876</utilisation>
</Plan>
Entity: Plan_Area (Output)¶
For internal use only.
Entity: Plan_Break (Output)¶
Holds details about each implicit break (Shift_Break) in the route. Does not store any details about breaks scheduled as break class activities.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| rank | Integer | Specifies the position of this break in the plan. Notes: Starts from 1. Visits are included in the ranking order | PK | M |
| resource_id | String(32) | Specifies the id of the resource this break relates to. Foreign Key: Plan_Route | PK | M |
| shift_start_datetime | Date Time | Defines the start date time of the shift. Foreign Key: Plan_Route | PK | M |
| end_time | Date Time | Defines the end date time for the break. | M | |
| plan_id | Int64 | The id of the plan this break relates to. | M | |
| start_time | Date Time | Defines the start date time for the break. | M | |
| status_id | Integer | Defines the current status of the break. | M(10) | |
| shift_break_id | String(32) | Specifies the id of the shift break this relates to. Notes: One of shift_break_id or shift_type_break_id will be populated | O | |
| shift_type_break_id | String(32) | Specifies the id of the shift type break this break relates to. Notes: One of shift_break_id or shift_type_break_id will be populated | O |
Entity: Plan_Deletion (Output)¶
This records the change in the plan as a result of a deletion of an object such an activity or resource. This enable external application to identify changes in the plan when only plan changes are being broadcast.
Warning
All time spans are represented in the format "P0Y0M0DT0H0M0S" or just "PT0H0M0S" for a value less than one day.
Where the primary key of the object to be deleted is a datetime or time span then the full xml format must be specified in these fields for the deletion to take effect. e.g. 2007-12-03T12:00:00+01:00
For full specification of duration refer to this link:-
http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#duration
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| object_pk_name1 | String(40) | The name of the column. | PK | M |
| object_pk_name2 | String(40) | The name of the column. | PK | M |
| object_pk_name3 | String(40) | The name of the column. | PK | M |
| object_pk_name4 | String(40) | The name of the column. | PK | M |
| object_pk1 | String(32) | Primary key value 1. | PK | M |
| object_pk2 | String(32) | Primary key value 2. Notes: Second part if composite primary key. | PK | M |
| object_pk3 | String(32) | Primary key value 3. Notes: Third part if composite primary key. | PK | M |
| object_pk4 | String(32) | Primary key value 4. Notes: Fourth part if composite primary key. | PK | M |
| object_type_id | String(40) | The type of object the error refers too. Notes: Valid entity name | PK | M |
| plan_id | Int64 | The plan id the object was deleted on. | M |
Entity: Plan_Depot_Transfer (Output)¶
Holds details about each transfer made for parts from one depot to another.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id_child | String(32) | Specifies a unique identifier for the depot the part is being transferred to. | PK | M |
| activity_id_parent | String(32) | Specifies a unique identifier for the depot the part is being transferred from. | PK | M |
| part_id | String(32) | Specifies a unique identifier for the part transferred. | PK | M |
| required_by_time | Date Time | Specifies the time the part is needed at the child depot by. | PK | M |
| cost | Double | Specifies the overall cost for the transfer. | M | |
| plan_id | Int64 | Defines the plan this transfer is included in. | M | |
| quantity | Integer | Specifies the quantity of part transferred. | M |
Entity: Plan_Info (System)¶
For internal use only.
Entity: Plan_Load_Status (System)¶
For internal use only.
Entity: Plan_Point (Output)¶
For internal use only.
Entity: Plan_Polygon (Output)¶
For internal use only.
Entity: Plan_Resource (Output)¶
Holds details about each resource in the plan and the cost margin calculated.
Note
Statistics for utilisation and total time for activities/breaks/etc. will not be included if the resource is a parallel or bucket resource.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| resource_id | String(32) | The resource used in the plan. | PK | M |
| plan_id | Int64 | The plan it is included in. Foreign Key: Plan | M | |
| average_travel_distance | Double | The average distance each resource travels. | O | |
| average_travel_time | Time Span | The average amount of time each resource spends travelling. | O | |
| max_parallel_allocations | Integer | The maximum number of parallel allocations made at any single time in the plan (for parallel resources only). | O | |
| resource_margin | Double | Net value of the schedule for this resource. | O | |
| total_allocations | Integer | The total number of allocations made to this resource in the plan. | O | |
| total_break_time | Time Span | The total amount of time spent as breaks. | O | |
| total_on_site_time | Time Span | The total amount of time spent on-site doing activities. | O | |
| total_private_time | Time Span | The total amount of time spent undertaking private activities. | O | |
| total_travel_time | Time Span | The total amount of travel time in all routes for this resource. | O | |
| total_unutilised_time | Time Span | The total amount of unutilised time in all routes for this resource. | O | |
| utilisation | Double | The amount of resource availability utilised in the plan as %. | O |
Example¶
<Plan_Resource>
<plan_id>1347</plan_id>
<resource_id>TEST27</resource_id>
<average_travel_time>PT0S</average_travel_time>
<average_travel_distance>0</average_travel_distance>
<total_allocations>1</total_allocations>
<utilisation>3.125</utilisation>
</Plan_Resource>
Entity: Plan_Route (Output)¶
Holds details about each route included in a plan. A route relates to each resource and a shift.
Note
When Shift Patterns have been used the shift_pattern_id attribute will be populated and the shift_id attribute is not populated.
Note
Statistics for utilisation and total time for activities/breaks/etc. will not be included if the resource is a bucket resource.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| resource_id | String(32) | The resource used in the plan. Foreign Key: Plan_Resource | PK | M |
| shift_start_datetime | Date Time | The time the shift started. | PK | M |
| plan_id | Int64 | The plan it is included in. | M | |
| shift_end_datetime | Date Time | The time the shift ended. | M | |
| shift_overtime_end | Date Time | The time the overtime period ended. | M | |
| average_travel_distance | Double | The average distance each resource spends travelling. | O | |
| average_travel_time | Time Span | The average amount of time each resource spends travelling on this route. | O | |
| route_margin | Double | Net value of the schedule for this route. | O | |
| shift_actual_end | Date Time | The time the shift actually ended. | O | |
| shift_actual_start | Date Time | The time the shift actually did start. | O | |
| shift_id | String(32) | The shift the route has been planned for. Notes: If the shift has been generated from a Shift Pattern then the shift id here will not be populated. | O | |
| shift_pattern_id | String(32) | The Shift Pattern id from which this route and shift were derived. Notes: If the shift has been created using a shift pattern then the shift pattern id is populated. | O | |
| snap_time | Time Span | The snap time allowed for this shift. | O | |
| total_allocations | Integer | The total number of allocations made for this route in the plan. | O | |
| total_break_time | Time Span | The total amount of time spent as breaks. | O | |
| total_on_site_time | Time Span | The total amount of time spent on-site doing activities. | O | |
| total_private_time | Time Span | The total amount of time spent undertaking private activities. | O | |
| total_travel_time | Time Span | The total amount of travel time in the route. | O | |
| total_unutilised_time | Time Span | The total amount of unutilised time in this route. | O | |
| utilisation | Double | The amount of utilised time in this route as %. | O | |
| vehicle_id | String(32) | Vehicle id which the resource used during the shift. Foreign Key: Vehicle | O |
Example¶
<Plan_Route>
<plan_id>1347</plan_id>
<resource_id>Test25max</resource_id>
<shift_id>Test25max_03/01/2006 09:00</shift_id>
<average_travel_time>PT0S</average_travel_time>
<average_travel_distance>0</average_travel_distance>
<total_allocations>2</total_allocations>
<utilisation>6.25</utilisation>
</Plan_Route>
Entity: Plan_Split_Resource_Order (Output)¶
Specifies the preferential ordering of resources that was used for allocating this activity when choosing which resource to split to. This ordering can then be provided as input via the Split_Resource_Order table when committing the activity so that the same split selection is maintained.
Note
It's possible for this ordering to include resources that were not used for any of the allocations for this activity.
Note
See Split_Resource_Order for more details of how this ordering can be used in the input.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the id of the activity this relates to. | PK | M |
| sequence | Integer | Defines the position in the sequence. | PK | M |
| plan_id | Int64 | The plan this is included in. | M | |
| resource_id | String(32) | Specifies the id of the resource this relates to. | M | |
| is_fixed | Boolean | Whether this resource in this position in the sequence is fixed. | O |
Entity: Plan_Travel (Output)¶
Holds details about each element of travel in the route.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| resource_id | String(32) | The resource used in the plan. Foreign Key: Plan_Route | PK | M |
| start_time | Date Time | The date and time the travel started. | PK | M |
| distance | Double | The distance of the travel. | M | |
| end_time | Date Time | The date and time the travel finished. | M | |
| expected_travel_time | Time Span | The amount of time the journey is or was expected to take. | M | |
| plan_id | Int64 | The plan it is included in. | M | |
| activity_id | String(32) | The activity the travel relates to. Foreign Key: Allocation | O | |
| end_location_id | String(32) | The end location for the travel | O | |
| previous_activity_id | String(32) | The activity id the travel started from. Foreign Key: Allocation | O | |
| previous_visit_id | Integer | The activity visit id the travel started from. Foreign Key: Allocation Notes: Must be present if previous_activity_id is present. | O | |
| schedule_event_id | String(32) | If a resource's travel starts from a location defined by a schedule_event the schedule_event_id will be recorded here | O | |
| shift_id | String(32) | The shift the route has been planned for. | O | |
| shift_pattern_id | String(32) | The Shift Pattern id from which this route and shift were derived. Notes: If the shift has been created using a shift pattern then the shift pattern id is populated. | O | |
| shift_start_datetime | Date Time | The start date time of the shift. Foreign Key: Plan_Route | O | |
| start_location_id | String(32) | The start location for the travel. | O | |
| visit_id | Integer | The activity visit id the travel relates to. Foreign Key: Allocation Notes: Must be present if activity_id is present. | O |
Example¶
<Plan_Travel>
<plan_id>1347</plan_id>
<resource_id>TEST28max</resource_id>
<shift_id>TEST28max</shift_id>
<distance>7788.64410536263</distance>
<end_time>2006-01-03T11:15:00+00:00</end_time>
<start_time>2006-01-03T11:04:10+00:00</start_time>
</Plan_Travel>
Entity: Plan_Travel_Part_Usage (Output)¶
Holds details about any part usage incurred while a vehicle is travelling.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| part_id | String(32) | The id of the part used during this travel. | PK | M |
| resource_id | String(32) | The id of the resource this relates to. Foreign Key: Plan_Travel | PK | M |
| start_time | Date Time | The date and time the travel started. Foreign Key: Plan_Travel | PK | M |
| plan_id | Int64 | The plan id. | M | |
| usage | Integer | The usage of the part during this travel. | M | |
| vehicle_id | String(32) | The id of the vehicle used during this travel. | M |
Example¶
<Plan_Travel_Part_Usage>
<plan_id>1347</plan_id>
<resource_id>TEST28max</resource_id>
<start_time>2006-01-03T11:04:10+00:00</start_time>
<vehicle_id>RANGE</vehicle_id>
<vehicle_id>V1</vehicle_id>
<usage>24</usage>
</Plan_Travel_Part_Usage>
Entity: Position (Input)¶
This is a display only table that contains the positions a resource can hold within a team.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id. | PK | M |
| description | String(2000) | A description for this position. | O | |
| position_id | String(32) | The id of the parent position. Foreign Key: Position | O | |
| sequence | Integer | A sequence number, used to define the sort order of the positions. | O |
Entity: Productivity_Category (Input)¶
This is used to categorise productive time, which is used when applying both incentives and (productive time) rules.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the productivity category. | PK | M |
| description | String(2000) | Provides a description for this category. | O | |
| productivity_category_id | String(32) | Defines the id of a parent category. Foreign Key: Productivity_Category Notes: Productive time in this category will also count towards the parent category. | O |
Entity: Region (Input)¶
Defines a (usually geographic) region to limit which resources are able to carry out a given activity. Activities are linked to one or more regions via their location, and the Location_Region entity. Resources are linked to regions via the Resource_Region entity.
If an activity is linked to a region then a resource must also be linked to either this region or a parent region (or have non-zero out_of_region_multiplier) to allow the scheduler to use the resource for this activity. If an activity is not in a region there is no restriction.
If an activity is linked to multiple regions then the resource must also be linked to all specified regions, either directly or via a parent (or grandparent, etc.) region.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique, system-generated, id for the region. | PK | M |
| description | String(2000) | Provides a description for the region. | O | |
| region_id | String(32) | Specifies the id of the parent region to which the region belongs. Foreign Key: Region Notes: A region can only have one parent region id. | O |
Example¶
<Region>
<id>Test21min</id>
</Region>
<Region>
<id>Test21max</id>
<description>test 21 max</description>
<region_id>Test21min</region_id>
</Region>
Entity: Resource_Capacity (Input)¶
This links a capacity to a resource. It is possible for a resource to have more than one capacity, representing for example different compartments within a van. If no resource capacity is specified the resource is assumed to be capable of carrying any parts.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| capacity_id | String(32) | Defines a unique id for the resource capacity. Foreign Key: Capacity | PK | M |
| resource_id | String(32) | Defines the id of the resource to which this capacity belongs. Foreign Key: Resources | PK | M |
Entity: Resource_Category (Input)¶
Represents the association between a resource and a category.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| categorisation_id | String(32) | The id of the categorisation to link to the resource. Foreign Key: Category | PK | M |
| resource_id | String(32) | The id of the resource to be associated with a category and categorisation. Foreign Key: Resources | PK | M |
| category_id | String(32) | The id of the category to link to the resource. Foreign Key: Category | M |
Entity: Resource_Class (Lookup)¶
Resource Class defines whether a resource is: a standard resource (i.e. a single worker); a team of resources; a bucket resource, which represents an external contractor capable of completing activities, possibly consisting of multiple workers unknown and irrelevant to the DSE; or a parallel resource capable of carrying out multiple activities at once (i.e. a machine with batch processing capabilities).
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(8) | Defines a unique id for the resource class. Allowed Values: STANDARD, TEAM, BUCKET, PARALLEL | PK | M |
| message_id | Integer | Defines the id of the message describing the resource class purpose. | O |
Entity: Resource_Custom_URL (Input)¶
Defines the custom url to be used for a particular resource. Custom url parameters can be specified for the resource, the use of which is defined on the URL_Parameter record for the specific custom url id (see example below).
<Resource_Custom_URL>
<resource_id>R1</resource_id>
<custom_url_id>urlResources</custom_url_id>
<custom_parameter_value1>255ER1</custom_parameter_value1>
</Resource_Custom_URL>
<Custom_URL>
<id>urlResources</id>
<name>Prepare work order</name>
<custom_action>RESOURCE_DETAIL_FORM</custom_action>
</Custom_URL>
<URL_String>
<custom_url_id>urlResources</custom_url_id>
<sequence>1</sequence>
<string_value>https://example.com/</string_value>
</URL_String>
<URL_String>
<custom_url_id>urlResources</custom_url_id>
<sequence>3</sequence>
<string_value>%23frmEmployees</string_value>
</URL_String>
<URL_Parameter>
<custom_url_id>urlResources</custom_url_id>
<sequence>2</sequence>
<custom_parameter>1</custom_parameter>
</URL_Parameter>
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| custom_url_id | String(32) | Defines the custom url linked to the specified resource. Foreign Key: Custom_URL | PK | M |
| resource_id | String(32) | Defines the resource linked to the specified custom url. Foreign Key: Resources | PK | M |
| custom_parameter_value1 | String(2000) | Defines the first custom url parameter value to be used in the custom url for this resource. The sequence in the url string is defined on URL_Parameter. See example code above. | O | |
| custom_parameter_value2 | String(2000) | Defines the second custom url parameter value to be used in the custom url for this resource. The sequence in the url string is defined on URL_Parameter. See example code above. | O | |
| custom_parameter_value3 | String(2000) | Defines the third custom url parameter value to be used in the custom url for this resource. The sequence in the url string is defined on URL_Parameter. See example code above. | O | |
| custom_parameter_value4 | String(2000) | Defines the fourth custom url parameter value to be used in the custom url for this resource. The sequence in the url string is defined on URL_Parameter. See example code above. | O |
Entity: Resource_Movement (Output)¶
For use with the Advanced Planning Module only. Indicates what changes to the resource structure are recommended. An entry is made for any proposed new resources, change in location of resources or removal of resources from the plan.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| movement_type | Integer | The type of resource change being recommended by the APCS. Allowed Values: 1 = Added, 2 = Removed, 3 = Location Change | M | |
| plan_id | Int64 | Id of the plan. | M | |
| resource_id | String(32) | The resource id. Foreign Key: Plan_Resource | M | |
| latitude | Double | The latitude of the location where the resource is being added. | O | |
| location_id | String(32) | The location if it already exists. | O | |
| longitude | Double | The longitude of the location where the resource is being added. | O | |
| resource_type_id | String(32) | The resource type id of created resources. | O |
Entity: Resource_Part (Input)¶
Defines what parts and quantity carried by a resource. There is an entry for each part a resource has available with the quantity of stock to be used in completing activities. (This functionality has been replaced by Part Stock. Part Stock should be used instead).
Warning
This functionality has been replaced by Part Stock. Part Stock should be used instead.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| part_id | String(32) | Defines a unique id for the part. Foreign Key: Part | PK | M |
| resource_id | String(32) | Defines a unique id for the resource. Foreign Key: Resources | PK | M |
| stock | Integer | Defines the amount of stock carried by the resource. | M(1) |
Example¶
<Resource_Part>
<resource_id>TEST30</resource_id>
<part_id>TEST30</part_id>
<stock>1</stock>
</Resource_Part>
Entity: Resource_Pool (Input)¶
Defines a set of resources which may be used to schedule a set of activities linked in a "chain". Activities are linked into a chain using Activity Resource Pool Set. All activities in the chain must be scheduled to resources from a single Resource Pool, although there may be several alternative Resource Pools in the Resource Pool Set. Some Resource Pools may be preferred to others.
Warning
The use of Resource Pools should be as limited as possible. Alternative “region” based constraints should be considered before using Resource Pools. IFS PSO Product Development must be consulted before using Resource Pools.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the Resource Pool. | PK | M |
| description | String(2000) | Provides a description of the Resource Pool, which may be shown in the Scheduling Workbench | O | |
| pool_multiplier | Double | Determines the preference for this Resource Pool. Default is 1. Use a higher multiplier e.g. 1.5 to prefer the use of this pool to others in the same Resource Pool Set. | O |
Example¶
<Resource_Pool>
<id>Route1</id>
<pool_multiplier>1.3</pool_multiplier>
</Resource_Pool>
Entity: Resource_Pool_Item (Input)¶
Defines a Resource or a Resource Type to be a member of a Resource Pool. Many resources (or types) may be in a single resource pool, and a resource (or type) may be in more than one pool.
Note
If shift_id is set, permanent resource pool memberships are overridden for the duration of that shift for any resource pools in the same resource pool set. Resource pool memberships in other resource pool sets are unaffected.
Warning
The use of Resource Pools should be as limited as possible. Alternative “region” based constraints should be considered before using Resource Pools. IFS PSO Product Development must be consulted before using Resource Pools.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies the unique id for the Resource Pool Item. | PK | M |
| resource_pool_id | String(32) | Specifies the identifier of the Resource Pool to which this item belongs. Foreign Key: Resource_Pool | M | |
| resource_id | String(32) | Specifies the identifier of a resource to be included in the Resource Pool. Foreign Key: Resources | O | |
| resource_type_id | String(32) | Specifies the identifier of a resource type to be included in the Resource Pool Foreign Key: Resource_Type | O | |
| shift_id | String(32) | Specifies the identifier of the shift to which this item belongs. If unspecified, the membership applies to all shifts. Foreign Key: Shift | O |
Example¶
<Resource_Pool_Item>
<id>Route1_item1</id>
<resource_pool_id>Route1</resource_pool_id>
<resource_type_id>Stage1</resource_type_id>
</Resource_Pool_Item>
Entity: Resource_Pool_Set (Input)¶
Defines a number of different groups of resources which may be used to schedule a set of activities linked in a ''chain''. Activities are linked into a chain using Activity Resource Pool Set. All activities in the chain must be scheduled to resources from a single Resource Pool, although any of the Resource Pools in this set may be chosen.
Warning
The use of Resource Pools should be as limited as possible. Alternative “region” based constraints should be considered before using Resource Pools. IFS PSO Product Development must be consulted before using Resource Pools.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies the unique id for the Resource Pool Set. | PK | M |
| description | String(2000) | Provides a description for this Resource Pool Set | O |
Example¶
<Resource_Pool_Set>
<id>ProcessingRoutes</id>
<description>The various ways in which jobs may be processed</description>
</Resource_Pool_Set>
Entity: Resource_Pool_Set_Item (Input)¶
An item within a resource pool set.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| resource_pool_id | String(32) | The id of the resource pool. Foreign Key: Resource_Pool | PK | M |
| resource_pool_set_id | String(32) | The id of the resource pool set. Foreign Key: Resource_Pool_Set | PK | M |
| pool_multiplier | Double | The preference override for this resource pool. Defaults to the value on the resource pool. | O |
Entity: Resource_Preference (Input)¶
This instructs the scheduler to either not consider a resource/resource type for an activity, activity type or location, or to only consider specified resources/resource types, or to prefer resources on a sliding scale of preference from any values greater than 0 and less than 1.
If any resource preferences are created with values of 1, then one of these resources must be used for the activity or location. So if resource A and B have a preference of 1 for an activity, and resource C has preference 0.9, then only A or B may be allocated to the activity, despite the strong soft preference for resource C. As another example, if resource preferences are created with values of 0.5 and then one with a value of 1 then only this last one will be considered for having the activity allocated.
If resource preferences are created with values of 0.5 and then one with a value of 1 then only this last one will be considered for having the activity allocated.
The DSE will prefer particular resources for an activity by internally modifying the value for the activity if that resource is used. So for example an activity with a normal value of 1000 will have a resultant value (for allocating the activity to a resource) as shown below for various preference values:
| Preference | Value | |
|---|---|---|
| 0 | 0 | (activity will not be allocated to this resource) |
| 0.1 | 200 | |
| 0.5 | 1000 | |
| 0.9 | 1800 | |
| 1.0 | 2000 | (also stops resources with a preference less than 1 being chosen) |
| Not specified | 1000 |
Note
When no resource preference is specified for some resources but exists for others then those without a resource preference defined have a default preference value of 0.5.
Note
Where a preference exists for the resource type and the resource of that type against an activity/location then the preferences will be combined as follows. If either of the preferences are 0, the result will be a preference of 0. Otherwise, if either of the preferences are 1, the result will be a preference of 1. Otherwise, the preferences A and B will be combined using the formula "(A * B) / (((1 - A) * (1 - B)) + (A * B))"
For example, if a preference of 0.8 is combined with a preference of 0.3 then the resulting preference would be (0.8 * 0.3) / (((1 - 0.8) * (1 - 0.3)) + (0.8 * 0.3)) = 0.63.
Note
Only one of activity_id, activity_type_id and location_id must be supplied.
Note
Only one of resource_id or resource_type_id must be supplied.
Note
An availability or availability pattern may be optionally linked to the resource preference. The resource preference will then only be applied within the availability period. If multiple resource preference availabilities overlap then the preferences will be combined in the usual way. Only one of availability_id or availability_pattern_id may be provided (or neither).
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies the unique id for the Resource Preference. | PK | M |
| override_priority | Integer | Defines a precedence order for preferences when multiple preferences could apply to the same allocation. The preference with the higher override priority will be used. See the Constraints and Preferences Guide for details of how preferences are combined when the override priorities are equal. | M(1) | |
| preference | Double | Provides the preference value. Notes: 0 = Resource cannot be used on this activity. >0 <1 = Sliding scale of preference greater than 0 and less than 1. 1=No other resources to be considered. | M | |
| activity_id | String(32) | Specifies the activity to which the preference applies. Foreign Key: Activity Notes: Exactly one and only one of these foreign keys in Arc 1 must be provided. | O | |
| activity_pool_id | String(32) | Defines the id of the activity pool this relates to. The preference will apply to all activities in the activity pool. Foreign Key: Activity_Pool | O | |
| activity_type_id | String(32) | Specifies the activity type to which the preference applies. Foreign Key: Activity_Type | O | |
| availability_id | String(32) | Specifies the unique id of an availability. Foreign Key: Availability | O | |
| availability_pattern_id | String(32) | Specifies the unique id of an availability pattern. Foreign Key: Availability_Pattern | O | |
| description | String(2000) | Provides a description of the Resource Preference, which may be shown in the Scheduling Workbench | O | |
| location_id | String(32) | Specifies the location to which the preference applies. Foreign Key: Location | O | |
| resource_id | String(32) | Specifies the resource to which the preference applies. Foreign Key: Resources Notes: Exactly one and only one of these foreign keys in Arc 2 must be provided. | O | |
| resource_type_id | String(32) | Specifies the resource type to which the preference applies. Foreign Key: Resource_Type | O |
Examples¶
<Resource_Preference>
<id>RP1</id>
<activity_id>TEST27_A</activity_id>
<resource_id>TEST27</resource_id>
<preference>1</preference>
</Resource_Preference>
<Resource_Preference>
<id>RP2</id>
<activity_id>TEST27_B</activity_id>
<resource_id>TEST27</resource_id>
<preference>0.5</preference>
</Resource_Preference>
<Resource_Preference>
<id>RP3</id>
<activity_id>TEST27_C</activity_id>
<resource_id>TEST27</resource_id>
<preference>0</preference>
</Resource_Preference>
Entity: Resource_Region (Input)¶
Links resources with regions for the purpose of limiting scheduling of activities to resources within the region.
Note
It is possible for a location to be linked to multiple regions, in which case there may be more than one within_region_multiplier which applies. In this case the override_priority is used to filter which of these are applied - only the highest value(s) are applied.
If after filtering there are still multiple values that apply then the within_region_multipliers are combined, so effectively all are applied.
For example, suppose there are 3 regions A, B and C linked to an activity (via it's location), and a resource is linked to all 3 regions as follows:
- Region A: within region multiplier 1.5, override priority 1
- Region B: within region multiplier 1.2, override priority 2
- Region C: within region multiplier 1.1, override priority 2
Since the within region multiplier on region A has a lower override priority, this value will be ignored. The other two values will be combined so that the overall within region multiplier for this resource and this activity will be 1.1 * 1.2 = 1.32.
Note
If the resource is linked to some but not all of the activity regions, then the minimum value between out_of_region_multiplier and within_region_multiplier will be used.
Note
Setting the within region multiplier to zero makes it a hard constraint, meaning that the resource is not permitted to work in this region.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| region_id | String(32) | Specifies the unique id for the Region. Foreign Key: Region | PK | M |
| resource_id | String(32) | Specifies the unique id for the Resource. Foreign Key: Resources | PK | M |
| override_priority | Integer | Defines a precedence order for within region multipliers when multiple values apply to the same activity. | M(1) | |
| within_region_multiplier | Double | Specifies a multiplier on the value of the resource carrying out activities in this region. The value 1 has no effect. | O |
Example¶
<Resource_Region>
<region_id>TEST34</region_id>
<resource_id>TEST34</resource_id>
</Resource_Region>
Entity: Resource_Region_Availability (Input)¶
This defines what regions are linked to a resource with a time dependency. If resource region availabilities are defined then the resource will only be treated as being a member of the region within the availability periods. If the resource has a region and no availabilities defined then the resource is treated as always being a member of the region.
See the Resource_Region entity for details of combining within_region_multiplier values and the use of override_priority.
Note
Setting the within region multiplier to zero makes it a hard constraint, meaning that the resource is not permitted to work in this region during this time.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the resource region availability. | PK | M |
| override_priority | Integer | Defines a precedence order for within region multipliers when multiple values apply to the same activity. | M(1) | |
| region_id | String(32) | Specifies the unique id for the Region. Foreign Key: Resource_Region | M | |
| resource_id | String(32) | Specifies the unique id for the Resource. Foreign Key: Resource_Region | M | |
| availability_id | String(32) | Specifies the unique id for the Availability. Foreign Key: Availability Notes: One of availability_id or availability_pattern_id must be provided. | O | |
| availability_pattern_id | String(32) | Specifies the unique id for the Availability Pattern. Foreign Key: Availability_Pattern Notes: One of availability_id or availability_pattern_id must be provided. | O | |
| within_region_multiplier | Double | If specified, this overrides the resource's within region multiplier for this region during the defined period. | O |
Entity: Resource_Skill (Input)¶
This defines what skills are linked to a resource. When determining what skills a resource has, a union of the skills between resource skills and resource type skills will be made.
Note
Proficiencies are implemented so the weakest proficiency takes precedence. So if an activity requires 2 skills A and B, and a resource has skill A with proficiency 2 and skill B with proficiency 0.5, the overall proficiency for the resource would be 0.5. This means it would take him twice as long to carry out the work.
If the proficiency is not specified for a particular resource skill, then this is ignored from the proficiency calculation.
In the case where a resource has been committed to an activity but only has skill A with proficiency 2 (and does not have skill B), we would assume the proficiency on skill B to be 1, so the overall proficiency would be 1. If a resource only had skill B with proficiency 0.5, the overall proficiency would still be 0.5, so it would take twice as long.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| resource_id | String(32) | Specifies the unique id for the Resource. Foreign Key: Resources | PK | M |
| skill_id | String(32) | Specifies the unique id for the Skill. Foreign Key: Skill | PK | M |
| in_use_cost | Double | The cost to apply when the skill is available at the time and being used. | O | |
| in_use_multiplier | Double | Specifies the multiplier on the value of the skill being available and in use. | O | |
| not_in_use_cost | Double | The cost to apply when the skill is available at the time but not being used. | O | |
| not_in_use_multiplier | Double | Specifies the multiplier on the value of the skill being available and not in use. | O | |
| proficiency | Double | Specifies the level of the resource's proficiency in the given skill. 1 is normal speed; 0.5 is half as quick; 2 is twice as quick. A value of 0 is equivalent to the resource not having the skill. | O |
Example¶
<Resource_Skill>
<resource_id>TEST33</resource_id>
<skill_id>TEST33</skill_id>
</Resource_Skill>
Entity: Resource_Skill_Availability (Input)¶
This defines what skills are linked to a resource with a time dependency. Such skills would typically be periods of certification to undertake a particular type of work. This can also be used for team resources where the individual resources within the team are subject to change.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| override_priority | Integer | Defines a precedence order for the skill proficiency to use when skill availabilities overlap. The lower proficiency value will be used if override priorities are equal. | M(1) | |
| resource_id | String(32) | Specifies the unique id for the Resource. Foreign Key: Resource_Skill | M | |
| skill_id | String(32) | Specifies the unique id for the Skill. Foreign Key: Resource_Skill | M | |
| availability_id | String(32) | Specifies the unique id for the Availability. Foreign Key: Availability Notes: One of availability_id or availability_pattern_id must be provided. | O | |
| availability_pattern_id | String(32) | Specifies the unique id for the Availability Pattern. Foreign Key: Availability_Pattern Notes: One of availability_id or availability_pattern_id must be provided. | O | |
| in_use_cost | Double | The cost to apply when the skill is available at the time and being used. | O | |
| in_use_multiplier | Double | Specifies the multiplier on the value of the skill being available and in use. | O | |
| not_in_use_cost | Double | The cost to apply when the skill is available at the time but not being used. | O | |
| not_in_use_multiplier | Double | Specifies the multiplier on the value of the skill being available and not in use. | O | |
| proficiency | Double | If specified, this overrides the resource's proficiency in this skill during the defined period. | O |
Entity: Resource_Type (Input)¶
Defines types of resources to be used in the scheduling. Used to define default values for resources of a specified type. If values are not specified in the source type then they must be specified on the resource.
Note
When Activities are fixed to a resource by the EA the max_travel constraint may be broken. The scheduler will allow other activities to be scheduled, provided the max_travel rule is obeyed on the travel to these activities, but does not apply it on the travel to the fixed activity / travel home.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies the unique id for the Resource Type. Notes: Default resource type id of ‘Default’ already exists. | PK | M |
| cost_km | Double | Defines the cost per KM travelling. | M(0.25) | |
| cost_ph | Double | Defines the cost per hour on shift. | M(20) | |
| cost_phot | Double | Defines the cost per hour on shift overtime. | M(30) | |
| out_of_region_multiplier | Double | Defines a multiplier to be applied to the value of any activities done by a resource outside his/her region. So a value of 0 means that activities cannot be done outside the region, whereas a value of 1 means that activities may freely be done outside the region and are just as likely to be chosen as ones inside the region. Notes: If not defined a value of 0 is assumed. | M(0) | |
| resource_class_id | String(8) | Specifies which class of resource resources of this type belong to (STANDARD, TEAM, BUCKET or PARALLEL) Foreign Key: Resource_Class | M(STANDARD) | |
| utilisation | Integer | Defines the maximum amount of time to be scheduled in the shift for all the resources of this type. Notes: Values between 0 and 100. Value to be used only if Shift.Utilisation is not provided or Resource.Utilisation is not provided. Default 100. | M(100) | |
| description | String(2000) | Provides a description for the resource type. | O | |
| display_context_id | String(32) | Provides the context to determine which list should be used when viewing in the Scheduling Workbench. Notes: This should match the id of a Display_Context row defined in the system data. | O | |
| hire_cost | Double | Defines the cost of hiring resources of this type. If not provided then no new resources can be included for planning. Notes: Only used in Advanced Planning Module. | O | |
| icon_id | String(32) | The id of an icon to use for this resource type. Foreign Key: Icon | O | |
| location_id_end | String(32) | Specifies the end location id when finishing shift. Foreign Key: Location Notes: If not supplied then must be set on all resources. | O | |
| location_id_start | String(32) | Specifies the start location id when logging on to shift. Foreign Key: Location Notes: If not supplied then all associated shifts for this resource will need to have the start location set. If not supplied to Resource_Type and Resource the resource will not be created. | O | |
| max_travel | Time Span | Specifies the max travel time away from the start location a resource will travel. | O | |
| parallel_index_categorisation | String(32) | Activities of the same category within the specified categorisation will be separated onto different rows when displayed in the Scheduling Workbench. Foreign Key: Categorisation Notes: Only applies for parallel resources. | O | |
| profile_id_travel | String(32) | Specifies the id of the Profile to be used for this Resource Type. The corresponding Travel_Time_Profile to be used is then defined by setting the parameter TravelTimeProfileId on the specified Profile. Notes: If not present then the Travel_Time_Profile specified by the parameter TravelTimeProfileId on the active Profile (which may be the default Profile unless otherwise set at, for example, the Input_Reference or Dataset level) will be used. | O | |
| release_cost | Double | The cost of releasing a resource of this type. If not provided the APCS will not release any resources of this type. Notes: Only used in Advanced Planning Module | O | |
| relocation_cost | Double | Specifies the cost of relocating a resource of this type. If not provided a resource of this type cannot be relocated. Notes: Only used in the Advanced Planning Module. | O | |
| rule_collection_id | String(32) | Specifies the id of the rule collection associated with resources of this type. Foreign Key: Rule_Collection | O | |
| separation_model_id | String(32) | Specifies the id of the separation model associated with resources of this type. Foreign Key: Separation_Model | O | |
| shift_cost | Double | Defines the one off cost of a resource being given work in a shift. Can be overridden at Resource and Shift levels. Notes: If a shift_cost is specified the cost will be applied to the shift as soon as there is at least one activity with a location in the shift. Breaks and locationless private appointments will be ignored. | O | |
| shift_cut_off | Time Span | When the current schedule time exceeds the cut off period activities can no longer be scheduled to the shift. Notes: The shift cut off is added to the shift start time and can be negative. | O | |
| shift_visit_cost | Double | The cost applied to every CALL class activity scheduled in the resource's route | O | |
| speedfactor | Double | Defines the proportion of any travel time approximation made by the DSE. If this is set to 0.5, the DSE assumes half its estimated travel time as the actual travel time. If it is set to 2, the DSE assumes twice its estimated travel time. | O | |
| time_zone | String(32) | Specifies the id of the time zone associated with resources of this type. | O | |
| travel_cost_model_id | String(32) | Specifies the travel cost model to use for resources of this type. Foreign Key: Travel_Cost_Model | O | |
| travel_from | Time Span | Provides the maximum unpaid travel time at end of shift. | O | |
| travel_to | Time Span | Provides the maximum unpaid travel time at start of shift. | O |
Default Entries¶
| ID | Description | Cost KM | Cost PH | Cost PHOT | Max Travel | Speed Factor | Utilisation |
|---|---|---|---|---|---|---|---|
| Default | Default resource type. | 25 | 20 | 30 | PT4H0M0S | 1 | 100 |
Examples¶
<Resource_Type>
<id>Test23min</id>
<cost_km>1</cost_km>
<cost_ph>1</cost_ph>
<cost_phot>1</cost_phot>
<max_travel>PT4H</max_travel>
<speedfactor>1</speedfactor>
<utilisation>100</utilisation>
</Resource_Type>
<Resource_Type>
<id>Test23max</id>
<description>resource type test 23 max</description>
<cost_km>1</cost_km>
<cost_ph>1</cost_ph>
<cost_phot>1</cost_phot>
<location_id_start>loc23start</location_id_start>
<location_id_end>loc23end</location_id_end>
<max_travel>PT4H</max_travel>
<travel_from>PT4H</travel_from>
<travel_to>PT4H</travel_to>
<speedfactor>1</speedfactor>
<utilisation>100</utilisation>
</Resource_Type>
Entity: Resource_Type_Capacity (Input)¶
This links a capacity to a resource type. It is possible for a resource type to have more than one capacity, representing for example different compartments within a van. If no resource type capacity is specified the resource type is assumed to be capable of carrying any parts.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| capacity_id | String(32) | Specifies the unique id for the Capacity. Foreign Key: Capacity | PK | M |
| resource_type_id | String(32) | Specifies the id of the resource type holding this capacity. Foreign Key: Resource_Type | PK | M |
Entity: Resource_Type_Category (Input)¶
Represents the association between a resource type and a category.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| categorisation_id | String(32) | The id of the categorisation to link to the resource type. Foreign Key: Category | PK | M |
| resource_type_id | String(32) | The id of the resource type to be associated with a category and categorisation. Foreign Key: Resource_Type | PK | M |
| category_id | String(32) | The id of the category to link to the resource type. Foreign Key: Category | M |
Entity: Resource_Type_Custom_URL (Input)¶
Defines the custom url to be used for a particular resource type. Custom url parameters can be specified for the resource type, the use of which is defined on the URL_Parameter record for the specific custom url id (see example below).
<Resource_Type_Custom_URL>
<resource_type_id>GAS</resource_type_id>
<custom_url_id>urlResourceTypes</custom_url_id>
<custom_parameter_value1>10</custom_parameter_value1>
</Resource_Type_Custom_URL>
<Custom_URL>
<id>urlResourceTypes</id>
<name>Prepare work order</name>
<custom_action>RESOURCE_DETAIL_FORM</custom_action>
</Custom_URL>
<URL_String>
<custom_url_id>urlResourceTypes</custom_url_id>
<sequence>1</sequence>
<string_value>https://example.com/</string_value>
</URL_String>
<URL_String>
<custom_url_id>urlResourceTypes</custom_url_id>
<sequence>3</sequence>
<string_value>%23frmEmployees</string_value>
</URL_String>
<URL_Parameter>
<custom_url_id>urlResourceTypes</custom_url_id>
<sequence>2</sequence>
<custom_parameter>1</custom_parameter>
</URL_Parameter>
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| custom_url_id | String(32) | Defines the custom url linked to the specified resource type. Foreign Key: Custom_URL | PK | M |
| resource_type_id | String(32) | Defines the resource type linked to the specified custom url. Foreign Key: Resource_Type | PK | M |
| custom_parameter_value1 | String(2000) | Defines the first custom url parameter value to be used in the custom url for this resource type. The sequence in the url string is defined on URL_Parameter. See example code above. | O | |
| custom_parameter_value2 | String(2000) | Defines the second custom url parameter value to be used in the custom url for this resource type. The sequence in the url string is defined on URL_Parameter. See example code above. | O | |
| custom_parameter_value3 | String(2000) | Defines the third custom url parameter value to be used in the custom url for this resource type. The sequence in the url string is defined on URL_Parameter. See example code above. | O | |
| custom_parameter_value4 | String(2000) | Defines the fourth custom url parameter value to be used in the custom url for this resource type. The sequence in the url string is defined on URL_Parameter. See example code above. | O |
Entity: Resource_Type_Location (Input)¶
Used to restrict the locations that can be used by the WISE when adding resources of this type. If no locations are specified the WISE is able to use any location. If some locations are specified then only those specified can be used.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| location_id | String(32) | Specifies the unique id for the Location. Foreign Key: Location | PK | M |
| resource_type_id | String(32) | Specifies the unique id for the Resource Type. Foreign Key: Resource_Type | PK | M |
Entity: Resource_Type_Skill (Input)¶
This defines what skills are linked to resource types. When determining what skills a resource has, a union of the skills between resource skills and resource type skills will be made. Values from resource skill will take precedence over any values also specified in resource type skill.
See resource skill for details of the proficiency attribute.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| resource_type_id | String(32) | Specifies the unique id for the Resource Type. Foreign Key: Resource_Type | PK | M |
| skill_id | String(32) | Specifies the unique id for the Skill. Foreign Key: Skill | PK | M |
| in_use_cost | Double | The cost to apply when the skill is available at the time and being used. | O | |
| in_use_multiplier | Double | Specifies the multiplier on the value of the skill being available and in use. | O | |
| not_in_use_cost | Double | The cost to apply when the skill is available at the time but not being used. | O | |
| not_in_use_multiplier | Double | Specifies the multiplier on the value of the skill being available and not in use. | O | |
| proficiency | Double | Defines the proficiency level of the resource type in the given skill. 1 is normal speed; 0.5 is half as quick; 2 is twice as quick. A value of 0 is equivalent to the resource not having the skill. | O |
Example¶
<Resource_Type_Skill>
<resource_type_id>Test23min</resource_type_id>
<skill_id>Skill1</skill_id>
</Resource_Type_Skill>
Entity: Resource_Type_Transition (Input)¶
These are used to allow the WISE to consider switching resources from one type to another. This could be to a more skilled resource type, or to a resource type with a different shift pattern for example.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| resource_type_id_from | String(32) | Specifies the unique id of the Resource Type to transition from. Foreign Key: Resource_Type | PK | M |
| resource_type_id_to | String(32) | Specifies the unique id of the Resource Type to transition to. Foreign Key: Resource_Type | PK | M |
| transition_cost | Double | Defines the cost of the transition. If not specified there is no cost. | O |
Entity: Resource_Wrapper (Input)¶
Allows exceptions to Activity_Pool_Wrapper, overriding whether it's required for specific resources, or allowing the duration to be overridden for specific resources.
Note
If there is a conflict due to a Resource_Wrapper row defined against an activity and resource type, with another row defined against an activity type and resource, the resource type will take precedence.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id for the row. | PK | M |
| activity_id | String(32) | Specifies the id of the wrapper activity. Foreign Key: Activity Notes: One of activity_id or activity_type_id must be specified. | O | |
| activity_type_id | String(32) | Specifies the id of the activity type. The row will apply to wrapper activities belonging to the activity type. Foreign Key: Activity_Type Notes: One of activity_id or activity_type_id must be specified. | O | |
| duration_override | Time Span | If specified, if the wrapper activity is scheduled to this resource, this duration will be used directly as the expected duration, ignoring any other settings that affect the duration (auto duration, resource proficiency etc.) | O | |
| is_required | Boolean | If set to false, then the wrapper activity will not be required for this resource. Notes: If null, this will be assumed true. Notes: Overrides the setting in Activity_Pool_Wrapper | O | |
| resource_id | String(32) | Specifies the id of the resource. Foreign Key: Resources Notes: One of resource_id or resource_type_id must be specified. | O | |
| resource_type_id | String(32) | Specifies the id of the resource type. Foreign Key: Resource_Type Notes: One of resource_id or resource_type_id must be specified. | O |
Entity: Resources (Input)¶
Defines a resource and the costs associated with it. These are what are scheduled by the Dynamic Scheduling Engine.
Note
The plural Resources is used instead of Resource in order to avoid system naming conflicts.
Note
Max_travel is calculated from location_id_start.
Note
When Activities are fixed to a resource by the EA the max_travel constraint may be broken. The scheduler will allow other activities to be scheduled, provided the max_travel constraint is obeyed on the travel to these activities, but does not apply it on the travel to the fixed activity / travel home.
Note
Whenever the "travel_with_resource_id" is at a location, the resource must be at the same location. This constraint applies to the resource for the entire scheduling period (if specified on the resource/resource type), or for the shift/shift pattern if specified there.
If a value is specified on a shift/shift pattern, it overrides the value specified on the Resources or resource_Type.
The default value (if not specified anywhere) is that a resource is not constrained to travel with any other resource
A resource that is travelling with another resource will not save plan_travel records back to the Scheduling database, so on the Scheduling Workbench the apprentice/chaperone will show only the activities which they are doing, and no travel.
The costs incurred by the apprentice/chaperone doing their activity (which would normally be half of a coreq) will be the time cost of the duration of the activity only. The value of the activity will be computed as normal.
Skills etc may be attached to the activities/resources as normal.
Warning
The travel with resource functionality is not supported for use with splittable activities.
Note
The skills of the travel with resource can be inherited by the main resource system wide by setting system parameter 'TravelWithSkillsInherited', defaults to false. If set to true, the skills of the travelling with resource are inherited by the main resource for the time that they are travelling together (and provided the travelling with resource has the skill at that time).
Note
When Activities are fixed to a resource by the EA the Resources.max_travel or Resource_Type.max_travel constraint may be broken. The scheduler will allow other activities to be scheduled, provided the max_travel rule is obeyed on the travel to these activities, but does not apply it on the travel to the fixed activity / travel home.
Note
Where travel_from and overtime are both used, the travel home will be charged at normal shift rate up to the travel_from allowance, even if this travel is within the overtime period. For example if travel_from is set to 30 minutes the last 30 minutes of travel_home will be charged at the standard rate, regardless of whether or not it is within overtime.
Warning
Resources should not be deleted if allocated to activities with a status of committed or above.
Examples¶
<Resources>
<id>Test25min</id>
<location_id_start>TEST25</location_id_start>
<location_id_end>TEST25</location_id_end>
<resource_type_id>Default</resource_type_id>
<max_travel>PT0H</max_travel>
<travel_to>PT0H</travel_to>
<travel_from>PT0H</travel_from>
<cost_ph>1</cost_ph>
<cost_km>1</cost_km>
</Resources>
<Resources>
<id>Bob</id>
<travel_with_resource_id>Carol</travel_with_resource_id>
<location_id_start>TEST25</location_id_start>
<location_id_end>TEST25</location_id_end>
<resource_type_id>Default</resource_type_id>
<max_travel>PT0H</max_travel>
<travel_to>PT0H</travel_to>
<travel_from>PT0H</travel_from>
<cost_ph>1</cost_ph>
<cost_km>1</cost_km>
</Resources>
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the Resource. | PK | M |
| resource_type_id | String(32) | Specifies the unique id of the Resource Type Foreign Key: Resource_Type Notes: Resource type of ‘Default’ always present to define default values. | M(Default) | |
| contact_details | String(256) | Provides contact details for the resource. | O | |
| cost_km | Double | Defines cost per KM travelling for this resource. Notes: Default value taken from Resource Type if not supplied. | O | |
| cost_ph | Double | Defines cost per hour on shift for this resource. Notes: Default value taken from Resource Type if not supplied. In the case of a parallel resource, the activity cost logic in the DSE will only account for utilised time. | O | |
| cost_phot | Double | Defines cost per hour on shift overtime for this resource. Notes: Default value taken from Resource Type if not supplied. | O | |
| description | String(2000) | Optional description of the Resource. | O | |
| display_context_id | String(32) | Provides the context to determine which list should be used when viewing in the Scheduling Workbench. Notes: This should match the id of a Display_Context row defined in the system data. | O | |
| first_name | String(40) | Specifies the Resource first name | O | |
| icon_id | String(32) | The id of an icon to use for this resource. Foreign Key: Icon | O | |
| location_id_end | String(32) | Defines the end location id when finishing shift. Foreign Key: Location Notes: Default value taken from Resource Type if not supplied. | O | |
| location_id_start | String(32) | Defines the start location id when logging on to shift. Foreign Key: Location Notes: Default value taken from Resource Type if not supplied. | O | |
| max_travel | Time Span | Defines the max travel time away from location start resource will travel. Notes: Default value taken from Resource Type if not supplied. | O | |
| memo | String(4000) | Provides a free format memo field. | O | |
| out_of_region_multiplier | Double | Defines a multiplier to be applied to the value of any activities done by a resource outside his/her region. So a value of 0 means that activities cannot be done outside the region, whereas a value of 1 means that activities may freely be done outside the region and are just as likely to be chosen as ones inside the region. | O | |
| parallel_index_categorisation | String(32) | Activities of the same category within the specified categorisation will be separated onto different rows when displayed in the Scheduling Workbench. Foreign Key: Categorisation Notes: Only applies for parallel resources. | O | |
| profile_id_travel | String(32) | Specifies the id of the Profile to be used for this Resource. The corresponding Travel_Time_Profile to be used is then defined by setting the parameter TravelTimeProfileId on the specified Profile. Notes: If not present then the profile specified by profile_id_travel on the Resource Type will be used. | O | |
| resource_class_id | String(8) | Specifies which class of Resource this Resource belongs to (STANDARD, TEAM, BUCKET or PARALLEL) Foreign Key: Resource_Class | O | |
| rule_collection_id | String(32) | Specifies the id of the rule collection associated with this resource. Foreign Key: Rule_Collection | O | |
| separation_model_id | String(32) | Specifies the id of the separation model associated with this resource. Foreign Key: Separation_Model | O | |
| shift_cost | Double | Specifies the default cost to apply when using a shift for this resource. | O | |
| shift_cut_off | Time Span | When the current schedule time exceeds the cut off period activities can no longer be scheduled to the shift. Notes: The shift cut off is added to the shift start time and can be negative. | O | |
| shift_visit_cost | Double | The cost applied to every CALL class activity scheduled in the resource's route | O | |
| speedfactor | Double | Defines the proportion of any travel time approximation made by the DSE. If this is set to 0.5, the DSE assumes half its estimated travel time as the actual travel time. If it is set to 2, the DSE assumes twice its estimated travel time. Notes: If not supplied the Resource_Type.Speedfactor will be used. If this is not supplied then the parameter Speedfactor will be used. | O | |
| surname | String(40) | Specifies the Resource name. | O | |
| time_zone | String(32) | Specifies the id of the time zone associated with this resource. | O | |
| travel_cost_model_id | String(32) | Specifies the travel cost model to use for this resource. Foreign Key: Travel_Cost_Model | O | |
| travel_from | Time Span | Specifies the maximum unpaid travel time at end of shift. Notes: Default value taken from Resource Type if not supplied. | O | |
| travel_to | Time Span | Specifies the maximum unpaid travel time at start of shift. Notes: Default value taken from Resource Type if not supplied. | O | |
| travel_with_resource_id | String(32) | Specifies the id of the accompanying resource with whom this resource must travel. | O | |
| utilisation | Integer | Specifies the maximum amount of time to be scheduled in the shift for the resource. Notes: Values between 0 and 100. Value to be used only if Shift.Utilisation is not provided. | O | |
| vehicle_id | String(32) | Id of the vehicle which the resource may use during the shift. Foreign Key: Vehicle | O |
Entity: Rule (Input)¶
Defines a rule of a given type. Rules can either be commit rules related to the Schedule Dispatch Service, productive time rules which relate to scheduling when Activity_Productive_Time is used, or shift capacity rules which relate to the number of activities that may be scheduled within a shift.
See the Rule_Type definition for details of each rule type that rules can be defined for.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines the unique id for the rule. | PK | M |
| rule_type_id | String(32) | Specifies the id of the type of this rule. Foreign Key: Rule_Type | PK | M |
| global | Boolean | Defines whether the rule applies to all resources in the schedule. | M(false) | |
| activity_type_id | String(32) | Specify activity type that this rule applies to. Foreign Key: Activity_Type Notes: Only applies to commit override rule type COMMIT_ACTIVITY_TYPE. | O | |
| description | String(2000) | Provides a description for this rule. | O | |
| productivity_category_id | String(32) | Specifies the productive category that this rule relates to. Foreign Key: Productivity_Category Notes: Only applies to productive time rules. | O |
Entity: Rule_Collection (Input)¶
Defines a collection of rules that can be linked to a resource or resource type.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines the unique id for the rule collection. | PK | M |
| description | String(2000) | Provides a description for this collection. | O |
Entity: Rule_Collection_Rule (Input)¶
Links a rule to a given rule collection.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| rule_collection_id | String(32) | Specifies the id of the rule collection to which this rule belongs. Foreign Key: Rule_Collection | PK | M |
| rule_id | String(32) | Specifies the id of the rule to be linked to the collection. Foreign Key: Rule | PK | M |
| rule_type_id | String(32) | Specifies the rule type id of the rule. Foreign Key: Rule | PK | M |
Entity: Rule_Dataset (Input)¶
Rule_Dataset is now deprecated: please use Rule and Rule_Parameter instead.
Defines a set of rules to be used by applications related to the dataset being processed. Default rules and values are provided as part of the installation.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| application_type_id | String(32) | Specifies the id of the Application type the rule is used by. | PK | M |
| rule_id | String(32) | Specifies the id of the Rule. | PK | M |
| default_value | String(100) | Specifies the default value to be used for the rule. | M |
Entity: Rule_Dataset_Override (Input)¶
Rule_Dataset_Override is now deprecated: please use Rule and Rule_Parameter instead.
Defines a set of rules to be used by applications related to the dataset being processed and override rules to be used instead.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| application_type_id | String(32) | Specifies the id of the Application type the rule is used by. | M | |
| override_value | String(100) | Specifies the value to be used for the override. | M | |
| rule_id | String(32) | Specifies the id of the Rule. Foreign Key: Rule | M | |
| rule_override_type_id | String(32) | Specifies the id of the rule override. Possible values: SameLocation, LackOfCoverage, Corequisites, TravelTime. | M | |
| override_threshold | String(100) | Specifies the threshold value when the value should be applied. | O |
Entity: Rule_Parameter (Input)¶
This defines the parameter settings for a rule. For each Rule_Parameter row there should always be a Rule_Type_Parameter row with matching parameter id and rule type id. Note that Rule_Type_Parameter is a lookup table so these are pre-existing values and do not need to be included in the input. The Rule_Parameter row can be omitted is the default value on the Rule_Type_Parameter is correct.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| parameter_id | String(40) | Specifies the parameter_id of the matching Rule_Type_Parameter Foreign Key: Rule_Type_Parameter | PK | M |
| rule_id | String(32) | Defines the id of the rule this parameter relates to. Foreign Key: Rule | PK | M |
| rule_type_id | String(32) | Specifies the rule_type_id of the matching Rule_Type_Parameter Foreign Key: Rule, Rule_Type_Parameter | PK | M |
| parameter_value | String(32) | Specifies the value of this rule parameter. Notes: This should be supplied in xml format matching the data type specified on the Rule_Type_Parameter | O |
Entity: Rule_Parameter_Override (Input)¶
If a Rule_Parameter needs to be changed for a period of time, an Override can be applied. Note that Rule_Type_Parameter is a lookup table so these are pre-existing values and do not need to be included in the input. See the Resource Capacity Management Guide for further details.
Note
Rule parameter overrides are only compatible with parallel rules: PARALLEL_ACTIVITY_COUNT, PARALLEL_CUSTOM_METRIC, PARALLEL_CATEGORIES_COUNT, and PARALLEL_CATEGORIES_METRIC.
Note
Rule parameter overrides are only compatible with rule type parameters: MaximumCount and MaximumTotalValue.
Note
The period of time can either be a specific one off range of time, or a shift offset time which will be applied to every shift. Exactly one of these options must be defined in each row.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines the unique id for the override. | PK | M |
| parameter_id | String(40) | Specifies the parameter_id of the matching Rule_Type_Parameter. Foreign Key: Rule_Type_Parameter | PK | M |
| rule_id | String(32) | Defines the id of the rule this override relates to. Foreign Key: Rule | PK | M |
| rule_type_id | String(32) | Specifies the id of the matching Rule_Type. Foreign Key: Rule_Type | PK | M |
| is_relative | Boolean | If true, the value of the parameter_value will be applied relative to the existing value | M(false) | |
| override_priority | Integer | Defines a precendence order when multiple overrides could apply to the same rule parameter. The override with the highest value will be used. | M(1) | |
| parameter_value | String(32) | Specifies the value of this rule parameter. Notes: This should be supplied in xml format matching the data type specified on the Rule_Type_Parameter. | M | |
| end_time | Date Time | Specifies the override's end time as a specific DateTime Notes: If this has been defined, start_time must also be defined. Additionally, shift_offset_start and shift_offset_end must be null. | O | |
| shift_offset_end | Time Span | Specifies the override's end time as a generic TimeSpan that will apply to each shift Notes: If this has been defined, shift_offset_start must also be defined. Additionally, start_time and end_time must be null. | O | |
| shift_offset_start | Time Span | Specifies the override's starting time as a generic TimeSpan that will apply to each shift Notes: If this has been defined, shift_offset_end must also be defined. Additionally, start_time and end_time must be null. | O | |
| start_time | Date Time | Specifies the override's starting time as a specific DateTime Notes: If this has been defined, end_time must also be defined. Additionally, shift_offset_start and shift_offset_end must be null. | O |
Entity: Rule_Resource (Input)¶
Rule_Resource is now deprecated: please use Rule and Rule_Parameter instead.
Defines a set of rules to be used by applications for specified resources.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| application_type_id | String(32) | Specifies the id of the Application type the rule is used by. | M | |
| rule_id | String(32) | Specifies the id of the Rule. Foreign Key: Rule | M | |
| rule_value | String(100) | Specifies the value to apply for this resource. | M | |
| resource_id | String(32) | Specifies the resource to which the rule must apply. Foreign Key: Resources Notes: One of resource_id or resource_type_id must be applied. | O | |
| resource_type_id | String(32) | Defines the resource_type to which the rule must apply. Foreign Key: Resource_Type Notes: One of resource_id or resource_type_id must be applied. | O |
Entity: Rule_Resource_Override (Input)¶
Rule_Resource_Override is now deprecated: please use Rule and Rule_Parameter instead.
Defines a set of override rules to be used by applications for specified resources and resource types.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| application_type_id | String(32) | Specifies the id of the Application type the rule is used by. | M | |
| override_value | String(100) | Specifies the value to be used for the override. | M | |
| rule_id | String(32) | Specifies the id of the Rule. Foreign Key: Rule | M | |
| rule_override_type_id | String(32) | Specifies the rule override id. Possible values: SameLocation, LackOfCoverage, Corequisites, TravelTime. | M | |
| override_threshold | String(100) | Specifies the threshold value when the value should be applied. | O | |
| resource_id | String(32) | Specifies the resource to which the rule must apply. Foreign Key: Resources Notes: One of resource_id or resource_type_id must be applied. | O | |
| resource_type_id | String(32) | Specifies the resource_type to which the rule must apply. Foreign Key: Resource_Type Notes: One of resource_id or resource_type_id must be applied. | O |
Entity: Rule_Type (Lookup)¶
This defines the various rule types against which rules can be set up. Each rule type belongs to one of four categories:
- COMMIT: Commit rules used by the Schedule Dispatch Service when making suggestions to commit activities.
- PRODUCTIVE_TIME: Rules that limit the amount of activity productive time scheduled to a resource.
- SHIFT_CAPACITY: Rules that limit the number of activities that can be scheduled within a shift or multiple consecutive shifts or reference period. Please see Scheduling Concepts - Resource Capacity Management for more information about shift capacity rules.
- PARALLEL: Rules that limit the number of activities that can be scheduled in parallel when scheduled to a parallel resource. Please see Scheduling Concepts - Resource Capacity Management for more information about parallel resources.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique identifier. | PK | M |
| message_id | Integer | The id of a message describing this rule type. | O | |
| rule_type_category_id | String(32) | The rule category that this rule type relates to. Foreign Key: Rule_Type_Category | O |
Each rule type is described below, along with the parameters that apply to that rule.
Rule type: COMMIT¶
The general commit rules to use for a resource. Commit rules defined against a resource can be overridden by a rule defined at the resource’s shift level, provided that the rule type matches. If there are any non matching rules at either resource or resource's shift, then both rules would apply to the shift.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| CommitBreaks | BOOLEAN | True | If suggestions should be made to commit breaks. |
| CountBreaks | BOOLEAN | True | If breaks should be counted in the maximum committed activity allowance. |
| IgnoreBreakTime | BOOLEAN | True | If true then any time spent on breaks is ignored when calculating the commit window. |
| EndShiftHorizon | TIMESPAN | PT1H | The time at which a shift is considered to have finished even if the resource has not logged off. |
| LogoffUncommit | INTEGER | 30 | The maximum status of jobs for which uncommit suggestions should be made once the resource is no longer considered logged on. |
| LogonRequired | BOOLEAN | True | If true suggestions are only made for logged on resources. |
| MaximumCommittedActivities | INTEGER | 1 | The maximum number of committed to on-site activities that a resource is allowed to have at one time. |
| NextDayCommit | BOOLEAN | False | If true then commit suggestions can be made for the next day shift. |
| SendExternalCommitsMode | STRING | NONE | Whether to create commit suggestions for manual scheduling workbench commits (MANUAL), or all external commits (ALL). |
| TimeBeforeShiftStart | TIMESPAN | PT30M | The maximum time before a shift starts when commit suggestions can be made. |
| TimeHorizon | TIMESPAN | PT30M | The maximum time into the future that travel to an activity can start for it to be suggested for commit. |
| NextDayCommitBuffer | TIMESPAN | PT0S | This allows the schedule dispatch service to start suggesting commits for the resource's next shift before the end of the current shift. For example, a value of 1 hour would mean that the dispatch service could start suggesting commits for the next shift 1 hour before the end of the current shift. Is not considered if ShiftsInFuture is greater than zero - the Schedule Dispatch Service will not wait for the buffer period to begin in this case. |
| ShiftsInFuture | INTEGER | 0 | Specifies the number of shifts beyond the current shift to be considered for making commit suggestions. |
| RuleWindowStart | TIMESPAN | Suggestions will only be made if the current schedule time is past this time of day. Can be set to null to indicate no restrictions on the start of the window. | |
| RuleWindowEnd | TIMESPAN | Suggestions will only be made if the current schedule time is before this time of day. Can be set to null to indicate no restrictions on the end of the window. | |
| DayPattern | STRING | YYYYYYY | Suggestions will only be made on the days specified by the day pattern. |
| TimeZoneId | STRING | Specifies the time zone to use when checking the RuleWindowStart and RuleWindowEnd. |
Rule type: COMMIT_COREQUISITES¶
Commit rule overrides to use for co-requisite activities.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumCommittedActivities | INTEGER | The maximum number of committed to on-site activities that a resource is allowed to have at one time. |
Rule type: COMMIT_LACK_OF_COVERAGE¶
Commit rule overrides to see where a location is attributed as having lack of coverage.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumCommittedActivities | INTEGER | The maximum number of committed to on-site activities that a resource is allowed to have at one time. | |
| TimeHorizon | TIMESPAN | The maximum time into the future that travel to an activity can start for it to be suggested for commit. |
Rule type: COMMIT_PARALLEL_RESOURCE¶
Commit rule overrides for activities that begin at the same time as each other when scheduled to the same parallel resource.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumCommittedActivities | INTEGER | The maximum number of committed to on-site activities that a resource is allowed to have at one time. | |
| TimeHorizon | TIMESPAN | The maximum time into the future that travel to an activity can start for it to be suggested for commit. |
Rule type: COMMIT_SAME_LOCATION¶
Commit rule override to use for activities at the same location.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumCommittedActivities | INTEGER | The maximum number of committed to on-site activities that a resource is allowed to have at one time. | |
| TimeHorizon | TIMESPAN | The maximum time into the future that travel to an activity can start for it to be suggested for commit. |
Rule type: COMMIT_TRAVEL_TIME¶
Commit rule overrides to use for activities with a long travel time.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumCommittedActivities | INTEGER | The maximum number of committed to on-site activities that a resource is allowed to have at one time. | |
| OverrideThreshold | TIMESPAN | The minimum travel time at which this override will apply. | |
| TimeHorizon | TIMESPAN | The maximum time into the future that travel to an activity can start for it to be suggested for commit. |
Rule type: COMMIT_ACTIVITY_TYPE¶
Commit rule overrides to use for activities of a set activity type.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumCommittedActivities | INTEGER | The maximum number of committed to on-site activities that a resource is allowed to have at one time. | |
| MaximumCommittedActivitiesOfMatchingType | INTEGER | The maximum number of committed to on-site activities that a resource is allowed to have at one time for a matching activity type. | |
| TimeHorizon | TIMESPAN | The maximum time into the future that travel to an activity can start for it to be suggested for commit. |
Rule type: NON_PRODUCTIVE_TIME¶
Ensures a minimum period of non productive time after a period of productive time.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| IsProportional | BOOLEAN | If true then the period of non productive time following a period of productive time must be at least in proportion to the minimum values. | |
| MinimumNonProductiveTime | TIMESPAN | The minimum period of non productive time required. | |
| MinimumProductiveTime | TIMESPAN | The minimum applicable productive time. |
Rule type: NON_PRODUCTIVE_TIME_MULTI¶
Ensures a period of non productive time occurs a given number of times within a reference period. This rule cannot be defined against an individual shift.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MinimumNonProductiveTime | TIMESPAN | The minimum period of non productive time required. | |
| MinimumOccurrences | TIMESPAN | The minimum occurrences of non productive time required within the reference period. | |
| ReferencePeriod | TIMESPAN | The length of the reference period. |
Rule type: PRODUCTIVE_TIME_EXCLUSION¶
Limits the hours during which productive time can be assigned.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| ExclusionEnd | TIMESPAN | The end of the exclusion period. | |
| ExclusionStart | TIMESPAN | The start of the exclusion period. | |
| MaximumTime | TIMESPAN | The maximum amount of productive time allowed within the exclusion period. |
Rule type: PRODUCTIVE_TIME_LIMIT¶
Limits the length of each occurrence of productive time.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumLength | TIMESPAN | The maximum allowed continuous length of productive time. |
Rule type: TOTAL_PRODUCTIVE_TIME¶
Limits the total amount of productive time within a reference period. This rule cannot be defined against an individual shift.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumTotalTime | TIMESPAN | The maximum allowed productive time within the reference period. | |
| ReferencePeriod | TIMESPAN | The length of the reference period. |
Rule type: SHIFT_MAX_TOTAL_ACTIVITY_COUNT¶
Limits the number of activities that can be carried out within the given number of shifts or the reference period.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumCount | INTEGER | The maximum number of activities permitted within the shift or reference period. Must be specified. | |
| ReferencePeriod | TIMESPAN | The length of the reference period to use for the rule. | |
| NumberOfShifts | INTEGER | Total number of consecutive shifts against which the rule is applied. |
Note
If neither ReferencePeriod nor NumberOfShifts parameter are specified, then the rule will apply over each shift. If both are provided, then ReferencePeriod takes precedence and NumberOfShifts is ignored.
Rule type: SHIFT_MAX_TOTAL_VALUE¶
Limits the total activity value that can be carried out within the given number of shifts or the reference period.
Note
The base value for each activity is used when calculating the total value in the shift/reference period.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumTotalValue | DOUBLE | The maximum total activity value permitted within the given number of shifts or the reference period. Must be specified. | |
| ReferencePeriod | TIMESPAN | The length of the reference period to use for the rule. | |
| NumberOfShifts | INTEGER | Total number of consecutive shifts against which the rule is applied. |
Note
If neither ReferencePeriod nor NumberOfShifts parameter are specified, then the rule will apply over each shift. If both are provided, then ReferencePeriod takes precedence and NumberOfShifts is ignored.
Rule type: SHIFT_MAX_TOTAL_DURATION¶
Limits the total activity duration that can be carried out within the given number of shifts or the reference period.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumTotalDuration | TIMESPAN | The maximum total activity duration permitted within the shift or reference period. Must be specified. | |
| ReferencePeriod | TIMESPAN | The length of the reference period to use for the rule. | |
| NumberOfShifts | INTEGER | Total number of consecutive shifts against which the rule is applied. | |
| IncludeTravel | BOOLEAN | False | Whether or not travel durations should be included in the total duration |
Note
If neither ReferencePeriod nor NumberOfShifts parameter are specified, then the rule will apply over each shift. If both are provided, then ReferencePeriod takes precedence and NumberOfShifts is ignored.
Rule type: SHIFT_CUSTOM_METRIC¶
Limits the number of activities that can be carried out within the given number of shifts or the reference period against a custom metric value for the activity. See the Custom_Metric table for further details.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumTotalValue | DOUBLE | The maximum total custom metric value permitted within the given number of shifts or the reference period. Must be specified. | |
| ReferencePeriod | TIMESPAN | The length of the reference period to use for the rule. | |
| NumberOfShifts | INTEGER | Total number of consecutive shifts against which the rule is applied. | |
| MetricId | STRING | The id for the custom metric to be used. Must be specified. |
Note
If neither ReferencePeriod nor NumberOfShifts parameter are specified, then the rule will apply over each shift. If both are provided, then ReferencePeriod takes precedence and NumberOfShifts is ignored.
Rule type: PARALLEL_ACTIVITY_COUNT¶
Limits the number of activities that can be carried out in parallel when scheduled to a parallel resource.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumCount | INTEGER | The maximum number of activities permitted in parallel. Must be specified. |
Rule type: PARALLEL_CUSTOM_METRIC¶
Limits the number of activities that can be carried out in parallel when scheduled to a parallel resource against a custom metric value for the activity. See the Custom_Metric table for further details.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumTotalValue | DOUBLE | The maximum total custom metric value permitted in parallel. Must be specified. | |
| MetricId | STRING | The id for the custom metric to be used. Must be specified. |
Rule type: PARALLEL_CATEGORIES_COUNT¶
Limits the number of categories that can be carried out in parallel when scheduled to a parallel resource.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumCount | INTEGER | The maximum number of categories permitted in parallel for a resource. Must be specified. | |
| CategorisationId | STRING | The id of the categorisation to be used. Must be specified. | |
| IncludeNoCategory | BOOLEAN | True | Specifies whether uncategorised activities contribute to the rule's calculation. Multiple uncategorised activities are treated as a single category for metric rules. |
Rule type: PARALLEL_CATEGORIES_METRIC¶
Limits the number of categories that can be carried out in parallel against a custom metric value for the category.
| Parameter Name | Data Type | Default Value | Description |
|---|---|---|---|
| MaximumTotalValue | DOUBLE | The maximum total custom metric value permitted in parallel for a resource. Must be specified. | |
| MetricId | STRING | The id for the custom metric to be used. Must be specified. | |
| IncludeNoCategory | BOOLEAN | True | Specifies whether uncategorised activities contribute to the rule's calculation. Multiple uncategorised activities are treated as a single category for metric rules. |
Entity: Rule_Type_Category (Lookup)¶
Specifies the category of a rule type.
Rules types of category 'COMMIT' relate to the schedule dispatch rules that govern when the Schedule Dispatch Service will suggest activities to be committed.
Rule types of category 'PRODUCTIVE_TIME' relate to schedules where activities have productive time associated with them. The rules limit the amount of productive time a resource can be scheduled within a given period. This is primarily intended for use with automated resource planning.
Rule types of category 'SHIFT_CAPACITY' relate to limits that can be placed on how many activities can be scheduled within a shift, or within a defined reference period. Each activity's contribution towards the limit can be varied by using different metrics for the shift capacity rule.
Rule types of category 'PARALLEL' relate to limits that can be placed on how many activities can be scheduled in parallel to a parallel resource. Each activity's contribution towards the limit can be varied by using different metrics for the parallel rule.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | The category id. Either 'COMMIT' or 'PRODUCTIVE_TIME'. | PK | M |
| message_id | Integer | The id of the message describing this category. | O |
Entity: Rule_Type_Parameter (Lookup)¶
This defines the parameters that can be set against a given rule type. See Rule_Type for details.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| parameter_id | String(40) | A unique identifier for this parameter within the rule type. | PK | M |
| rule_type_id | String(32) | The id of the rule type this parameter relates to. Foreign Key: Rule_Type | PK | M |
| data_type_id | String(32) | the id of the data type for this parameter. | O | |
| default_value | String(32) | The default value used for this parameter. | O | |
| message_id | Integer | The id of a message describing this rule type parameter. | O |
Entity: Schedule_Data_Usage (System)¶
This table records the data usage each time a new load is submitted for processing.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | Int64 | An identity column that is the primary key of the table. | PK | M |
| datetime_stamp | Date Time | The date and time that the usage was recorded. | M | |
| organisation_id | Int64 | The id of the organisation that the usage applies to. | M | |
| usage_type_id | Integer | An integer representing the usage type. Allowed Values: ResourceCount = 0, ActivityCount = 1, ScheduleWindowLength = 2, AppointmentBookingLength = 3, DatasetCount = 4 | M | |
| value | Double | The usage value. | M | |
| dataset_id | String(32) | The id of the dataset that the usage applies to. | O |
Entity: Schedule_Event (Input)¶
These record events against resources. The type of events are defined in event types and relate to what happens when the system is interacting dynamically with mobile devices.
When event type id = FIX then any of location id or latitude and longitude can be supplied to provide the current location of the resource. The columns will be processed in the same way as for location.
Break events BO and BF are indications that an Activity of class ‘BREAK’ is to be acted upon and are typically sent from the mobile device. The DSE will handle these events by trying to find a matching break activity in the input data and setting this to on site / complete.
For break on matching is based on the activity SLA. The DSE will first look for a break with an activity SLA that overlaps the event_date_time on the break event. If more than one is found it will take the one which is able to start earliest. If none are found it will find the closest break whose SLA ends in the past. If it still cannot find a break it will use the closest future break.
For BF the DSE will first try to find a break that is currently started, and failing this will use the same logic as above.
Once a break activity has been found the DSE will internally treat the event as an activity status update for that activity - mapping the date_time_stamp on the event directly and mapping the event_date_time to the date_time_status. The usual rules on ordering of activity statuses will then apply.
The Scheduling Workbench will display the events in the activity history along with the usual activity status updates.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique identifier for the schedule event. | PK | M |
| date_time_stamp | Date Time | Provides the system date and time when the event was recorded. Notes: Provided automatically if not present. | M | |
| event_date_time | Date Time | Specifies the date and time the event actually happened. Notes: The event_date_time must not be after the Input_Reference.datetime. If it is the system will change it to Input_Reference.datetime. | M | |
| event_type_id | String(32) | Specifies the event type id. Foreign Key: Event_Type Allowed Values: AO = Attention on, AF = Attention off, BO = Break on, BF = Break off, FIX = Co-ordinate fix, RO = Resource on, RF = Resource off | M | |
| resource_id | String(32) | Specifies the resource id. The resource the event occurred on. Foreign Key: Resources | M | |
| latitude | Double | Provides the latitude co-ordinate Notes: Required when Event Type Id = FIX if location_id is not provided. Range from -90 to +90. | O | |
| location_id | String(32) | Provides the location id Foreign Key: Location Notes: Required when Event Type Id = FIX if latitude and longitude not provided. | O | |
| longitude | Double | Provides the longitude co-ordinate Notes: Required when Event Type Id = FIX if location_id is not provided. Range from -180 to +180 | O |
Example¶
<Schedule_Event>
<id>TEST35-A</id>
<date_time_stamp>2006-01-03T08:52:20</date_time_stamp>
<event_type_id>RO</event_type_id>
<event_date_time>2006-01-03T08:52:23</event_date_time>
<resource_id>TEST35-A</resource_id>
</Schedule_Event>
<Schedule_Event>
<id>TEST35-C</id>
<date_time_stamp>2006-01-03T08:44:00</date_time_stamp>
<event_type_id>FIX</event_type_id>
<event_date_time>2006-01-03T08:45:00</event_date_time>
<resource_id>TEST35-A</resource_id>
<location_id>TEST35-C</location_id>
<latitude>52.16</latitude>
<longitude>-1.54</longitude>
</Schedule_Event>
<Schedule_Event>
<id>TEST35-D</id>
<event_type_id>RF</event_type_id>
<date_time_stamp>2006-01-03T08:50:20</date_time_stamp>
<event_date_time>2006-01-03T07:52:23</event_date_time>
<resource_id>TEST35-D</resource_id>
</Schedule_Event>
Entity: Schedule_Exception (Output)¶
These are the exceptions generated related to the current plan. Exceptions may relate to the condition of activities and resources.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id. | PK | M |
| datetime_generated | Date Time | The time the exception was first generated. | M | |
| plan_id | Int64 | The plan the exceptions relate to. Foreign Key: Plan | M | |
| schedule_exception_type_id | Integer | The type of the exception | M | |
| activity_id | String(32) | The activity the exception applies to. Foreign Key: Allocation | O | |
| resource_id | String(32) | The resource the exception applies to. Foreign Key: Plan_Resource | O | |
| visit_id | Integer | The id of the visit this exception applies to. Foreign Key: Allocation | O |
Example¶
<Schedule_Exception>
<schedule_exception_type_id>70</schedule_exception_type_id>
<plan_id>1347</plan_id>
<resource_id>""</resource_id>
<activity_id>Test15</activity_id>
</Schedule_Exception>
Entity: Schedule_Exception_Data (Output)¶
These hold the values required for each exception to be displayed.
Note
For exception data representing a delay period (up to the current schedule time), the DSE will populate the 'activation_datetime' attribute instead of the 'value' attribute. The exception data value can then be calculated by subtracting the activation datetime from the current schedule time.
This is used to reduce data in plan changes, so it is recommended to use the default behaviour. However, if the exception data value is required by an integration, the parameter 'ScheduleExceptionUseActivationDateTime' can be switched off, and then the value will be populated directly by the DSE instead.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| schedule_exception_id | String(32) | The id of the schedule exception this relates to. Foreign Key: Schedule_Exception | PK | M |
| sequence | Integer | The sequence in which the data value should be displayed. | PK | M(1) |
| label | String(40) | The label used to describe the exception value. | M | |
| plan_id | Int64 | The plan the exceptions relate to. | M | |
| activation_datetime | Date Time | The start date and time used for calculating the value for this exception data. | O | |
| activity_id | String(32) | The activity the exception applies to. | O | |
| label_message_id | Integer | The id of the message containing the exception data label text. | O | |
| reason_type_id | Integer | The reason for the exception if available. Notes: Only supplied for certain exception types and particular types of scheduling. | O | |
| resource_id | String(32) | The resource the exception applies to. | O | |
| schedule_exception_type_id | Integer | The type of the exception | O | |
| value | String(256) | The exception value. | O | |
| visit_id | Integer | The id of the visit this relates to. | O |
Entity: Schedule_Exception_Response (Input)¶
This records that an exception has been acknowledged and can be removed from the list of outstanding exceptions.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| schedule_exception_id | String(32) | Specifies the id of the schedule exception this response is for. | PK | M |
| sequence | Integer | A sequence number for this response. | PK | M(1) |
| acknowledge_expiry_datetime | Date Time | Specifies the time at which the acknowledgement of the exception should no longer be considered active. | O | |
| acknowledged | Boolean | Indicates that the exception is acknowledged. | O | |
| acknowledgement_comment | String(2000) | Provides the comment recorded against an acknowledgement. | O | |
| acknowledgement_datetime | Date Time | Specifies the date and time the acknowledgement was made. | O | |
| acknowledgement_user_id | String(256) | Specifies the id of the user who acknowledged the exception. | O | |
| activity_id | String(32) | Defines the activity to which the exception response applies. Foreign Key: Activity | O | |
| resource_id | String(32) | Defines the resource to which the exception response applies. Foreign Key: Resources | O | |
| schedule_exception_type_id | Integer | Specifies the type of the exception the response is for. | O |
Entity: Secured_Data (System)¶
For internal use only.
Entity: Separation_Group (Input)¶
Defines a group of activities to which separation rules should apply. The rules are defined in a separation model.
Warning
The use of Separation Models should be as limited as possible. Alternative time-based constraints should be evaluated before using Separation Models. IFS PSO Product Development must be consulted before using Separation Models. Separation models can only be used to constrain to a single time range, they cannot be used to provide a series of separations each with a different incentive.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies a unique identifier for the separation group. | PK | M |
| description | String(2000) | Provides a description for this group. | O | |
| separation_group_id | String(32) | Specifies a parent separation group. Foreign Key: Separation_Group Notes: All activities belonging to this separation group also belong to the parent group. | O |
Entity: Separation_Model (Input)¶
This defines a set of rules for preventing activities from being scheduled too closely together, or too far apart. Activities to which the rules apply must belong to a separation group, which they can be linked to via the separation_group_id attribute on either Activity or Activity_Type. Resources are then linked to the separation model via the separation_model_id attribute on either Resources or Resource_Type.
The rules themselves are defined via Separation_Model_Item rows. Each row specifies a separation group from and to, and a minimum and maximum allowed separation (at least one or other should be supplied). Additionally an incentive can be provided. With the default incentive value of -1 the separation will be applied as a hard constraint, so the minimum and maximum must be satisfied. If a positive incentive value is used then the value is added to the plan margin if the separation conditions are satisfied.
In the case of a hard maximum separation constraint, the plan is considered invalid if the gap between an activity in the separation to group and the nearest previously scheduled activity in the separation from group (scheduled to the same resource) exceeds the maximum separation. If there is no such activity then this is valid. If an activity in the separation from group is followed by multiple activities in the separation to group, then only the first of these must obey the maximum separation constraint.
For a soft separation constraint the incentive is applied if the gap between an activity in the separation to group and the nearest previously scheduled activity in the separation from group (scheduled to the same resource) is within both the minimum and maximum separations. If an activity in the separation from group is followed by multiple activities in the separation to group, then the incentive will only be applied to the first of these.
Warning
The use of Separation Models should be as limited as possible. Alternative time-based constraints should be evaluated before using Separation Models. IFS PSO Product Development must be consulted before using Separation Models. Separation models can only be used to constrain to a single time range, they cannot be used to provide a series of separations each with a different incentive.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies a unique identifier for the separation model. | PK | M |
| description | String(2000) | Provides a description for this separation model. | O |
Entity: Separation_Model_Item (Input)¶
Defines the items that make up a separation model. See `Separation Model' for details.
Warning
The use of Separation Models should be as limited as possible. Alternative time-based constraints should be evaluated before using Separation Models. IFS PSO Product Development must be consulted before using Separation Models. Separation models can only be used to constrain to a single time range, they cannot be used to provide a series of separations each with a different incentive.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| incentive | Double | Specifies the incentive value. Notes: The default value of -1 implies a hard constraint. | PK | M(-1) |
| separation_group_id_from | String(32) | Defines the group of activities which the separation start applies from. Foreign Key: Separation_Group | PK | M |
| separation_group_id_to | String(32) | Defines the group of activities to which the separation applies. Foreign Key: Separation_Group | PK | M |
| separation_model_id | String(32) | Specifies the id of the separation model this relates to. Foreign Key: Separation_Model | PK | M |
| shift_separation | Boolean | Determines whether there should be a shift separating the two separation groups. Notes: Either this needs to be set to true, a minimum or maximum separation or a duration overhead must be defined | M(false) | |
| duration_overhead | Time Span | Specifies an amount of time to be added to the 'to' activity's duration. Notes: This will only apply based on the most recent relevant activity (not based on time between the activities). Notes: Incentive must be set to -1 for use of duration_overhead. | O | |
| maximum_separation | Time Span | Defines the maximum separation allowed. Notes: This may be omitted if there is no maximum. | O | |
| minimum_separation | Time Span | Defines the minimum separation allowed Notes: This may be omitted if there is no minimum. | O |
Entity: Shift (Input)¶
This provides the shift for a resource and details the start/end location of the shift. Shifts are used to determine what planned availability there is for a resource.
The expected behaviour for shift utilisation will be applied to the entire shift and anything scheduled in the shift will be counted including all activity types: private, call and break. For example, if utilisation is set to 70% and the shift is 10 hours then only 7 hours of activities will be scheduled:

Of the 10 hours 5 hours has already been utilised with various activities leaving 2 hours available for scheduling activities.
On shifts for the current day the percentage of utilisation applied will be on a diminishing value as you progress through the day. Anything before the timeline on the current shift does not count towards the utilisation.
Note
Where Location ID Start is populated the scheduler will schedule the activities for the resource assuming that this location is where the resource will start the shift. Where this is left empty the Location ID Start for the shift will default to the Location ID Start loaded against the resource.
Note
Where Location ID End is populated, the scheduler will schedule the visits for the shift to ensure that the resource can travel to this location in time for the end of their shift (including possibly any permissible overtime on the shift.) Where this is left empty the Location ID End for the shift will default to the Location ID End loaded against the resource.
Note
Shifts may be associated with a resource either directly or via the resource type. If a shift exists for a resource then any shifts associated via the resource type will be ignored.
Note
Resource.max_travel is calculated from the Resource.location_id_start if the Shift.location_id_start is not present.
Note
The time when a resource actually starts their shift is determined by what time they log onto the shift (which can be before the defined start of the shift, if within the snap time), or when committed/fixed work begins (this does not include breaks or private activities). So for example, if a shift is defined to start at 9:00 and end at 17:00, but the resource logs on at 8:30, the shift has started at 8:30. If this shift has an early end leeway, then the shift would be adjusted to end at 16:30.
Note
For parallel resources, activities will only count towards the utilisation proportionally to how much of the resource's parallel limits that they use. For example, if a parallel resource has a metric limit of 100, then an activity with 50 as the metric value will count twice as much towards the utilisation as an activity with 25 as the metric value. The utilisation is calculated separately for each parallel rule and all must be satisfied. Also, the time for private activities will not count towards the overall shift time for a parallel resource and the private activity will not count towards the utilisation.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies the unique id for the shift. Notes: This is created automatically when shift patterns are used. | PK | M |
| start_datetime | Date Time | Defines the start date and time of shift | M | |
| cost_km | Double | Defines the cost per KM travelling. Notes: Default value taken from Resources if not supplied. | O | |
| cost_ph | Double | Defines the cost per hour on shift. Notes: Default value taken from Resources if not supplied. | O | |
| cost_phot | Double | Defines the cost per hour on shift overtime. Notes: Default value taken from Resources if not supplied. | O | |
| description | String(2000) | Provides a description of the Shift, which may be shown in the Scheduling Workbench | O | |
| early_end_leeway | Time Span | If specified, the shift end time will be brought forward within the leeway to match how early the resource started the shift. Notes: If specified will override Shift_Type | O | |
| end_datetime | Date Time | Defines the end date and time of shift Notes: If End Date Time is not provided then Shift Type. Duration must not be null. | O | |
| late_end_leeway | Time Span | If specified, the shift end time will be advanced within the leeway to match how late the resource started the shift. Notes: If specified will override Shift_Type | O | |
| location_id_end | String(32) | Specifies the end location id for shift. Foreign Key: Location Notes: If not specified then the shift will use Resource.location_id_end | O | |
| location_id_start | String(32) | Specifies the start location id for shift. Foreign Key: Location Notes: If not specified then the shift will use Resource.location_id_start | O | |
| manual_scheduling_only | Boolean | Specifies that this shift should not have activities automatically scheduled into it by the DSE. Notes: If unspecified, then default behaviour applies, which is that activities may be automatically scheduled in all shifts, unless a manual scheduling period is specified in the Input Reference. Setting this to false allows the DSE to schedule activities in a shift, even if that shift is (at least partially) before the Input Reference manual scheduling end time. | O | |
| max_travel | Time Span | Specifies the max travel_time away from location start resource will travel. Notes: Default value taken from Resources if not supplied. | O | |
| overtime_period | Time Span | Specifies the maximum number of hours overtime within the shift. Notes: Overtime will begin from the end_datetime on the shift Notes: If specified will override Shift_Type | O | |
| profile_id_travel | String(32) | Specifies the id of the Profile to be used for this Shift. The corresponding Travel_Time_Profile to be used is then defined by setting the parameter TravelTimeProfileId on the specified Profile. Notes: If not present then the profile specified by profile_id_travel on the Resource will be used. | O | |
| resource_id | String(32) | Specifies the id of the resource Foreign Key: Resources Notes: One of Resource Type ID or Resource ID must be provided | O | |
| resource_type_id | String(32) | Specifies the resource type id Foreign Key: Resource_Type Notes: One of Resource Type ID or Resource ID must be provided | O | |
| rule_collection_id | String(32) | Links a rule collection to the shift. Foreign Key: Rule_Collection Notes: This value supersedes the rule_collection_id which may be specified in the Resources table. | O | |
| shift_cost | Double | Defines the one off cost of a resource being given work in this shift. Notes: If a shift_cost is specified the cost will be applied to the shift as soon as there is at least one activity with a location in the shift. Breaks and locationless private appointments will be ignored. | O | |
| shift_cut_off | Time Span | When the current schedule time exceeds the cut off period activities can no longer be scheduled to the shift. Notes: The shift cut off is added to the shift start time and can be negative. | O | |
| shift_type_id | String(32) | Specifies the type of shift if required. Foreign Key: Shift_Type Notes: Must be provided if End Date Time is null. | O | |
| shift_visit_cost | Double | The cost applied to every CALL class activity scheduled in the resource's route | O | |
| snap_time | Time Span | Defines the period of time before a shift starts where if a resource logs on within this time, the scheduler assumes that the resource is logging on to this shift. Notes: If not provided the value will be taken from Shift_Type. | O | |
| split_allowed | Boolean | Determines whether activities are allowed to be split into this shift. | O | |
| split_priority | Integer | Defines the priority of this shift when considering whether to split an activity into it. Notes: An activity may only be split into this shift if the split_priority is at least the split_minimum_priority on the activity. | O | |
| travel_cost_model_id | String(32) | Specifies the travel cost model to use for this shift. Foreign Key: Travel_Cost_Model | O | |
| travel_from | Time Span | Defines the maximum unpaid travel time at end of shift. Notes: Default value taken from Resources if not supplied. | O | |
| travel_to | Time Span | Defines the maximum unpaid travel time at start of shift. Notes: Default value taken from Resources if not supplied. | O | |
| travel_with_resource_id | String(32) | Specifies the id of the resource this resource must travel with. Notes: This supersedes the value which may be at Resources or Resource Type or Shift Pattern | O | |
| utilisation | Integer | Specifies the maximum percentage of time to be scheduled in the shift (including snap and overtime). Notes: Values between 0 and 100. | O | |
| vehicle_id | String(32) | ID of the vehicle which the resource may use during the shift. Foreign Key: Vehicle Notes: We assume resource uses single vehicle per shift. | O |
Example¶
<Shift>
<id>Test25min_03/01/2006 09:00</id>
<resource_id>Test25min</resource_id>
<start_datetime>2006-01-03T09:00:00.0000000-00:00</start_datetime>
<end_datetime>2006-01-03T17:00:00.0000000-00:00</end_datetime>
<snap_time>PT2H0M0S</snap_time>
<overtime_period>PT2H0M0S</overtime_period>
</Shift>
Entity: Shift_Break (Input)¶
Shift breaks (also referred to as implicit breaks) provide an alternate way of defining breaks. Instead of creating activities of class "BREAK", shift breaks can be used. Each shift break defines a single break, assigned to a shift, with a window in which the break may begin.
See Scheduling Concepts - Constraints and Preferences for details around the rules that define the placement of an implicit break in a shift.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the Shift Break. | PK | M |
| duration | Time Span | Defines the duration of the break. | M | |
| earliest_start_offset | Time Span | The earliest offset from the start of the shift at which the break may start. | M | |
| latest_start_offset | Time Span | The latest offset from the start of the shift at which the break may start. | M | |
| shift_id | String(32) | Defines the shift id of the route this break belongs to. Foreign Key: Shift | M |
Entity: Shift_Pattern (Input)¶
This enables a pattern of shifts to be defined for either a Resource or Resource Type. The system will automatically create these shifts over the scheduling window based upon values within Shift Type and Shift Pattern.
Note
Shift patterns only create shifts for the period covered by the scheduling window and appointment window if present.
Note
Shift patterns may be associated with a resource either directly (via resource_id) or via the resource type. Shifts from patterns associated with the resource directly will only be used if they do not overlap the resource’s existing shifts. Shift patterns associated via the resource type will be ignored if a resource already has shifts or a shift pattern associated directly to the resource.
Note
If operating across multiple time zones ensure the time_zone attribute is set accordingly.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies the unique identifier for the shift pattern. | PK | M |
| day_pattern | String(7) | Specifies a seven character string indicating each day of the week the default shift should apply too. Notes: Each character represents Monday – Sunday. ‘Y’ indicates the shift should be applied for this day. | M(YYYYYNN) | |
| period_end_datetime | Date Time | Specifies the end date and time for the pattern to be applied. Notes: Cannot be before period_start_datetime. | M | |
| period_start_datetime | Date Time | Specifies the starting date and time for the pattern to be applied. | M | |
| shift_type_id | String(32) | Specifies the type of shift to be created from the day_pattern. Foreign Key: Shift_Type | M | |
| start_time | Time Span | Specifies the time each day specified in day_pattern when the shift starts. | M(PT8H) | |
| description | String(2000) | Provides a description of the Shift Pattern, which may be shown in the Scheduling Workbench | O | |
| resource_id | String(32) | Specifies the resource to which the shift pattern should be applied. Foreign Key: Resources Notes: One of Resource Type ID or Resource ID must be provided. | O | |
| resource_type_id | String(32) | Specifies the resource type to which the shift pattern should be applied. Foreign Key: Resource_Type Notes: One of Resource Type ID or Resource ID must be provided. | O | |
| split_allowed | Boolean | Indicates whether activities are allowed to be split into the shifts created from Shift. | O | |
| time_zone | String(32) | Defines the time zone code to be used for start_time and day_pattern. | O | |
| travel_with_resource_id | String(32) | Specifies the id of the resource this resource must travel with. Notes: This value will be used on all shifts created from this shift pattern. | O |
Example¶
<Shift_Pattern>
<id>TEST29resourcetype</id>
<shift_type_id>TEST29</shift_type_id>
<resource_type_id>TEST29</resource_type_id>
<day_pattern>YYYNYNY</day_pattern>
<start_time>PT7H</start_time>
<period_start_datetime>2006-01-02T09:00:00.0000000-00:00</period_start_datetime>
<period_end_datetime>2006-01-10T09:00:00.0000000-00:00</period_end_datetime>
</Shift_Pattern>
Entity: Shift_Type (Input)¶
This provides an optional definition to group shifts together by type. This can be used link activities with shifts of a type.
It also defines the default values to be used when default shifts are being created automatically.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies a unique shift identifier. Notes: Shift type id of ‘Default’ must always exist. | PK | M |
| duration | Time Span | Defines the duration of shift Notes: If null then Shift.end_datetime must be provided on related Shifts. Used to determine the length of a default shift. | M(PT8H) | |
| overtime_period | Time Span | Defines the maximum number of hours overtime within the shift. Notes: Overtime begins after the defined end of the shift. Notes: To be used when overtime period is not provided on a shift and for the default shift. | M(PT0S) | |
| snap_time | Time Span | Specifies the period of time before a shift starts where if a resource logs on within this time, the scheduler assumes that the resource is logging on to this shift. | M(PT3H) | |
| split_allowed | Boolean | Indicates whether splittable activities are allowed to be split into this shift. | M(true) | |
| colour | String(9) | Specifies the background colour of a shift in the Gantt. | O | |
| description | String(2000) | Provides a description of the type of shift. | O | |
| early_end_leeway | Time Span | The shift end time will be brought forward within the leeway to match how early the resource started the shift. Notes: Will be overridden by Shift if specified on both | O | |
| late_end_leeway | Time Span | The shift end time will be advanced within the leeway to match how late the resource started the shift. Notes: Will be overridden by Shift if specified on both | O | |
| split_priority | Integer | Specifies the priority of this shift when considering whether to split an activity into it. Notes: An activity may only be split into this shift if the split_priority is at least the split_minimum_priority on the activity. | O |
Default Entries¶
| ID | Description | Duration | Snap Time | Overtime Period |
|---|---|---|---|---|
| Default | Default shift type. | PT8H0M0S | PT3H0M0S | PT0H0M0S |
Example¶
<Shift_Type>
<id>TEST28max</id>
<description>Test 28 shift type</description>
<duration>PT4H</duration>
<snap_time>PT2H</snap_time>
<overtime_period>PT1H</overtime_period>
</Shift_Type>
Entity: Shift_Type_Break (Input)¶
This allows a shift break to be defined for a shift type, rather than defining each break individually.
Shift type breaks should be used instead of shift breaks if shift patterns are being used.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the shift type break. | PK | M |
| duration | Time Span | Defines the duration of the break. | M | |
| earliest_start_offset | Time Span | Defines the earliest offset from the start of the shift at which the break may start. | M | |
| latest_start_offset | Time Span | Defines the latest offset from the start of the shift at which the break may start. | M | |
| shift_type_id | String(32) | Specifies the id of the shift type the break relates to. Foreign Key: Shift_Type | M |
Entity: Skill (Input)¶
This defines what skills can be assigned to resources and activities.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies a unique identifier for the Skill. | PK | M |
| description | String(2000) | Provides a Skill description | O | |
| in_use_cost | Double | The cost to apply when the skill is available at the time and being used. | O | |
| in_use_multiplier | Double | Specifies the multiplier on the value of the skill being available and in use. | O | |
| not_in_use_cost | Double | The cost to apply when the skill is available at the time but not being used. | O | |
| not_in_use_multiplier | Double | Specifies the multiplier on the value of the skill being available and not in use. | O | |
| skill_type_id | String(32) | Defines the type of skill if required. Foreign Key: Skill_Type | O |
Example¶
<Skill>
<id>TEST33</id>
</Skill>
Entity: Skill_Hierarchy (Input)¶
This defines the hierarchy of skills which may be present. This allows the grade or level concept to be used with skills and so reduces the amount of skill data and combinations required to define skill competences.
Warning
Recursive relationship between parent and child skills is not allowed.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| skill_id_child | String(32) | Specifies a unique identifier for the child skill. Foreign Key: Skill | PK | M |
| skill_id_parent | String(32) | Specifies a unique identifier for the parent skill. Foreign Key: Skill | PK | M |
Example¶
In this example we have three skills defined: A, B1 and B2. Skill A is the parent of skills B1 and B2. There are two activities: 1 and 2 which require skills B1 and B2, respectively. We also have resource 1001 with skill B1 and resource 1002 with skill A.
Resource 1002 can do either activity 1 or 2. Resource 1001 can only do activity 1.
<Skill>
<id>A</id>
<description>A</description>
</Skill>
<Skill>
<id>B1</id>
<description>B</description>
</Skill>
<Skill>
<id>B2</id>
<description>B2</description>
</Skill>
<Skill_Hierarchy>
<skill_id_parent>A</skill_id_parent>
<skill_id_child>B1</skill_id_child>
</Skill_Hierarchy>
<Skill_Hierarchy>
<skill_id_parent>A</skill_id_parent>
<skill_id_child>B2</skill_id_child>
</Skill_Hierarchy>
<Activity_Skill>
<activity_id>1</activity_id>
<skill_id>B1</skill_id>
</Activity_Skill>
<Activity_Skill>
<activity_id>2</activity_id>
<skill_id>B2</skill_id>
</Activity_Skill>
<Resource_Skill>
<skill_id>B2</skill_id>
<resource_id>1001</resource_id>
</Resource_Skill>
<Resource_Skill>
<skill_id>A</skill_id>
<resource_id>1002</resource_id>
</Resource_Skill>
Entity: Skill_Set (Input)¶
Defines a set of skills, which are used when applying incentives.
Warning
Skill sets are primarily used when planning shifts within the advanced resource planner. Before they are used in a project IFS PSO Product Development must be consulted.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique identifier for the skill set. | PK | M |
| all_skills_required | Boolean | Indicates whether a resource is required to satisfy all skills in order to satisfy the set. If not, the resource need only satisfy any skill in the set. | M(true) | |
| description | String(2000) | Provides a description for this skill set. | O |
Entity: Skill_Set_Incentive (Input)¶
This links a skill set to an incentive. Resources who satisfy this skill set are eligible to receive an incentive when they carry out applicable activities with productive time of the required category.
Warning
Skill sets are primarily used when planning shifts within the advanced resource planner. Before they are used in a project IFS PSO Product Development must be consulted.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique identifier for the Skill_Set_Incentive. | PK | M |
| incentive_id | String(32) | Specifies the id of the incentive this relates to. Foreign Key: Incentive | M | |
| incentive_type | String(32) | Specifies the type of this incentive. Allowed Values: STANDARD – Applies to all resources who satisfy the incentive conditions. EXCLUSIVE – If the incentive is applied to a resource then that resource is not counted towards other skill sets he may satisfy. ALL_RESOURCES – Counted when resources fail to satisfy the incentive skill set. Incentive values are expected to be negative. | M(STANDARD) | |
| skill_set_id | String(32) | Specifies the id of the required skill set. Foreign Key: Skill_Set | M | |
| productivity_category_id | String(32) | Specifies the category of productive time that will apply. Foreign Key: Productivity_Category | O |
Entity: Skill_Set_Incentive_Avail (Input)¶
This links a skill set incentive to a period of availability where it is applicable. If no availabilities are specified then the skill set incentive is applicable whenever the incentive itself is.
Warning
Skill sets are primarily used when planning shifts within the advanced resource planner. Before they are used in a project IFS PSO Product Development must be consulted.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| availability_id | String(32) | Specifies the id of the availability this relates to. Foreign Key: Availability | PK | M |
| skill_set_incentive_id | String(32) | Specifies the id of the skill set incentive this relates to. Foreign Key: Skill_Set_Incentive | PK | M |
Entity: Skill_Set_Incentive_Level (Input)¶
This defines the actual incentive value to be gained when the conditions of the skill set incentive are met.
Warning
Skill sets are primarily used when planning shifts within the advanced resource planner. Before they are used in a project IFS PSO Product Development must be consulted.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| from_resource_count | Integer | Specifies the number of resources satisfying the incentive from which this level will apply. Notes: It is usual for the first incentive level to start from a resource count of 0. | PK | M |
| skill_set_incentive_id | String(32) | Defines the id of the skill set incentive this applies to. Foreign Key: Skill_Set_Incentive | PK | M |
| unit_resource_value | Double | Defines the value per resource per hour that is added to the plan when the incentive is met at this level. | M(1000) |
Entity: Skill_Set_Skill (Input)¶
This defines the skills that make up a given skill set.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| skill_id | String(32) | Defines the id of the skill this relates to. Foreign Key: Skill | PK | M |
| skill_set_id | String(32) | Defines the id of the skill set to which this skill belongs. Foreign Key: Skill_Set | PK | M |
Entity: Skill_Type (Input)¶
This provides an optional definition that is used to group skills together by type. This can be used to link activities and/or resources with skills of a type.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the Skill type. | PK | M |
| description | String(2000) | Provides a description of the Skill type. | O |
Example¶
<Skill_Type>
<id>Type A</id>
<description>skill type A</description>
</Skill_Type>
Entity: SLA_Template (Input)¶
This defines a template for SLAs that can be linked with activities
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id. | PK | M |
| start_based | Boolean | Should the SLA be applied using the start time or end time of the scheduled activity? | M(true) | |
| description | String(2000) | A description for the template. | O |
Entity: SLA_Template_Item (Input)¶
This defines an item within an SLA Template to apply to the activity.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| deadline | Time Span | The period from the open time of the activity to the end of this SLA period. | PK | M |
| sla_template_id | String(32) | The id of the template. Foreign Key: SLA_Template | PK | M |
| sla_type_id | String(32) | The SLA Type to use for this period. Foreign Key: SLA_Type | M |
Entity: SLA_Type (Input)¶
This defines what SLAs can be assigned to activities. The type of SLA mechanism required is defined by the Mechanism Type. Which attributes are required will depend on the mechanism type.
The required attributes for each mechanism to work correctly are listed below.
| SLA Mechanism / Attributes | SLA | Power Based |
|---|---|---|
| Activity.priority | Required | - |
| SLA_TYPE.revenue | Required | - |
| SLA_TYPE.cost | Required | - |
| SLA_TYPE.early_sla_benefit | Required | - |
| SLA_TYPE.start_proportion | - | Required |
| SLA_TYPE.end_proportion | - | Required |
| SLA_TYPE.curve_shape | - | Required |
| SLA_TYPE.activity_ageing_factor | - | Required |
Note
For SLA mechanism ‘POWER_BASED’ both start_proportion and end_proportion will be settable independently, and curve_factor will define the curvature of the line between the start and end points.
Note
For SLA mechanism 'GAUSSIAN', the end_proportion is required, while the start_proportion is not. A start_proportion will have no effect on the shape of the curve.
Note
Revenue should only have an effect for mechanism_type of SLA. The other mechanisms will use the Activity.base_value to calculate the SLA curve.
Note
The Base Value of an activity is scaled by the activity_ageing_factor value for each day that the activity has been open, according to a defined formula. So a value of 1 makes no difference with age; a value of < 1 makes the activity less important with time as it gets older; and a value > 1 makes the activity more important as it gets older. The base time for the ageing factor is the Activity_SLA.datetime_start. So if the Activity base value is 1000, and the activity_ageing_factor is 1.1, then if the current time is now exactly one day past the datetime_start on the Activity_SLA, it will have a net value of 1100 or proportion of it for a partial day.
Warning
Mechanism type SLA has been deprecated and should not be used. Elements are only provided for backwards compatibility.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Defines a unique id for the SLA type. | PK | M |
| activity_ageing_factor | Double | Defines a value that is used to scale the Base Value of an activity for each day that the activity has been open, according to a defined formula. So a value of 1 makes no difference with time; a value of < 1 makes the activity less important with time as it gets older; and a value > 1 makes the activity more important as it gets older. The base time for the ageing factor is the Activity_SLA.datetime_start. Notes: May be used where Mechanism Type = 'POWER_BASED' | M(1) | |
| cost | Double | Specifies the cost incurred by attending an activity in this SLA type. Notes: May be used where Mechanism Type = 'SLA' | M(0) | |
| curve_shape | Double | Defines a power to be used to determine how the Value of this activity varies with time. A value of 1 makes the variation linear; a value <1 means that as the end of the Scheduling Period approaches, the value of the activity drops off more quickly; a value >1 means that as the end of the Scheduling Period approaches, the value of the activity drops off more slowly. Notes: May be used where Mechanism Type = 'POWER_BASED' | M(1) | |
| early_sla_benefit | Double | Defines a value that will have the effect of trying to place activities earlier in the SLA. The higher the benefit the harder the DSE will try to move the activity to the start of the SLA. Notes: May be used where Mechanism Type = 'SLA' The higher the value the harder the scheduler will try to do the activities earlier within the SLA, possible at the detriment to the quality of the routes. The value must be in the range 0 - 1 | M(0) | |
| generate_jeopardy_exceptions | Boolean | Determines if jeopardy exceptions should be raised for this Activity and SLA. Notes: If generate_jeopardy_exceptions is not specified this is treated the same as if it was set to true. So the exception will be raised for the first Activity_SLA deadline whose SLA_Type does not have generate_jeopardy_exceptions set to false. | M(true) | |
| mechanism_type | String(20) | Specifies the type of SLA mechanism to be deployed. Allowed Values: SLA, POWER_BASED, GAUSSIAN | M(POWER_BASED) | |
| revenue | Double | Specifies the revenue gained by attending an activity in this SLA type. Notes: May be used where Mechanism Type = 'SLA' | M(1000) | |
| start_proportion | Double | Specifies the proportion of the Base Value which applies at the start of the scheduling period e.g. if this is 0.5, the activity has half as much value at the start of the scheduling period than at the end. This should always be greater or equal to the end proportion and less than or equal to the proportions used in any previous SLA periods. Notes: May be used where Mechanism Type = 'POWER_BASED' Valid values >= 0 < = 1 | M(1) | |
| description | String(2000) | Provides a description of the SLA and its purpose. | O | |
| end_proportion | Double | Specifies the proportion of the Base Value which applies at the end of the scheduling period e.g. if this is 0.5, the activity has half as much value at the end of the scheduling period than at the beginning. So the activity is more likely to be scheduled earlier. Notes: Must be used where Mechanism Type = 'POWER_BASED' Valid values => 0 <= 1 | O |
Example¶
<SLA_Type>
<id>SLA_TYPE_2</id>
<description>SLA 2 POWER_BASED Curve</description>
<mechanism_type>POWER_BASED</mechanism_type>
<end_proportion>0.5</end_proportion>
<curve_shape>0.5</curve_shape>
<activity_ageing_factor>0.5</activity_ageing_factor>
</SLA_Type>
Entity: Slot_Usage_Rule (Input)¶
Limits the total amount of resource time that can be used during the slot available times, when making offers for an appointment request.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| minimum_start_offset | Time Span | The minimum offset from appointment_base_datetime to the slot start time at which this rule will apply. If appointment_base_datetime is not set, offset is applied from the current schedule time. Notes: See the 'Appointment_Request' entity for details on 'appointment_base_datetime' parameter. | PK | M |
| slot_usage_rule_set_id | String(32) | The id of the rule set that this rule relates to. Foreign Key: Slot_Usage_Rule_Set | PK | M |
| maximum_slot_utilisation | Double | The maximum utilisation permitted for offers made in this slot window. Notes: Range from 0 to 100 | O | |
| maximum_utilisation | Double | The maximum utilisation permitted for offers made in this slot usage window. Notes: Range from 0 to 100 | O | |
| minimum_free_time | Time Span | The minimum amount of free time required in order for offers to be made in this slot usage window. | O | |
| minimum_slot_free_time | Time Span | The minimum amount of free time required in order for offers to be made in this slot window. | O |
Entity: Slot_Usage_Rule_Set (Input)¶
Defines a set of rules used to reserve some resource time when appointment booking.
This consists of a set of Slot_Usage_Rule rows which specify limits based on how far into the future the slot being considered is. The minimum_start_offset on the rule determines which rule is used for any given slot.
Rules can specify either a maximum utilisation, or a minimum free time, or both. In either case this is applied only during the available times for the slot, and is applied across all resources able to carry out the activity, and within the distance threshold if specified.
Rules sets can then be linked to appointment templates for use when appointment booking.
Note
The rule set can be filtered to limit which activities are counted in the utilised time.
For example, it may be that a customer only wishes to allow 70% of slot time to be filled with installation activities. A slot usage rule should then be setup with a maximum_utilisation of 70, and the filter options on the slot usage rule set can be used to restrict which activities this applies to. If all installation activities are of the same type then the filter_by_activity_type option can be used. If not, the activity priority should be set appropriately and these options can be used instead.
There are also options to ignore private activity time from the calculation, and to either ignore or exclude (i.e. filter out) break time from the calculation.
For further details on this see the Scheduling Concepts - Appointment Booking guide.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique identifier for this rule set. | PK | M |
| filter_by_activity_type | Boolean | If true, only activities of the same type as the activity being requested will contribute to the utilised time. | M(false) | |
| filter_exclude_break_time | Boolean | If true, break time (implicit or explicit) will not contribute to the utilised time. | M(false) | |
| filter_exclude_higher_priority | Boolean | If true, activities of a higher priority than the activity being requested will not contribute to the utilised time. | M(false) | |
| filter_exclude_lower_priority | Boolean | If true, activities of a lower priority than the activity being requested will not contribute to the utilised time. | M(false) | |
| filter_ignore_break_time | Boolean | If true, any shift time covered by a break (implicit or explicit) will be ignored from the utilisation calculation. | M(false) | |
| filter_ignore_private_time | Boolean | If true, any shift time covered by a private activity will be ignored from the utilisation calculation. | M(false) | |
| description | String(2000) | A description for this rule set. | O | |
| distance_threshold_km | Double | The maximum distance from a shift start location to the activity location in order for the shift to be considered. | O | |
| resource_pool_set_id | String(32) | If specified, only resources belonging to at least one pool within the set will be considered. In addition, the slot usage check will be performed against all resources in the matching pool(s) of the resource being considered. Foreign Key: Resource_Pool_Set | O |
Entity: Source_Data (Input)¶
Defines the source of additional data to be added to input. By including a Source Data entity in the input, additional data from the source is automatically extracted and included in the input. This extraction and insertion of data occurs automatically during an initial load of scheduling data. This process is used to load data held in other systems. The Schedule Input Manager writes the merged input to Input History and the Scheduling Database as normal.
Note
It is possible to extract data from multiple sources of the same type (e.g. 2 or more Modelling datasets or rotas). This can be done by setting the sequence number on the Source_Data. Note however that this option is not available for Source Data Type SCHEDULING where data may only be extracted from a single source.
Modelling / Advanced Resource Planner Data Extract¶
It is possible to extract the Modelling data from the Advanced Resource Planner and then merge it into the Scheduling module.
To pull through Modelling data into the scheduling you include a Source_Data entity with source_data_type_id of RAM. Rota data from the MASTER rota will be included automatically, provided that exactly one master rota exists in the dataset. You may also specify a Source_Data_Parameter with name 'rota_id' and value the id of the rota you wish to use.
The following data that is pulled though:
General data: Activity Types, Activity Type Skills and SLA Types always get pulled through to scheduling DB.
Resource Data: This is based on the rota items that overlap the scheduling period. Resources will only be included if they have rota items within the scheduling period and all other related data is pulled through as required. Any shifts which are pulled through for a resource will be displayed in the Gantt with a background colour that is a lightened value of that shifts shift category colour.
Activity Data: Locations and SLA information can also be included for activities. For locations, the activity must have an activity type that exists within the Modelling dataset, and this activity type must have supply_locations set to true. The Input Manager will then include the location if it finds a matching one to the location_id on the activity. For SLAs, the activity must have a date_time_open and the Activity_Type must have a SLA_Template specified. The Input Manager will then create Activity_SLAs for the activity, starting from the date_time_open on the activity and based on the SLA_Template.
Source Data Parameter include_rota_data controls whether the Input Manager will bring in shift details from the modelling dataset.
<Source_Data>
<source_data_type_id>RAM</source_data_type_id>
</Source_Data>
<Source_Data_Parameter>
<source_data_type_id>RAM</source_data_type_id>
<parameter_name>rota_id</parameter_name>
<parameter_value>Master</parameter_value>
</Source_Data_Parameter>
Scheduling Data¶
There are three options, determined by the value of parameter_name "source_extraction_method" in Source_Data_Parameter: "FULL", "PARTIAL" or "AUTOMATIC".
Data can be loaded from either the same or from a different dataset. To use a different dataset, the dataset_id should be specified on the Source_Data row.
"FULL": with this option all the existing scheduling data for a certain dataset will be extracted, and so a reload of the existing data is achieved without sending any data again. Note however that not all data is persisted:
- completed or incomplete activities in a past shift will be ignored. If, however the activity part of an activity group with the other activity being in current shift then that activity is persisted.
- shifts which are in the past are ignored. A shift is regarded as being in the past if the current time is past the overtime of the shift.
- only the latest schedule events are persisted.
"PARTIAL": this option is used to retrieve the only the dynamic "status" of activities and resources that are specified. Specifically, if the load includes the entity for activity A and all the entities related to activity A apart from activity statuses then the Input Manager automatically merges into the load all the activity_status entities of activity A from the existing scheduling data in the Scheduling Database. Likewise, the Input Manager persists the latest schedule_events for the resources included in the new load.
"AUTOMATIC": option does not perform any extraction initially, but informs the Scheduling Administration Service to automatically send new LOADs on a daily basis from that point forward, using a FULL extraction based on this Source Data row. Please see the Scheduling Administration Guide for details on setting the administration service parameters.
<Source_Data>
<source_data_type_id>SCHEDULING</source_data_type_id>
<source_dataset_id>Default</source_dataset_id>
<source_db>Scheduling Database</source_db>
</Source_Data>
<Source_Data_Parameter>
<source_data_type_id>SCHEDULING</source_data_type_id>
<parameter_name>source_extraction_method</parameter_name>
<parameter_value>FULL</parameter_value>
</Source_Data_Parameter>
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| sequence | Integer | A uniquifier to allow multiple source data rows of the same type to be specified. | PK | M(1) |
| source_data_type_id | String(32) | Defines a unique identifier for the Source data type. Foreign Key: Source_Data_Type Notes: See entity Source_Data_Type. | PK | M |
| source_dataset_id | String(32) | Specifies the dataset to be used for the source data. | O |
Entity: Source_Data_Parameter (Input)¶
This defines the various parameter values for each Source Data provided on the input.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| parameter_name | String(100) | Provides the name of the parameter. Notes: include_rota_data (RAM), source_extraction_method (SCHEDULING), rota_id (RAM), ignore_unavailabilities (RAM) | PK | M |
| sequence | Integer | A uniquifier to allow multiple source data rows of the same type to be specified. Foreign Key: Source_Data | PK | M(1) |
| source_data_type_id | String(32) | Specifies the source data type identifier. Foreign Key: Source_Data Notes: See entity Source_Data_Type. | PK | M |
| parameter_value | String(1000) | Specifies the actual value of the parameter. | O |
Entity: Source_Data_Type (Lookup)¶
Defines sources of data to be incorporated into a dataset input.
The source of the data is defined as the following :-
DATABASE: Additional input is provided by a call to a database procedure.
RAM: Additional input is extracted from the RPL database.
SCHEDULING: Additional input is extracted from an existing scheduling database.
Refer to entity Source Data for details on configuring these input streams.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Source identifier. Allowed Values: DATABASE, RAM, SCHEDULING, SPM | PK | M |
| description | String(100) | Source description | M |
Entity: Special_Day (Input)¶
This defines a special day within a calendar where the usual calendar pattern does not apply. The relative day number determines the actual date of the special day. The 1st of January 2000 is counted as 1, and days count forwards from there. Thus the 2nd of January 2000 would be 2, the 1st of February 2000 would be 32, and the 1st of January 2001 would be 367.
If the special day is a public holiday for example then the 'is_working_day' attribute can be set to false. Otherwise the new working times for the special day should be recorded as Special_Day_Item rows.
Note
Special days do not affect the availability of the activity - as with calendars, they only impact how the slope of the activity SLA changes over time.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| calendar_id | String(32) | Specifies the id of the calendar this relates to. Foreign Key: Calendar | PK | M |
| relative_day_number | Integer | Specifies the day this relates to, counting from 1st Jan 2000 = 1. | PK | M |
| description | String(2000) | Provides a description for this special day. | M | |
| is_working_day | Boolean | Whether this is a working day - i.e. a day where the SLA slope will change. | M(false) |
Entity: Special_Day_Item (Input)¶
Defines the active periods for a special day.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| calendar_id | String(32) | Specifies the id of the calendar this relates to. Foreign Key: Calendar | PK | M |
| relative_day_number | Integer | Specifies the relative day number, identifying the special day this relates to. Foreign Key: Special_Day | PK | M |
| start_time | Time Span | Defines the active period start time. | PK | M |
| end_time | Time Span | Defines the active period end time. | M |
Entity: Split_Model (Input)¶
Split models contain the settings which relate to splitting an activity.
Note
If a split model is specified on either an activity or its activity type, the split model settings will be used rather than any settings specified directly on the Activity or Activity_Type row (even if set to null).
Note
If a split model is specified for an activity, it is treated as having split_allowed set to true.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | The id for the split model. | PK | M |
| cost_of_split | Double | Defines the cost incurred each time an activity using this split model is split. | O | |
| delay_cost_ph | Double | Defines the cost per hour to be applied from the point at which an activity using this model is split until the next visit begins. Notes: If a preferred_handover_time has been set, the cost will apply from the time at which the preferred handover should begin, rather than the time of the split. | O | |
| description | String(2000) | A description for the split model. | O | |
| extra_resource_cost | Double | Defines the cost applied for each extra resource used (beyond the initial resource) for an activity using this model. | O | |
| maximum_delay | Time Span | Defines the maximum amount of time that may pass between the end of one visit to an activity using this model, and the start of the next visit. | O | |
| maximum_resources | Integer | Defines the maximum number of resources that may be used in total, across all visits to an activity using this model. Notes: If unspecified, the maximum number of resources will be 1, meaning that all visits will be carried out by the same resource. | O | |
| minimum_handover_time | Time Span | Defines a minimum amount of overlap that must be scheduled between two visits for an activity using this model, when switching from one resource to another. Notes: Handover time is not included as part of the activity's duration. | O | |
| minimum_priority | Integer | Defines the minimum split priority required for an activity using this model to be split into a shift, and the minimum interrupt priority required for another activity to be able to interrupt an activity using this model. Notes: This is the equivalent of split_minimum_priority on an Activity or Activity_Type. | O | |
| minimum_visit_duration | Time Span | Defines the minimum on site duration for any visit to a split activity using this model. Notes: This is the equivalent of min_split on an Activity or Activity_Type. | O | |
| preferred_handover_time | Time Span | Defines the preferred amount of overlap to be scheduled between two visits for an activity using this model, when switching from one resource to another. Notes: It is permitted for the activity to begin with a handover time less than the preferred handover time. To make the handover time a required amount of time, only the minimum_handover_time need be used. Notes: Handover time is not included as part of the activity's duration. | O | |
| resource_switch_leeway | Time Span | Defines the amount of time between the start of resources' shifts for them to be considered when considering which resource to split to. Notes: For example, if the resource_switch_leeway is set to 30 minutes and there are three resources to choose between when splitting an activity, with shifts starting at 9:00, 9:30 and 10:00, only the first two resources will be considered. This is because the third resource starts their shift more that 30 minutes after the start of the first resource's shift. | O |
Entity: Split_Resource_Order (Input)¶
Defines the order of preference of resources to choose from when splitting an activity.
Note
The order is defined with the highest preference given to the resource that is first in the sequence (i.e. with the lowest sequence value).
Note
The sequence values do not relate to the visit ids, so the second resource in the sequence will not necessarily be used for the second visit for the activity.
Note
If the activity does not have a fixed resource (on the Activity_Status), the first resource in the sequence will be used as its fixed resource.
Note
The sequence as defined here can override the split settings for the activity - so an activity could split to more resources than specified in the maximum_resources column in the Split_Model table, if there are more resources defined in the sequence.
Note
Fixing the resource and position in the sequence means that the resource order will be maintained if the activity is reverted back to schedulable after being committed.
Warning
Without setting an ordering for the resources, a committed activity will not split to multiple resources.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the id of the activity this relates to. Foreign Key: Activity | PK | M |
| sequence | Integer | Defines the position in the sequence. | PK | M |
| is_fixed | Boolean | Whether this resource in this position in the sequence is fixed. | M(false) | |
| resource_id | String(32) | Specifies the id of the resource this relates to. Foreign Key: Resources | M |
Entity: Split_Resource_Order_Hint (Input)¶
This is intended to be used with Allocation_Hint and serves the same purpose as Split_Resource_Order.
Note
This table and the Allocation_Hint table are only usable within a LOAD file.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the id of the activity this relates to. Foreign Key: Activity | PK | M |
| sequence | Integer | Defines the position in the sequence. | PK | M |
| resource_id | String(32) | Specifies the id of the resource this relates to. Foreign Key: Resources | M |
Entity: Status_Type (Lookup)¶
For internal use only. Defines the allowed status of an activity.
An activity is, at all times, in one logical status. This may be:
-1:Ignore Denotes that the activity is in the system but the scheduler must ignore that activity. This could be for a number of reasons. It may be that further information is expected or that the Activity is currently being processed by another service. The activity is treated as being unallocated.
0:Unallocated Denotes that the activity is in the system but the scheduler has not allocated a resource to do that activity. This could be for a number of reasons. It may be that the utilization is at less than 100% and the scheduler has chosen to postpone allocating this activity in the current allocation time window. It may also be that the scheduler cannot find a resource with appropriate skills that can answer the activity inside one of the activity SLAs.
10:Allocated Denotes that the activity has been provisionally assigned to a resource. In other words, the activity is on the route. However, this activity could be taken from this resource and placed onto another resource’s route at any time. This might happen if, for instance, another resource runs early and could now fit this activity into their schedule more efficiently.
In general it is the responsibility of the DSE to determine whether an activity is in status 0 or 10.
20:Follow On This is an output status, and denotes that the visit to an activity is a follow up visit to a splittable activity, and that at least one visit to the activity is at status committed or higher. As a result the DSE has much less flexibility in deciding where the visit should be allocated.
30:Committed Denotes that the activity has been finalized to a resource. An activity can only become committed as a result of the scheduler passing control to the EA. The scheduler will not give away a committed activity to another resource until it receives further information from the client that the activity has returned to a status of 0 or 10.
32:Sent Denotes that the activity has been finalized to a resource as with Committed but has now been transferred to an external application.
35:Downloaded Denotes that the activity has been finalized to a resource as with Committed but has now been transferred to the remote device.
40:Accepted Denotes that the resource has accepted the activity. The activity remains committed but this provide a positive confirmation that the resource has undertaken to do the work. If the resource rejects the activity then the EA must inform the scheduler by amending the status.
50:Travelling Denotes that the resource has started to travel to the activity. An activity can only have status travelling as a result of the EA sending that status update .
55:Waiting Where co-requisite activities have been identified a status of waiting is assigned when a resource is awaiting the arrival of another before the activity can start.
60:Onsite Denotes that the resource has arrived at the location to do the allocated activity. An activity can only have status onsite as a result of the EA sending that status update.
65:Pending Completion When sent it is an indicator that the activity could soon be completed and should ideally be sent with the latest expected duration of the activity, if this is not present the existing duration will be used. The Schedule Dispatch Service will treat this status differently and activities of this status will not counted towards a resources allowed limit of committed activities.
68:Visit Complete This indicates that a visit to an activity has been completed, but the activity as a whole is not yet complete. This status is intended for use with splittable activities.
70:Completed Denotes that the activity has been finished by a resource. An activity will only become completed if the scheduler receives an activity completed event from the EA. The duration of a completed activity is determined by the difference between the OnSite and Completed status change times. If no On Site is sent, the activity will be treated as having zero duration.
80:Incomplete Special status to indicate the activity has been carried out but further work may be required and another activity has to be raised.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | Integer | Status identifier. | PK | M |
| description | String(100) | Status description | M | |
| message_text_id | Integer | The message_id for the description to be translated. Notes: This is not the full PK for the message row. The other parts of the key are derived from the default language setting and application id. | O |
Default Entries¶
| Status Id | Description |
|---|---|
| -1 | DoNotSchedule |
| 0 | Unallocated |
| 10 | Allocated |
| 20 | Follow On |
| 30 | Committed |
| 32 | Sent |
| 35 | Downloaded |
| 40 | Accepted |
| 50 | Travelling |
| 55 | Waiting at location |
| 60 | Onsite |
| 65 | Pending Completion |
| 68 | Visit Complete |
| 70 | Complete |
| 80 | Incomplete |
Entity: Suggested_Dispatch (Output)¶
This provides the suggested activities to be committed. These suggestions are output by the Schedule Dispatch Service and can be identified in the broadcast when attribute Broadcast.allocation_type = 8. The suggestions are based upon the rules defined for the Schedule Dispatch Service. The fixed resource and fixed date/time attributes are also output so that the correct Activity_Status can be input into the system by the EA.
Note
Commit Sort Value. The lowest value committed activity will appear first in the list of activities. If the values were the same, or null for several activities then the date_time_status would be used to determine the order. In the special case where activities are allowed to be scheduled before committed activities (i.e. AllowAllocateBeforeCommitted = true, CommittedActivitiesConstraintsOption = 1), the commit sort value may have a negative or decimal value - negative if 0 has already been used in a previous 'active' suggestion, or decimal if the current suggestion is between two previous 'active' suggestions with consecutive integer commit sort values. This is to ensure that the order of the activities will always be mapped correctly by the commit sort values of the 'active' suggestions.
Note
A dispatch rule parameter has been added 'SendExternalCommitsMode'. This defaults to 'NONE', giving the existing behaviour, but can also take values of 'MANUAL' and 'ALL'. If set to ALL then the Schedule Dispatch Service will write a Suggested_Dispatch row whenever an activity is committed or uncommitted, if the service did not suggest the dispatch in the first place. If set to MANUAL the service will only do this for activities which have been manually committed or uncommitted via the Scheduling Workbench (identified by Activity_Status.source = 1).
The source attribute on the Suggested_Dispatch row will be set to 2 for suggestions made by the Schedule Dispatch Service itself, and will use the value given on the Activity_Status row for external commits (so this will be 1 for Scheduling Workbench manual commits).
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Identifies activity. | PK | M |
| status_id | Integer | The status to set the activity to either 0 or 30. | PK | M |
| visit_id | Integer | The id of the visit the suggestion is for. | PK | M(1) |
| date_time_status | Date Time | The date and time the status should be set at. | M | |
| fixed_resource | Boolean | Is the resource to be fixed to the activity. | M(false) | |
| plan_id | Int64 | Id for the plan. Foreign Key: Plan | M | |
| commit_sort_value | Double | Determines committed status order of activities. Notes: The lowest value committed activity would appear first. | O | |
| date_time_earliest | Date Time | The suggested date_time_earliest to use when committing the activity. | O | |
| date_time_fixed | Date Time | The date and time the activity is fixed. | O | |
| expected_end_datetime | Date Time | The time the visit to the activity is currently expected to end. | O | |
| expected_start_datetime | Date Time | The time the visit to the activity is currently expected to start. | O | |
| resource_id | String(32) | Identifies the resource the activity should be committed to. | O | |
| source | Integer | Identifies the source of the suggestion. Notes: All generated suggestions will have source value 2. If the Schedule Dispatch Service is set up to suggest manual and other commits this will equal the value on the commit Activity_Status. | O |
Entity: Suggested_Split_Res_Order (Output)¶
Like Plan_Split_Resource_Order table, this table provides a suggested preferential ordering of resources to be used for allocating this activity when choosing which resource to split to. These recommendations are generated by the Schedule Dispatch Service.
Note
See Plan_Split_Resource_Order and Split_Resource_Order for more details.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the id of the activity this relates to. | PK | M |
| sequence | Integer | Defines the position in the sequence. | PK | M |
| plan_id | Int64 | The plan this is included in. | M | |
| resource_id | String(32) | Specifies the id of the resource this relates to. | M | |
| is_fixed | Boolean | Whether this resource in this position in the sequence is fixed. | O |
Entity: System_Counter (System)¶
For internal use only.
Entity: Target (Input)¶
Targets define business goals that are used internally by the What-If Scenario Explorer (WISE). An example would be "ensure that the SLA Hit Rate for Plumbing activities is greater than 95%". The actual level of the Target is set using Target Levels; whilst the applicability of the Target is determined by any Target Focus rows which are linked to the Target.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies the unique identifier for this Target. | PK | M |
| statistic_type_id | Integer | Defines the statistic type of this Target. Statistic Types are defined in the System database. | M | |
| description | String(2000) | Provides an optional description of this Target. | O |
Example¶
<Target>
<id>ab9597c257514173889bbe456750bd9c</id>
<description>Contract renewal SLA target</description>
<statistic_type_id>32</statistic_type_id>
</Target>
Entity: Target_Focus (Input)¶
A Target Focus defines a filter which constrains the applicability of the Target.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies the unique identifier for this Target Focus | PK | M |
| object_name | String(32) | Defines a table column to which the filter applies. For Activity_Type or Resource_Type, this must be "id"; for Activity it may be "customer" or "service_level". | M | |
| table_name | String(40) | Defines a data table to which the filter applies. This must be "Activity", "Activity_Type" or "Resource_Type". | M | |
| target_id | String(32) | Specifies the identifier of the Target to which this Target Focus applies. Foreign Key: Target | M | |
| object_value | String(100) | Specifies the filter value to apply. | O | |
| sequence | Integer | Specifies the order of this Target Focus within the group. | O | |
| target_focus_group_id | String(32) | Specifies the identifier of the Target Focus Group to which this Target Focus belongs. Foreign Key: Target_Focus_Group | O |
Example¶
<Target_Focus>
<id>f6db37fd05c84dfa9c8077017d9dc102</id>
<target_id>ab9597c257514173889bbe456750bd9c</target_id>
<table_name>Activity</table_name>
<object_name>customer</object_name>
<object_value>Acme Ltd</object_value>
</Target_Focus>
Entity: Target_Focus_Group (Input)¶
A Target Focus Group organizes multiple Target Focuses into logical groups with AND/OR operators to define complex applicability rules for a Target. Groups can be nested hierarchically through the parent relationship, allowing for sophisticated multi-level filtering logic where each group determines whether all its members (AND) or any member (OR) must be satisfied.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies the unique identifier for this Target Focus Group | PK | M |
| all_required | Boolean | Indicates whether all Target Focuses of the group must be met (AND operator) or any (OR operator). | M | |
| sequence | Integer | Specifies the order of this Target Focus Group within its parent. | M | |
| target_id | String(32) | Specifies the identifier of the Target to which this Target Focus applies. Foreign Key: Target | M | |
| target_focus_group_id_parent | String(32) | Define the parent Target Focus Group to which this group belongs. Foreign Key: Target_Focus_Group | O |
Example¶
<Target_Focus_Group>
<id>a1b2c3d4e5f64a5b8c9d0e1f2a3b4c5d</id>
<target_id>f1e2d3c4b5a649789c8d7e6f5a4b3c2d</target_id>
<all_required>true</all_required>
</Target_Focus_Group>
<Target_Focus_Group>
<id>b2c3d4e5f6a74b5c9d0e1f2a3b4c5d6e</id>
<target_id>f1e2d3c4b5a649789c8d7e6f5a4b3c2d</target_id>
<target_focus_group_id_parent>a1b2c3d4e5f64a5b8c9d0e1f2a3b4c5d</target_focus_group_id_parent>
<all_required>false</all_required>
</Target_Focus_Group>
<Target_Focus_Group>
<id>c3d4e5f6a7b84c5d0e1f2a3b4c5d6e7f</id>
<target_id>f1e2d3c4b5a649789c8d7e6f5a4b3c2d</target_id>
<target_focus_group_id_parent>a1b2c3d4e5f64a5b8c9d0e1f2a3b4c5d</target_focus_group_id_parent>
<all_required>true</all_required>
</Target_Focus_Group>
Entity: Target_Level (Input)¶
Targets define business goals that are used internally by the What-If Scenario Explorer (WISE). A Target Level defines a range of values which are to be considered as an error or warning state.
Note
The statistic type in the Target defines whether a high value is good or bad. This information must be used when interpreting these levels. For instance, total distance travelled is good when lower; whereas SLA hit rate is good when it is higher.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies the unique identifier for this Target Level | PK | M |
| alert_level_id | String(32) | Defines whether this Target Level is the threshold for an error or warning. Permitted values are: "ERROR", "WARNING" or "OK". | M | |
| benefit | Double | Specifies the benefit of increasing this statistic value by one. Note that statistics which are better when smaller, such as total travel distance, should have a negative value. It is advisable to have a larger value for error ranges than for warning ranges, so as to prioritise the avoidance of errors over the avoidance of warnings. By choosing different benefits for different targets, some targets can be made more important than others. | M | |
| benefit_type | String(32) | This must always be "ADD": which means total target benefits are added together. | M | |
| target_id | String(32) | Specifies the identifier of the Target to which this Target Level belongs. Foreign Key: Target | M | |
| range_end | Double | Defines the end of this range of values | O | |
| range_start | Double | Defines the start of this range of values | O |
Example¶
<Target_Level>
<id>a5d36ff5b93d48099f5a505d529016c0</id>
<target_id>ab9597c257514173889bbe456750bd9c</target_id>
<alert_level_id>ERROR</alert_level_id>
<range_start>0</range_start>
<range_end>80</range_end>
<benefit>10</benefit>
<benefit_type>ADD</benefit_type>
</Target_Level>
Entity: Team_Resource (Input)¶
Team resource defines the memberships of resources in a team.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| resource_id | String(32) | Specifies the resource belonging to the team. Foreign Key: Resources | PK | M |
| start_datetime | Date Time | Specifies the start of the resources membership in a team. | PK | M |
| team_id | String(32) | Specifies the team to which the Team Resource belongs. Foreign Key: Resources | PK | M |
| end_datetime | Date Time | Specifies the end of the resources membership in a team. | M | |
| position_id | String(32) | Specifies the position of the resource in a team. Foreign Key: Position | O |
Entity: Transfer_Rule (Input)¶
Transfer rules are used to define the rules for transferring one or more parts from a parent depot to a child depot, providing the cost of transfer and time when the part can be made available. This means a part could be transferred more quickly but at a higher cost.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| sequence | Integer | A uniquifier to allow multiple source datas of the same type to be specified. | PK | M(1) |
| transfer_rule_set_id | String(32) | Specifies a unique identifier for the rule set this rule belongs to. Foreign Key: Transfer_Rule_Set | PK | M |
| unit_cost | Double | Defines the cost of transferring one part to the child depot. | M(0) | |
| earliest_available_time | Date Time | Defines the earliest time the part could be made available at the child depot. | O |
Entity: Transfer_Rule_Set (Input)¶
Defines a set of transfer rules, which are used when transferring parts from one depot to another.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies a unique identifier for the transfer rule set. | PK | M |
| description | String(2000) | Describes the transfer rule set. | O |
Entity: Travel_Cost_Model (Input)¶
Travel cost models allow for a more detailed definition of how costs should be applied to each journey made by a resource. This allows the DSE to intelligently select when it is appropriate for a resource to carry out a longer journey, or to travel a significant distance from their base location.
The Travel Cost Model can apply penalties based on travel time or distance, this is done by adding a Travel Penalty or Distance Penalty to the Travel Cost Model.
A Travel Penalty has three different types of restriction that can be applied:
- Journey time - penalties and/or limitations on the expected length of each journey.
- Travel home time - penalties and/or limitations based on the time it would take to travel home from each scheduled location. For each shift the home location is considered to be the shift's start location.
- Shift travel time - penalties and/or limitations on the total expected travel time in a shift.
A Distance Penalty has two different types of restriction that can be applied:
- Journey distance - penalties and/or limitations on the expected distance of each journey.
- Shift travel distance - penalties and/or limitations on the total expected travel distance in a shift.
For each restriction type, it is possible to specify a maximum limit, and also to specify penalties for exceeding a given threshold. Penalties can either be one-off penalties when the threshold value is passed, or incremental penalties, where an additional cost per km is incurred beyond the threshold value.
For example, suppose a travel cost model has a default cost per km of 1, with a journey time travel penalty for journeys of over 1 hour. The penalty includes a one-off penalty of 100, and an additional cost per km of 1. Now suppose the DSE has planned a journey of 60km lasting 80 minutes. Since the journey is longer than the one hour threshold time, the one-off penalty is applied. In fact the last 25% of the journey is beyond the threshold, so this will be charged at 2 per km due to the additional cost. This makes the total cost for the journey 100 + (45 x 1) + (15 x 2) = 175.
By setting appropriate penalties, the DSE will be selective in scheduling resources to carry out longer journeys, perhaps only when there is urgent work that would otherwise be delayed. Of course the DSE will always try to limit travel time anyway, so penalties should only be used where there is a genuine business requirement.
For each penalty whether distance or travel (excluding travel home time) an additional journey time can be set. This will be applied to a travel time if the penalty threshold has been exceeded. The additional time is not considered when calculating subsequent penalties, meaning the travel cost model only applies to original travel time/distance (the additional time cannot cause the travel time to exceed the threshold for another travel time penalty). For shift based penalties the additional journey time will be applied to the travel where the threshold was reached. For example a distance penalty is configured to apply an additional journey time of 15 minutes after 100km of travel was reached in a shift. Two activities are scheduled where the first takes 75km to travel to and the second takes 50km to travel to. During the travel to the second activity the distance penalty threshold was reached, so the additional time of 15 minutes is applied to that travel.
Note
For the travel home time penalty type, any one off penalty is only incurred when visiting an activity outside the threshold value, and where the previous activity was inside the threshold value.
Finally the model also allows a lower cost to be applied during the travel to and from home periods. For example, if a shift has a travel_to period of 1 hour, then the first travel in the route will be charged at the lower rate, up to the 1 hour limit. If the first travel is longer than 1 hour then the remainder will be charged at the normal rate.
Note
If travel_to_charge_proportion and/or travel_from_charge_proportion is not specified then the default value is taken from the database parameter 'TravelToAndFromHomeChargeable'.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies the unique identifier for this Travel Cost Model. | PK | M |
| cost_km | Double | Defines the default cost to apply for each kilometre travelled. | M(0.25) | |
| description | String(2000) | Provides a description for this travel cost model. | O | |
| max_journey_distance_km | Double | Specifies the maximum distance of any single journey. | O | |
| max_shift_travel_distance_km | Double | Specifies the maximum total distance travelled allowed in a shift. | O | |
| maximum_journey_time | Time Span | Specifies the maximum allowed length of any single journey. | O | |
| maximum_shift_travel_time | Time Span | Specifies the maximum total travel allowed in a shift. | O | |
| maximum_travel_home_time | Time Span | Specifies the maximum distance from home that a resource is allowed to travel to. | O | |
| travel_from_charge_proportion | Double | Specifies the proportion of the usual travel cost that should be applied during the 'travel from' period. | O | |
| travel_to_charge_proportion | Double | Specifies the proportion of the usual travel cost that should be applied during the 'travel to' period. | O |
Entity: Travel_Detail (Output)¶
Returned by the Travel Analysis service in response to a travel detail request.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| travel_detail_request_id | String(32) | The id of the travel detail request. | PK | M |
| distance | Double | The travel distance of the requested travel. | M | |
| time | Time Span | The travel time of the requested travel. | M | |
| plan_id | Int64 | The id of the plan this relates to. Foreign Key: Plan | O |
Entity: Travel_Detail_Request (Input)¶
A request for the travel time and distance between two locations. The locations can either be specified by latitude and longitude, or they may be existing locations within the input data.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | Specifies the unique identifier for this Travel Detail Request. | PK | M |
| latitude_from | Double | Defines the latitude of the start location for the travel. Notes: Range from -90 to +90 | O | |
| latitude_to | Double | Defines the latitude of the end location for the travel. Notes: Range from -90 to +90 | O | |
| location_id_from | String(32) | Defines the start location for the travel. Foreign Key: Location | O | |
| location_id_to | String(32) | Defines the end location for the travel. Foreign Key: Location | O | |
| longitude_from | Double | Defines the longitude of the start location for the travel. Notes: Range from -180 to +180 | O | |
| longitude_to | Double | Defines the longitude of the start location for the travel. Notes: Range from -180 to +180 | O | |
| profile_id_travel | String(32) | Defines the id of the Profile to use when calculating the travel. The corresponding Travel_Time_Profile to be used is then defined by setting the parameter TravelTimeProfileId on the specified Profile. | O | |
| speed_factor | Double | Specifies an additional speed factor to apply when calculating the travel. Notes: A speed factor of 2 will mean journeys take twice as long. | O | |
| start_datetime | Date Time | Defines the travel start time to use when calculating the travel. | O |
Entity: Travel_Penalty (Input)¶
This details the penalties that are linked to a given travel cost model. See 'Travel Cost Model' for details.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| threshold_value | Time Span | Specifies the threshold time from which the penalty is applied. | PK | M |
| travel_cost_model_id | String(32) | Defines the id of the travel cost model this penalty relates to. Foreign Key: Travel_Cost_Model | PK | M |
| travel_penalty_type_id | String(32) | Specifies the type of the travel penalty Foreign Key: Travel_Penalty_Type Allowed Values: JOURNEY_TIME, SHIFT_TRAVEL_TIME, TRAVEL_HOME_TIME | PK | M |
| additional_cost_km | Double | Specifies the additional cost per km to apply once the threshold value is exceeded. | O | |
| additional_journey_time | Time Span | Specifies the additional journey time to apply once the threshold value is exceeded. | O | |
| penalty | Double | Defines a one off penalty to apply for exceeding the threshold value. | O |
Entity: Travel_Penalty_Type (Lookup)¶
Lists the different types of travel penalty that can be applied.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id. | PK | M |
| message_id | Integer | The id of the message describing this penalty type. | O |
Entity: URL_Parameter (Input)¶
This specifies a parameter to be associated with a custom URL.
The value of the parameter can be sourced from a particular table (e.g. Activity or Resource).
A custom parameter can also be specified and linked to an activity, activity type, resource or resource type via the entity 'linking' tables, e.g. Activity_Custom_URL.
See examples in the 'Custom_URL' section.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| custom_url_id | String(32) | Specifies the owning URL Foreign Key: Custom_URL | PK | M |
| sequence | Integer | Defines the sequence in the URL. | PK | M |
| custom_parameter | Integer | Defines the custom url parameter to be sourced from one of the entity custom url 'linking' tables. Allowed Values: 1-4 Mapping: Activity_Custom_URL.custom_parameter_value1, Activity_Custom_URL.custom_parameter_value2, Activity_Custom_URL.custom_parameter_value3 or Activity_Custom_URL.custom_parameter_value4 Mapping: Resource_Custom_URL.custom_parameter_value1, Resource_Custom_URL.custom_parameter_value2, Resource_Custom_URL.custom_parameter_value3 or Resource_Custom_URL.custom_parameter_value4 Mapping: Activity_Type_Custom_URL.custom_parameter_value1, Activity_Type_Custom_URL.custom_parameter_value2, Activity_Type_Custom_URL.custom_parameter_value3 or Activity_Type_Custom_URL.custom_parameter_value4 Mapping: Resource_Type_Custom_URL.custom_parameter_value1, Resource_Type_Custom_URL.custom_parameter_value2, Resource_Type_Custom_URL.custom_parameter_value3 or Resource_Type_Custom_URL.custom_parameter_value4 | O | |
| parameter_value | String(2000) | Provides the parameter value. | O | |
| parameter_value_table | String(32) | Gives the name of the table from which the parameter is to be retrieved. Notes: For Additional_Attribute, URL parameter value is matched to an AA.label, and the AA.label_value is used to populate the URL. For other tables in parameter_value_table, e.g. Activity, the URL parameter value must be the name of a column in the Activity table. Allowed Values: Additional_Attribute, Activity, Activity_Type, Location, Resources, Resource_Type | O |
Entity: URL_String (Input)¶
This specifies a string associated with a custom URL.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| custom_url_id | String(32) | Specifies the owning URL. Foreign Key: Custom_URL | PK | M |
| sequence | Integer | Defines the sequence in the URL. | PK | M |
| string_value | String(2000) | Provides the string value. | M |
Entity: Usage_Class (Input)¶
Defines a class of usage, along with a default usage rate for this class of usage.
Note
This is only intended for use with repeatable activities and cyclic scheduling.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | An identifier for this class of usage. | PK | M |
| default_usage_per_day | Double | The default usage rate per day. | M | |
| usage_applies_during_visits | Boolean | Specifies whether usage is accrued while a visit to the activity is in progress. | M(true) | |
| usage_applies_outside_visits | Boolean | Specifies whether usage is accrued while no visits to the activity are in progress. | M(true) | |
| description | String(2000) | A description for this usage class. | O |
Entity: Usage_Model (Input)¶
This is used to define expected rates of usage for different types of usage that might apply to an operation.
Each type of usage will have a maximum usage, and also usage rates associated to it which can vary over time.
The usage model also has an SLA model associated to it which determines the proportion of the operation base value that will be achieved in a given visit, depending on the visit times.
The usage calculation method determines how the overall usage is calculated when the model contains multiple types of usage. There are currently two supported options - MAXIMUM (take the maximum usage value) or MINIMUM (take the minimum).
Note
This is only intended for use with repeatable activities and cyclic scheduling.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | An identifier for the model. | PK | M |
| usage_calculation_method | String(32) | The calculation method to use when determining usage across different types. Allowed Values: MINIMUM, MAXIMUM | M(MAXIMUM) | |
| description | String(500) | A description for the model. | O |
Entity: Usage_Model_Item (Input)¶
Sets usage limits for the specified class of usage within a usage model.
Note
This is only intended for use with repeatable activities and cyclic scheduling.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| usage_class_id | String(32) | The identifier for the class of usage. Foreign Key: Usage_Class | PK | M |
| usage_model_id | String(32) | The identifier for the usage model this relates to. Foreign Key: Usage_Model | PK | M |
| leeway_always_applies | Boolean | Determines whether the leeway still applies if the operation is carried out before the leeway window. | M(true) | |
| leeway_usage | Double | Defines a 'fixed interval' window during which the operation can be performed and the next required time will not be brought forward. | M(0) | |
| maximum_usage | Double | The maximum usage allowed for this class of usage. | M |
Entity: Usage_Model_SLA (Input)¶
Together these form a usage SLA model which is used to determine the proportion of the operation base value that will be achieved in a given visit, based on the visit times.
Each individual row specifies an SLA Type to use to calculate the base value proportion if the SLA is between the start and end usage proportions. For example, suppose the start usage proportion is 0.8, the end usage proportion is 0.9, and the SLA type is linear and has start proportion 0.5 and end proportion 1, and suppose this is applied to an operation with value 1000. Then when the calculated usage proportion is at 0.8, the visit operation value will be 1000 * 0.5 = 500. When the calculated usage proportion is 0.85, the visit operation value will be 750 and when the calculated usage proportion is 0.9 the visit operation value will be 1000.
Note
This is only intended for use with repeatable activities and cyclic scheduling.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| start_usage_proportion | Double | The usage proportion from which this SLA type applies. | PK | M |
| usage_model_id | String(32) | The identifier of the usage model this relates to. Foreign Key: Usage_Model | PK | M |
| end_usage_proportion | Double | The usage proportion until which this SLA type applies. | M | |
| sla_type_id | String(32) | The identifier of the SLA Type to use. Foreign Key: SLA_Type | M |
Entity: Vehicle (Input)¶
Defines a vehicle which may be used by a resource during a shift.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id for the vehicle. | PK | M |
| co2_emission_rate | Double | Carbon dioxide emission rate of the vehicle per km | O | |
| description | String(2000) | Provides description of the vehicle | O | |
| efficiency_rate | Double | Efficiency rate of the vehicle | O | |
| manufacture_date | Date Time | Manufacture date of the vehicle | O | |
| maximum_range_km | Double | Distance in km a vehicle can travel on a full tank or on a single charge | O | |
| n2o_emission_rate | Double | Nitrous Oxide emission rate of the vehicle per km | O | |
| registration_code | String(64) | Code where vehicle was registered | O | |
| vehicle_model_id | String(32) | Model id of the vehicle Foreign Key: Vehicle_Model | O |
Entity: Vehicle_Capacity (Input)¶
This links a capacity to a vehicle. It is possible for a vehicle to have more than one capacity, representing for example different compartments within a van.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| capacity_id | String(32) | Defines the id of the capacity linked to this vehicle. Foreign Key: Capacity | PK | M |
| vehicle_id | String(32) | Defines the id of the vehicle to which this capacity belongs. Foreign Key: Vehicle | PK | M |
Entity: Vehicle_Class (Input)¶
Defines a class assigned to each vehicle.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id for the vehicle class | PK | M |
| description | String(2000) | Description of the class assigned to each vehicle | O |
Entity: Vehicle_Model (Input)¶
Defines a details of a vehicle model.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id for the vehicle model | PK | M |
| axel_count | Integer | Count of axels in the vehicle | O | |
| co2_emission_rate | Double | Carbon dioxide emission rate of the vehicle per km | O | |
| description | String(2000) | Provides description of the vehicle model | O | |
| efficiency_rate | Double | Efficiency rate of the vehicle | O | |
| fuel_type_id | String(32) | Type of fuel used by the vehicle Foreign Key: Fuel_Type | O | |
| height_metres | Double | Height of the vehicle in meters | O | |
| length_metres | Double | Length of the vehicle in meters | O | |
| make | String(100) | Defines the brand of the vehicle | O | |
| maximum_range_km | Double | Distance in Km a vehicle can travel on a full tank or on a single charge | O | |
| model | String(100) | Defines the model of the vehicle | O | |
| n2o_emission_rate | Double | Nitrous Oxide emission rate of the vehicle per km | O | |
| vehicle_class_id | String(32) | Defines category of the vehicle Foreign Key: Vehicle_Class | O | |
| vehicle_ownership_type_id | String(32) | Type of vehicle ownership Foreign Key: Vehicle_Ownership_Type | O | |
| weight_kg | Double | Weight of the vehicle in kgs | O | |
| wheel_count | Integer | Count of wheels in the vehicle | O | |
| width_metres | Double | Width of the vehicle in meters | O |
Entity: Vehicle_Model_Capacity (Input)¶
This links a capacity to a vehicle model, which will be used by default for all vehicles of this model. It is possible for a vehicle model to have more than one capacity, representing for example different compartments within a van.
Note
If a vehicle has capacity defined directly against the vehicle, then any vehicle model capacity will be ignored.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| capacity_id | String(32) | Defines the id of the capacity linked to this vehicle model. Foreign Key: Capacity | PK | M |
| vehicle_model_id | String(32) | Defines the id of the vehicle model to which this capacity is associated. Foreign Key: Vehicle_Model | PK | M |
Entity: Vehicle_Model_Part_Usage (Input)¶
This specifies a part that will be used by a vehicle of this model while travelling. For example, this may represent battery usage in an electric vehicle. It is possible for a vehicle to use multiple parts.
Note
All parts should be vehicle parts, signified by the is_vehicle_part attribute on the Part row.
Note
A vehicle will use any parts specified against either the vehicle model or directly against the vehicle. Where the same part is specified for both, the usage_per_km will be taken from the Vehicle_Part_Usage.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| part_id | String(32) | The id of the part used by the vehicle. Foreign Key: Part | PK | M |
| vehicle_model_id | String(32) | The id of the vehicle using the part. Foreign Key: Vehicle_Model | PK | M |
| usage_per_km | Double | Sets the usage per kilometre of this part by this vehicle when travelling. | M |
Entity: Vehicle_Ownership_Type (Input)¶
Defines ownership type of the vehicle.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| id | String(32) | A unique id for the vehicle ownership type | PK | M |
| description | String(2000) | Description of ownership type of the vehicle | O |
Entity: Vehicle_Part_Usage (Input)¶
This specifies a part that will be used by a vehicle while travelling. For example, this may represent battery usage in an electric vehicle. It is possible for a vehicle to use multiple parts.
Note
All parts should be vehicle parts, signified by the is_vehicle_part attribute on the Part row.
Note
When calculating the part usage for a journey, the system will multiply the distance in km by the usage_per_km, and then round this up to the nearest whole number.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| part_id | String(32) | The id of the part used by the vehicle. Foreign Key: Part | PK | M |
| vehicle_id | String(32) | The id of the vehicle using the part. Foreign Key: Vehicle | PK | M |
| usage_per_km | Double | Sets the usage per kilometre of this part by this vehicle when travelling. | M |
Entity: Version_History (System)¶
Records the changes made to the database through running create and update scripts.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| version_id | String(32) | The version id of the update | PK | M |
| version_stamp | Date Time | The time of the update. | PK | M |
| version_type | String(32) | The type of update (e.g. create, data update) | PK | M |
| version_user | String(128) | The id of the user applying the update. | M |
Entity: Visit_Operation (Input)¶
Specifies that an operation is carried out during a particular visit. The visit should be a fixed resource and time visit (specified via an activity status row).
Note
This is only intended for use with repeatable activities and cyclic scheduling.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | The identifier for the activity this relates to. Foreign Key: Activity | PK | M |
| operation_id | String(32) | The identifier for the operation that is being carried out. Foreign Key: Operation | PK | M |
| visit_id | Integer | The visit identifier. | PK | M |
Entity: Visit_Part (Input)¶
This specifies which parts have been used on particular visits. It should only be used for visits with status id committed or greater (≥30). Where the resource has gained parts, the quantity shown should be negative. If a Visit_Part is not specified, the DSE will assume that the visit will use (or has used) the exact number of parts that were required. If no Visit_Part is specified for a depot activity, the DSE will assume that it can choose which parts are required for statuses less than completed. For completed visits to a depot it will assume that no parts were gained unless a Visit_Part is specified.
| Attribute Name | Data Type | Description | PK | M/O |
|---|---|---|---|---|
| activity_id | String(32) | Specifies the unique id of the activity. Foreign Key: Activity | PK | M |
| part_id | String(32) | Specifies the unique id of the resource. | PK | M |
| visit_id | Integer | Specifies the unique id of the visit. Notes: When an activity duration spans several shifts then each visit is identified by incrementing the visit id. Value of -1 when not allocated. | PK | M |
| part_usage | Integer | Specifies the number of parts consumed. | M | |
| vehicle_id | String(32) | If populated, this will be the id of the vehicle that the part is taken from or added to. Foreign Key: Vehicle | O |