IP Library Granted Patent US 10,133,798
Granted Patent B2
US 10,133,798 · App. 14/308,562 · Granted Nov 20, 2018

Content transformations using a transformation node cluster

Inventors: David Caruana (London, GB); Ray Gauss (Baltimore, MD)
Assignee: Alfresco Software, Inc.
G06F17/30563G06F17/30914H04L67/1012H04L67/1014H04L67/2823H04L67/42
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 10,133,798
App. No.
14/308,562
Granted
Nov 20, 2018
Kind
B2
Abstract

Content transformations can include transformation of content items in a CMS repository from a source format to a target format. Such transformations can be performed using a transformation node cluster having multiple nodes, each of which is configured for a specific content transformation type. Router nodes can receive requests for content items and route content items to transformation nodes having a proper content transformation type to either transform a requested content item to the target format or perform an intermediate transformation as part of a transformation chain. A transformation node cluster can be dynamically configurable based on estimates of expected loads for the various types of transformations. Systems, methods, and articles of manufacture are also described.

Claims (66)

1. A computer-implemented method comprising:

receiving, by a router node of a transformation node cluster comprising a plurality of nodes, a request from a client machine for a content item stored in a repository associated with a server machine that is associated with the transformation node cluster, the transformation node cluster further comprising a plurality of transformation nodes, each of the plurality of transformation nodes being implemented on one or more programmable processors that are separate from other programmable processors upon which other transformation nodes of the plurality of transformation nodes are implemented, each of the plurality of transformation nodes further being configured to execute only one of a plurality of content transformation types;

identifying, by the router node, a current content format of the content item and a target content format of the content item, the target content format differing from the current content format;

determining, based on the identifying, a chain of transformations, the chain of transformations comprising a first transformation type from the plurality of content transformation types for transforming the content item from the current content format to an intermediate content format;

selecting, by the router node, a first node of the plurality of transformation nodes, the router node selecting the first node based on the current content format and the target content format or the intermediate content format matching the only one of the plurality of content transformation types for which the first node is configured; and

routing, by the router node, the content item to the first node of the plurality of transformation nodes in the transformation node cluster, the first node of the plurality of transformation nodes being configured to execute the first transformation type of the plurality of content transformation types determined for the content item;

storing, in the repository by the router node, a transformed content item resulting from the first node of the plurality of transformation nodes, the transformed content item in the intermediate content format; and

transmitting, by the router node and in response to the storing, a reference to the transformed content item, the reference identifying a location in the repository where the transformed content item is stored.

2. The computer-implemented method in accordance with claim 1 , wherein the plurality of transformation types comprises a transformation type that includes transforming the content item from the current content format comprising a portable document format into the target content format or the intermediate format, which comprises the content item split into two or more sections in the portable document format.

3. The computer-implemented method in accordance with claim 1 , wherein the plurality of transformation types includes transforming the content item from the current content format in an editable text document format into the target content format or the intermediate format, which comprises an image format.

4. The computer-implemented method in accordance with claim 1 , wherein a number of the plurality of transformation nodes in the transformation node cluster configured to execute each of the plurality of content transformation types is based on an estimate of transformation loads of different transformation types to be handled by the transformation node cluster.

5. The computer-implemented method in accordance with claim 4 , further comprising:

estimating a load for each transformation type; and

configuring a number of the plurality of transformation nodes in the transformation node cluster configured to execute each of the plurality of content transformation types based on the estimated load for each transformation type.

6. The computer-implemented method in accordance with claim 1 , wherein the transformation chain comprising a plurality of transformation types needed to transform the content item from the current content format, to the intermediate content format, and from the intermediate content format to another intermediate content format or the target format, the only one of the transformation types for which the first node is configured comprising transforming the content item from the current content format to a first intermediate content item having a first intermediate content format, and wherein the method further comprises:

routing the first intermediate content item to a second node of the plurality of transformation nodes in the transformation node cluster being configured to transform the first intermediate content item from the intermediate content format to the target format or to a second intermediate content item having a second intermediate content format or to the target content format.

7. The computer-implemented method in accordance with claim 6 , wherein the transformation chain comprises a transformation type resulting in formation of multiple intermediate content items, and each of the multiple intermediate content items requires a subsequent transformation.

8. The computer-implemented method in accordance with claim 7 , wherein the method further comprises:

routing, by the router node, the multiple intermediate content items to multiple transformation nodes in the transformation node cluster, the multiple transformation nodes each being configured to execute a same one of a plurality of content transformation types such that the multiple intermediate content items are processed in parallel.

9. The computer-implemented method in accordance with claim 1 , further comprising:

estimating, in response to the request for the content item, an expected load for each of the plurality of content transformation types, the estimating based on historical data retrieved from the repository, the historical data relating to previous content transformation requests received by the transformation node cluster.

10. The computer-implemented method in accordance with claim 9 , wherein the callback further comprises at least one of a reference to the content item requested by the client machine, an array of transformed content item references referencing one or more intermediate content items created in a transformation chain to produce the transformed content item, a listing of options specified in the request, a history of operations performed to convert the content item to the target content format, and identifiers for one or more transformation nodes that participated in the transformation chain.

