Communications between content and presentation players

Systems and techniques by which content and presentation players can communicate are described. In one aspect, presentation system for rendering a presentation for a user includes one or more output devices, a presentation including machine-readable descriptions of content and a service request triggering mechanism to trigger a service request, and a presentation player configured to generate a rendition of the presentation at one or more output devices and to respond to the service request with a service response to populate the rendition of the presentation. The service response includes at least one of information characterizing an arrangement of content in the presentation and information characterizing prior navigation of the user through the content of the presentation. The presentation further includes extraction logic to extract relevant information from a response to the service request for addition to the rendition of the presentation.

BACKGROUND

This disclosure relates to communications between content and presentation players in a data processing environment.

Content is the matter treated in a work. In the context of digital works such as a web page or other digital document, content can include text, sound, images, and video components, as well as interactive components such as scroll bars, buttons, and other widgets that allow a human user to navigate through the content. Content can also include interactive and dynamic elements, such as animations provided by the ADOBE FLASH format (Adobe Systems Incorporated, San Jose, Calif.)

A presentation player is a set of data processing activities performed in accordance with the logic of a set of machine-readable instructions to render content for a human user. The rendition can include, e.g., visual, audio, and/or mechanical aspects. Content thus can be rendered using any of a variety of output devices including visual displays (such as monitors, display screens, and the like), audio devices (such as speakers and the like), and/or mechanical devices (such as Braille outputs and the like).

One example of the use of presentation players is in a Learning Management System. A Learning Management System is a set of data processing activities performed in accordance with the logic of a set of machine-readable instructions to implement and/or assess learning or other educational processes. In general, a learning management system can facilitate delivery of educational content, the monitoring of student participation, and the assessment of student performance. In some implementations, a learning management system can provide features by which instructors can develop content and students can interact with each other and/or with an instructor. Such interactive features can include threaded discussions, video conferencing, discussion forums, and the like. The Advanced Distance Learning (ADL) group has created a set of specifications called Shareable Content Object Reference Model (SCORM) to encourage the standardization of learning management systems.

SUMMARY

Systems and techniques by which content and presentation players can communicate in a data processing environment are described.

In one aspect, a method includes rendering a content node in a collection of content nodes for a user, receiving the service request as a consequence of the triggering of the service request by the service request mechanism, performing data processing activities to generate information responsive to the service request, returning the responsive information to the presentation, and updating the rendition of the content node to reflect at least some of the responsive information. The content node includes a service request mechanism that triggers a service request. The responsive information characterizes the disposition of the content node in the collection of content nodes.

This and other aspects can include one or more of the following features. The service request mechanism can be a widget to interact with the user and thereby receive a user selection triggering the service request.

The rendition of the content node can be updated by adding the responsive information to a framework included in the content node. The rendition of the content node can be updated by rendering a table of contents of the collection of content nodes and/or by rendering a collection of content node identifiers arranged to reflect the structure of the collection of content nodes. A table of contents can be rendered with an indicium to reflect the navigation of a user through the collection of content nodes. The indicium can reflect the user having previously completed an assessment node of the collection of content nodes. An indicium can also reflect an attribute of a constituent content node of the collection of content nodes.

In another aspect, a method includes receiving a presentation that includes a collection of content nodes, interacting with a user to navigate through a rendition of at least some of the content nodes of the presentation, maintaining a historical record of the navigation of the user through content nodes of the presentation, receiving a request from the presentation, returning a response describing the historical record of the navigation to the presentation, and rendering the presentation to include one or more indicia indicative of the prior navigation of the user through content nodes of the presentation.

This and other aspects can include one or more of the following features. The table of contents can be rendered with an indicium indicating that the user had previously completed an assessment content node in the presentation, with an indicium indicating that the user had previously visited a content node in the presentation, and/or with an indicium indicating a currently-rendered content node in the presentation.

The method can also include calling a function to generate the response to the request to generate the table of contents and/or returning the response to the request to generate the table of contents to the presentation. The request can be received the request as a consequence of user interaction with a widget in the presentation.

In another aspect, a presentation system for rendering a presentation for a user includes one or more output devices, a presentation including machine-readable descriptions of content and a service request triggering mechanism to trigger a service request, and a presentation player configured to generate a rendition of the presentation at one or more output devices and to respond to the service request with a service response to populate the rendition of the presentation. The service response includes at least one of information characterizing an arrangement of content in the presentation and information characterizing prior navigation of the user through the content of the presentation. The presentation further includes extraction logic to extract relevant information from a response to the service request for addition to the rendition of the presentation.

