USOO8606845B2

(12) United States Patent (10) Patent No.: US 8,606,845 B2 Dickinson et al. (45) Date of Patent: *Dec. 10, 2013

(54) RSS FEED GENERATOR 2005/0094779 A1* 5/2005 Kleinfelter et al...... 379.88.12 2005/O131750 A1 6/2005 Kogan et al. 2005/O165615 A1 7, 2005 Minar (75) Inventors: Richard L. Dickinson, Seattle, WA 2005, 0198021 A1 9, 2005 Wilcox et al. (US); Michaeljon Miller, Bellevue, WA 2005/0267973 A1* 12/2005 Carlson et al...... TO9,228 (US) 2006/0173985 A1* 8, 2006 Moore ...... TO9,223 2006/0217126 A1* 9, 2006 Sohm et al. . ... 455.454 (73) Assignee: Corporation, Redmond, WA 2007/0094390 A1* 4/2007 Nussey ...... 709,225 (US) FOREIGN PATENT DOCUMENTS (*) Notice: Subject to any disclaimer, the term of this patent is extended or adjusted under 35 WO WO2005089.336 9, 2005 U.S.C. 154(b) by 1343 days. WO WO2005098675 10/2005 This patent is Subject to a terminal dis OTHER PUBLICATIONS claimer. Santo, Addy. "Santomania:Introducing BlogWave'. http://blogs. msdn.com/asanto/archive/2004/07/21/190667.aspx, Mar. 29, 2006.* (21) Appl. No.: 11/323,226 “Enterprise RSS: A Web Services Framework for Creating and Man aging RSS in the Enterprise', MyST Technological Partmers. Tech (22) Filed: Dec. 30, 2005 nical Brief, published: Mar. 2005.* Stone, Biz. “Blogging: Genius Strategies for Instant Web Content”. New Riders Publishing, publication date: Sep. 11, 2002. ISBN-10: (65) Prior Publication Data O-7357-1299-9.* US 2007/O1568.09 A1 Jul. 5, 2007 “RSS 2.0 Specification (UserLand)'. UserLand Software. Address: http://www.rssboard.org/rss-2-0, publication date: Aug. 19, 2002.* (51) Int. Cl. (Continued) G06F 15/16 (2006.01) G06F 7/30 (2006.01) Primary Examiner — Ashok Patel (52) U.S. Cl. Assistant Examiner — Kevin Bechtel USPC ...... 709/203; 707/706 (58) Field of Classification Search (57) ABSTRACT USPC ...... 709/201 208, 217 219; 707/705 713, A really simple syndication (RSS) feed generator provides a 707/758 759 user access to a set of data in the form of an RSS feed See application file for complete search history. containing an object. The RSS feed generator allows the user to generate a feed definition using any of a user interface, a (56) References Cited web based application programming interface, and an HTTP request. The RSS feed generator uses the feed definition U.S. PATENT DOCUMENTS provided by the user to generate the RSS feed and exposes the RSS feed in the form of RSS XML data. The RSS feed 6,807,558 B1 10/2004 Hassett et al. 2002/0115447 A1* 8, 2002 Martin et al...... 455,456 generator allows a business system to dynamically update the 2004/0225648 A1* 11/2004 Ransom et al. .. set of data contained in the RSS feed in a manner that allows 2004/0225,749 A1* 11/2004 Pavlik et al...... 709/245 a user to perform a plurality of functions on the RSS feed. 2005/0038717 A1 2/2005 McQueen et al. 2005.0075097 A1 4/2005 Lehikoinen et al. 11 Claims, 6 Drawing Sheets

21 Database 200

RSS Feed Generator Publisher

RSS Feed Definition Web Interface Module

Client 208 US 8,606,845 B2 Page 2

