RSS feed generator

A really simple syndication (RSS) feed generator provides a user access to a set of data in the form of an RSS feed containing an object. The RSS feed generator allows the user to generate a feed definition using any of a user interface, a web based application programming interface, and an HTTP request. The RSS feed generator uses the feed definition provided by the user to generate the RSS feed and exposes the RSS feed in the form of RSS XML data. The RSS feed generator allows a business system to dynamically update the set of data contained in the RSS feed in a manner that allows a user to perform a plurality of functions on the RSS feed.

BACKGROUND

Computers and computer software make up a very important part of modern life and business. In today's business environment, for any organization to stay competitive, it is imperative that it uses computers and software applications to manage data, customers, employees, finances, etc. Business processes and workflows are typically managed using multiple forms of communications and organization. One method used by business organizations to exchange data with their partners, customers, etc., is by use of websites to publish relevant information. Web sites and other types of interactive systems commonly host electronic catalogs for assisting users in locating and evaluating various types of items. The items may, for example, include physical products, journal articles, movie and music titles, downloadable software, services, stock assets, businesses, and/or any other type of item that may be represented in a database. Electronic catalog systems also commonly support the ability for users to conduct various types of item-related transactions, such as purchasing an item, downloading an item, or selling an item.

However, current business systems do not have an easy way to update data and share data with users and other systems without implementing significant integration between various systems. Generally speaking, business data is typically stored securely behind a proprietary application interface or in a proprietary database. Access methods are available for application developers that allow them to build data-level integration and data-access applications. However, designing such data-level integration and data-access applications puts the burden on the end user to clearly specify which business data they need access to, how often they need it, and in what format. Given the information technology (IT) departments' development backlogs it is unlikely that an internal salesperson, let alone an external supplier, will ever see this data feed produced.

Typical solutions for implementing closer data integration include ad hoc query tools, ad hoc reporting tools, and direct database access. However, there are three important problems to keep in mind with respect to such ad hoc solutions. First, a typical user doesn't have the necessary skills to create these queries and reports. This problem puts us back in the IT pipeline. Second, a semi-skilled user has enough knowledge to be extremely dangerous to the application as a whole. There's usually nothing stopping the user from constructing such expensive queries that the application goes to its knees. And third, such ad hoc solutions only work for internal users. There's still no solution for external users to get secure access to the business data. Therefore, there is a need to provide a simpler web service model that allows efficient sharing and updating of data between various business entities.

SUMMARY

A really simple syndication (RSS) feed generator provides a user access to a set of data in the form of an RSS feed containing an object. The RSS feed generator allows the user to generate a feed definition using any of a user interface, a web based application programming interface, and an HTTP request. The RSS feed generator uses the feed definition provided by the user to generate the RSS feed and exposes the RSS feed in the form of RSS XML data. The RSS feed generator allows a business system to dynamically update the set of data contained in the RSS feed in a manner that allows a user to perform a plurality of functions on the RSS feed. The RSS feed generator may provide a snapshot-in-time of a data provides's instance data. A client may treat that instance data as something that may be modified and sent back to a system of record.

An alternate embodiment of the RSS feed generator allows embedding an XSL style sheet processing instruction in the RSS XML data. A client using such RSS XML data may organize or view data using the embedded processing instructions. For example, using such an RSS feed generator a customer relationship management (CRM) software application may provide up-to-date information about various clients to a number of partners in a supply chain.

An alternate embodiment of the RSS feed generator includes a security check module that is used to enforce user level, class level and item level security in providing the RSS feed to the clients. Using the security module, the RSS feed generator may restrict data from the RSS feed to be available to only those clients who have relevant security permission to access such RSS feed data.

Yet another embodiment of the RSS feed generator allows generating RSS feed definition using a user interface where a client may select scope and attributes of an object to be included in the RSS feed. Alternatively, the scope and attributes of such an object may also be specified using an HTTP document or by using an application programming interface dynamically interacting with an RSS feed definition module of the RSS feed generator.

DETAILED DESCRIPTION

Network

FIG. 1illustrates a network10that may be used to implement a RSS feed generator described herein. The network10may be the Internet, a virtual private network (VPN), or any other network that allows one or more computers, communication devices, databases, etc., to be communicatively connected to each other. The network10may be connected to a personal computer12and a computer terminal14via an Ethernet16and a router18, and a landline20. On the other hand, the network10may wirelessly connected to a laptop computer22and a personal data assistant24via a wireless communication station26and a wireless link28. Similarly, a server30may be connected to the network10using a communication link32and a mainframe34may be connected to the network10using another communication link36. As it will be described below in further detail, one or more components of the RSS feed generator may be stored and operated on any of the various devices connected to the network10. For example, the RSS feed generator described in here may include the program code for defining scope of an object to be included in the RSS feed on the mainframe34while the program code for converting an RSS XML feed into XML schema definition format may be implemented on the personal computer12.

Computer

FIG. 2illustrates a computing device in the form of a computer100that may be connected to the network10and used to implement one or more components of a RSS feed generator described herein. Components of the computer100may include, but are not limited to a central processing unit (CPU)102, a memory104, a storage device106, an input/output controller108, and a system bus110that couples various system components including the memory to the CPU102. The system bus110may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.

