Table Of Contents

Previous topic

5. Orchestrator - Master Controller

Next topic

6. Messaging System

This Page

5.1. AAL Format

The orchestrator takes its input from an AAL file. This file contains formatted information about the groups used, agents used, events to be sent and trigger to wait/switch on.

streamstarts: [ phase1 ]

eventstreams: {
    phase1: [ E, E, T, E, T, ST ]
    phase2: [ E, E, T, E, T, ST ]
}

agents: {
    name: { agent values }
    name: { agent values }
}

groups: {
    name: [ group nodes ]
    name: [ group nodes ]
}

There are 4 main keys in the AAL body:

  1. groups
  2. agents
  3. streamstarts
  4. eventstreams

5.1.1. Groups

Groups provides a mapping from group name to a list of nodes that should be part of that group. These lists are turned into a series of GroupBuild operations.

5.1.2. Agents

Agents provide a mapping from agent name to a mapping of agent values.

  • code
  • group
  • dock
  • execargs
  • tardata
  • path

These agent maps are turned into a series of LoadAgent operations.

5.1.3. StreamStarts

Streamstarts is a list of key values that map into the eventstreams map. Each value in the streamstarts list will be started in parallel by the orchestrator.

5.1.4. EventStreams

The eventstreams are the lists of events and triggers. Each stream is parsed in linear order and may end in a SwitchTrigger which allows the contiuation of another eventstream based on some state comparison.

5.1.4.1. Events

Events are converted to Method calls and therefore require the destination agent, the method name and the method arguments.

5.1.4.2. Triggers

Triggers are holding points that stop the progression of the event stream until a matching trigger is received from the experiment. They can include a timeout to continue progression without the trigger.

5.1.4.3. SwitchTrigger

SwitchTriggers contain a list of triggers. Each sub trigger is like a regular trigger but it also contains a target value. The first trigger to fire will determing the next course of action.

trigger: {
            timeout,
            event,
            otherargs
    }
switchTrigger: [
            {
                    timeout,
                    event,
                    otherargs,
                    target
            },
            {
                    timeout,
                    event,
                    otherargs,
                    target
            },
            ...
    ]