(56) References Cited “Urchin RSS Aggregator.” http://urchin. Sourceforge.net/. OTHER PUBLICATIONS “Introducing BlogWave!” Santomania, Jul. 2004. Addys, http:// “Traction Teampage and Communicator Features.” Traction Soft .msdn.com/asanto/archive/2004/07/21/190667.aspx. ware, Inc., 2005, http://www.tractionsoftware.com/prod features. html. * cited by examiner U.S. Patent Dec. 10, 2013 Sheet 1 of 6 US 8,606,845 B2

FIG. 1

U.S. Patent Dec. 10, 2013 Sheet 2 of 6 US 8,606,845 B2

FIG. 2

110 1 O2

106 Storage Device ( ) CPU

/O Controller 118 108 - Memory

104

112 -

Form 114 1OO 116 U.S. Patent US 8,606,845 B2

U.S. Patent Dec. 10, 2013 Sheet 4 of 6 US 8,606,845 B2

250 252: Receive a Request -

254: Generate RSS Feed Definition

256: Generate Queryl Execute Query

258: Convert Query Results to RSS Feed

260: ProVide RSS Feed to Client

FIG. 4 U.S. Patent Dec. 10, 2013 Sheet 5 of 6 US 8,606,845 B2

FIG. 5

300

asix Edit www.wn columns a Web Page DialogM

302

304 U.S. Patent Dec. 10, 2013 Sheet 6 of 6 US 8,606,845 B2

350

retrexplore

welcome to the Microsoft CRM. We F Please select from are cr role of the fossing web

ss

: f Arnouncernert

8 Aerts tent 3.

FG.6 US 8,606,845 B2 1. 2 RSS FEED GENERATOR request. The RSS feed generator uses the feed definition provided by the user to generate the RSS feed and exposes the BACKGROUND RSS feed in the form of RSS XML data. The RSS feed generator allows a business system to dynamically update the Computers and computer Software make up a very impor set of data contained in the RSS feed in a manner that allows tant part of modern life and business. In today's business a user to perform a plurality of functions on the RSS feed. The environment, for any organization to stay competitive, it is RSS feed generator may provide a Snapshot-in-time of a data imperative that it uses computers and Software applications to provides's instance data. A client may treat that instance data manage data, customers, employees, finances, etc. Business as something that may be modified and sent back to a system processes and workflows are typically managed using mul 10 of record. tiple forms of communications and organization. One method An alternate embodiment of the RSS feed generator allows used by business organizations to exchange data with their embedding an XSL style sheet processing instruction in the partners, customers, etc., is by use of websites to publish RSS XML data. A client using such RSS XML data may relevant information. Web sites and other types of interactive organize or view data using the embedded processing instruc systems commonly host electronic catalogs for assisting 15 tions. For example, using such an RSS feed generator a cus users in locating and evaluating various types of items. The tomer relationship management (CRM) software application items may, for example, include physical products, journal may provide up-to-date information about various clients to a articles, movie and music titles, downloadable Software, Ser number of partners in a Supply chain. vices, stock assets, businesses, and/or any other type of item An alternate embodiment of the RSS feed generator that may be represented in a database. Electronic catalog includes a security check module that is used to enforce user systems also commonly Support the ability for users to con level, class level and item level security in providing the RSS duct various types of item-related transactions, such as pur feed to the clients. Using the security module, the RSS feed chasing an item, downloading an item, or selling an item. generator may restrict data from the RSS feed to be available However, current business systems do not have an easy to only those clients who have relevant Security permission to way to update data and share data with users and other sys 25 access such RSS feed data. tems without implementing significant integration between Yet another embodiment of the RSS feed generator allows various systems. Generally speaking, business data is typi generating RSS feed definition using a user interface where a cally stored securely behind a proprietary application inter client may select scope and attributes of an object to be face or in a proprietary database. Access methods are avail included in the RSS feed. Alternatively, the scope and able for application developers that allow them to build data 30 attributes of Such an object may also be specified using an level integration and data-access applications. However, HTTP document or by using an application programming designing such data-level integration and data-access appli interface dynamically interacting with an RSS feed definition cations puts the burden on the end user to clearly specify module of the RSS feed generator. which business data they need access to, how often they need it, and in what format. Given the information technology (IT) 35 BRIEF DESCRIPTION OF DRAWINGS departments’ development backlogs it is unlikely that an internal salesperson, let alone an external Supplier, will ever The present patent is illustrated by way of examples and see this data feed produced. not limitations in the accompanying figures, in which like Typical Solutions for implementing closer data integration references indicate similar elements, and in which: include ad hoc query tools, ad hoc reporting tools, and direct 40 FIG. 1 is a block diagram of a network interconnecting a database access. However, there are three important problems plurality of computing resources; to keep in mind with respect to such ad hoc solutions. First, a FIG. 2 is a block diagram of a computer that may be typical user doesn't have the necessary skills to create these connected to the network of FIG. 1; queries and reports. This problem puts us back in the IT FIG.3 illustrates a block diagram of a RSS feed generation pipeline. Second, a semi-skilled user has enough knowledge 45 system; to be extremely dangerous to the application as a whole. FIG. 4 is an exemplary flowchart of an RSS feed generation There's usually nothing stopping the user from constructing program that may be used by the RSS feed generation system; Such expensive queries that the application goes to its knees. FIG. 5 is an exemplary filter definition screen that may be And third, such ad hoc solutions only work for internal users. used by the RSS feed generation program to define a feed There's still no solution for external users to get secure access 50 definition; and to the business data. Therefore, there is a need to provide a FIG. 6 illustrates an RSS subscription page that simpler web service model that allows efficient sharing and may be used by clients to view various RSS feeds available updating of data between various business entities. from an application.

