IP Library Granted Patent US 11,422,847
Granted Patent B2
US 11,422,847 · App. 14/975,331 · Granted Aug 23, 2022

Synchronous business process execution engine for action orchestration in a single execution transaction context

Inventors: Kenwood Tsai (Palo Alto, CA); Satyapal P. Reddy (Fremont, CA); Ravikumar Meenakshisundaram (Pleasanton, CA)
Assignee: Open Text Corporation
G06F9/467G06F8/22G06F8/34G06F9/5016G06Q10/06G06F9/5038
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 11,422,847
App. No.
14/975,331
Filed
Dec 18, 2015
Granted
Aug 23, 2022
Kind
B2
Art Unit
2199
USPC
718/101
Abstract

An asynchronous business process specification declared in a procedural markup language comprising an activity flow model and a plurality of activities is received. An indication is received that a subset of the plurality of activities is to be synchronously executed without reduced latency. All process execution related objects are fetched once into a memory. The synchronous subset is executed in a single execution transaction context.

Claims (64)

1. A method of hybrid asynchronous and synchronous execution, comprising:

receiving an asynchronous process specification comprising an activity flow model and a plurality of activities, the plurality of activities including at least one asynchronous activity, the activity flow model defining an asynchronous process comprising the plurality of activities, wherein the received asynchronous process specification is declared in an executable procedural markup language;

specifying that a selected portion of the asynchronous process defined by the activity flow model of the asynchronous process specification is to be synchronously executed, the selected portion including two or more sequential activities in the activity flow model;

receiving an indication that the selected portion of the asynchronous process defined by the activity flow model of the asynchronous process specification is to be synchronously executed, wherein the selected portion of the asynchronous process includes the at least one asynchronous activity;

in response to the received indication, orchestrating, by a synchronous business process execution engine, a subset of the plurality of activities in the selected portion of the asynchronous process to form a composite action that includes the at least one asynchronous activity and at least an additional one of the plurality of activities in the selected portion of the asynchronous process, wherein the synchronous business process execution engine statelessly executes the composite action as a single transaction in a single thread by:

fetching all process execution related objects associated with the two or more sequential activities of the asynchronous process once, and caching the fetched objects in memory;

forming the composite action from the two or more sequential activities;

allocating a static computing resource for the thread to execute the composite action; and

based on the thread and the allocated static computing resource, synchronously executing, in-memory and without recording an execution state, the composite action in a single execution transaction context with a predictable execution time; and

asynchronously executing, by an asynchronous business process execution engine, a remaining portion of the asynchronous process.

2. A method as recited in claim 1 , further comprising:

identifying any activities of the selected portion that are manual activities as null operations; and

flagging null operations for future manual execution.

3. A method as recited in claim 1 , wherein executing the composite action synchronously in a single execution transaction context comprises executing without clearing the fetched process execution related objects from the memory.

4. A method as recited in claim 1 , wherein the indication is received via an application programming interface (“API”).

5. A method as recited in claim 1 , wherein a specific activity within the plurality of activities is executed using an API.

6. A method as recited in claim 1 , wherein the procedural markup language is expressed in eXtensible Markup Language (“XML”).

7. A method as recited in claim 1 , wherein the procedural markup language is expressed in one or more of the following:

XML Process Definition Language (“XPDL”), Business Process Execution Language (“BPEL”), or the Business Process Model and Notation (“BPMN”).

8. A method as recited in claim 1 , further comprising:

identifying any activities of the selected portion that are rendezvous activities; and

flagging the rendezvous activities as not executable.

9. The method of claim 1 , further comprising:

identifying parallelized activities within the selected portion of the asynchronous process; and

serializing the parallelized activities for synchronous execution.

10. The method of claim 1 , wherein the selected portion of the plurality of activities is the plurality of activities.

11. A method as recited in claim 1 , further comprising:

initiating asynchronous execution of a second portion of the process defined by the activity flow model, the second portion being different from the selected portion, the selected portion of the process defined by the activity flow model comprises a first subset of the plurality of activities, the second portion of the process defined by the activity flow model comprising a second subset of the plurality of activities, and the fetched objects remaining cached for a duration of the execution of the first subset.

12. A system, comprising:

a processor configured to:

receive an asynchronous process specification declared in a procedural markup language comprising an activity flow model and a plurality of activities, the plurality of activities including at least one asynchronous activity, and the activity flow model defining an asynchronous process comprising the plurality of activities;

