Search Results for

    Show / Hide Table of Contents

    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.

    • Maestro GraphQL APIs

    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
    In This Article