IP Library Granted Patent US 8,589,471
Granted Patent B2
US 8,589,471 · App. 13/074,540 · Granted Nov 19, 2013

Dynamic dispatch for distributed object-oriented software systems

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,589,471
App. No.
13/074,540
Granted
Nov 19, 2013
Kind
B2
Abstract

A provider definition represents software that implements the semantics of one or more operations on an object in an object-oriented system. A provider represents a specific instance of a provider definition. One or more providers implement operations for objects in the system. A component of the system called the provider registry maintains a mapping of providers and operations as defined by the provider definitions. When handling a request to invoke a operation on an object, the system dynamically dispatches to the correct provider based on this mapping. Where more than one provider are registered as implementing the desired operation on an object, techniques are disclosed for selecting a provider to perform the desired operation.

Claims (63)

1. A method of dynamically dispatching a request to perform an operation on an object in an object-oriented software system, comprising:

receiving, by a provider registry, a request from a client software executing on a client computer, the request identifying an object and an operation to be performed on the object;

querying, by the provider registry, a database storing provider definitions to determine which providers to perform the operation on the object, the provider definitions including a list of providers, and for each provider, the provider definitions identifying a node that hosts a respective provider, at least one operation provided by the respective provider, and at least one object that is the subject of the at least one operation;

selecting, by the provider registry, a first provider registered as performing the operation on the object based on the provider definitions including determining that the operation to be performed on the object is included within a provider definition corresponding to the first provider; and

sending, by the provider registry, the request to perform the operation on the object to the node corresponding to the first provider for execution by the first provider.

2. The method of claim 1 , wherein the provider definitions include

provider relationship information identifying a relationship between the first provider and at least one second provider.

3. The method of claim 1 , further comprising:

receiving, by the provider registry, a request for a substitute provider to perform the operation on the object, from the first provider;

querying, by the provider registry, the database storing the provider definitions to determine which other providers to perform the operation on the object;

selecting, by the provider registry, a second provider as the substitute provider to perform the operation on the object based on the provider definitions including determining that the operation to be performed on the object is included within a provider definition corresponding to the second provider, the second provider being different from the first provider; and

sending, by the provider registry, the request to perform the operation on the object to the node corresponding to the second provider for execution by the second provider.

4. The method of claim 3 , wherein the second provider is a child of the first provider.

5. The method of claim 3 , wherein the second provider is a peer of the first provider.

6. The method of claim 1 , wherein the selecting, by the provider registry, a first provider registered as performing the operation on the object comprises:

identifying a plurality of providers registered as performing the operation on the object based on the provider definitions including determining that the operation to be performed on the object is included within a provider definition for each of the plurality of providers; and

selecting the first provider from the plurality of providers.

7. The method of claim 6 , wherein the selecting the first provider from the plurality of providers comprises:

evaluating a policy to determine which of the plurality of providers should perform the operation on the object.

8. The method of claim 6 , wherein the selecting the first provider from the plurality of providers comprises:

sending, by the provider registry, a request for advisor information for determining which provider among the plurality of providers is to perform the operation on the object, over a network, to an advisor executing on a computer remote from the provider registry;

receiving, by the provider registry, the advisor information, over the network, from the advisor, the advisor information identifying the first provider among the plurality of providers as the provider to perform the operation on the object; and

selecting, by the provider registry, the first provider as identified by the advisor information.

9. The method of claim 6 , wherein the selecting the first provider from the plurality of providers comprises:

selecting the first providers from the plurality of providers randomly.

10. The method of claim 6 , wherein each provider of the plurality of providers performs the operation on the object differently than each other provider of the plurality of providers.

11. The method of claim 1 , further comprising:

registering, by the provide registry, the first provider as performing the operation to be performed on the object including receiving information to construct the provider definition corresponding to the first provider.

12. A networked computer system comprising:

at least one processor; and

a non-transitory computer readable medium including instructions executable by the at least one processor that are configured to implement;

a provider registry configured to receive a request from a client software executing on a client computer, the request identifying an object and an operation to be performed on the object; and

