- From: James A. Larson <jim@larson-tech.com>
- Date: Thu, 21 Jul 2005 09:14:11 -0700
- To: www-voice@w3.org
- Message-ID: <42DFC9D3.6060309@larson-tech.com>
DFP (Data-Flow-Presentation) Framework
Date: 20050710
1. DFP Overview
The DFP (Data Flow Presentation) framework is an emerging architecture
developed by the Voice Browser Activity <http://www.w3.org/Voice/>. The
framework explains how Voice Browser specifications can be used together
to create modular voice applications.
The framework is composed of three layers:
Data
A component in the data layer manages data for the application. Data
is stored in a canonical format. The data representation language
has not yet been decided, but most likely a hierarchical XML
representation will be used to hold different kinds of data - for
example, ranging from environment data to domain-specific data used
for canonicalization to EMMA for holding interpretations as well as
interaction history to track user inputs.
Flow
A component in the flow layer controls the application flow. It does
so by interacting with data and presentation layers.
A flow component does not directly interact with the user. Rather,
it requests user interaction by invoking a component on the
presentation layer; the invocation may include data derived from the
data component. When information is returned from a presentation
component, the flow component can then update the data
representation in a data layer component. The flow component is
responsible for marshalling this data into the canonical format used
by the data component.
Application flows may be structured in terms of a state machines or
other appropriate techniques such as rules, scripts, etc. Voice
Browser languages to describe application flow include CCXML
<http://www.w3.org/TR/ccxml/> and SCXML <http://www.w3.org/TR/scxml/>.
Presentation
Components on the presentation layer interact with the user; for
example, by playing media files and synthesized speech, and by
accepting speech and DTMF input from the user.
A flow component invokes a presentation component with data from the
data layer. A presentation may have a local data representation
which persists for the duration of the active presentation. During
the presentation, the presentation, flow and data components may
exchange further information. The flow component may also cancel an
active presentation. Once a presentation is complete, the
presentation component indicates this to the flow component; this
indication may include data collected, or derived from, user input
and interaction.
Voice browser languages for user presentation include VoiceXML 2.0
<http://www.w3.org/TR/voicexml20/>, VoiceXML 2.1
<http://www.w3.org/TR/voicexml21/> and VoiceXML 3.0 (in preparation
- see under VoiceXML on Work Under Development in the Voice Browser
Activity <http://www.w3.org/Voice/> ).
2. Relationship to other Approaches
The DFP framework is an instance of Model-View-Controller (MVC) design
pattern: the data layer instantiates MVC's model, the flow layer
instantiates the controller, and the presentation layer instantiates the
view.
The DFP framework is also intended as a voice-centric instance of the
Multimodal architecture <http://www.w3.org/TR/mmi-arch/> developed by
the Multimodal Interaction Activity <http://www.w3.org/2002/mmi/> (MMI).
The data layers are identical, the MMI's runtime framework corresponds
to the flow layer, and MMI's modality components to DFP's presentation
components. Ongoing collaboration between the activities will further
refine and clarify the alignment between these approaches.
3. Interface between Flow and Presentation Layers
The interface between flow and presentations components is defined in
terms of invocation requests and their responses, as well as
asynchronous notifications. In each case, these can be modelled as
events, where the event has an event name and a data payload. The
payload is modelled in terms of property name value pairs, where the
name is a string, and the value can be an atomic type (e.g. string,
integer or boolean) or a complex type (e.g. a nested properties
structure). The precise format of the data payload is not yet decided.
A flow component can invoked a presentation by sending a 'start' event.
The event needs to include sufficient information to start the
presentation; for example, it may include a URI referencing a VoiceXML
script and may also include information which is passed to this script
upon initiation.
Once the presentation is started, a flow component may cancel the
presentation by issuing a 'stop' event. Otherwise, the presentation runs
until completion and a 'stopped' event is returned from the presentation
to the flow component. The stopped event may include data collected
during the presentation with the user. Prior to the presentation being
stopped, the flow and presentation components may send each other
'update' events.
An example of this interface is where a CCXML component is a flow
component and VoiceXML 2.1 is a presentation component. At some stage in
the application flow, the CCXML script starts a VoiceXML presentation by
executing a <dialogstart> element with a src attribute indicating the
script to run. Once the presentation has completed, a dialog.exit event
is returned to the CCXML component.
More advanced interaction with the presentation is possible in the DFP
framework than is currently permitted with VoiceXML 2.0/2.1.
Consequently, VoiceXML 3.0 may be enhanced with capabilities such as:
* VoiceXML dialogs are cancelleable
* VoiceXML dialogs can received events from the flow layer during
execution. These events are exposed in the presentation markup.
* VoiceXML dialogs can send events to the flow layer during
execution. These events are speicified in the presentation markup.
4. Benefits
With the DFP framework, developers are able to structure their
application in a modular manner, where data, flow and presentations are
expressed in components at the appropriate layer.
An application's flow can be expressed in terms of states in a flow
component: for a given state, a presentation component is invoked and
the results returned from presentation component triggers state
transitions in the flow component. This enables a clear separation of
flow from presentation within the application, and faciliates
development of reusable presentation components (such as parameterized
VoiceXML <form>s for credit-card collection, scrollable lists, etc)
which can be invoked from a variety of application flow components.
Application developers can also take advantage of flow components which
support parallel invocation of presentations. For example, a SCXML flow
component may start three presentation components executing at the same
time; one presentation component presents background music, another
continuously listens for an attention word, and the third component
presents the application whose name is spoken by the user after speaking
the attention word.
Finally, the framework promotes, but does not mandate, various
application practises. The strong implication is that markup on each
layer should only express what is appropriate at that layer. For
example, presentation layer components should not express 'flow'
concepts such as 'goto'. So instead of writing a single large VoiceXML
presentation which uses <goto> to navigate between application states
expressed as <form>s, the application could be written as a flow
component and a set of 'micro-dialog' presentation components. For
example, a CCXML/SCXML flow component which has a set of states
corresponding to application states, together with a set of (reusable)
VoiceXML presentations composed of a single VoiceXML <form> to interact
with the user and return results to the flow component's states. This
modular approach faciliates application development, maintainance,
debugging and reuse.
Received on Thursday, 21 July 2005 16:14:23 UTC