This or other aspects can include one or more of the following features. The presentation can be configured to add the relevant information extracted from the response to the service request to the rendition of the presentation. The presentation player can include an application program interface to receive and respond to the service request. The presentation player can be configured to respond to the service request with the service response in XML format. The presentation player can be configured to respond to the service request with the service response including information describing a hierarchical arrangement of content nodes in the presentation. The service request triggering mechanism can be a request widget to interact with the user and thereby receive a user selection triggering a service request. The service request triggering mechanism can also be an automatic mechanism that is triggered without user input in response to the rendition of the presentation.

The details of one or more implementations are set forth in the accompanying drawing and the description below. Other features and advantages will be apparent from the description and drawings, and from the claims.

DETAILED DESCRIPTION

FIG. 1is a schematic representation of a presentation system100. Presentation system100includes one or more data processors105, one or more data storage devices110that store presentation data, and one or more input/output devices115. Data processor105can be a data processing device and/or software that performs processing activities in accordance with the logic of a set of machine readable instructions. For example, data processor105can perform processing activities that result in a presentation player120. Presentation player120can receive and interpret content from one or more data storage devices110to create instructions for rendering the content to a user on one or more input/output devices115. The machine readable instructions used to generate presentation player120can be compiled or uncompiled computer code and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language.

In some implementations, the data processing activities of presentation player120can be performed by one or more data processing devices. For example, presentation player120can include a server set of data processing activities (i.e., a “server component”) and a client set of data processing activities (i.e., a “client component”) that exchange information in accordance with one or more data communication protocols. Data processing activities for the server component can be performed at an application or other server. Data processing activities for the client component can be performed at a front end or other client.

In some implementations, during operation, a human user can initially interact with a server component using, e.g., a browser. A client component can be downloaded into the browser and interact with the user during a subsequent rendition of content. Such a client component can provide an application program interface to the content and communicate with the server component as needed (through function calls or otherwise), as discussed further below. For example, presentation player120can be the content player of the SAP LEARNING SOLUTION (SAP AG, Walldorf, Germany).

Data storage device110can store a library of content. Data storage device110can be a local storage device (such as, e.g., a hard drive or a CD associated with a computer) or a remote storage device that is associated with another data processing device. Data storage device110can be, e.g., a file system, a database, a web server, or the like.

The content stored on data storage device110can be organized into presentations. A presentation is a collection of related content nodes that generally share common distinguishing characteristics. For example, courses and/or lessons in a Learning Management System are presentations that are generally adapted to educate students about a subject. The content nodes of a course can, e.g., each address a particular topic or section of a subject covered by a presentation, be designed to test students about the subject, or otherwise be related to the subject. The scope and duration of a content node can vary. For example, a first content node may provide basic information regarding a broad scope of the subject matter being presented, and a second content node may provide more detailed information regarding a narrow scope of the subject matter. Content nodes that provide different levels of detail can be denoted as belonging to classes or categories that describe the level of detail provided. For example, a course content node can provide less detail than a lesson content node. The nature of a content node can vary depending on the type of content. For example content nodes can be text slides, streaming video elements, narrative audio files, and the like.

Content nodes can be organized in a presentation in accordance with the wishes of an instructor or other presentation designer. For example, such a user can select content nodes for inclusion in a presentation, a sequence of the selected content nodes, and an organizational arrangement of the selected content nodes in a presentation structure. For example, in a presentation organized in a linear fashion, the user can arrange content nodes that instruct students about a subject before content nodes that assess students as to their understanding of the subject. As another example, in a presentation organized in a hierarchical structure, a content node with a relatively narrow or detailed topic scope can serve is a child sub-node of a content node with a broader or less detailed scope.

Input/output devices115can provide for interaction with a user. Input/output devices115can render a presentation for the user, e.g., by playing audio content and/or displaying video, graphic, or text content. Input/output devices135can include a visual display device (such as a cathode ray tube or liquid crystal display monitor), a sound-generating device (such as a speaker), a keyboard, and/or a pointing device such as a mouse or a trackball.

Data is communicated within presentation system100over a collection of one or more data link125even if data processors105, data storage devices110, and input/output devices115are physically discrete devices that are remote from one another and/or operated by separate entities. For example, data link125can allow a presentation to be communicated from a data storage device110of a vendor who produces presentations to input/output devices115of a subscriber who has purchased the right to access the communicated presentation. As another example, data link125may allow presentations from multiple data storage devices110to be accessed remotely. Data link125can be any data communication channel, such as the Internet, a LAN, a WAN, a wireless network, and the like.

