IP Library Granted Patent US 9,372,840
Granted Patent B1
US 9,372,840 · App. 13/630,007 · Granted Jun 21, 2016

Method and system for accelerated transformation of content based on predictive chunking

Inventors: Nitesh Golchha (Bangalore, IN); Vikram Bheemaiah (Bangalore, IN); Srinivas Veeravalli (Bangalore, IN); Derek Zasiewski (Oakville, CA)
Assignee: EMC CORPORATION
G06F17/2264G06F17/2247
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 9,372,840
App. No.
13/630,007
Filed
Sep 28, 2012
Granted
Jun 21, 2016
Kind
B1
Art Unit
2177
USPC
715/273
Abstract

A stored document is converted into a “web-friendly” format by dividing the conversion job into chunks. Each chunk specifies a subset of the document pages to be converted. The result of processing a chunk is a set of “web-friendly” page images. The page images are stored in a repository and are available for viewing at the client. The remaining chunks are processed in a similar manner. The perceived performance of the system is enhanced because a chunk can be processed much faster than the entire document. If the user happens to advance to a page in the document that is not yet processed, a real-time request is made to process a particular subset of pages that includes the page advanced to.

Claims (59)

1. A method comprising:

receiving a document having a plurality of pages from a repository;

dividing a job to convert the plurality of pages to a plurality of page images into a plurality of created job chunks, each created job chunk specifying a range of increasing page numbers that correspond to a subset of the plurality of pages;

dispatching a first created job chunk to convert a first subset of pages in a first range of increasing page numbers to a first subset of page images;

storing the first subset of page images in the repository;

dispatching a second created job chunk to convert a second subset of pages in a second range of increasing page numbers to a second subset of page images;

storing the second subset of page images in the repository, wherein the first subset of page images are stored in the repository before the second subset of page images are stored in the repository, and the first subset of pages appear in the document before the second subset of pages appear in the document;

receiving a real-time user request to convert a specific page to a page image;

creating and dispatching a third job chunk to convert a third subset of pages, in a third range of increasing page numbers which ranges from at least one page before the user-requested specific page to at least one page after the user-requested specific page, to a third subset of page images, which ranges from at least one page image before the page image to at least one page image after the page image, before dispatching a previously created fourth job chunk to convert a fourth subset of pages in a fourth range of increasing page numbers comprising the specific page to a fourth subset of pages images; and

storing the third subset of page images in the repository, wherein the first created job chunk specifies the first range of increasing page numbers, the second created job chunk specifies the second range of increasing page numbers, the third created job chunk specifies the third range of increasing page numbers, the second range of increasing page numbers directly follows the first range of increasing page numbers, and at least one page number exists between the second range of increasing page numbers and the third range of increasing page numbers.

2. The method of claim 1 wherein a number of the plurality of job chunks is equal to a value obtained by dividing a total number of pages in the document with a predefined maximum number of pages for a job chunk; and

if the value is not a whole number, rounding the value up to a nearest whole number.

3. The method of claim 2 wherein the predefined maximum number of pages for a job chunk is 15 pages.

4. The method of claim 2 wherein the predefined maximum number of pages for a job chunk ranges from 5 pages to 25 pages.

5. The method of claim 1 comprising:

dispatching a fourth job chunk to a first conversion module to convert a fourth subset of pages to a fourth subset of page images;

detecting a failure of the first conversion module to convert the fourth subset of pages; and

upon the detecting a failure, dispatching the fourth job chunk to a second conversion module, different from the first conversion module, to convert the fourth subset of pages.

6. The method of claim 1 comprising:

after the retrieving a document, storing the document in a cache.

7. A computer program product, comprising a non-transitory computer-readable medium having a computer-readable program code embodied therein, the computer-readable program code adapted to be executed by one or more processors to implement a method comprising:

receiving a document having a plurality of pages from a repository;

dividing a job to convert the plurality of pages to a plurality of page images into a plurality of created job chunks, each created job chunk specifying a range of increasing page numbers that correspond to a subset of the plurality of pages;

dispatching a first created job chunk to convert a first subset of pages in a first range of increasing page numbers to a first subset of page images;

storing the first subset of page images in the repository;

dispatching a second created job chunk to convert a second subset of pages in a second range of increasing page numbers to a second subset of page images;

storing the second subset of page images in the repository, wherein the first subset of page images are stored in the repository before the second subset of page images are stored in the repository, and the first subset of pages appear in the document before the second subset of pages appear in the document;

receiving a real-time user request to convert a specific page to a page image;

creating and dispatching a third job chunk to convert a third subset of pages, in a third range of increasing page numbers which ranges from at least one page before the user-requested specific page to at least one page after the user-requested specific page, to a third subset of page images, which ranges from at least one page image before the page image to at least one page image after the page image, before dispatching a previously created fourth job chunk to convert a fourth subset of pages in a fourth range of increasing page numbers comprising the specific page to a fourth subset of pages images; and

