Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

A computer-implemented template provides a structure for a document. The template may provide zero or more region definitions and zero or more placeholders. Region definitions may be associated with data provided in data providers. There are two types of data providers, namely software data providers and non-software data providers. Software data providers provide data through the execution of software code, whereas non-software data providers do not execute software code. A rendering engine renders the template pursuant to a rendering strategy. If a region definition in a template is associated with a region in a single data provider, the rendering engine replaces the region definition in the template with the located region. If a single region definition is associated with two or more regions, the rendering engine and the rendering strategy decide which region to use based upon a predetermined strategy. The placeholders in the template are replaced during the rendering process by...

InventorsMichael J. Sikorsky, Robert Shaw
Original AssigneeThoughtworks, Inc.
Primary Examiner: Sanjiv Shah
Attorney: Kirschstein, et al.
Current U.S. Classification715/205; 715/210; 715/233; 715/234
International Classification: G06F/1700; G06F/1724

View patent at USPTO
Search USPTO Assignment Database

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US6055522Jun 19, 1997Apr 25, 2000FutureTense, Inc.Automatic page converter for dynamic content distributed publishing system
US6064397Sep 8, 1995May 16, 2000Agfa Gevaert N.V.Method for creating multiple documents having identical background regions and page specific image regions
US6137483Nov 27, 1996Oct 24, 2000Matsushita Electric Industrial Co., Ltd.Multimedia editing method using templates describing common logic structure, layout, and physical operation
US6175844Dec 30, 1997Jan 16, 2001Adobe Systems IncorporatedOrdering groups of text in an image
US6411731Dec 29, 1998Jun 25, 2002Canon Kabushiki KaishaTemplate-based image recognition and extraction
US6424980Jun 9, 1999Jul 23, 2002Nippon Telegraph and Telephone CorporationIntegrated retrieval scheme for retrieving semi-structured documents
US6584480Oct 30, 2000Jun 24, 2003Microsoft CorporationStructured documents in a publishing system

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US7131064Mar 11, 2002Oct 31, 2006SAP AGXML client abstraction layer
US7162526Jan 31, 2001Jan 9, 2007International Business Machines CorporationApparatus and methods for filtering content based on accessibility to a user
US7213245May 14, 2002May 1, 2007Microsoft CorporationSoftware on demand system
US7814426Jun 30, 2004Oct 12, 2010SAP AktiengesellschaftReusable component in a collaboration workspace
US7958131Aug 19, 2005Jun 7, 2011International Business Machines CorporationMethod for data management and data rendering for disparate data types
US8122346Aug 5, 2005Feb 21, 2012SAP AGMethods and systems for merging software-level objects with document-level objects in a document publishing environment

Claims

1. A computer-readable medium storing computer executable instructions that when loaded in a computer adapts the computer to render a document from: a template which defines a structure for the document, the template comprising zero or more region definitions, each region definition having a region name; zero or more data providers, each data provider comprising one or more regions, each region being associated with a region name, and each data provider being one of either a software data provider and a non-software provider wherein a software data provider provides data resulting from execution of software code and a non-software provider does not provide data resulting from execution of software code; and wherein each region can comprise zero or more further regions and each region can further comprise zero or more further region definitions; by

for each region definition in the template:
(a) identifying which data providers, if any, are associated with the region name of the region definition;
(b) if no data providers are identified in step (a), then returning a default value; otherwise
(c) of the data providers identified in step (a), choosing the data providers to be used to provide data in place of the region definition; and
(d) generating data from the data providers chosen in step (c) and replacing the region definition in the template with the generated data.

2. The computer-readable medium of claim 1 wherein choosing which of the data providers are to be used comprises a rendering strategy comprising selecting a data provider based upon a predetermined strategy or else returning a default value.

3. The computer-readable medium of claim 2 wherein the predetermined strategy is one of

first-in-first-out, wherein if two or more data providers are associated with the same region name then, among those data providers, the rendering strategy is adapted to select the data provider added first;
last-in-first-out, wherein if two or more data providers are associated with the same region name, then, among those data providers, the rendering strategy is adapted to select the data provider added last; and
a priority-based strategy determined by a priority level assigned to each data provider.

4. The computer-readable medium of claim 3 wherein if a software data provider and a non-software provider are both associated with the same region name, then the rendering strategy is adapted to select the software data provider in preference to the non-software provider.

5. The computer-readable medium of claim 4 wherein if two or more data providers are associated with the same region name, and where any of the two or more data providers is a software data provider, then the rendering strategy is adapted to select one of the two or more software data providers based upon a predetermined strategy.

6. The computer-readable medium of claim 5 wherein if none of the two or more data providers is a software data provider, then the rendering strategy is adapted to select one of the two or more data providers based upon a predetermined strategy.

7. The computer-readable medium of claim 6 wherein the rendering strategy is last-in-first-out.