FIG. 2is a representation of a graphic display200that can be created by presentation player120of presentation system100(FIG. 1) to render content. Graphic display200can be, e.g., a browser window and includes a header205, content rendition area210, and a navigation bar215. Header205can include a title220and/or other information relevant to a presentation that is currently being rendered.

Content rendition area210can be used to render content drawn from one or more content nodes of a presentation for a user. The rendition of content in content rendition area210can invoke one or more mechanisms by which a service request is triggered. The triggering of a service request can be automatic and performed without involvement of a human user or the triggering of a service request can require action by a human user. For example, the rendition of content in content rendition area210can create a one or more service request widgets222for interaction with a human user to trigger a service request.

Navigation bar215includes buttons, scrollbars, or other widgets that interact with a user to allow the user to control the rendition of content in rendition area210. For example, navigation bar215can include a back button225, a forward button230, a table of contents button235, a path button240, a settings button245, a print button250, a help button255, and a logoff button260. Back button225can receive a user selection to render content that had previously been rendered. The previously-rendered content can be, e.g., a previously-viewed content node. Forward button230can receive a user selection to render content that sequentially follows the content currently rendered in content rendition area210. For example, the sequentially-following content can be the next content page in a presentation of content pages. Table of contents button235can receive a user selection to render a table of contents of a presentation currently being rendered in content rendition area210, as discussed further below. Path button240can receive a user selection to render a representation of the user's path through the presentation currently being rendered in content rendition area210. Settings button245can receive a user selection to render a description of the current settings for the rendition of content in content rendition area210. Print button250can receive a user selection to print the content rendered in content rendition area210. Help button255can receive a user section to render advice (such as a help screen) regarding the rendition of content in content rendition area210.

Other navigation bars215can include other widgets that interact with a user to allow the user to control the rendition of content in rendition area210in other ways. For example, when rendering hierarchically-structured presentations, navigation bar215can include widgets that allow a user to move up or down in the hierarchical structure.

With prior presentation players, the displays of content rendition area210and navigation bar215were independent. In particular, the content rendered in content rendition area210was unaware of its disposition in a collection of content and the historical record of a user's navigation through the content. In the context of a presentation, each individual content node lacked information regarding the disposition of that node in the presentation and the historical record of a user's navigation through the presentation. In the context of the Shareable Content Object Reference Model, each Shareable Content Object each object had to be self-contained and therefore lacked information regarding the disposition of that Shareable Content Object in the model and the historical record of a user's navigation through the model.

This independence and lack of information limited the types of content that could be displayed in content rendition area210or otherwise used by the rendered content. For example, content rendition area210could not include information regarding the progress or path of a user through the content since this information was only available to the presentation player but not to content. As another example, content rendition area210could not include information regarding the disposition of a current content node in a presentation. As yet another example, the display in content rendition area210could not be tailored based on the progress or path of a user through the content. This could be useful. e.g., in learning management systems where the type of questions presented during an assessment could change with the path of a user. Moreover, with prior presentation players, there was no communication between the presentation player and the content that would allow such limits to be overcome.

FIG. 3illustrates one implementation of a communication process300between a presentation player305and a presentation310that is being rendered by presentation player305. Communication process300can involve the performance of one or more data processing activities by presentation player305in order to populate the rendition of a presentation310. As discussed further below, in some implementations, additional content can be rendered in presentation310on the behest of presentation310and/or the type of content rendered can be tailored in accordance with factors such as a user's navigation history through presentation310. Additional content can also reflect, e.g., the prior navigation of a user through a presentation, the disposition of a content node in a presentation, or the like.

As illustrated, process300begins with presentation player305rendering zero or more content nodes315,320of presentation310. At some point, a content node325is reached. Content node325includes a service request330that is configured to request a service from presentation player305. Service request330can be activated automatically (e.g., whenever content node325is rendered) or service request330can be activated in response to selection by a user. For example, service request330can be activated by user interaction with a service request widget in content node325itself, i.e., in content rendition area210. In some implementations, service request330can include information specifying which particular service is to be rendered by presentation player305, along with an identifier of presentation310, such as the Uniform Resource Locator (URL) of presentation310. Multiple content nodes in presentation310can include a service request such as service request330. Also, a single content node in presentation310can include multiple service requests.

