# Mission Control
Looking for information about Jobs?
We have moved our Job APIs into their own section - the Zaikio data platform to represent their importance as the core of our offering. If you've already started integration efforts please don't worry, nothing is broken. We have more details in our Changelog here, or reach out in our community slack for more details.
Mission Control is the ultimate looking glass into what actually is happening in a print shop. Its advanced,
rules based smart lists let printers classify jobs based on intelligent real-world criteria and act on the insights
gained. As if that wasn't already enough, it also enables state-of-the-art production planning with a single click,
as well as shop floor data collection using the Mission Control Shopfloor iPad app.
Mission Control's core feature is the
List, and its API is entirely built around creating Lists, interacting with them
and acting on changes to List membership. Whilst Mission Control offers the production planning and shopfloor features,
other projects can use the same technologies by integrating the Zaikio data platform.
# Why use the Mission Control API?
Rather than building your own rule engines, why not leverage ours? You can always check if an Organisation has Mission Control
installed, and if it does you can create lists that represent meaningful conditions for your application. We would envisage you
then listening to the
list_membership events to be notified whenever a Job or Workstep enters or leaves that condition.
# Data Model
The basic architecture of a List can be seen below. As you can see, a List has one-or-many Predicates - groups of Rules which are either applied exhaustively ("only if ALL of these match") or opportunistically ("if ANY of these match") to determine the membership of the List.
Lists hold a single data type, so need to be specified as a List of
Job resources, or a List of
Workstep resources at
the point of creation. This cannot be changed once created, so to change, simply create a new List of another type.
Predicate is a group of rules, and a pattern with which to apply them. Other than acting as the decision nexus for that
group of rules, they have no particular properties of their own.
Rules are the heart of the Mission Control engine. The combination of a
subject and an
operator that allows checks to be
actioned against resources such as
Workstep records. At their simplest, this could be something like
equal to a value. Some Rule subjects are much more complicated though and allow compound functionalities to be build.
|Applicable rule type
|The name of the Customer record associated, if present
|The kind of an associated Finishing
|Do any finishings have provided File References, for example to provide a foiling path
|When was the Job created
|When must the Job be completed by
|Does the Job have delay data that has not been resolved?
|The kind of the Job, e.g.
|The name of the Job
|The current progress of the job between 0 (none) and 1 (complete)
|How many of a Job should be printed
|The reference fields of a Job
|String array (any will match)
|The source application of the Job
|The current state of the Job
|The position of a Milestone represents the sequence it should be done in, from low (early) to high (late)
|Do any parts have file references present?
|The grammage of substrates within a Job
|The state of any Todo within a Job
|Does a workstep have performed execution data
|Does a workstep have no execution data
|Check whether a workstep has not been scheduled for production
|Check whether a workstep has been scheduled for production
|The kind of a workstep
|Does a Job have worksteps present?
|The state of a workstep
Many rules require a value to check against, but some are dynamically calculated. If a rule contains a time-based date rule
DATE_IS_FUTURE then the list will be recalculated overnight to provide correct data for the following day's operations.
|Applicable value types
|Does this list have the provided value as a member
|Does the number fall inside a range?
|Checks if the array is empty
|Checks if something if present inside the array
|Checks if the date is in the future
|Checks if the date is in the past
|Checks if the date is within the provided number of days
|Checks if the date is today
|Checks if the value matches the value of the subject
|Checks if the value is not the value of the subject
|Checks if the subject is greater than the provided value
|Checks if the subject is less than the provided value
|Checks if the subject begins with the provided string
|Checks if the subject contains the provided string
|Checks if the subject ends with the provided string
|Checks if a value is present
# Sample Data
The following is a sample payload for creating a List. Full details of the API can be found in our OpenAPI browser
"name": "Hardcover Books due today",