The memory104may include computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) and random access memory (RAM). A basic input/output system (BIOS), containing the basic routines that help to transfer information between elements within computer100, such as during start-up, is typically stored in ROM. RAM typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit102. The memory104may also be used to store data related to one or more programs codes used by the computer100and/or the RSS feed generator.

The storage device106may typically include removable/non-removable, volatile/nonvolatile computer storage media. By way of example only, the storage device106may include a hard disk drive, a magnetic disk drive, nonvolatile magnetic disk, an optical disk drive, etc. One or more of the forms stored on the memory104may be populated using data stored on the storage device106. The I/O controller may be used by the computer100to communicate with an input device112, which may be a keyboard, a mouse, etc., an output device114, which may be a monitor, a printer, etc.

RSS Feed Provider System

Really simple syndication (RSS) is a family of XML file formats for Web syndication used by, among other things, news websites and web-logs. The term RSS is also known as abbreviation of rich site summary or RDF site summary. Notwithstanding the term used, the RSS technology allows Internet users to subscribe to websites that have provided RSS feeds.FIG. 3is an illustration of a RSS feed provider system200, which may be implemented on the network10. The RSS feed provider system200provides RSS feed to a number of clients202-204based on data located on the RSS feed provider system200. Note that while inFIG. 3, all of the various components of the RSS feed provider system200are shown to be implemented on a single node on the network10, in an alternate implementation, the various components may be located on different nodes on the network10. Moreover, some of the components of the RSS feed provider system200may also be implemented on the nodes hosting the clients202-204.

The RSS feed provider system200includes a database210, an RSS feed definition module212, an RSS feed generator214, an RSS feed publisher216, a web interface218and a security module220. One or more of the modules210-220may be omitted in an alternate embodiment of the RSS feed provider system200. Alternatively, one or more of the modules210-220may also be combined into one another, for example, the RSS feed generator214and the RSS feed definition module212may be combined into one module. As one of ordinary skill in the art would recognize, any of the various modules210-220may be implemented using software, hardware, firmware, or any combination thereof.

Moreover, one or more of the modules210-220may be implemented as part of other well known applications. For example, the database210may be part of a customer relation management (CRM) application, the web interface218may be part of a web hosting software application, the RSS feed definition module212may be part of an online accounting software, etc.

The database210may be any of the various database used by an entity that provides RSS feed of the data from the database210. For example, the database210may be a (CRM) database, a human resources (HR) database, an accounting database, etc. The clients202-204may request RSS feed by communicating with the web interface module218via the network10, such as the Internet, etc. The web interface module218may be implemented by using any of the well known web interface that may interact with various back-end applications. An example of such a web interface module218may be designed using a common gateway interface (CGI) software, etc.

Upon receiving RSS data feed from the RSS feed provider system200, the clients202-204may make such feeds available to other clients, such as clients206-208. Before making the RSS feed available to clients206-208, the client202my further process the RSS feed. For example, the client202may sort the results of the RSS feed, restrict certain parts of the RSS feed from viewing by the clients206-208, add further data to the RSS feed, etc. Moreover, the client202may employ its own version of the RSS feed provider system200to generate and communicate RSS feed to its clients206-208. As one of ordinary skill in the art would recognize, multiple level nesting of such RSS feeds may be implemented.

Now referring toFIG. 4, an exemplary flowchart illustrates functioning of a RSS feed generation program250that may be used by the RSS feed provider system200. The RSS feed generation program250may be implemented using one or more of the various modules of the RSS feed provider system200. The RSS feed generation program250may be initiated in response to a request for RSS feed from one of the clients202-204or it may be initiated by any module of the RSS feed provider system200. For example, in an implementation, the RSS feed generation program250may be initiated by the RSS feed generator214in response to a clock signal, in response to an update to the database210, etc. The RSS feed generation program250may be implemented on the memory104of the computer100in the form of software or alternatively in the form of hardware, firmware or any combination thereof.

Now referring to the flowchart of the RSS feed generation program250, a block252receives a request to generate an RSS feed based on data from the database210. Such a request may be received from the clients202-204via the network10at the web interface218. Such a request received at the web interface218may have various parameters of the requested feed included in it. Alternatively, the web interface module218may direct the request to the RSS feed definition module212to further assist in generating a feed definition. In an embodiment of the RSS feed provider system200, client specific feed definitions may be stored on the RSS feed definition module112. In a yet another embodiment, a client may construct a feed definition and supply the feed definition along with a request for the feed.

The RSS feed definition module212may interact with the client requesting the RSS feed using the network10in a number of different manners. For example, in a particular embodiment, the RSS feed definition module212may request the scope and/or the attributes of the object that is requested by the client. The scope of the object requested by the client may include the number of data fields, an identification of the data source providing the data fields, the names of the data fields, etc. Various attributes of the requested object may include information about which fields are to be sortable, the update time for the field values, etc. For example, the RSS feed request may have a time stamp attached to it specifying the last time the requested object was received and therefore any updates to the object from that time may need to be provided in the RSS feed containing the object.