Once service request330is activated, a service request message335is conveyed to presentation player305. Presentation player305can include an application program interface (API)340that can receive and respond to service request message335. An application program interface (API) is an interface that is provided by an application such as presentation player305to accommodate service requests. An API can include a set of definitions of elements used to accommodate service requests. For example, functions, procedures, subroutines, variables, data structures, and/or class descriptions (hereinafter “functions”) can be defined to provide access to the data processing activities of presentation player305. API340can be, e.g., a SCORM API, such as described in section 3.3.6.1 of the SCORM 1.2 Runtime Environment.

The specific data processing activities in presentation player305accessed by content node325can depend on the function specified by service request message335. For example, as illustrated, presentation player305can include a “GET_TOC” function345. “GET_TOC” function345is a set of data processing activities designed to provide information regarding the table of contents of presentation310and/or the user's navigation through presentation310. If service request message335specifies “GET_TOC” function345, API340calls “GET_TOC” function345with information identifying the currently rendered presentation. API340also receives the information generated by “GET_TOC” function345in response, as illustrated by arrows350.

A variety of different functions can be called by API340in response to different service requests335. For example, a GET_PATH function can be called to generate information regarding a user's path through a presentation. Other functions can be called to determine, e.g., the progress of a user through a presentation, the rate of a user's progress through a presentation, and the like.

API340can format the information generated by “GET_TOC” function345(or any other function) and return a service response355to content node325. The contents of service response355can be used to populate the rendition of content node325. In this regard the rendition of content node325can include data processing activities that populate content node325with the contents of service response355. For example, content node325can include dynamic elements or other intelligence that extracts information from service response355. The extracted information can reflect the activities performed in the rendition of content node325and can be added to a framework or other mechanism for rendition along with other elements of content node325. The tailored and/or additional content, along with other aspects of content node325, can then be rendered for a user by presentation player305.

Although the contents of service response355are used to populate the rendition of content node325, these contents need not be stored with content node325in a data storage device such as data storage device110. Rather, the contents of service response355can be added to a display framework of content node325for rendition and then discarded after use, such as after the next content node is rendered. If content node325is rendered again, a new service request can be made. The new rendition of content node325can reflect response to the new service request.

As discussed above, in some implementations, the data processing activities of a presentation player, such as presentation player305, can be performed by one or more data processing devices. Service request message335, service response355, and/or arrows350can thus involve data communication between remote data processing devices. For example, service request message335can directly call “GET_TOC” function345at a remote application server from content node325. As another example, API240can be provided by a set of data processing activities performed by a client and “GET_TOC” function345can be performed at a server. Service request message335can thus involve local data communications in a client, whereas arrows350can involve data communication with a remote server that performs “GET_TOC” function345.

FIG. 4is a schematic representation of a service response355that can be returned from API340to content node325to populate the rendition of content node325(FIG. 3). Service response355describes the hierarchical arrangement of content nodes in a presentation that is being rendered during the runtime of “GET_TOC” function345.

The illustrated service response355is an XML file400. XML file400can include a description of the hierarchical structure of a presentation, along with a description of the constituent content nodes of the presentation. The description of the constituent content nodes can include information regarding the user's navigation through presentation310. For example, XML file400specifies that a type attribute405, a NodeID attribute410, a SCOID attribute415, a label attribute420, a description attribute425, a level attribute430, a visited attribute435, a completed attribute440, and a current attribute445be returned for each content node of a presentation. Type attribute405can describe the category of a content node, e.g., a course content node, a lesson content node, a module content node, a node content node, or the like. NodeID attribute410can unambiguously identify a content node for use, e.g., in navigating to the content node. SCOID attribute415can unambiguously identify a corresponding shareable content object in a manifest such as an imsmanifest.xml file. If the presentation is not a SCORM course, SCOID attribute415can include another identifiers, such as one based on the sequential numbering of the content node in the corresponding learning net or learning object. Label attribute420generally provides a short name or title of a content node that is tailored to be understood by humans and that can be used in rendering the node. Description attribute425can provide more detailed information regarding a content node in a form that is tailored to be understood by humans and that can be used in rendering the node. In the context of Learning Management Systems, description attribute425can describe the purpose of a content node as, e.g., an “overview” content node, a “definition” content node, an “assessment” content node, or the like. Level attribute430can de scribe the hierarchical level of a content node within a hierarchical presentation. Visited attribute435can be a flag or other information that describes whether a content node has already been opened by a user. Completed attribute440can be a flag or other information that describes whether a content node has already been completed by a user. Current attribute445can be a flag or other information that describes whether a content node is currently being rendered.

