Method and system for creating pervasive data form reporting

A content syndication system is disclosed where a syndicated data feed entry may include whatever information contributed to the content of that feed entry. Doing so allows business reporting and analytics tools to consume both the feed information (e.g., a summary of a report) and the underlying data (e.g., a collection of database records). A feed-reader application that does not understand the extended feed data (i.e., the information which contributed to the content of the feed entry) simply disregards the extended content. Thus, the extended feeds may be included in email messages, documents and other packaging and delivery mechanisms since no additional information is needed to consume or render formatted content.

BACKGROUND OF THE INVENTION

1. Field of the Invention

Embodiments of the invention generally relate to syndicated data feeds in a networked computing environment. More specifically, embodiments of the invention relate to techniques for including data values and metadata used to generate a feed entry as part of a data syndication feed.

2. Description of the Related Art

During the past few years, web content syndication technology has grown in importance both on the Internet and in private networks. As a result, two popular standards have emerged for syndicating web content, RSS and Atom. Atom is defined by two related standards—the Atom publishing protocol and the Atom syndication format. The two Atom standards provide a feed format for representing (and a protocol for editing) web resources such as weblogs, online journals, wikis, and similar content.

A web feed generally provides a document (e.g., an XML document) with content items which include links to the source of the content. The Atom syndication format defines the syntax of a language for web feeds. In particular, the Atom Publishing Protocol is an HTTP-based approach for creating and editing Web resources. It is designed around the basic operations provided by the HTTP protocol (such as GET, PUT, and DELETE) to pass around instances of an Atom feed and entry documents that represent things like blog entries, podcasts, wiki pages, calendar entries and so on. Since being made available, Atom has been deployed to millions of web sites and is supported by every major syndication platform on the market. RSS, short for really simple syndication, provides many similar capabilities for syndicating web-based content.

SUMMARY OF THE INVENTION

One embodiment of the present invention includes a computer-implemented method for generating a feed entry for a syndicated data feed. The method may generally include receiving feed data to include in an entry in the syndicated data feed. The feed data itself may have been generated from a collection of source data. The method may also include receiving extended feed data to include in the syndicated data feed. The extended feed data may include the collection of source data used to generate the feed data. The method may also include generating, from the feed data and the extended feed data, the entry to include in the syndicated data feed and publishing the entry for the syndicated data feed to a feed server executing in a networked computing environment.

Another embodiment of the invention includes a computer-readable storage medium containing a program which, when executed by a processor, performs an operation for generating a feed entry for a syndicated data feed. The operation may generally include receiving feed data to include in an entry in the syndicated data feed. The feed data itself may have been generated from a collection of source data. The operation may also include receiving extended feed data to include in the syndicated data feed. The extended feed data may include the collection of source data used to generate the feed data. The operation may also include generating, from the feed data and the extended feed data, the entry to include in the syndicated data feed and publishing the entry for the syndicated data feed to a feed server executing in a networked computing environment.

Still another embodiment of the invention includes a system having one or more computer processors and a memory containing a program, which when executed by the one or more computer processors is configured to perform an operation for generating a feed entry for a syndicated data feed. The operation itself may generally include receiving feed data to include in an entry in the syndicated data feed. The feed data itself may have been generated from a collection of source data. The operation may also include receiving extended feed data to include in the syndicated data feed. The extended feed data may include the collection of source data used to generate the feed data. The operation may also include generating, from the feed data and the extended feed data, the entry to include in the syndicated data feed and publishing the entry for the syndicated data feed to a feed server executing in a networked computing environment.

DETAILED DESCRIPTION

Embodiments of the invention are generally directed to a method and system which provide a universal reporting system using, e.g., an Atom feed or other content syndication format. In particular, embodiments of the invention provide a content syndication system where a syndicated feed entry may include whatever information contributed to the content of that feed entry. Doing so allows business reporting and analytics tools to consume both the feed information (e.g., a summary of a report) and the underlying data (e.g., a collection of database records). A feed-reader application that does not understand the extended feed data (i.e., the information which contributed to the content of the feed entry) simply disregards the extended content, while still providing the regular feed content (e.g., the summary in a syndicated Atom feed). Thus, the extended feeds may be included in email messages, documents and other packaging and delivery mechanisms since no additional information is needed to consume or render formatted content.

