IP Library › Granted Patent US 8,538,998
Granted Patent B2
US 8,538,998 · App. 12/029,609 · Granted Sep 17, 2013

Caching and memory optimizations for multi-layer XML customization

Inventor: Chris Barrow (San Mateo, CA)
Assignee: Oracle International Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,538,998
App. No.
12/029,609
Granted
Sep 17, 2013
Kind
B2
Abstract

Embodiments of the present invention provide techniques for customizing aspects of a metadata-driven software application. In particular, embodiments of the present invention provide (1) a self-contained metadata engine for generating customized metadata documents from base metadata documents and customizations; (2) a customization syntax for defining customizations; (3) a customization creation/update component for creating and updating customizations; (4) a customization restriction mechanism for restricting the creation of new customizations by specific users or groups of users; and (5) memory and caching optimizations for optimizing the storage and lookup of customized metadata documents.

Claims (73)

1. A method for caching customized metadata documents for a metadata-driven software application, the method comprising:

receiving, by a computer system, a request for a customized version of a base metadata document, wherein the base metadata document defines one or more characteristics of at least a portion of the software application, and wherein the base metadata document is to be customized for a first user among a plurality of users of the software application;

identifying, by the computer system, a first customization for the base metadata document, wherein the first customization defines a customized version of the base metadata document for the plurality of users;

including in the first customization a first cache hint indicating that the first customization is applicable to the plurality of users;

identifying, by the computer system, a second customization for the base metadata document, wherein the second customization defines a customized version of the base metadata document for only the first user;

including in the second customization a second cache hint indicating that the second customization is applicable only to the first user;

generating, by the computer system, a first customized metadata document based on the first customization and the base metadata document;

generating, by the computer system, a second customized metadata document based on the first customized metadata document and the second customization;

storing, by the computer system, the first customized metadata document in a shared cache applicable to application sessions of the plurality of users, wherein the first customized metadata document is stored in the shared cache based on the first cache hint included in the first customization and is stored in a working memory as a first tree memory structure, the first tree memory structure including an allocated memory segment for a first element of the first customized metadata document and an allocated memory segment for a second element of the first customized metadata document;

storing, by the computer system, the second customized metadata document in a session cache applicable only to an application session of the first user, wherein the second customized metadata document is stored in the session cache based on the second cache hint included in the second customization and is stored in the working memory as a second tree memory structure, the second tree memory structure including a pointer to the allocated memory segment for the first element in the first tree memory structure and an allocated memory segment for a modified version of the second element; and

returning, by the computer system, the second customized metadata document.

2. The method of claim 1 , further comprising:

receiving another request for another customized version of the base metadata document, wherein the base metadata document is to be customized for a second user among the plurality of users;

identifying a third customization for the base metadata document, wherein the third customization defines a customized version of the first customized metadata document for only the second user;

including in the third customization a third cache hint indicating that the third customization is applicable only to the second user;

retrieving the first customized metadata document from the shared cache;

generating a third customized metadata document based on the retrieved first customized metadata document and the third customization;

storing the third customized metadata document in another session cache applicable only to an application session of the second user; and

returning the third customized metadata document.

3. The method of claim 1 , wherein the first customized metadata document further includes one or more elements as direct or indirect parents of the second element,

wherein the second customized metadata document further includes the one or more elements as direct or indirect parents of the modified version of the second element,

wherein the first memory tree structure further includes allocated memory segments for the one or more elements, and

wherein the second memory tree structure further includes allocated memory segments for the one or more elements.

4. The method of claim 1 , wherein the method is performed by a metadata engine configured to provide application metadata to one or more components of the software application.

5. The method of claim 1 , further comprising storing the base metadata document in the shared cache.

6. The method of claim 1 , wherein the base metadata document, the first customization, the second customization, the first customized metadata document, and the second customized metadata document are XML documents.

7. A system for caching customized metadata documents for a metadata-driven software application, the system comprising:

one or more processors; and

memory communicatively coupled with, and readable by, the one or more processors, the memory comprising a working memory component including a shared cache configured to store data for application sessions of a plurality of users of the software application, and a session cache configured to store data only for an application session of a first user in the plurality of users;

wherein the memory has stored therein processor-readable instructions, which, when executed by the one or more processors, cause the one or more processors to:

receive a request for a customized version of a base metadata document, wherein the base metadata document defines one or more characteristics of at least a portion of the software application, and wherein the base metadata document is to be customized for the first user;

identify a first customization for the base metadata document, wherein the first customization defines a customized version of the base metadata document for the plurality of users;

include in the first customization a first cache hint indicating that the first customization is applicable to the plurality of users;

identify a second customization for the base metadata document, wherein the second customization defines a customized version of the base metadata document for only the first user;

include in the second customization a second cache hint indicating that the second customization is applicable only to the first user;

generate a first customized metadata document based on the first customization and the base metadata document;