SUMMARY 55 DETAILED DESCRIPTION This Summary is provided to introduce a selection of con Although the following text sets forth a detailed descrip cepts in a simplified form that are further described below in tion of numerous different embodiments, it should be under the Detailed Description. This Summary is not intended to stood that the legal scope of the description is defined by the identify key features or essential features of the claimed sub 60 words of the claims set forth at the end of this patent. The ject matter, nor is it intended to be used as an aid in determin detailed description is to be construed as exemplary only and ing the scope of the claimed Subject matter. does not describe every possible embodiment since describ A really simple syndication (RSS) feed generator provides ing every possible embodiment would be impractical, if not a user access to a set of data in the form of an RSS feed impossible. Numerous alternative embodiments could be containing an object. The RSS feed generator allows the user 65 implemented, using either current technology or technology to generate a feed definition using any of a user interface, a developed after the filing date of this patent, which would still web based application programming interface, and an HTTP fall within the scope of the claims defining the invention. US 8,606,845 B2 3 4 It should also be understood that, unless a term is expressly being operated on by processing unit 102. The memory 104 defined in this patent using the sentence "AS used herein, the may also be used to store data related to one or more programs term is hereby defined to mean ... or a similar codes used by the computer 100 and/or the RSS feed genera sentence, there is no intent to limit the meaning of that term, tOr. either expressly or by implication, beyond its plain or ordi The storage device 106 may typically include removable/ nary meaning, and Such term should not be interpreted to be non-removable, Volatile/nonvolatile computer storage media. limited in scope based on any statement made in any section By way of example only, the storage device 106 may include of this patent (other than the language of the claims). To the a hard disk drive, a magnetic disk drive, nonvolatile magnetic extent that any term recited in the claims at the end of this disk, an optical disk drive, etc. One or more of the forms patent is referred to in this patent in a manner consistent with 10 stored on the memory 104 may be populated using data stored a single meaning, that is done for sake of clarity only so as to on the storage device 106. The I/O controller may be used by not confuse the reader, and it is not intended that such claim the computer 100 to communicate with an input device 112, term by limited, by implication or otherwise, to that single which may be a keyboard, amouse, etc., an output device 114, meaning. Finally, unless a claim element is defined by recit which may be a monitor, a printer, etc. ing the word “means' and a function without the recital of any 15 structure, it is not intended that the scope of any claim element be interpreted based on the application of 35 U.S.C. S 112, RSS Feed Provider System sixth paragraph. Really simple syndication (RSS) is a family of XML file Network formats for Web Syndication used by, among other things, news websites and web-logs. The term RSS is also known as FIG. 1 illustrates a network 10 that may be used to imple abbreviation of rich site summary or RDF site summary. ment a RSS feed generator described herein. The network 10 Notwithstanding the term used, the RSS technology allows may be the Internet, a virtual private network (VPN), or any Internet users to subscribe to websites that have provided RSS other network that allows one or more computers, communi 25 feeds. FIG. 3 is an illustration of a RSS feed provider system cation devices, databases, etc., to be communicatively con 200, which may be implemented on the network 10. The RSS nected to each other. The network 10 may be connected to a feed provider system 200 provides RSS feed to a number of personal computer 12 and a computer terminal 14 via an clients 202-204 based on data located on the RSS feed pro Ethernet 16 and a router 18, and a landline 20. On the other vider system 200. Note that while in FIG.3, all of the various hand, the network 10 may wirelessly connected to a laptop 30 components of the RSS feed provider system 200 are shown computer 22 and a personal data assistant 24 via a wireless to be implemented on a single node on the network 10, in an communication station 26 and a wireless link 28. Similarly, a alternate implementation, the various components may be server 30 may be connected to the network 10 using a com located on different nodes on the network 10. Moreover, some munication link32 and a mainframe 34 may be connected to of the components of the RSS feed provider system 200 may the network 10 using another communication link 36. As it 35 also be implemented on the nodes hosting the clients 202 will be described below in further detail, one or more com 204. ponents of the RSS feed generator may be stored and operated The RSS feed provider system 200 includes a database on any of the various devices connected to the network 10. For 210, an RSS feed definition module 212, an RSS feed gen example, the RSS feed generator described in here may erator 214, an RSS feed publisher 216, a web interface 218 include the program code for defining scope of an object to be 40 and a security module 220. One or more of the modules included in the RSS feed on the mainframe 34 while the 210-220 may be omitted in an alternate embodiment of the program code for converting an RSS XML feed into XML RSS feed provider system 200. Alternatively, one or more of schema definition format may be implemented on the per the modules 210-220 may also be combined into one another, Sonal computer 12. for example, the RSS feed generator 214 and the RSS feed 45 definition module 212 may be combined into one module. As Computer one of ordinary skill in the art would recognize, any of the various modules 210-220 may be implemented using soft FIG. 2 illustrates a computing device in the form of a ware, hardware, firmware, or any combination thereof. computer 100 that may be connected to the network 10 and Moreover, one or more of the modules 210-220 may be used to implement one or more components of a RSS feed 50 implemented as part of other well known applications. For generator described herein. Components of the computer 100 example, the database 210 may be part of a customer relation may include, but are not limited to a central processing unit management (CRM) application, the web interface 218 may (CPU) 102, a memory 104, a storage device 106, an input/ be part of a web hosting software application, the RSS feed output controller 108, and a system bus 110 that couples definition module 212 may be part of an online accounting various system components including the memory to the 55 Software, etc. CPU 102. The system bus 110 may be any of several types of The database 210 may be any of the various database used bus structures including a memory bus or memory controller, by an entity that provides RSS feed of the data from the a peripheral bus, and a local bus using any of a variety of bus database 210. For example, the database 210 may bea (CRM) architectures. database, a human resources (HR) database, an accounting The memory 104 may include computer storage media in 60 database, etc. The clients 202-204 may request RSS feed by the form of volatile and/or nonvolatile memory such as read communicating with the web interface module 218 via the only memory (ROM) and random access memory (RAM). A network 10, such as the Internet, etc. The web interface mod basic input/output system (BIOS), containing the basic rou ule 218 may be implemented by using any of the well known tines that help to transfer information between elements web interface that may interact with various back-end appli within computer 100. Such as during start-up, is typically 65 cations. An example of such a web interface module 218 may stored in ROM. RAM typically contains data and/or program be designed using a common gateway interface (CGI) soft modules that are immediately accessible to and/or presently Ware, etc. US 8,606,845 B2 5 6 Upon receiving RSS data feed from the RSS feed provider not limited to, by using a user interface, by using a web based system 200, the clients 202-204 may make such feeds avail application programming interface, or by using an hypertext able to other clients, such as clients 206-208. Before making transfer protocol (HTTP) request. For example, the RSS feed the RSS feed available to clients 206-208, the client 202 my definition module 212 may provide a user interface that may further process the RSS feed. For example, the client 202 may be activated by the client requesting the RSS feed where the sort the results of the RSS feed, restrict certain parts of the client may define the scope and the attributes of the requested RSS feed from viewing by the clients 206-208, add further object by making various selections on the user interface or data to the RSS feed, etc. Moreover, the client 202 may by inputting information in the user interface. employ its own version of the RSS feed provider system 200 An example of Such a user interface is illustrated by a to generate and communicate RSS feed to its clients 206-208. 10 column customization dialog interface 300 illustrated in FIG. As one of ordinary skill in the art would recognize, multiple 5. The column customization dialog interface 300 allows level nesting of such RSS feeds may be implemented. users to define which columns are to be included in the RSS Now referring to FIG.4, an exemplary flowchart illustrates feed generation definition. For example, a user may add a functioning of a RSS feed generation program 250 that may field to be included in the RSS feed by selecting the column be used by the RSS feed provider system 200. The RSS feed 15 for that field using the “Add Columns' button 302 of the generation program 250 may be implemented using one or column customization dialog interface 300. Similarly, a user more of the various modules of the RSS feed provider system can remove a selected field by highlighting the field to be 200. The RSS feed generation program 250 may be initiated removed and then selecting the “Remove” button 304 of the in response to a request for RSS feed from one of the clients column customization dialog interface 300. 202-204 or it may be initiated by any module of the RSS feed Alternatively, the RSS feed definition module 212 may provider system 200. For example, in an implementation, the provide an application programming interface (API) that RSS feed generation program 250 may be initiated by the receives definition of a query, as provided by a client request RSS feed generator 214 in response to a clock signal, in ing an object, and converts the definition into the format that response to an update to the database 210, etc. The RSS feed can be used by the RSS feed definition module 212. Yet, generation program 250 may be implemented on the memory 25 alternatively, the RSS feed definition module 212 may receive 104 of the computer 100 in the form of software or alterna the object definition in an HTTP document and extract the tively in the form of hardware, firmware or any combination object definition from such an HTTP document. thereof. After the generation of the feed definition, at a block 256, Now referring to the flowchart of the RSS feed generation the RSS feed definition module 212 may generate an RSS program 250, a block 252 receives a request to generate an 30 feed with the requested object by converting the feed defini RSS feedbased on data from the database 210. Such a request tion into the RSS feed. To convert the RSS feed definition into may be received from the clients 202-204 via the network 10 an RSS feed, the RSS feed definition module 212 may define at the web interface 218. Such a request received at the web and execute a query on the database 210, where the query is interface 218 may have various parameters of the requested defined using the feed definition. The RSS feed definition feed included in it. Alternatively, the web interface module 35 module 212 may use a number of predefined query param 218 may direct the request to the RSS feed definition module eterization and construction routines to define the query from 212 to further assist in generating a feed definition. In an the feed definition. embodiment of the RSS feed provider system 200, client Subsequently, at a block 258, the RSS feed definition mod specific feed definitions may be stored on the RSS feed defi ule 212 may convert the query results into the RSS feed. There nition module 112. In a yet another embodiment, a client may 40 are currently seven RSS formats, of which three formats are construct a feed definition and supply the feed definition widely used and converting results of a query into RSS feed along with a request for the feed. conforming to any of these formats is well known to one of The RSS feed definition module 212 may interact with the ordinary skill in the art. client requesting the RSS feed using the network 10 in a At a block 260, the RSS feed definition module 212 may number of different manners. For example, in a particular 45 provide the RSS feed to the client requesting the RSS feed. embodiment, the RSS feed definition module 212 may Providing the RSS feed to the client may comprise exposing request the scope and/or the attributes of the object that is the RSS feed as a web page using the web interface 218. requested by the client. The scope of the object requested by Alternatively, the web interface 218 may convert the RSS the client may include the number of data fields, an identifi feed into RSS XML data, generate an RSS feed URL for the cation of the data source providing the data fields, the names 50 RSS XML data and communicate the RSS feed URL to the of the data fields, etc. Various attributes of the requested client requesting the RSS feed. The client may incorporate the object may include information about which fields are to be RSS feed URL into its own web page to expose the query sortable, the update time for the field values, etc. For example, results underlying the RSS feed. Because the RSS feed is the RSS feed request may have a time stamp attached to it constructed as an object with various sortable attributes pro specifying the last time the requested object was received and 55 vided to the client, the client may also sort the data contained therefore any updates to the object from that time may need to in the RSS feed, generate different views based on the RSS be provided in the RSS feed containing the object. feed and/or perform its own queries on the data contained in Subsequently, at a block 254, the RSS feed definition mod the RSS feed. ule 212 generates the feed definition that may be used to get In an alternate embodiment, the RSS feed generator 200 data from the database 210 to generate the requested RSS 60 may expose various RSS feeds available to a client as a web feed. Note that while in the embodiment of the RSS feed page. Sucha web page may display only those feeds to a client generation program 250 described inhere, the steps of receiv for which the client has a permission to view. FIG. 6 illustrates ing object information and the step of generating feed defi an RSS web feed subscription page 350 that may be used by nition are described as two separate functions, in an alternate clients to view various RSS feeds available from a CRM environment, these two steps may be implemented together. 65 application. The RSS feed definition module 212 may generate the feed This feature is specifically useful to clients using the RSS definition using a number of different methods, including, but feeds to perform various operations. Especially, given the US 8,606,845 B2 7 8 prevalence of RSS readers build into various Internet brows dynamically updating the set of data; ers and the RSS platform built into various operating systems, dynamically receiving from a client, via an application the RSS feeds provides clients with the choice to combine a programming interface, a definition of a query request query construction model, RSS feed generation model, and a ing an object, the object having: query execution models into one produce. Such a combined 5 a defined scope, wherein the defined scope comprises: at product may allow users to construct queries of the business least one of a number of data fields included in the data that they're interested in and access those queries as RSS object from the set of data, an identification of the data feeds from any device or application that supports RSS. Such Source providing a data field, or the name of a data a combined product may also allow a user operating a data field, and base to create a query specific to a particular partner or Sup 10 defined attributes, wherein the defined attributes com plier, share that query as a publication, and let the partner or prise at least one of information identifying which Supplier have direct access to data necessary to keep the fields are sortable, or an update time for the field Supply chain full. values; In an implementation of the RSS feed generation program converting the definition of the query to an RSS feed defi 250, an RSS feed may include various items, where each feed 15 nition; item may carry with it enough metadata, as defined by RSS, to querying the database using the RSS feed definition; provide a reasonably rich client-side display. Note that other converting results from the query to an RSS feed including rendering options are also available. For example, in one the requested object; embodiment, the metadata related to an item may contain a publishing the RSS feed to the client; element containing a short, text-based (some providing a user interface enabling a user to further define times HTML) introduction or synopsis of the item. The item the scope and attributes related to the requested object may also have a