On the other hand, an extended feed reader may consume the extended feed data and process this information as is appropriate for the needs of a particular case. For example, in a case where the extended data provides a collection of database records, the extended feed reader may store the records in a database on the client, pass the records to an analytics application, populate an OLAP cube, or generate a business report configured according to a report specification (i.e., a description of report content, layout, and a feed producer).

In one embodiment, a feed production application generates (or updates) an Atom feed that includes report metadata, layout data and values to provide sufficient information to reproduce a report referenced by a feed entry in its entirety. For example, where the feed provides a summary of data, the feed entry generated by the application includes that data along with the summary. An extended Atom feed combined with the extended feed reader software may replace the report tool software conventionally needed for report production. Advantageously, therefore, applications created for a variety of display environments, such as mash-ups, portals or dashboards, can render the original report without assistance from the reporting tool itself.

In one embodiment, entries in an extended Atom feed include the metadata needed to independently render a report with all data values. Alternatively, however, the feed entry may include metadata needed to independently render a report with references to the data sources needed to provide report values. Examples of the report values can be traditional data sources like spreadsheets and databases, other Atom feeds or other Extended Atom Feeds.

Further, a particular embodiment of the invention is described using a feed production application, feed server, and extended feed reader configured using the Atom standard as particular example of a universal reporting system. However, it should be understood that the invention may be adapted to for a broad variety of syndication formats such as RSS and other syndication technologies (whether currently known or subsequently developed). Accordingly, references to the Atom syndication format are merely illustrative and not limiting.

FIG. 1illustrates a computing infrastructure100configured for including data values and metadata used to generate feed entries within a content syndication feed, according to one embodiment of the invention. As shown, the computing infrastructure100includes a server computer system105and a plurality of client systems1301-2, each connected to a communications network120.

The client systems1301-2communicate with the server system105over the network120to retrieve a syndicated data feed published by a feed server115on the server computer system105. As noted above, the two main formats currently in use for web feeds are RSS and Atom and embodiments of the invention may be adapted to extend either of these (or other) syndication formats. Each client system1301-2may include a feed reader application configured to retrieve a feed served by the feed server115. For example, client system1301includes a feed reader application140. The feed reader application140may be a plug-in component for a web browser configured to render feed data downloaded from the feed server115. Alternatively, the feed reader application140may be configured as a stand-alone feed reader. In one embodiment, the feed provided by the feed server115is a document (e.g., an XML document) that includes one or more feed entries generated by the feed production application110. In such a case, feed reader application140may connect to the feed server115and determine whether the feed has been updated, based on metadata included in the feed. If new entries are present in the feed, the feed reader application140may retrieve and render such entries for display on the client1301.

Similarly, client system1302includes a business reporting/analysis tool145. In one embodiment, the business reporting/analysis tool145provides a software application configured to parse extended feed data from a feed entry and evaluate it as appropriate in particular case. As shown, the server system105includes the feed server115. Server system105also includes a feed production application110and source data125. In one embodiment, the feed production application110may be configured to generate the feed entries published to a given feed from the source data125. Accordingly, source data125is included to be representative of a broad variety of data sources, e.g., relational databases, OLAP cubes, web services, spread sheets, structured and unstructured documents, etc. In an embodiment using Atom as the syndication format, each feed entry may be included within an <entry> . . . </entry> markup element within the XML document representing a particular feed and the extended feed data may be marked up using whatever mark-up tags are created for use in a particular case to describe the extended feed data (referred to in the Atom standard as foreign markup).

FIG. 2is a more detailed view of the computing system105ofFIG. 1, according to one embodiment of the invention. As shown, the server computing system105includes, without limitation, a central processing unit (CPU)205, a network interface215, an interconnect220, a memory225, and storage230. The computing system105may also include an I/O devices interface210connecting I/O devices212(e.g., keyboard, display and mouse devices) to the computing system105.

The CPU205retrieves and executes programming instructions stored in the memory225. Similarly, the CPU205stores and retrieves application data residing in the memory225. The interconnect220facilitates transmission of programming instructions and application data between the CPU205, I/O devices interface210, storage230, network interface215, and memory225. CPU205is included to be representative of a single CPU, multiple CPUs, a single CPU having multiple processing cores, and the like. And the memory225is generally included to be representative of a random access memory. The storage230may be a disk drive storage device. Although shown as a single unit, the storage230may be a combination of fixed and/or removable storage devices, such as fixed disc drives, floppy disc drives, tape drives, removable memory cards, optical storage, network attached storage (NAS), or a storage area-network (SAN).