storing the third subset of page images in the repository, wherein the first created job chunk specifies the first range of increasing page numbers, the second created job chunk specifies the second range of increasing page numbers, the third created job chunk specifies the third range of increasing page numbers, the second range of increasing page numbers directly follows the first range of increasing page numbers, and at least one page number exists between the second range of increasing page numbers and the third range of increasing page numbers.

8. The computer program product of claim 7 wherein a number of the plurality of job chunks is equal to a value obtained by dividing a total number of pages in the document with a predefined maximum number of pages for a job chunk; and

if the value is not a whole number, rounding the value up to a nearest whole number.

9. The computer program product of claim 8 wherein the predefined maximum number of pages for a job chunk is 15 pages.

10. The computer program product of claim 8 wherein the predefined maximum number of pages for a job chunk ranges from 5 pages to 25 pages.

11. The computer program product of claim 7 wherein the method comprises:

dispatching a fourth job chunk to a first conversion module to convert a fourth subset of pages to a fourth subset of page images;

detecting a failure of the first conversion module to convert the fourth subset of pages; and

upon the detecting a failure, dispatching the fourth job chunk to a second conversion module, different from the first conversion module, to convert the fourth subset of pages.

12. The computer program product of claim 7 wherein the method comprises:

after the retrieving a document, storing the document in a cache.

13. A system for previewing a document modification, the system comprising:

a processor-based database management system executed on a computer system and configured to:

receive a document having a plurality of pages from a repository;

divide a job to convert the plurality of pages to a plurality of page images into a plurality of created job chunks, each created job chunk specifying a range of increasing page numbers that correspond to a subset of the plurality of pages;

dispatch a first created job chunk to convert a first subset of pages in a first range of increasing page numbers to a first subset of page images;

store the first subset of page images in the repository;

dispatch a second created job chunk to convert a second subset of pages in a second range of increasing page numbers to a second subset of page images;

store the second subset of page images in the repository, wherein the first subset of page images are stored in the repository before the second subset of page images are stored in the repository, and the first subset of pages appear in the document before the second subset of pages appear in the document;

receive a real-time user request to convert a specific page to a page image;

create and dispatching a third job chunk to convert a third subset of pages, in a third range of increasing page numbers which ranges from at least one page before the user-requested specific page to at least one page after the user-requested specific page, to a third subset of page images, which ranges from at least one page image before the page image to at least one page image after the page image, before dispatching an already created fourth job chunk to convert a fourth subset of pages in a fourth range of increasing page numbers comprising the specific page to a fourth subset of pages images; and

store the third subset of page images in the repository, wherein the first created job chunk specifies the first range of increasing page numbers, the second created job chunk specifies the second range of increasing page numbers, the third created job chunk specifies the third range of increasing page numbers, the second range of increasing page numbers directly follows the first range of increasing page numbers, and at least one page number exists between the second range of increasing page numbers and the third range of increasing page numbers.

14. The system of claim 13 wherein a number of the plurality of job chunks is equal to a value obtained by dividing a total number of pages in the document with a predefined maximum number of pages for a job chunk; and

the processor-based database management system is configured to round the value up to a nearest whole number if the value is not a whole number.

15. The system of claim 14 wherein the predefined maximum number of pages for a job chunk is 15 pages.

16. The system of claim 14 wherein the predefined maximum number of pages for a job chunk ranges from 5 pages to 25 pages.

17. The system of claim 13 wherein the processor-based database management system is configured to:

dispatch a fourth job chunk to a first conversion module to convert a fourth subset of pages to a fourth subset of page images;

detect a failure of the first conversion module to convert the fourth subset of pages; and

upon the detection of the failure, dispatch the fourth job chunk to a second conversion module, different from the first conversion module, to convert the fourth subset of pages.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: EMC CORPORATION
To: OPEN TEXT CORPORATION
Reel/Frame 041579/0133 →
PATENT RELEASE (REEL:40134/FRAME:0001) Recorded Jan 23, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: EMC CORPORATION, AS GRANTOR
Reel/Frame 041073/0136 →
RELEASE OF SECURITY INTEREST Recorded Jan 23, 2017
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC CORPORATION
Reel/Frame 041073/0443 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 3, 2014
From: ZASIEWSKI, DEREK
To: EMC CORPORATION
Reel/Frame 033885/0244 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 6, 2012
From: GOLCHHA, NITESH; BHEEMAIAH, VIKRAM; VEERAVALLI, SRINIVAS
To: EMC CORPORATION
Reel/Frame 029247/0981 →