PHAT-CLIENT TUTORIAL
The following examines the Multi-Agent Management (MAM) packaging hierarchy, as well as some of the most common agent types. PLEASE REALIZE that it is intended primarily for programmers who want to become familiar with the overall architecture of the MAM system in order to start creating custom messages and agents of their own.
Once you have familiarized yourself with the general layout of the packages and what they do, and the various agents utilized by the MAM system, you may want to look more closely at the messaging and agent layers, which will also demonstrate how to create your own customized messages and agent types for integration into the larger system.
QUICK LINKS: Packages and Agent Types
- Package: applications
- Package: edu
- Package: mam
- Package: mamx
- Package: moo
- Package: tutorial
- Common Agent Types
- Phat-Client Tutorial: Menuing and Functionality
- Phat-Client Tutorial: Agent Attributes
- Phat-Client Tutorial: Custom Look & Feel
- Phat-Client Tutorial: [for programmers] Packages and Agent Types
- Phat-Client Tutorial: [for programmers] Messaging and Agent Layers
- Phat-Client Tutorial: [for programmers] MUE/MOO and MAM interfaces
- Phat-Client Tutorial: [for programmers] MUE/MOO Game and Utility Code
- Phat-Client Tutorial: [for programmers] Server-Side Scripts
- Phat-Client Tutorial: [for programmers] MAM UML Documentation
- Phat-Client Tutorial: [for programmers] MAM Javadocs
- PROXY portal
- Package: edu
PACKAGE: applications
The applications package holds applications that utilize the core MAM system components.
applications.proxy
The applications.proxy package holds proxy application, which is our primary realization of a full-fledged application levering the MAM system components. There are in fact a number of interfaces and functionality that fall under this umbrella uber-app.
applications.proxy.dialog
Various dialog windows that are reused within the proxy application.
applications.proxy.graph3dVisualizer
A 3d visualization component that is used to visualize an information personae agent and its associated knowledge agents.
applications.proxy.main
Driver shells for the proxy application. This is where all the startup and application-level processing flow is defined. MamCommunicator, in particular, drives much of the processing.
applications.proxy.quiz
Quiz servlets used for some of the integrated web functionality and modifying agent traits.
applications.proxy.submitter
Search engine submitter utility classes.
applications.proxy.ui
UI interface definitions.
applications.proxy.utils
Proxy application utility classes. A mish-mash of preference classes, value objects, and other classes used by the other portions of the proxy application.
applications.webserver
Implementation of an HTTP web server, along with limited servlet capability. Note, the MAM servlet functionality is not Java servlet standards compliant.
applications.webserver.httpPacketUtils
Utility classes for manipulating and analyzing HTTP packets.
PACKAGE: edu
edu.stanford.ejalbert
Browser launching software, third-party.
PACKAGE: mam
Package containing the core MAM system.
mam.agent
Most the MAM agents reside in this package. Of particular importance are SearchAgent, InformationPersonaeAgent, and UrlKnowledgeAgent. Also, the base class Agent is worth looking at.
mam.agent.economy
Where agent funds get tracked. Provides a method for adjusting agent resources withing MOO from MAM as part of the economic model.
mam.agent.pluginAgentRes
gl4java resources that are used by plugins. The plugins have been written to provide alternative visual interfaces to the MAM system. Plugins can be written and compiled outside of MAM, and then dropped into the top-level 'plugins' directory.
mam.agent.sleepManager
Contains sleep managers that determine the sleep policies for the agents.
mam.id
Globally unique identifiers for the MAM system.
mam.internetworking
Internetworking between hosts on the net. A lot of routing code resides here as well.
mam.internetworking.messages
Messages used for internetworking. Not the same as agent messages.
mam.messaging
Agent messages.
mam.sound
MAM sound system. Uses registry of cached .wav sounds for sharing sounds within the system. Also includes the traited event sounds that play differently depending on the attributes of the player.
mam.test
Old test harnesses for the MAM system.
mam.transaction
Transaction management for the asynchronous agent messaging. By using message waiters, it is possible to chain together multiple requests/responses and offer more complex processing. Long sequential operations still require careful message management on the part of the agent.
mam.utility
Assorted utility classes, including value objects, some string utils, some url utils, and a random selection class.
mam.xml
XML persistence utilities.
PACKAGE: mamx
mamx.vrml
Utilities used to generate VRML representations of the MAM agent space.
PACKAGE: moo
Classes for interacting with MOO environments.
PACKAGE: tutorial
Driver shell for the tutorial application.
COMMON AGENT TYPES
Agent
Base class for the agents in the MAM system. Offers good defaults for most common message responses.
- GetAgentTraitsMessage: retrieves the traits for this agent
- GetAccessStatisticsMessage: retrieves the access statistics for this agent
- SetNicknameMessage: sets the nickname for this agent
- GetAgentPropertiesMessage: retrieves the properties for this agent
- DoAgentShutdownMessage: retrieves the properties for this agent
- SetDescriptionMessage: sets the description for this agent
- GetQuoteMessage: retrieves a witty quote from this agent
AnalyzeAgent
Looks at logs generated by the ListenAgent and analyzes them.
- DoStartMissionMessage: starts the analysis process
InformationPersonaeAgent
The InformationPersonaeAgent represents the cumulative knowledge of a single user of the MAM system. It relies on collaboration with knowledge agents to manage the knowledge.
- DoShowMarketingTextMessage: forwards a marketing message to a local output display
- DoLoginMessage: requests a user login to the InformationPersonaeAgent
- DoAddKnowledgeAgentMessage: links a knowledge agent to this agent
- DoRemoveKnowledgeAgentMessage: unlinks a knowledge agent from this agent
- GetVisualizerNodesMessage: retrieves a data structure optimized for the graph 3d visualizer
- DoQueryKnownAgentsMessage: gets the MamIds of all known collaborating agents in one shot
- DoStreamKnownAgentsMessage: gets the MamIds of all known collaborating agents, but in a streaming fashion
- DoMooCombatDeathMessage: moo combat death event; right now, the consequences are that the knowledge agents are unlinked an pop-quiz TimesShown reset to 0
- EventQueryKnowledgeResultsMessage: used for aggregation in one of the queries
- DoQueryInformationPersonaeAgent: gets the relevent knowledge for a particular query on the agent
- SetLoginInfoMessage: sets the login info for this agent
- EventDeclareKnowledgeMessage: used for aggregation in one of the queries
- DoSetMonitorAgentMessage: sets the monitor agent for this session
- GetMonitorAgentMessage: gets the currently associated monitor agent
- DoAdjustTraitsMessage: adjusts the traits by certain deltas for this agent
- DoModifyTraitsMessage: modifies the traits to specific values for this agent
- DoRestoreTraitsMessage: pops the traits stack for this agent
- EventDeclareFacilityShutdownMessage: starts the shutdown sequence for this agent
ListenAgent
Listens to message activity in the system and logs statistics extracted from the information flow.
- DoAddIdentityMessage: adds an additional identity to listen in on
- DoStartMissionMessage: starts the listening process
MarketingAgent
Markets various knowledge when activated.
- DoStartMarketingMessage: starts the marketing process
- DoEndMarketingMessage: ends the marketing process
- DoRequestMarketingMessage: requests marketing services
- EventDeclareAccessStatisticsMessage: caches access statistics for a marketed agent
MonitorAgent
Monitors URLs for any changes.
- DoAddMonitoredUrlMessage: adds a URL to the monitored list
- DoRemoveMonitoredUrlMessage: removes a URL to the monitored list
- DoAddListenerMessage: adds a listener for changes in monitored URLs
- DoRemoveListenerMessage: removes a listener for changes in monitored URLs
- DoQueryMonitoredUrlsMessage: gets the list of monitored URLs
ProxyMooExporterAgent
Exports knowledge set to MOO.
- DoExportToMooMessage: exports knowledge of an InformationPersonaeAgent to MOO
- EventExportFinishedMessage: checks status of export to MOO
SearchAgent
Coordinates searches all known information personae agents in the internetworked system.
- EventAgentDeathMessage: dead agents are pruned from the known agents list
- EventDeclareAgentPropertiesMessage: declaring agents are added to the known agents list
- EventQueryCompleteMessage: finishes the query messaging chain
- DoQueryMessage: kicks off the query chain
- DoQueryKnownAgentsMessage: gets the known agents list
- EventQueryInformationPersonaeResultsMessage: intermediate results in the query chain
- GetAggregateTraitsMessage: gets the aggregated traits of all agents in the known agents list
SecretAgent
Spies on an InformationPersonaeAgent.
- DoAddIdentityMessage: adds an additional identity to spy on
- DoRemoveIdentityMessage: removes an identity from the spy list
- DoStartMissionMessage: starts the spying
- DoEndMissionMessage: ends the current spying
TransactionalAgent
Base class for transactional agents, which require the services of an integrated message waiter to collect and coordinate multiple responses.
UrlKnowledgeAgent
Agent that manages a set of knowledge, currently represented by a single URL, and knows how to access and query that knowledge.
- GetKnowledgeMessage: gets the knowledge of this agent
- DoQueryKnowledgeMessage: queries the knowledge of this agent
- DoDestroyAgentMessage: kills this agent
WatchAgent
Intermediary agent between the ProxyGL game and the MAM system.
- DoAddIdentityMessage: adds identity to be watched
- DoStartMissionMessage: starts the watch process
- EventQueryMonitoredUrlsResultsMessage: triggers event in the ProxyGL game
- EventDeclareKnowledgeMessage: adds a rock in the ProxyGL game
- EventDeclareAgentPropertiesMessage: adds the InformationPersonaeAgent properties for use in the ProxyGL game
WebServerAgent
Handles interaction between agents and the webserver.
- EventDoLoginResultsMessage: creates a virtual session for the user logged in
- EventDeclareAgentPropertiesMessage: used to associate additional properties to the user
- EventDeclareAgentTraitsMessage: used by traited servlets
Please send comments to nideffer@uci.edu.