Illustratively, the memory225includes the feed production application110and feed server application115, and storage230includes one or more report specifications245, the report source data125, and extended feed document250.

In one embodiment, the feed production application110may be configured to generate a feed from a report, itself generated from one of the report specifications245. As shown, each report specification245includes a set of layout references235and a set of data references240. That is, each report specification245specifies what data should go into a given report, and how that data should be arranged. For example, data references235may provide a number of database queries used to retrieve data from report source data125(e.g. a relational database) which are arranged according to the layout references245. The feed production application110may be configured to generate (or receive) such a report (e.g., a weekly sales report) and from the information, generate an entry to include in extended feed document250.

As noted above, the feed server115may provide an Atom syndication server configured to publish an Atom feed (i.e., an XML document configured according to the Atom syndication format), represented inFIG. 2by the extended feed document250. In one embodiment, each entry in the feed document250(published by the feed server115) may include any information from report source data125which contributed to actual content of that particular feed entry. For example, assume a set of feeds published within a distributed business operation where one of the feeds provides entries which each provide a summary of sales data for a particular group, unit, or region within the distributed business operation (on a periodic basis). In such a case, in addition to feed entries summarizing a report generated from one of the report specifications245(e.g., a weekly sales report), the feed entries may include extended feed data. For example, the extended feed data could correspond to the underlying sales data upon which a given summary entry is based—i.e., to the data retrieved using the data references240of the particular report speciation245(e.g., of the weekly sales report). That is, in one embodiment, each entry in the extended feed document250may include both the entry itself (e.g., an <entry> . . . </entry> element of an Atom feed) as well as include the underlying report metadata, layout data, and data values which contributed to the content of that entry—marked up using a collection of markup tags adapted for the needs of any particular case.

FIG. 3is a more detailed view of the client system130ofFIG. 1, according to one embodiment of the invention. As shown, client system130includes, without limitation, a central processing unit (CPU)305, a network interface315, an interconnect320, a memory325, and a storage330. The client system130may also include an I/O devices interface310connecting I/O devices312(e.g., keyboard, display and mouse devices) to the client system130.

Like, CPU205ofFIG. 3, CPU305is configured to retrieve and execute programming instructions stored in the memory325and storage330. Similarly, the CPU305is configured to store and retrieve application data residing in the memory325and storage330. The interconnect320is configured to facilitate data transmission, such as programming instructions and application data, between the CPU305, I/O devices interface310, storage unit330, network interface305, and memory325. Like CPU205, CPU305is included to be representative of a single CPU, multiple CPUs, a single CPU having multiple processing cores, and the like. Memory325is generally included to be representative of a random access memory. Storage330, such as a hard disk drive or flash memory storage drive, may store non-volatile data. The network interface315is configured to transmit data via the communications network120.

As shown, the memory325stores programming instructions and data, including an extended feed reader140, and a reporting/analysis tool145, and storage330includes extended feed data350and a report specification355. In one embodiment, the extended feed reader140and/or the reporting/analysis tool145may be configured access a feed document published by the feed server115. As noted, such a feed may provide an XML document with markup tags corresponding to the Atom syndication format, i.e., a document with a <feed> element containing one or more <entry> . . . </entry> elements. Further, each entry may include additional data with an arbitrary set of markup, i.e., extended feed data350. In one embodiment, the extended feed data350may provide whatever information was used to generate the syndicated feed entry (i.e., the <entry> . . . </entry> elements in the case of an Atom feed). For example, the extended feed data may provide relational database records, OLAP cube data, spread sheets data, structured and unstructured documents, etc.

The extended feed reader140may parse an Atom feed, and store the extended feed data350in storage330. However, if the same Atom feed is accessed by a conventional feed reader, the extended feed data350may simply be ignored. In such a case, the feed reader would render a display of the feed (i.e., the <entry> . . . </entry> elements in the case of an Atom feed) and disregard the extended feed data350.

