[docs]classStateRunning(State):""" This class contains the Running state of the common AAS Manager. """
[docs]asyncdefrun(self):""" This method implements the running state of the common AAS Manager. Here all requests services are handled, both from ACL of another AAS Manager or from the AAS Core. """_logger.info("## STATE 2: RUNNING ## (Initial state)")# SMIA is in the Running statussmia_archive_utils.update_status('Running')# On the one hand, a behaviour is required to handle ACL messagesacl_handling_behav=ACLHandlingBehaviour(self.agent)self.agent.add_behaviour(acl_handling_behav,SMIAInteractionInfo.SVC_STANDARD_ACL_TEMPLATE)# On the other hand, a behaviour is required to handle interaction messages# TODO revisar, ya que en el nuevo enfoque no hay AAS Core# interaction_handling_behav = InteractionHandlingBehaviour(self.agent)# self.agent.add_behaviour(interaction_handling_behav)# Besides, the negotiation behaviour has to be added to the agentagent_behaviours_classes=awaitself.add_agent_capabilities_behaviours()# Wait until the behaviour has finished. Is a CyclicBehaviour, so it will not end until an error occurs or, if# desired, it can be terminated manually using "behaviour.kill()".awaitacl_handling_behav.join()# await interaction_handling_behav.join()ifagent_behaviours_classes:# TODO revisar si esto se quiere hacer asi (pensar en las transciones entre estados)forbehav_classinagent_behaviours_classes:awaitbehav_class.join()# If the Execution Running State has been completed, the agent can move to the next state_logger.info(f"{self.agent.jid} agent has finished it Running state.")self.set_next_state(SMIAGeneralInfo.STOPPING_STATE_NAME)
[docs]asyncdefadd_agent_capabilities_behaviours(self):behaviours_objects=[]agent_capabilities=awaitself.agent.aas_model.get_capability_dict_by_type(CapabilitySkillOntologyUtils.AGENT_CAPABILITY_TYPE)forcapabilityinagent_capabilities.keys():ifcapability.id_short=='Negotiation':# The negotiation behaviour has to be added to the agent_logger.info("This DT has negotiation capability.")negotiation_behav=NegotiatingBehaviour(self.agent)self.agent.add_behaviour(negotiation_behav,SMIAInteractionInfo.NEG_STANDARD_ACL_TEMPLATE)behaviours_objects.append(negotiation_behav)elifcapability.id_short=='OtherAgentCapability':# TODO pensarlopassreturnbehaviours_objects