Multichannel support is the ability of the toolkit to accept input from and dispatch output to devices of various types, reusing the same implementations of business functions, regardless of the communication protocols involved. This ability extends the applicability of the toolkit to a range of communication protocols and devices, and provides flexibility in a system implementing the toolkit to absorb changes in popularity, diversification, or development of specific channels. A system built exploiting the multichannel capability of the toolkit can have a single server simultaneously handling multiple channels, and business operations can be built once for existing channels, and later shared among requests from different channels.
The realization of multichannel support provided by the toolkit is a set of interfaces and abstract classes, and concrete implementations for the most commonly used or most likely to be requested types of clients. The concrete implementations provided are for Java, HTML, JSF, and Web 2.0. The intended strategy is that new types of clients can be supported by implementing the interfaces or by extending the abstract and concrete classes. These classes form the code base from which support for new channels used by the new types of clients can be built.
At the most generic level, any system receives input from external sources, processes the data from the input, and returns a result back to the source. In a multichannel system that is built using the toolkit, the channel driver receives the input, the request handler processes the input data, and the presentation handler prepares and dispatches the appropriate outgoing response. The channel driver, the main interface for accessing the other multichannel-enabling components, receives incoming requests from an external source, and is specific to the type of client and the communication protocol. The request handler, the interface to the transaction processing engine of the toolkit, invokes an operation or initiates a process, and is specific to the device channel. The presentation handler, the outermost object of the multichannel-enabling components on the server, renders the output response, which it processes from the reply from the operation or process, in the appropriate format for the particular channel driver.
All the client/server connectivity components are implementers of multichannel support.
The schematic drawing of the implementation for the HTTP protocol is provided below. This diagram also shows how the multichannel support entities work with a flow processor (based on the toolkit's Automaton), which is used to control the client dialog interaction. Note that this shows an HTML-specific implementation: the generic multichannel support provided by the toolkit is not dependent on JavaServer Pages (JSPs) or a flow processor.