Communicative Agent PIM
Specification
Specification Service View > Communicative Agent > Agent > OOState > OOState AgentID agentKB kb
Specification Type View > OOState > WorldObject * > OID > StringOID oid : String > ObjectState > AgentID (from Infra) > Communicative AgentID myID : String
Specification Type View > Message (from Infra) > AskAction oids : OID[*] > TellAction objects : WorldObject[*] > AskAllAction
Realization
Realization Service View > Communicative Agent # processCycle(messages : Message[*]) : Message > Message actions *
Realization Algorithmic View actions = processCycle( agent.getPerceptions()) agent.sendActions(actions) [not actions.isEmpty()]
processCycle(messages : Message[*]) : Message agentKB(sender).worldObject ->includes(m.objects) foreach message m in messages [m.oclIsKindOf(TellAction)] ret.oclIsKindOf(AskAction) and ret.objects = kb.objects-> select(x |m.objects->includes(x.oid)) ret.oclIsKindOf(AskAction) and ret.objects = kb.objects [m.oclIsKindOf(AskAction)] [m.oclIsKindOf(AskAllAction)]