Subsequently, at a block254, the RSS feed definition module212generates the feed definition that may be used to get data from the database210to generate the requested RSS feed. Note that while in the embodiment of the RSS feed generation program250described in here, the steps of receiving object information and the step of generating feed definition are described as two separate functions, in an alternate environment, these two steps may be implemented together.

The RSS feed definition module212may generate the feed definition using a number of different methods, including, but not limited to, by using a user interface, by using a web based application programming interface, or by using an hypertext transfer protocol (HTTP) request. For example, the RSS feed definition module212may provide a user interface that may be activated by the client requesting the RSS feed where the client may define the scope and the attributes of the requested object by making various selections on the user interface or by inputting information in the user interface.

An example of such a user interface is illustrated by a column customization dialog interface300illustrated inFIG. 5. The column customization dialog interface300allows users to define which columns are to be included in the RSS feed generation definition. For example, a user may add a field to be included in the RSS feed by selecting the column for that field using the “Add Columns” button302of the column customization dialog interface300. Similarly, a user can remove a selected field by highlighting the field to be removed and then selecting the “Remove” button304of the column customization dialog interface300.

Alternatively, the RSS feed definition module212may provide an application programming interface (API) that receives definition of a query, as provided by a client requesting an object, and converts the definition into the format that can be used by the RSS feed definition module212. Yet, alternatively, the RSS feed definition module212may receive the object definition in an HTTP document and extract the object definition from such an HTTP document.

After the generation of the feed definition, at a block256, the RSS feed definition module212may generate an RSS feed with the requested object by converting the feed definition into the RSS feed. To convert the RSS feed definition into an RSS feed, the RSS feed definition module212may define and execute a query on the database210, where the query is defined using the feed definition. The RSS feed definition module212may use a number of predefined query parameterization and construction routines to define the query from the feed definition.

Subsequently, at a block258, the RSS feed definition module212may convert the query results into the RSS feed. There are currently seven RSS formats, of which three formats are widely used and converting results of a query into RSS feed conforming to any of these formats is well known to one of ordinary skill in the art.

At a block260, the RSS feed definition module212may provide the RSS feed to the client requesting the RSS feed. Providing the RSS feed to the client may comprise exposing the RSS feed as a web page using the web interface218. Alternatively, the web interface218may convert the RSS feed into RSS XML data, generate an RSS feed URL for the RSS XML data and communicate the RSS feed URL to the client requesting the RSS feed. The client may incorporate the RSS feed URL into its own web page to expose the query results underlying the RSS feed. Because the RSS feed is constructed as an object with various sortable attributes provided to the client, the client may also sort the data contained in the RSS feed, generate different views based on the RSS feed and/or perform its own queries on the data contained in the RSS feed.

In an alternate embodiment, the RSS feed generator200may expose various RSS feeds available to a client as a web page. Such a web page may display only those feeds to a client for which the client has a permission to view.FIG. 6illustrates an RSS web feed subscription page350that may be used by clients to view various RSS feeds available from a CRM application.

This feature is specifically useful to clients using the RSS feeds to perform various operations. Especially, given the prevalence of RSS readers build into various Internet browsers and the RSS platform built into various operating systems, the RSS feeds provides clients with the choice to combine a query construction model, RSS feed generation model, and a query execution models into one produce. Such a combined product may allow users to construct queries of the business data that they're interested in and access those queries as RSS feeds from any device or application that supports RSS. Such a combined product may also allow a user operating a database to create a query specific to a particular partner or supplier, share that query as a publication, and let the partner or supplier have direct access to data necessary to keep the supply chain full.

In an implementation of the RSS feed generation program250, an RSS feed may include various items, where each feed item may carry with it enough metadata, as defined by RSS, to provide a reasonably rich client-side display. Note that other rendering options are also available. For example, in one embodiment, the metadata related to an item may contain a <description> element containing a short, text-based (sometimes HTML) introduction or synopsis of the item. The item may also have a <link> element that indicates to the client where to find the complete document specified in the item. This leaves all rendering to the client and requests that the user follow the <link> URL to read the entire document.

In another embodiment, an RSS feed may include an XSL style sheet processing instructions (PI) into the RSS XML data. Clients that honor this PI can then leave the ultimate layout and the display of the RSS feed to the RSS feed provider. In such a case, the RSS feed provider has the burden of determining client capabilities (display width, available user input devices, etc.) and of providing a smart style sheet.

As one of ordinary skill in the art would appreciate, not all the blocks of the RSS feed generation program250need to be performed for a given implementation of the RSS feed provider system200. As some of the blocks of the RSS feed generation program250may be used primarily to increase the efficiency of the RSS feed generation program250, one or more such blocks may be omitted in a given implementation without affecting the functionality of the RSS feed provider system200. Moreover, one or more of the blocks in the RSS feed generation program250may also be implemented in an alternate order without affecting the functionality of the RSS feed provider system200.

Thus, many modifications and variations may be made in the techniques and structures described and illustrated herein without departing from the spirit and scope of the present invention. Accordingly, it should be understood that the methods and apparatus described herein are illustrative only and are not limiting upon the scope of the invention.