Various approaches can be used by data processing activities such as “GET_TOC” function345to populate the values associated with attributes405,410,415,420,425,430,435,440,445in XML file400. For example, some attributes can be copied and/or derived from presentation310itself. Other attributes can be determined from a historical record of a user's navigation through presentation310or through other means. By way of example, in one implementation, type attribute405, SCOID attribute415, label attribute420, and description attribute425can be copied from corresponding fields of content nodes in presentation310. Level attribute430can be derived from the arrangement of content nodes in presentation310. NodeID attribute410can be derived by creating a new unique node ID each time a new rendition of presentation310is generated by the presentation player. Please note that since such a node ID is created for each rendition, such a node ID cannot be hard coded into presentation310. Visited attribute435and completed attribute440can be determined from a historical record of a user's navigation through presentation310. Current attribute445can be determined from such a historical record or even set to a default value when only a single content node is capable of requesting a service from API340.

FIG. 5is a representation of graphic display200as it renders content that has been added by the content. In particular, content rendition area210renders a table of contents505that includes the contents of a service response that has been received from a presentation player.

Table of contents505includes an ordered collection of content node identifiers510,515,520,525,530,535,540arranged to reflect the structure of the current presentation identified by title220. For example, as shown, content node identifiers510,515,520,525,530,535,540can be tabbed or otherwise displaced from a border545to describe the hierarchical arrangement of the corresponding content nodes in the presentation. Other indicia can be used to reflect the navigation of a user through a presentation. For example, previously visited content nodes can be rendered in boldface type, as shown for content node identifiers510,515,520,525,530. Completed content nodes can be underlined, as shown for content node identifier530. A current content node can be rendered in italicized type, as shown for content node identifier535.

Other indicia can be associated with content node identifiers510,515,520,525,530,535,540to reflect other attributes of the identified content nodes. For example, content node identifiers510,515,520,525,530,535,540that identify assessment content nodes can be rendered adjacent to a visual representation of a pen and paper. Timed content nodes can be rendered adjacent to a visual representation of a clock. The type of a content node can be indicated, e.g., by the font size or other indicator.

Table of contents505can thus be rendered in the same window as other content in content rendition area210. However, this is not necessarily the case and in some implementations, table of contents505can be rendered by presentation player in one or more windows in content rendition area210that are visible in parallel with other content. Such a table of contents505can be updated independently and/or in sync with such other content.

Regardless of whether it is rendered in the same or a different window, since table of contents505is rendered by the content (as opposed to the presentation player), table of contents505can be rendered using a technology and a format that is appropriate for that other content. For example, the size and font of table of contents505can be matched to the size and font of other content in content rendition area210and the appearance and readability of table of contents505improved. In other words, different presentations and/or different content nodes can render table of contents505using different visual characteristics.

FIG. 6is a representation of graphic display200as it renders content that has been added by the content. In particular, content rendition area210renders a navigation bar605that includes the contents of a service response that has been received from a presentation player.

Navigation bar605includes a forward widget610, a back widget615, and a current widget620. Forward widget610includes text or other information identifying the next content node in a presentation. Back widget615includes text or other information identifying the previous content node in a presentation. Current widget620includes text or other information identifying the currently rendered content node in a presentation.

Forward widget610, back widget615, and current widget620are not predefined elements but rather reflect the information received in a the service response. In particular, navigation bar605displays information describing the disposition of the currently rendered content node in a presentation as part of the rendered content itself, in contrast with the presentation player navigation that displays such information outside of the content. One or more visual indicia can be associated with forward widget610, back widget615, and current widget620to describe the history of a user's navigation through the presentation. For example, the identifying text in back widget615can be presented in boldface type to indicate that the user had previously visited the previous content node.

Thus, content and presentation players can communicate in a data processing environment. The communication can be used to populate the rendition of a presentation with information relating to the disposition of the content in a collection of content or a historical record of a user's navigation through the content.

A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made. For example, a presentation player can include additional elements such as a web/network server, reporting and tracking data storage and management capabilities, and/or a registration system for registering users (such as students and instructors). Different attributes of a presentation, or a user's navigation through a presentation, can be communicated. Accordingly, other implementations are within the scope of the following claims.