• Exacta Maestro™ Integration Design
  • User Guide
  • GraphQL User Guide
  • FAQ
  • Technical
  • Terminology
Show / Hide Table of Contents
  • GraphQL User Guide
    • Introduction
    • Authentication
    • Schema Organization
    • Building GraphQL Queries
    • Executing GraphQL Queries
    • Executing GraphQL Queries (Legacy)
    • Agent Management
    • Task Management

Agent Management

This guide shows how to create, edit, and delete agents and agent types in Exacta Maestro™. Agents are Exacta Maestro™'s workers in the real world - they execute the tasks in the system. The Agent and AgentType configuration in AgentHub is used to dynamically control many aspects of how Exacta Maestro™ integrates with the real world agents: including how tasks are dispatched, how agents are rendered, and how communication is established.

Agent Types

Agents are grouped into agent types, which are used to define a single configuration strategy for all agents the type. This configuration includes which agent integration layer manages agents of that type, what kind of tasks the agents can perform, and any custom capabilities the agents have. A Bastian Solutions team member will configure agent types during system installation.

Create Agents Workflow

Add Agent Type

# Query

mutation addAgentType($input:AgentTypeInput!) {
  agentHubMutation {
    addAgentType(request: $input) {
      isSuccess
      error
    }
  } 
}

# Variables

{
  "input": {
    "id": "My Agent Type",
    "agentServiceUri": "fabric:/clientId/envId/AgentIntegrationApp/AgentIntegrationService",
    "taskTypes": ["Mission", "ProductPickTask"],
    "allowActiveTaskCancellation": true,
    "allowTrafficControl": false,
    "agentVelocity": 5,
    "maxNumAssignedTasks": 3,
    "payloadPositionTypes": [
      {
        "id": "IB1",
        "maximumWeightInPounds": 20
      }
    ]
  }
}

Get AgentTypes

query getAgentTypes {
  agentHubQuery {
    getAgentTypes {
      id
      agentServiceUri
      taskTypes
      agentVelocity
      allowTrafficControl
      allowActiveTaskCancellation
      activeTaskOverrideEnabled
      customCapabilities {
        key
        value {
          id
          defaultValue
        }
      }
      coordinatePoseTransform {
        axisSwaps
        offset {
          x
          y
          z
        }
        scale {
          x
          y
          z
        }
        pivotOffset {
          x
          y
          z
        }
        rotationAxisSwaps
        rotationOffset {
          x
          y
          z
          w
        }
        invertRotation
      }
      payloadPositionTypes {
        id
      }
      agents {
        id
        # properties {
        #   key {
        #     name
        #     section
        #   }
        #   value
        # }
      }
    }
  }
}

Add Agent

# Query

mutation addAgentOperation($input: AgentInput!) {
  agentHubMutation {
    addAgent(request:$input){
      isSuccess
      error
    }
  }
}


# Variables

{
  "input": {
    "id": "My Agent",
    "type": "My Agent Type",
    "endpointAddress": "192.168.1.1:8123",
    "communicationStack": "StandardAgent"
  }
}

Get Agents

# Query

query getAgentsOperation($input:GetAgentsQueryInput!){
  agentHubQuery {
    getAgents(request: $input){
      id
      type
      endpointAddress
      communicationStack
      payloadPositions {
        id
        taskName
        taskGroupName
        payload {
          id
        }
      }
      payloadPositionsProjection {
        isSuccess
        error
        value {
          id
          taskName
          taskGroupName
          payload {
            id
          }
        }
      }
      properties {
        key {
          name
          section
          type
          tags {
            key
            value
          }
        }
        value
      }
    }
  }
}

# Variables

{
  "input": {
    "agentTypes": [],
    "communicationStacks": []
  }
}

Delete Agent

This query shows how to remove an agent from the system. Exacta Maestro™ will discontinue communication with the agent through its agent integration services, and no tasks will be assigned to the agent.

Delete Agent

# Query

mutation deleteAgentOperation($agentId: String!) {
  agentHubMutation {
    deleteAgent(agentId: $agentId){
      isSuccess
      error
    }
  }
}

# Variables

{
  "agentId": "My Agent Id"
}

In This Article