Conversation Design Pattern
Original Publication Date: 1997-Sep-01
Included in the Prior Art Database: 2005-Apr-01
Furusawa, O: AUTHOR [+3]
Disclosed is a new software design pattern named "Conversation". This design pattern will be used in a procedural language (such as C++, Java) to implement a conversation mechanism among software agents. Like other design patterns, by using this "Conversation" pattern, software developers can save time at many occasions in software development.
Conversation Design Pattern
a new software design pattern named
"Conversation". This design pattern will be used in a procedural
language (such as C++, Java) to implement a conversation mechanism
among software agents. Like other design patterns, by using this
"Conversation" pattern, software developers can save time at many
occasions in software development.
An act of conversation of human beings consists of the
1. A speaker prepares the content of speech to convey his/her
intention to a listener.
2. The speaker starts to speak.
3. The listener listens to the speech, understands context
of the speech.
4. Imagines the background based on his/her own experience.
5. And understands the content of the speech.
6. As a result, takes some action.
This was realized in a software agent system.
If described in the order of usual design pattern, it
will be like
conversation system to realize a conversation among
software agents through an agent communication language, such as
Knowledge Query and Manipulation Language (*).
By making a
conversation among software agents be a pattern,
develop a reusable design to process a communication language that is
more intelligent than a primitive message passing, such as window
messaging used in the current gui-based operating systems.
Fig. 1 The flow of acl message that is being sent.
The design pattern "Conversation" includes the
(0) Agent: This is the application to use this Conversation
(1) Agent Communication Language Manager: This component has
public interfaces to Conversation System(13). It has
sendMessage(ACL msg) and handleMessage(ACL msg),
sendMessage(ACL msg) is used to send an acl message
to a listener that is described in the acl message
itself. handleMessage(ACL msg) is used to handle an
incoming message from network.
(2) Conversation Thread Controller: This component controls the
multiple number of ConversationThreads(11) according to
:reply-with and :in-reply-to keywords that are used to keep
the order of the message in a sequence of a conversation.
(3) Message Logging Component: This is used to log a sequence
of acl messages in a conversation. This is referred to by
Conversation Policy check Component(6) to validate the
sequence of the conversation.
(4) Identifier generator: This generates IDs that are filled
into a field in an acl message.
(5) Conversation Policy check Component Loader: This loads
a Conversation Policy check Component according to the
message type i...