generate a second customized metadata document based on the first customized metadata document and the second customization;

store the first customized metadata document in the shared cache based on the first cache hint included in the first customization, wherein the first customized metadata document in the working memory component as a first tree memory structure that includes an allocated memory segment for a first element of the first customized metadata document and an allocated memory segment for a second element of the first customized metadata document;

store the second customized metadata document in the session cache based on the second cache hint included in the second customization, wherein the second customized metadata document is stored in the working memory component as a second tree memory structure that includes a pointer to the allocated memory segment for the first element in the first tree memory structure and an allocated memory segment for a modified version of the second element; and

return the second customized metadata document.

8. The system of claim 7 , wherein the working memory component further includes another session cache configured to store data only for an application session of a second user in the plurality of users, and wherein the processor-readable instructions further cause the one or more processors to: receive another request for another customized version of the base metadata document, wherein the base metadata document is to be customized for the second user;

identify a third customization for the base metadata document, wherein the third customization defines a customized version of the first customized metadata document for only the second user;

include in the third customization a third cache hint indicating that the third customization is applicable only to the second user;

retrieve the first customized metadata document from the shared cache;

generate a third customized metadata document based on the retrieved first customized metadata document and the third customization;

store the third customized metadata document in said another session cache; and

return the third customized metadata document.

9. A non-transitory machine-readable medium having stored thereon a series of instructions executable by a processor, the series of instructions comprising:

instructions that cause the processor to receive a request for a customized version of a base metadata document, wherein the base metadata document defines one or more characteristics of at least a portion of a software application, and wherein the base metadata document is to be customized for a first user among a plurality of users of the software application;

instructions that cause the processor to identify a first customization for the base metadata document, wherein the first customization defines a customized version of the base metadata document for the plurality of users;

instructions that cause the processor to include in the first customization a first cache hint indicating that the first customization is applicable to the plurality of users;

instructions that cause the processor to identify a second customization for the base metadata document, wherein the second customization defines a customized version of the base metadata document for only the first user;

instructs that cause the processor to include in the second customization a second cache hint indicating that the second customization is applicable only to the first user;

instructions that cause the processor to generate a first customized metadata document based on the first customization and the base metadata document;

instructions that cause the processor to generate a second customized metadata document based on the first customized metadata document and the second customization;

instructions that cause the processor to store the first customized metadata document in a shared cache applicable to application sessions of the plurality of users, wherein the first customized metadata document is stored in the shared cache based on the first cache hint included in the first customization and is stored in a working memory as a first tree memory structure, the first tree memory structure including an allocated memory segment for a first element of the first customized metadata document and an allocated memory segment for a second element of the first customized metadata document;

instructions that cause the processor to store the second customized metadata document in a session cache applicable only to an application session of the first user, wherein the second customized metadata document is stored in the session cache based on the second cache hint included in the second customization and is stored in the working memory as a second tree memory structure, the second tree memory structure including a pointer to the allocated memory segment for the first element in the first tree memory structure and an allocated memory segment for a modified version of the second element; and

instructions that cause the processor to return the second customized metadata document.

10. The non-transitory machine-readable medium of claim 9 , wherein the series of instructions further comprise:

instructions that cause the processor to receive another request for another customized version of the base metadata document, wherein the base metadata document is to be customized for a second user among the plurality of users;

instructions that cause the processor to identify a third customization for the base metadata document, wherein the third customization defines a customized version of the first customized metadata document for only the second user;

instructions that cause the processor to include in the third customization a third cache hint indicating that the third customization is applicable only to the second user;

instructions that cause the processor to retrieve the first customized metadata document from the shared cache;

instructions that cause the processor to generate a third customized metadata document based on the retrieved first customized metadata document and the third customization;

instructions that cause the processor to store the third customized metadata document in another session cache applicable only to an application session of the second user; and

instructions that cause the processor to return the third customized metadata document.

11. The non-transitory machine-readable medium of claim 9 , wherein the first customized metadata document further includes one or more elements as direct or indirect parents of the second element,

wherein the second customized metadata document further includes the one or more elements as direct or indirect parents of the modified version of the second element,

wherein the first memory tree structure further includes allocated memory segments for the one or more elements, and

wherein the second memory tree structure further includes allocated memory segments for the one or more elements.

12. The non-transitory machine-readable medium of claim 9 , further comprising instructions that cause the processor to provide application metadata to one or more components of the software application.

13. The non-transitory machine-readable medium of claim 9 , further comprising storing the base metadata document in the shared cache.

14. The non-transitory machine-readable medium of claim 9 , wherein the base metadata document, the first customization, the second customization, the first customized metadata document, and the second customized metadata document are XML documents.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2008
From: BARROW, CHRIS
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 020633/0495 →
Continuity (1)
Related Publication 20090204629A1 · Aug 13, 2009