8. The computer-readable medium of claim 1 wherein generating data from the data providers comprises for each data provider

determining if the region associated with the region name specifies text or data and if so, returning the text or data;
if the region associated with the region name specifies computer code in a programming language then the rendering engine causes the computer code to be executed and returns the result; and
if the region comprises any further region definitions, then the region is rendered by means of the rendering engine by
for each further region definition listed in the region:
(a) identifying which data providers, if any, are associated with the region name of the further region definition;
(b) if no data providers are identified in step (a), then returning a default value; otherwise
(c) of the data providers identified in step (a), choosing the data providers to provide data in place of the further region definition; and
(d) generating data from the data providers chosen in step (c) and replacing the further region definition in the region with the generated data.

9. The computer-readable medium of claim 1 wherein the template further comprises zero or more placeholders;

and the rendering engine in rendering a document considers zero or more properties maps wherein each properties map includes a list of one or more placeholders wherein each placeholder has an associated value or string;
wherein for each placeholder in the template, the rendering engine considers the zero or more properties maps and if a reference to the placeholder appears in the zero or more properties maps, the rendering engine replaces the reference to the placeholder in the template with the associated value or string.

10. A computer-implemented method for creating a document comprising:

creating a template defining a structure for the document, the template comprising zero or more region definitions, each region definition having a region name;
creating zero or more data providers wherein
each data provider comprises one or more regions, each region being associated with a region name; and
each data provider is one of either a software data provider and a non-software provider wherein a software data provider provides data resulting from execution of software code and a non-software provider does not provide data resulting from execution of software code; and
each region can further comprise zero or more further regions and each region can further comprise zero or more further region definitions;
rendering the template, wherein for each region definition in the template,
(a) identifying which data providers, if any, are associated with the region name of the region definition;
(b) if no data providers are identified in step (a), then returning a default value; otherwise
(c) of the data providers identified in step (a), choosing the data providers to be used to provide data in place of the region definition; and
(d) generating data from the data providers chosen in step (c) and replacing the region definition in the template with the generated data.

11. The method of claim 10 wherein if two or more data providers are associated with the same region name, then the method chooses one of the two or more data providers based upon a predetermined strategy.

12. The method of claim 11 wherein the predetermined strategy is one of

first-in-first-out, wherein if two or more data providers are associated with the same region name, then, among those data providers, the rendering strategy selects the data provider added first;
last-in-first-out, wherein if two or more data providers are associated with the same region name, then, among those data providers, the rendering strategy selects the data provider added last; and
a priority-based strategy wherein the rendering strategy selects a data provider based upon a priority level assigned to each data provider.

13. The method of claim 12 wherein one or more region definitions can be nested within another region definition.

14. The method of claim 10 wherein generating data from the data providers comprises for each data provider

determining if the region associated with the region name specifies text and/or data and if so, returning the text and/or data;
if the region associated with the region name specifies instructions in a programming language then the method further causes the instructions to be executed and returns the result; and
if the region comprises any further region definitions, then the region is rendered by
(a) identifying which data providers, if any, are associated with the region name of the further region definition;
(b) if no data providers are identified in step (a), then returning a default value; otherwise
(c) of the data providers identified in step (a), choosing the data providers to provide data in place of the further region definition; and
(d) generating data from the data providers chosen in step (c) and replacing the further region definition in the region with the generated data.

15. The method of claim 14 wherein if two or more data providers are associated with the same region definition, then the rendering strategy chooses one of the two or more data providers based upon a predetermined strategy wherein if a software data provider and a non-software provider are both associated with the same region definition, the predetermined strategy will use the software data provider in preference to the non-software provider.

16. The method of claim 15 wherein if two or more data providers are associated with the same region definition, and where any of the two or more data providers are software data providers, then the rendering strategy chooses one of the two or more data providers based upon a predetermined strategy.

17. The method of claim 16 wherein if none of the two or more data providers is a software data provider, then the rendering strategy chooses one of the two or more data providers based upon a predetermined strategy.

18. The method of claim 17 wherein the predetermined strategy is last-in-first-out.

19. The method of claim 10 wherein the template further comprises zero or more placeholders wherein each placeholder relates to a desired value or string.

20. A computer system for creating a document, the system comprising

input hardware and software
for a user to create a template defining a structure of the document, the template comprising zero or more region definitions, each region definition having a region name; and
for a user to create zero or more data providers wherein each data provider is associated with one or more region names;
a rendering engine and a rendering strategy wherein the combination of the rendering engine and the rendering strategy creates a rendered document by
(a) identifying which data providers, if any, are associated with the region name of the region definition;
(b) if no data providers are identified in step (a), then returning a default value; otherwise
(c) of the data providers identified in step (a), choosing the data providers to be used to provide data in place of the region definition; and
(d) generating data from the data providers chosen in step (c) and replacing the region definition in the template with the generated data.