Document toolboxDocument toolbox

Dependency Groups

Booking a Dependency Group

A set of jobs between which there are dependencies is called a dependency group.  Within a dependency group, the dependencies themselves are between pairs of jobs: a target job and a dependent job.  (Because dependencies are symmetrical, either of the two jobs can be chosen as the target job and, consequently, the other as the dependent job.)  There are two types of dependency: a time dependency and an operative dependency. A time dependency is defined in terms of each job’s ETA or ETF (where ETF is when the working part of the job finishes).  The following uses of dependencies have been validated and are described in section 6.8.3:

  • the part pick-up, where a part must be collected before being used on an SLA job, and
  • the two-man crew, where two operatives need to work on a job at the same time.

Dependencies can be specified only between jobs that are in the same FRU.

There are circumstances when a job is booked based on a customer request and then subsequently that job is examined and a decision is made that a dependent job is required (whether it be a part is needed or a helper is needed).  The jobs themselves and the dependencies between them in this case are just the same as in the case when both jobs are booked at the same time (above).  Jobs that are already in ServiceOptimizer must be resourced, otherwise SP_DEPENDENCY_ON_UNRESOURCED_JOB (573) is returned.

Note: The pre- and post-optimization auto-allocation operation ignores jobs that are in a dependency group, i.e. they are candidates for neither allocation nor de-allocation.  However, Importance is used during job booking: a new job in a dependency group can be booked into the schedule in place of a job not in a dependency group of lower Importance Cost, but a job in the schedule that is in a dependency group will never be de-allocated as part of a booking operation.

Example Usage

Part Pick-Up

In the simplest example of a part pick-up, there are two jobs in the dependency group booked at the same time: the main job is an ‘SLA’ type that would otherwise be booked with JobBookRequest (see 6.6), and the dependent job is to pick up a part needed for that SLA from another location such as a parts depot or a drop box. 

The first dependency (time) is that the pick-up job must be done before work can start at the SLA, or, in other words:

  • the part pick-up’s ETF must be earlier than the SLA’s ETA.

There’s no limit on how much earlier the pick-up’s ETF can be than the SLA’s ETA (of which more later).

There is also an operative dependency:

  • both jobs must be done by the same operative.

Two Man Crew

A two man crew is a dependency where there are two jobs to be done at about the same time by more than one operative either at the same location or different locations.

The first dependency is that the working part of both jobs should start at the same time, or, in other words:

  • The two jobs should have the same ETA.

However, to allow for some variance in scheduling, their ETAs should be allowed to differ by a small amount, say 10 minutes.  This will mean that one operative can end up waiting for the other by at most 10 minutes.

There is also an additional dependency:

  • The jobs must be done by different operatives.

 

If the ETAs of the two jobs in the schedule are the same, the target time has been achieved:

 

The earliest time that the dependent job is constrained to be is where its ETA is 10 minutes before the target job’s ETA:

 

The latest time that the dependent job is constrained to be is where its ETA is 10 minutes after the target job’s ETA:

 

There is a cost associated with the two ETAs not being identical, and that cost varies with the difference:

 

These two constraints can be contained in a single JobDep structure. 

In the following example of such an JobDep struct, the SLA is the target job and the pick-up is the dependent job:

Field Name

Pickup Value

Helper Value

DepJobID

e.g: PUjobID

FirstJobID

DepJobsTime

ETF

ETA

TargJobID

e.g: SLAjobID

SecondJobID

TargJobsTime

ETA

ETA

EarliestTime

Not set or 0 (same-day)

-10

EarliestTimeUnits

Not set or Days

Mins

LatestTime

0

+10

LatestTimeUnits

Mins

Mins

TargetTime

Not set

0

TargetTimeUnits

Not set

Mins

CostID

“”

TwoManCrew

DepEmpType

Same

Diff