IP Library Granted Patent US 10,504,064
Granted Patent B2
US 10,504,064 · App. 14/840,954 · Granted Dec 10, 2019

Extensibility of business logic shared across a business process orchestration engine, a rule engine, and a user interface

Inventors: Abhijit Anirrudha Rajwade (Pune, IN); Steve Wong (Markham, CA); David Lawrence Shapiro (Santa Clara, CA); Jiayi Gu (Sunnyvale, CA); Girish Kumar Gupta (Pune, IN); David T. Sulcer (Santa Clara, CA)
Assignee: BMC Software, Inc.
G06Q10/103
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,504,064
App. No.
14/840,954
Granted
Dec 10, 2019
Kind
B2
Abstract

In one general aspect, a method can include creating an action, the creating including annotating a block of code with metadata, and encapsulating the annotated block of code into a reusable building block of code. The method can further include publishing the action, the publishing including registering the action in a service registry. The method can further include dynamically discovering the action in the service registry by an application during runtime, invoking the action by the application, and executing the action by the application, the executing performing a method specified by the action.

Claims (47)

1. A method for codeless development of an application executing on a server platform in one or more of a business process orchestration (BPO) engine, a rule engine, or a user interface engine, the method comprising:

creating one or more actions, each action coded in a reusable block of code, each action having an action definition including an action type name, an input parameters map, and an output parameters map;

providing an application service registrar to register each action in a registry, each action registered in the registry being dynamically discoverable;

providing a process service coupled to the registry, the process service providing an interface between the application in development and an action service, the process service decoupling the application in development from the one or more actions and allowing the application in development and the one or more actions to be updated and/or changed independent of one another; and

invoking, by the application in development, one of the actions registered in the registry, the invoking occurring by:

delegating the invoking of the action to the process service, the process service looking up the definition of the invoked action based on a process identification (ID) and an activity ID specified by the application, the process service creating an execution context and calling an execute method in the action service;

the action service discovering the invoked action using the application service registrar to perform an action type name look up in the registry, the action service ensuring that a number of arguments included in the action definition matches a number of arguments specified by the action type; and

the action service passing an input to and receiving a return value from the invoked action, updating the output parameters map included in the definition of the invoked action, and returning the updated output parameters map to the application in development for updating processing variables in the application in development.

2. The method of claim 1 , wherein the action is published by the application service.

3. The method of claim 2 ,

wherein the application service implements a marker interface service, and

wherein the registry uses the marker interface service to identify services on which dynamic discovery of an action is performed.

4. The method of claim 1 ,

wherein the block of code includes at least one input parameter or output parameter.

5. The method of claim 1 , wherein invoking the action by the application includes:

accessing the action service including the action definition associated with the action.

6. The method of claim 1 , wherein the application in development is included in a business process orchestration engine.

7. The method of claim 1 , wherein the application in development is included in a business rule engine.

8. The method of claim 1 , wherein the application in development is included in a visual development interface.

9. The method of claim 1 , wherein the application in development is part of a business object lifecycle modeled using a state machine.

10. The method of claim 1 , wherein invoking the action by the application in development further includes scheduling execution of the action based on a time rule.

11. The method of claim 1 , wherein the application in development is included in the server platform, and wherein executing the action includes executing the action remotely from the server platform.

12. A system comprising: a server platform including one or more processors for codeless development of an application executing on a server platform in one or more of a business process orchestration (BPO) engine, a rule engine, or a user interface engine;

one or more actions, each action coded in a reusable block of code, each action having an action definition including an action type name, an input parameters map, and an output parameters map, each action being registered in a registry by an application service registrar, each action registered in the registry being dynamically discoverable; and

a process service coupled to the registry, the process service providing an interface between the application in development and an action service, the process service decoupling the application in development from the one or more actions and allowing the application in development and the one or more actions to be updated and/or changed independent of one another,

wherein the process service is configured to receive a process ID and an activity ID specified by the application in development to invoke an action registered in the registry, look up the definition of the invoked action based on the process ID and activity ID specified by the application in development, create an execution context, and call an execute method in the action service,

