Bastian Maestro Export Adapter Application
Overview
The Bastian Maestro Export Adapter is a ServiceFabric application which can be used to export the state of Maestro to external systems. There are a few standard protocols and a standard notification API, but the system is built to be easily extendable as needed.
Standard Protocols
The following protocols can be used to monitor state changes within Maestro
GraphQL
Clients are always capable of polling for Maestro state over HTTPs: almost every service exposes a GraphQL server which can be used to get snapshots of state.
SignalR
The SignalR flavor of Bastian Maestro Export Adapter is the standard offering for Maestro to push notifications to clients. Under the hood SignalR is just a message spec on top of HTTP & WebSockets, as well as a suite of class libraries (in many languages) to simplify communicating over the spec.
TCP
This option is no longer supported, it pre-dates the Maestro Export Adapter framework and application. The original primitive implementation of Task state change notifications used a simple TCP connection directly from the backend service.
Notification API
The Maestro Export Adapter API is extendable as needed per project. However, the following payloads are part of the standard API, and should almost always be available.
Agent Updated
The AgentUpdated
notification is sent out whenever there is a change to the state of a Maestro Agent.
Agent Updated Arguments
Name | Type | Description |
---|---|---|
AgentId | string | The name of the agent the update applies to |
AgentTypeId | string | The name of the type that the updated agent belongs to |
MaestroStatus | string | The updated status of the agent |
MaestroStatusReason | string | The reason for the updated status of the agent |
Timestamp | DateTime (UTC) | The UTC time that the state transition notification was initialized |
Task Updated
The TaskUpdated
notification is sent out whenever there is a change to the state of a Maestro task: including task creation, assignment, un-assignment, dispatching, and ending.
Task Updated Arguments
Name | Type | Description |
---|---|---|
TaskName | string | The name of the task the update applies to |
TaskGroupName | string | The name of the group that the updated task belongs to |
TaskType | string | The type of the task |
TaskAssignmentStatus | enum | The status of the task as it relates to assignment to a specific agent |
TaskExecutionStatus | enum | The status of the task at it relates to being dispatched and executed |
AgentId | string (nullable) | The name of the agent assigned to the task. Will be null unless the task is assigned |
AgentTypeId | string (nullable) | The name of the agent assigned to the task. Will be null unless the task is assigned |
MissionName | string (nullable) | The name of the parent mission associated with the task. Will be null unless the updated task is a child of a mission |
OnHold | bool | Whether or not the task is currently on hold |
TaskDuration | float | The amount of time that the task took from dispatch till ending. Will be 0 until the task is ended |
Timestamp | DateTime (UTC) | The UTC time that the state transition notification was initialized |
UserId | string | The name of the user / app / service / process that initiated the state transition |
Reason | string | The reason for initiating the state transition |
Location Updated
The LocationUpdated
notification is sent out whenever there is a change to the state of an inventory location in THive SSAM or Maestro Inventory. These only notify about container state transitions, not creation / removal of inventory locations nor reservation state transitions.
Location Updated Arguments
Name | Type | Description |
---|---|---|
LocationId | string | The name of the location the update applies to |
OldContainerId | string | The name of the container that was previously in the location. May be an empty string |
NewContainerId | string | The name of the container that is now in the location. May be an empty string |
Timestamp | DateTime (UTC) | The UTC time that the state transition notification was initialized |
UserId | string | The name of the user / app / service / process that initiated the state transition |
Reason | string | The reason for initiating the state transition |