Agenda

In an Agenda coordination style, also referred to as the blackboard style of coordination, an agent sends a blackboard (always, an object that describes an entity by storing its characteristics as attributes) to multiple agents and components or arrays of agents or components. Once the blackboard is returned (after being updated by agents or components it was sent to), the control is passed to the logic block and after its execution, the blackboard (which might be updated by the logic block also) is re-sent to all participating agents and components. This iteration continues until the condition to come out of the logic block is met. When the condition is met, the blackboard object is set to null. The programmer is expected to provide the break condition to come out of Agenda's logic block.

Syntax: Agenda(agent.method(blackboard, otherparameters), component.method(blackboard, other parameters); [agent[ ] | component [ ]].method(blackboard, other parameters); result) {		// business logic } where,
 * agent and component are instances of type Agent and Component
 * agent[ ] and component[ ] are arrays of type Agent and Component that return all instances of type Agent and Component of the named agent and component existing across the network at that point in time
 * result is a variable that holds a value of type defined by return type of invoked method

Like in the Broadcast style of coordination, __agenda__agent__role and __agenda__agent__id may be retrieved and used in the agenda's logic block. Also, as in Broadcast, methods invoked on different agents and components or arrays of agents and components must have the same signature.

However, unlike in Broadcast, a result must be returned in an Agenda.

Next : Parallel Pipe