In one embodiment, the reporting/analysis tool145may evaluate the extended feed data350as appropriate for a particular case. Continuing with the example of a feed publishing a summary of a report of weekly sales data, the extended feed data350may include all of the data necessary to recreate the original business report (according to report specification355). In such a case, reporting/analysis tool145could be configured to identify trends occurring in sales volumes using the extended feed data350or drill down into the summary report of weekly sales data. Of course, the reporting/analysis tool145may perform a broad variety of data analytics or reporting functions using the extended feed data350, depending on the needs of a particular case. That is, the extended feed data350may be used in a variety of display environments, such as mash-ups, portals or dashboards, etc.

FIG. 4illustrates a method400for generating and publishing an entry for a content syndication feed, where the entry includes extended feed data, according to one embodiment of the invention. As shown, the method400begins at step405where a feed producer generates summary content to include in a syndicated data feed, such as an Atom or RSS feed. In one embodiment, the summary content generated for a feed may be based on a report, the report itself generated from a collection of data sources. For example, as noted above, a report may be defined relative to a report specification which includes data references and layout references specifying what data should be included in a report, as well as an arrangement of that data. At step410, the feed producer identifies report source data associated with the summary. For example, the collection of database records retrieved using queries included in a report specification.

At step415, the feed producer may generate a feed entry from the summary content. For example, the feed producer may generate an <entry> . . . </entry> element for an Atom feed. Additionally, the feed producer may incorporate the report source data identified at step410in the feed entry. In the case of an Atom feed, the feed producer may markup the source data using a set of markup up tags tailored for use in a particular case (referred to in the Atom standard as foreign markup).

At step420, the feed producer publishes the feed entry generated over steps405-415. Continuing with the use of the Atom as an example, the feed producer may add the <entry> . . . </entry> element to the <feed> . . . </feed> element of the appropriate feed document. In such a case, the feed producer would also update the <updated> . . . </updated> element of the atom feed as well. Of course, as noted above, syndication formats other than Atom may be used. Once published, the feed may be accessed by any number of clients, whether capable of processing the extended feed data or not.

FIG. 5illustrates a method500for retrieving entries from a syndicated feed server which includes data values and metadata used to generate the entries, according to one embodiment of the invention. As shown, the method500begins at step505where a feed server receives a request from a client to request a given syndicated feed (e.g., an Atom feed). At step510, the feed server may determine whether the feed has been updated following the latest time the requesting client refreshed the feed. If the feed has not been updated, then at step515, the feed server returns a message to the request indicating that the feed has not changed since the last time the client was updated. Otherwise, at step520, the feed server identifies entries added to the feed since the last time the client was updated. As noted above, such entries may include feed content (e.g., a <summary> . . . </summary> element in an <entry> . . . </entry> of an Atom feed), but may also include extended feed data. In one embodiment, the extended feed includes whatever information contributed to the content of the feed entries identified at step520. For example, the database (or other data) records used to generate the content of the <summary> . . . </summary> element of an Atom feed. At step525, the feed entries identified as step520, and any extended feed data associated with such entries, may be transmitted to the requesting client.

FIG. 6illustrates a method600for processing extended feed data included in an entry retrieved from a syndicated feed server, according to one embodiment of the invention. As shown, the method600begins at step605where a feed reader (or business reporting/analysis tool) receives updated feed entries from a syndicated data feed. At step610, the feed reader determines whether any of the feed entries include extended feed data. If not, then at step615, the feed reader may render the content of the entry (e.g., the data in the <summary> . . . </summary> or <content> . . . </content> elements of an Atom feed entry). Otherwise, at step620, the feed reader parses the syndicated feed entries to identify the extended feed data. Using the example from above where the feed entry provides a summary of weekly sales data, the extended feed data would include the actual sales data used to generate the summary. At step625, the extended feed data may be stored by the client system. For example, if the extended feed data includes a set of database records, then such records may be stored in a database system at the client. And at step630, the extended feed data may be evaluated by applications on the client system, e.g., to build and render a variety of displays such as mash-ups, portals or dashboards—or the original report on which the summary content provided by the syndicated data feed is based.

Advantageously, embodiments of the invention provide a universal reporting system using, e.g., an Atom feed or other content syndication format. In particular, a syndicated feed entry may include whatever information contributed to the content of that feed entry. Doing so allows business reporting and analytics tools to consume both the feed information (e.g., a summary of a report) and the underlying data (e.g., a collection of database records). A feed-reader application that does not understand the extended feed data (i.e., the information which contributed to the content of the feed entry) simply disregards the extended content, while still providing the regular feed content (e.g., the <summary> . . . </summary> content from entries in a syndicated Atom feed).