a database configured to store provider definitions, the provider definitions including a list of providers, and for each provider, the provider definitions identifying a node that hosts a respective provider, at least one operation provided by the respective provider, and at least one object that is the subject of the at least one operation,

the provider registry configured to query the database to determine which providers to perform the operation on the object as specified in the request,

the provider registry configured to select a first provider registered as performing the operation on the object based on the provider definitions including determining that the operation to be performed on the object is included within a provider definition corresponding to the first provider,

the provider registry configured to send the request to perform the operation on the object to the node corresponding to the first provider for execution by the first provider.

13. The networked computer system of claim 12 ,

the provider registry configured to receive a request for a substitute provider to perform the operation on the object from the first provider,

the provider registry configured to query the database storing the provider definitions to determine which other providers to perform the operation on the object,

the provider registry configured to select a second provider as the substitute provider to perform the operation on the object based on the provider definitions including determining that the operation to be performed on the object is included within a provider definition corresponding to the second provider, the second provider being different from the first provider, and

the provider registry configured to send the request to perform the operation on the object to the node corresponding to the second provider for execution by the second provider.

14. The networked computer system of claim 12 , further comprising:

a policy engine configured to evaluate a policy to determine which of the plurality of providers should perform the operation on the object.

15. A non-transitory computer readable medium including instructions, when executed by at least one processor, are configured to:

receive a request from a client software executing on a client computer, the request identifying an object and an operation to be performed on the object;

query a database storing provider definitions to determine which providers to perform the operation on the object, the provider definitions including a list of providers, and for each provider, the provider definitions identifying a node that hosts a respective provider, at least one operation provided by the respective provider, and at least one object that is the subject of the at least one operation;

select a first provider registered as performing the operation on the object based on the provider definitions including determining that the operation to be performed on the object is included within a provider definition corresponding to the first provider; and

send the request to perform the operation on the object to the node corresponding to the first provider for execution by the first provider.

16. The non-transitory computer readable medium of claim 15 , wherein the provider definitions include provider relationship information that identifies any peers associated with each respective provider.

17. The non-transitory computer readable medium of claim 15 , wherein the instructions include instructions to:

receive a request for a substitute provider to perform the operation on the object from the first provider;

query the database storing the provider definitions to determine which other providers to perform the operation on the object;

select a second provider as the substitute provider to perform the operation on the object based on the provider definitions including determining that the operation to be performed on the object is included within a provider definition corresponding to the second provider, the second provider being different from the first provider; and

send the request to perform the operation on the object to the node corresponding to the second provider for execution by the second provider.

18. The non-transitory computer readable medium of claim 15 , wherein the instructions to select a first provider registered as performing the operation on the object comprises:

identify a plurality of providers registered as performing the operation on the object based on the provider definitions including determining that the operation to be performed on the object is included within a provider definition for each of the plurality of providers; and

select the first provider from the plurality of providers.

19. The non-transitory computer readable medium of claim 18 , wherein the instructions to select the first provider from the plurality of providers includes instructions to:

evaluate a policy to determine which of the plurality of providers should perform the operation on the object.

20. The non-transitory computer readable medium of claim 18 , wherein the instructions to select the first provider from the plurality of providers comprises instructions to:

send a request for advisor information for determining which provider among the plurality of provider is to perform the operation on the object, over a network, to an advisor executing on a computer remote from the provider registry;

receive the advisor information, over the network, from the advisor, the advisor information identifying the first provider among the plurality of providers as the provider to perform the operation on the object; and

select the first provider as identified by the advisor information.

Assignments (14)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2025
From: BMC SOFTWARE, INC.
To: BMC HELIX, INC.
Reel/Frame 070442/0197 →
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 →
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 →
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 →
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 →
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: 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 AGREEMENT Recorded Sep 11, 2013
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 031204/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2012
From: WHITNEY, JONATHAN; VUL, ALEXANDER; CONNORS, MATTHEW; ERIKSSON, JOHAN; NEOGI, ATANU
To: BMC SOFTWARE, INC.
Reel/Frame 027526/0305 →