Brief description of Galatea architecture and the protocol
- The aim of the design
- To make several modules are decentralized with several machines, and cooperate
- Readability like the shell script
- Protocols and conventions
- module names: "@SRM", "@SSM", "@AM-MCL", etc.
- example of the message: "to @SRM set Run = START"
- for "inq (Name)", a reply called "rep (value)" is performed
- simple information dispatch: "From @xxx tell (msg)"
- broadcast
- Treat a transmitted message without specifying a receiver
- The output from each module "From @xxx"
- "From @xxx to @yyy" then send to yyy
- "From @xxx to @yyy,zzz" then send to yyy,zzz
- without "to @xxx" then send as broadcast
- the modules receiving bloadcast are specified in am.conf
- Note: this specification is different from galatea-linux-ipa.
It was implemented in AgentManager-gdm.pl
- Property setting: "prop"
- For example, it is used for the switches of log output mode
The implementation of the module in Galatea Dialog Studio (DS)
DS itself behaves as the @DM module, and can also offer virtual modules.
- External submodule
- Java class group
- implemented as a Java class inside of DS.
- examples: @SIM @SND
- one-shot process group
- example: @GRM
- Whenever a certain function is used, DS starts a subprocess.
- Communicate by file I/O.
- The input-output of the subprocess is not Galatea protocol.
- resident process group (no protocol conversion)
- example: Implementation of @SSM for Windows mode
- Start gtalk for a subprocess. gtalk continues running.
- gtalk communicates with standard input-output in Galatea protocol.
- resident process group (with protocol conversion)
- example: @SRM (Dialog Studio 2.2.4)
- Start julius for a subprocess. julius continues running.
- julius runs with a server mode.
- The socket client corresponding to julius server is implemented as Java class.
- A wrapper class converts the input-output of julius server into Galatea protocol.
The architecture of the dialog control system
- DocLoader
- fetch of an HTTP resource or a local file, and pass it to a DOM parser
- Carry out session management with CookieManager of Java 6 in HTTP.
- Doc group: Convert VoiceXML into a StateMap form.
- Implemented a parser of VoiceXML in Relaxer
- Convert it into StateMap by Visitor design pattern of Relaxer
- IC (InteractionController) : interpreter of StateMap.
- Perform variable management and branch processing in JavaScript (Rhino) instance.
- The input from modality is preprocessed in SIM.
The converted description is interpreted in Rhino.
- Manage the event queue of input and output
- Manage the state model: for example, wait until completed after starting the output.
- Command group: commands executed in each state of StateMap
- OutItem group: classes which hold the contents which output Command group should output
- if use NativeOutItem, it can transmit any command as "to @XXX set XXX" form
- The output contents are evaluated in Rhino before sending
- BreakOutItem: pseudo-output. Wait only at a certain time.
- GrammarOutItem: pseudo-output. Operate the grammar compiler, i.e. @GRM.
- DeviceManager: Distribute communication with @XXX to a virtual module
- Implementation by the Chain of Responsibility design pattern