wherein the action service is configured to discover the invoked action using the application service registrar to perform an action type name look up in the registry, the action service ensuring that a number of arguments included in the action definition matches a number of arguments specified by the action type, and

wherein the action service is further configured to pass an input to and receive a return value from the invoked action, update the output parameters map included in the definition of the invoked action and return the updated output parameters map to the application in development for updating processing variables in the application in development.

13. The system of claim 12 , wherein invoking the action by the application in development includes performing a method specified by the action.

14. The system of claim 12 , wherein the application in development is included in at least one of a business process orchestration engine, a business rule engine, a visual development interface, or a business object lifecycle modeled using a state machine.

15. A non-transitory, machine-readable medium having instructions stored thereon, the instructions, when executed by a processor, cause a computing device to:

create one or more actions, each action coded in a reusable block of code, each action having an action definition including an action type name, an input parameters map, and an output parameters map;

use an application service registrar to register each action in a registry on a server platform, each action registered in the registry being dynamically discoverable;

couple a process service to the registry, the process service providing an interface between an application in development and an action service, the application in development executing on a server platform in one or more of a business process orchestration (BPO) engine, a rule engine, or a user interface engine, the process service decoupling the application in development from the one or more actions and allowing the application in development and the one or more actions to be updated and/or changed independent of one another; and

invoke, by the application in development, one of the actions in the registry,

the invoking occurring by:

delegating the invoking of the action to the process service, the process service looking up the definition of the invoked action based on a process identification (ID) and an activity ID specified by the application in development, the process service creating an execution context and calling an execute method in the action service,

wherein the action service discovers the invoked action using the application service registrar to perform an action type name look up in the registry, the action service ensuring that a number of arguments included in the action definition matches a number of arguments specified by the action type, and

wherein the action service passes an input to and receives a return value from the action, updates the output parameters map included in the definition of the invoked action, and returns the updated output parameters map to the application in development for updating processing variables in the application in development.

16. The medium of claim 15 ,

wherein the instructions further cause the computing device to implement a marker interface service to identify services on which dynamic discovery of an action is performed.

17. The medium of claim 15 ,

wherein the block of code includes at least one input parameter or output parameter, and

wherein the instructions, when executed by the processor, cause the computing device to annotate a block of code with metadata including instructions that cause the computing device to provide a name for the at least one parameter.

18. The medium of claim 15 , wherein the instructions, when executed by the processor, further cause the computing device to execute the action by the application in development, the execution including performing a method specified by the action.

19. The method of claim 1 , further comprising executing the action by the application in development, the executing including performing a method specified by the action.

20. The system of claim 12 , wherein the application in development further invokes the action by accessing the action in the service repository, and executes the action.

Assignments (16)
CORRECTIVE ASSIGNMENT TO CORRECT THE SPELLING OF INVENTOR'S NAME FROM JIAYU GU TO JIAYI GU PREVIOUSLY RECORDED ON REEL 36469 FRAME 865. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 17, 2026
From: RAJWADE, ABHIJIT ANIRRUDHA; WONG, STEVE; SHAPIRO, DAVID LAWRENCE; GU, JIAYI; GUPTA, GIRISH KUMAR; SULCER, DAVID T.
To: BMC SOFTWARE, INC.
Reel/Frame 075403/0825 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2025
From: BMC SOFTWARE, INC.
To: BMC HELIX, INC.
Reel/Frame 070442/0197 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0568 →
GRANT OF FIRST LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0628 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
SECURITY INTEREST Recorded Jun 4, 2020
From: COMPUWARE CORPORATION; BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 053467/0434 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
RELEASE OF PATENTS Recorded Oct 5, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.; BMC ACQUISITION L.L.C.
Reel/Frame 047198/0468 →
SECURITY INTEREST Recorded Oct 2, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047185/0744 →
SECURITY INTEREST Recorded Jul 27, 2017
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 043351/0189 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2015
From: RAJWADE, ABHIJIT ANIRRUDHA; WONG, STEVE; SHAPIRO, DAVID LAWRENCE; GU, JIAYU; GUPTA, GIRISH KUMAR; SULCER, DAVID T.
To: BMC SOFTWARE, INC.
Reel/Frame 036469/0865 →
Cited By (1)
US 12,701,009