Overview | Package | Class | Use | Tree | Serialized | Deprecated | Index | Help
| ABLE 2.3.0 07/13/2005 14:21:00
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES

## Package com.ibm.conversation

The com.ibm.conversation package defines the core interfaces of a conversation-management system.

See:
Description

Interface Summary
Conversation | The Conversation interface represents an object that executes one side of a conversation.
ConversationContext | The ConversationContext interface represents the current conversational context of a Conversation.
ConversationManager | The ConversationManager interface represents an object that creates, initializes, and destroys Conversation objects.
ConversationMetaData | The ConversationMetaData interface represents information about both participants in a conversation.
ConversationPolicyHandler | The ConversationPolicyHandler interface represents an object that executes a conversation policy.
ConversationPolicyHandlerFactory | The ConversationPolicyHandlerFactory interface is responsible for creation and initialization of ConversationPolicyHandlers.
ConversationPolicyListener | The ConversationPolicyListener interface processes outputs from a `ConversationPolicyHandler`.
CpState | The CpState interface represents a state in a CpStateMachine.
CpStateMachine | The CpStateMachine interface represents a state machine for a conversation policy.
CpStateMachineHandler | The CpStateMachineHandler interface represents a ConversationPolicyHandler for a conversation policy represented by a CpStateMachine.
CpStateTransition | The CpStateTransition interface represents a transition in a CPStateMachine.
DecisionDataHandle | The DecisionDataHandle interface represents a decision made by, or a decision request sent to, the decision logic.
DecisionLogicAdapter | The DecisionLogicAdapter interface represents the connection between the conversation management system and the decision-making logic.
MessageDescription | The MessageDescription interface represents the description of a message, for the purpose of classifying and transforming it.
MessageHandle | The MessageHandle interface represents a message received by, or to be delivered by, the messaging system.
MessageSystemAdapter | The MessageSystemAdapter interface represents the connection between an agent's conversation management system and its messaging system.
MessageTransform | The MessageTransform interface represents objects that convert between messages and decision data.
MessageTransformFactory | The MessageTransformFactory represents a factory for MessageTransform instances.

Exception Summary
ConversationException | The ConversationException class is a base class for exceptions specifically related to conversation-support errors.

## Package com.ibm.conversation Description

The com.ibm.conversation package defines the core interfaces of a conversation-management system.

Conversations are bilateral exchanges of messages between "agents" (i.e., active software entities capable of sending and receiving messages). Conversations are thought of as being single-threaded: i.e., an agent sends only one message at a time, and the recipient processes them in the order they were sent.

Conversations follow explicit, stateful message-exchange protocols called conversation policies (CPs), which specify what messages may be exchanged and the sequencing and timing constraints on them. CPs are defined in terms of roles played by the participants, in the same way the script of a play defines the roles of the actors. The agents negotiate, at runtime, which CP to execute and which role each should play. During the execution of a CP, each agent independently maintains its own copy of the CP, updating its internal state variables as the conversation progresses.

Each conversation starts with a setup handshake, in which the two participants exchange information pertaining to the conversation (such as conversation IDs and message-delivery endpoint addresses). Typically it also involves the negotiation of the CP to begin executing when the setup is complete. The setup handshake is itself described by a CP.

In any one conversation, any number of CPs may be executed. Some CPs have states in which a "child" CP is specified. When the "parent" CP enters such a state, it suspends execution while the "child" is loaded and executed. When the "child" is done, the "parent" is reactivated.

An agent's conversations management system sits between its messaging system, on the one hand, and its decision-making logic, on the other. These are represented by the `MessageSystemAdapter` and `DecisionLogicAdapter` interfaces, respectively. The decision logic is thought of as being "in charge" of the conversation; the conversation-management system and the messaging system are purely reactive things.

The core interface, around which all the others are defined, is the `Conversation` interface. Each conversation has a separate Conversation object whose job is to enforce the CPs being executed, to transform inbound messages into a form appropriate for the decision logic, and to transform decision-logic output into messages appropriate for the messaging system.

When the agent's messaging system receives a message from the other agent, it passes it on to the appropriate Conversation object. The Conversation then determines whether it is in conformance with the CP being executed. If it is, then the the CP's internal state is updated accordingly, the message is transformed into decision data appropriate to the agent's decision logic, and the decision data is passed on to the DecisionLogicAdapter.

Similarly, when the agent's decision logic makes a decision, it passes the decision's name and any associated parameters to the Conversation. The Conversation matches the decision's name against the possible decisions open to the agent (as defined by the CP being executed). If a match is found, and if the parameters are appropriate to that decision (again, as defined by the CP), the decision data is transformed into a message, which is passed on to the MessageSystemAdapter for delivery.

Overview | Package | Class | Use | Tree | Serialized | Deprecated | Index | Help
| ABLE 2.3.0 07/13/2005 14:21:00
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES

(C) Copyright IBM Corporation 1999, 2005