specify that a selected portion of the asynchronous process defined by the activity flow model of the asynchronous process specification is to be synchronously executed, the selected portion including two or more sequential activities in the activity flow model;

receive an indication that the selected portion of the asynchronous process defined by the activity flow model of the asynchronous process specification is to be synchronously executed, wherein the selected portion of the asynchronous process includes the at least one asynchronous activity; and

in response to the received indication, orchestrating, by a synchronous business process execution engine, a subset of the plurality of activities in the selected portion of the asynchronous process to form a composite action that includes the at least one asynchronous activity and at least an additional one of the plurality of activities in the selected portion of the asynchronous process, and statelessly executing the composite action as a single transaction in a single thread by:

fetching all process execution related objects associated with two or more sequential activities of the asynchronous process once, and caching the fetched objects in memory; and

forming the composite action from the two or more sequential activities;

allocating a static computing resource for the thread to execute the composite action; and

based on the thread and the allocated static computing resource, synchronously executing, in memory and without recording an execution state, the composite action in a single execution transaction context with a predictable execution time; and

asynchronously executing, by an asynchronous business process execution engine a remaining portion of the asynchronous process; and

a memory coupled to the processor and configured to provide the processor with instructions.

13. The system recited in claim 12 , wherein the memory is further configured to provide the processor with instructions which when executed cause the processor to:

identify any activities of the selected portion that are manual activities as null operations; and

flag null operations for future manual execution.

14. The system recited in claim 12 , wherein executing the composite action in a single execution transaction context includes executing without clearing the process execution related objects from the memory.

15. The system recited in claim 12 , wherein the procedural markup language is expressed in one or more of the following:

XML Process Definition Language (“XPDL”), Business Process Execution Language (“BPEL”), or the Business Process Model and Notation (“BPMN”).

16. The system recited in claim 12 , wherein the memory is further configured to provide the processor with instructions which when executed cause the processor to:

initiate asynchronous execution of a second portion of the process defined by the activity flow model, the second portion being different from the selected portion, the selected portion of the process defined by the activity flow model comprises a first subset of the plurality of activities, the second portion of the process defined by the activity flow model comprising a second subset of the plurality of activities, and the fetched objects remaining cached for a duration of the execution of the first subset.

17. A computer program product, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

receiving an asynchronous process specification declared in a procedural markup language comprising an activity flow model and a plurality of activities, the plurality of activities including at least one asynchronous activity, and the activity flow model defining an asynchronous process comprising the plurality of activities;

specifying that a selected portion of the asynchronous process defined by the activity flow model of the asynchronous process specification is to be synchronously executed, the selected portion including two or more sequential activities in the activity flow model;

receiving an indication that the selected portion of the asynchronous process defined by the activity flow model of the asynchronous process specification is to be synchronously executed, wherein the selected portion of the asynchronous process includes the at least one asynchronous activity;

based on the received indication, orchestrating, by a synchronous business process execution engine, a subset of the plurality of activities in the selected portion of the asynchronous process to form a composite action that includes the at least one asynchronous activity and at least an additional one of the plurality of activities in the selected portion of the asynchronous process, and statelessly executing the composite action as a single transaction in a single thread by:

fetching all process execution related objects associated with the two or more sequential activities of the asynchronous process once, and caching the fetched objects in memory; and

forming the composite action from the two or more sequential activities;

allocating a static computing resource for the thread to execute the composite action; and

based on the thread and the allocated static computing resource, synchronously executing, in memory and without recording an execution state, the composite action in a single execution transaction context with a predictable execution time; and

asynchronously executing, by an asynchronous business process execution engine, a remaining portion of the asynchronous process.

18. The computer program product recited in claim 17 , further comprising computer instructions for:

identifying any activities of the selected portion that are manual activities as null operations; and

flagging null operations for future manual execution.

19. The computer program product recited in claim 17 , wherein executing the composite action in a single execution transaction context includes executing without clearing the fetched process execution related objects from the memory.

20. The computer program product recited in claim 17 , wherein the procedural markup language is expressed in one or more of the following:

XML Process Definition Language (“XPDL”), Business Process Execution Language (“BPEL”), or the Business Process Model and Notation (“BPMN”).

Assignments (7)
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 041141/0218 →
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 Feb 22, 2016
From: TSAI, KENWOOD; REDDY, SATYAPAL P.; MEENAKSHISUNDARAM, RAVIKUMAR
To: EMC CORPORATION
Reel/Frame 037784/0527 →