11. The computer-implemented method of claim 1 , further comprising:

determining, by the router node, that a non-blocking wait for multiple transformation requests is required;

creating, by the router node and in response to the determining, a transient handler, the transient handler managing the request;

tagging the request with a handler context and a request identifier, the handler context identifying the content item;

mapping a response received from the first node of the plurality of transformation nodes, the response containing the handler context and request identifier, back to the request and to the transient handler, the transient handler keeping a record of the response and notifying the router node when all transformations of the first transformation type of the one or more transformation types has been completed; and

routing, by the router node, intermediate content items resulting from the first transformation type to one or more additional nodes of the plurality of transformation nodes in the transformation node cluster, the one or more additional nodes of the plurality of transformation nodes being configured to transform the intermediate content items to one or more next intermediate content items or to the target content format of the content item.

12. A computer program product comprising a non-transitory machine-readable medium storing instructions that, when executed by at least one programmable processor, cause the at least one programmable processor to perform operations comprising:

receiving, by a router node of a transformation node cluster comprising a plurality of nodes, a request from a client machine for a content item stored in a repository associated with a server machine that is associated with the transformation node cluster, the transformation node cluster further comprising a plurality of transformation nodes, each of the plurality of transformation nodes being implemented on one or more programmable processors that are separate from other programmable processors upon which other transformation nodes of the plurality of transformation nodes are implemented, each of the plurality of transformation nodes further being configured to execute only one of a plurality of content transformation types;

identifying, by the router node, a current content format of the content item and a target content format of the content item, the target content format differing from the current content format;

determining, based on the identifying, a chain of transformations, the chain of transformations comprising a first transformation type from the plurality of content transformation types for transforming the content item from the current content format to an intermediate content format;

selecting, by the router node, a first node of the plurality of transformation nodes, the router node selecting the first node based on the current content format and the target content format or the intermediate content format matching the only one of the plurality of content transformation types for which the first node is configured; and

routing, by the router node, the content item to the first node of the plurality of transformation nodes in the transformation node cluster, the first node of the plurality of transformation nodes being configured to execute the first transformation type of the plurality of content transformation types determined for the content item;

storing, in the repository by the router node, a transformed content item resulting from the first node of the plurality of transformation nodes, the transformed content item in the intermediate content format; and

transmitting, by the router node and in response to the storing, a reference to the transformed content item, the reference identifying a location in the repository where the transformed content item is stored.

13. The computer program product in accordance with claim 12 , wherein a number of the plurality of transformation nodes in the transformation node cluster configured to execute each of the plurality of content transformation types is based on an estimate of transformation loads of different transformation types to be handled by the transformation node cluster.

14. The computer program product in accordance with claim 13 , wherein the operations further comprise:

estimating a load for each transformation type; and

configuring a number of the plurality of transformation nodes in the transformation node cluster configured to execute each of the plurality of content transformation types based on the estimated load for each transformation type.

15. The computer program product in accordance with claim 12 , wherein the transformation chain comprising a plurality of transformation types needed to transform the content item from the current content format, to the intermediate content format, and from the intermediate content format to another intermediate content format or the target format, the only one of the transformation types for which the first node is configured comprising transforming the content item from the current content format to a first intermediate content item having a first intermediate content format, and wherein the method further comprises:

routing the first intermediate content item to a second node of the plurality of transformation nodes in the transformation node cluster being configured to transform the first intermediate content item from the intermediate content format to the target format or to a second intermediate content item having a second intermediate content format or to the target content format.

16. The computer program product in accordance with claim 15 , wherein the transformation chain comprises a transformation type resulting in formation of multiple intermediate content items, and each of the multiple intermediate content items requires a subsequent transformation, and wherein the operations further comprise:

routing, by the router node, the multiple intermediate content items to multiple transformation nodes in the transformation node cluster, the multiple transformation nodes each being configured to execute a same one of a plurality of content transformation types such that the multiple intermediate content items are processed in parallel.

17. The computer program product in accordance with claim 12 , wherein the operations further comprise:

determining, by the router node, that a non-blocking wait for multiple transformation requests is required;

creating, by the router node and in response to the determining, a transient handler, the transient handler managing the request;

tagging the request with a handler context and a request identifier, the handler context identifying the content item;

mapping a response received from the first node of the plurality of transformation nodes, the response containing the handler context and request identifier, back to the request and to the transient handler, the transient handler keeping a record of the response and notifying the router node when all transformations of the first transformation type of the one or more transformation types has been completed; and

routing, by the router node, intermediate content items resulting from the first transformation type to one or more additional nodes of the plurality of transformation nodes in the transformation node cluster, the one or more additional nodes of the plurality of transformation nodes being configured to transform the intermediate content items to one or more next intermediate content items or to the target content format of the content item.

18. A system comprising:

a computer hardware configured to perform operations comprising:

