Interface ConversationProtocol

All Known Implementing Classes:
ContractNetProtocol, ProposeProtocol, QueryProtocol, RequestProtocol

public interface ConversationProtocol
FIPA Conversation Protocol interface.

Defines the structure and rules for multi-message interactions between agents. Protocols specify valid message sequences and state transitions.

Standard FIPA Protocols

  • fipa-request - Request/response pattern
  • fipa-query - Information query pattern
  • fipa-contract-net - Task delegation via bidding
  • fipa-propose - Negotiation pattern
  • fipa-subscribe - Publish/subscribe pattern

Usage Example


 ConversationProtocol protocol = ConversationProtocol.request();

 // Start conversation
 FIPAMessage request = protocol.createInitialMessage(
     "agent-1", "agent-2", "Please analyze data"
 );

 // Handle response
 if (protocol.isValidResponse(request, response)) {
     protocol.processResponse(response);
 }
 
See Also:
  • Method Details

    • getName

      String getName()
      Gets the protocol name.
      Returns:
      protocol identifier (e.g., "fipa-request")
    • getDescription

      String getDescription()
      Gets the protocol description.
      Returns:
      human-readable description
    • getInitiatingPerformatives

      Set<FIPAPerformative> getInitiatingPerformatives()
      Gets valid initiating performatives for this protocol.
      Returns:
      set of valid initial performatives
    • getValidResponses

      Set<FIPAPerformative> getValidResponses(FIPAPerformative initiator)
      Gets valid response performatives for a given initiator.
      Parameters:
      initiator - the initiating performative
      Returns:
      set of valid response performatives
    • getState

      Gets the current protocol state.
      Returns:
      current state
    • getMessageHistory

      List<FIPAMessage> getMessageHistory()
      Gets message history for this conversation.
      Returns:
      ordered list of messages
    • createInitialMessage

      FIPAMessage createInitialMessage(String sender, String receiver, String content)
      Creates the initial message for this protocol.
      Parameters:
      sender - sender agent ID
      receiver - receiver agent ID
      content - message content
      Returns:
      initial message
    • createResponse

      FIPAMessage createResponse(FIPAMessage original, FIPAPerformative performative, String content)
      Creates a response to a message.
      Parameters:
      original - original message to respond to
      performative - response performative
      content - response content
      Returns:
      response message
    • isValidMessage

      boolean isValidMessage(FIPAMessage message)
      Validates if a message is valid for this protocol.
      Parameters:
      message - message to validate
      Returns:
      true if valid
    • isValidResponse

      boolean isValidResponse(FIPAMessage request, FIPAMessage response)
      Validates if a response is valid for a given request.
      Parameters:
      request - original request
      response - response to validate
      Returns:
      true if valid response
    • getValidationErrors

      List<String> getValidationErrors(FIPAMessage message)
      Gets validation errors for a message.
      Parameters:
      message - message to check
      Returns:
      list of validation errors (empty if valid)
    • processMessage

      void processMessage(FIPAMessage message)
      Processes an incoming message and updates state.
      Parameters:
      message - message to process
    • isComplete

      boolean isComplete()
      Checks if protocol is complete.
      Returns:
      true if conversation is finished
    • isSuccessful

      boolean isSuccessful()
      Checks if protocol succeeded.
      Returns:
      true if completed successfully
    • getResult

      Optional<String> getResult()
      Gets the final result if available.
      Returns:
      optional result
    • reset

      void reset()
      Resets the protocol for reuse.
    • request

      static ConversationProtocol request()
      Creates a FIPA-Request protocol instance.
      Returns:
      request protocol
    • query

      static ConversationProtocol query()
      Creates a FIPA-Query protocol instance.
      Returns:
      query protocol
    • propose

      static ConversationProtocol propose()
      Creates a FIPA-Propose protocol instance.
      Returns:
      propose protocol
    • contractNet

      static ConversationProtocol contractNet()
      Creates a FIPA-ContractNet protocol instance.
      Returns:
      contract net protocol