receiving, by a router node of a transformation node cluster comprising a plurality of nodes, a request from a client machine for a content item stored in a repository associated with a server machine that is associated with the transformation node cluster, the transformation node cluster further comprising a plurality of transformation nodes, each of the plurality of transformation nodes being implemented on one or more programmable processors that are separate from other programmable processors upon which other transformation nodes of the plurality of transformation nodes are implemented, each of the plurality of transformation nodes further being configured to execute only one of a plurality of content transformation types;

identifying, by the router node, a current content format of the content item and a target content format of the content item, the target content format differing from the current content format;

determining, based on the identifying, a chain of transformations, the chain of transformations comprising a first transformation type from the plurality of content transformation types for transforming the content item from the current content format to an intermediate content format;

selecting, by the router node, a first node of the plurality of transformation nodes, the router node selecting the first node based on the current content format and the target content format or the intermediate content format matching the only one of the plurality of content transformation types for which the first node is configured; and

routing, by the router node, the content item to the first node of the plurality of transformation nodes in the transformation node cluster, the first node of the plurality of transformation nodes being configured to execute the first transformation type of the plurality of content transformation types determined for the content item;

storing, in the repository by the router node, a transformed content item resulting from the first node of the plurality of transformation nodes, the transformed content item in the intermediate content format; and

transmitting, by the router node and in response to the storing, a reference to the transformed content item, the reference identifying a location in the repository where the transformed content item is stored.

19. A system as in claim 18 , wherein the computer hardware comprises a programmable processor; and

a machine-readable medium storing instructions that, when executed by the processor, cause the programmable processor to perform at least some of the operations, the operations further comprising:

determining, by the router node, that a non-blocking wait for multiple transformation requests is required;

creating, by the router node and in response to the determining, a transient handler, the transient handler managing the request;

tagging the request with a handler context and a request identifier, the handler context identifying the content item;

mapping a response received from the first node of the plurality of transformation nodes, the response containing the handler context and request identifier, back to the request and to the transient handler, the transient handler keeping a record of the response and notifying the router node when all transformations of the first transformation type of the one or more transformation types has been completed; and

routing, by the router node, intermediate content items resulting from the first transformation type to one or more additional nodes of the plurality of transformation nodes in the transformation node cluster, the one or more additional nodes of the plurality of transformation nodes being configured to transform the intermediate content items to one or more next intermediate content items or to the target content format of the content item.

Assignments (11)
SECURITY INTEREST Recorded Jan 17, 2024
From: HYLAND UK OPERATIONS LIMITED
To: GOLUB CAPITAL MARKETS LLC, AS COLLATERAL AGENT
Reel/Frame 066339/0332 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 055820/0369 Recorded Sep 24, 2023
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT, A BRANCH OF CREDIT SUISSE
To: ALFRESCO SOFTWARE LIMITED (K/N/A HYLAND UK OPERATIONS LIMITED)
Reel/Frame 065018/0057 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 55820/0343 Recorded Sep 21, 2023
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT, A BRANCH OF CREDIT SUISSE
To: ALFRESCO SOFTWARE LIMITED (K/N/A HYLAND UK OPERATIONS LIMITED)
Reel/Frame 064974/0425 →
CHANGE OF NAME Recorded Oct 13, 2021
From: ALFRESCO SOFTWARE LIMITED
To: HYLAND UK OPERATIONS LIMITED
Reel/Frame 057909/0840 →
SECURITY AGREEMENT SUPPLEMENT (FIRST LIEN) Recorded Mar 26, 2021
From: ALFRESCO SOFTWARE LIMITED
To: CREDIT SUISSE
Reel/Frame 055820/0343 →
SECURITY AGREEMENT SUPPLEMENT (SECOND LIEN) Recorded Mar 26, 2021
From: ALFRESCO SOFTWARE LIMITED
To: CREDIT SUISSE
Reel/Frame 055820/0369 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2021
From: ALFRESCO SOFTWARE, INC.
To: ALFRESCO SOFTWARE LIMITED
Reel/Frame 054935/0642 →
RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 50372/0079 Recorded Oct 27, 2020
From: GUGGENHEIM CREDIT SERVICES, LLC, AS COLLATERAL AGENT
To: ALFRESCO SOFTWARE, INC.
Reel/Frame 054229/0133 →
NOTICE OF ASSIGNMENT OF PATENT SECURITY AGREEMENT RECORDED AT R/F 045602/0578 Recorded Sep 13, 2019
From: GUGGENHEIM CORPORATE FUNDING, LLC, AS RETIRING AGENT
To: GUGGENHEIM CREDIT SERVICES, LLC, AS SUCCESSOR AGENT
Reel/Frame 050372/0079 →
PATENT SECURITY AGREEMENT Recorded Mar 14, 2018
From: ALFRESCO SOFTWARE, INC.
To: GUGGENHEIM CORPORATE FUNDING, LLC
Reel/Frame 045602/0578 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 20, 2016
From: CARUANA, DAVID; GAUSS, RAY
To: ALFRESCO SOFTWARE, INC.
Reel/Frame 039202/0695 →
Continuity (1)
Related Publication 20150370869A1 · Dec 24, 2015