IP Library Granted Patent US 9,311,612
Granted Patent B2
US 9,311,612 · App. 12/976,058 · Granted Apr 12, 2016

System and method for improved service oriented architecture

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,311,612
App. No.
12/976,058
Granted
Apr 12, 2016
Kind
B2
Abstract

Certain embodiments enable improved execution of service-oriented tasks by coordinating service providers that access service-input values from other service providers and generate service-output values that are accessible by other service providers. Improved performance results from distributed operations of service providers that do not require centralized exchange of all information.

Claims (60)

1. A method of executing a task, the method comprising:

saving the task as a sequence of services including a first service and a second service with each non-final service output corresponding to a subsequent service input in the sequence of services, the saved task including a service-completion record for the services and a first service-input location that indicates where first service-input values are stored for the first service, the saved task being stored at a saved-task location that is connected via a communication bus to a plurality of service providers including a first service provider corresponding to the first service and a second service provider corresponding to the second service, each service provider performing distributed operations in response to a corresponding task-pending notification received via the communication bus, and the distributed operations being decentralized from operations related to sequencing the services of the task;

sending a first task-pending notification to the first service provider via the communication bus, the first task-pending notification including the first service-input location;

receiving a first task-results notification from the first service provider via the communication bus, the first task-results notification including a first service-output location that indicates where the first service provider has stored corresponding first service-output values via a first-service bus that is separate from the communication bus, the first service-output values being generated by the first service provider based on values from the first service-input location, and the values from the first service-input location being accessed by the first service provider separately from the communication bus via the first-service bus;

in response to receiving the first task-results notification, updating the service-completion record at the saved-task location to indicate a completion of the first service and sending a second task-pending notification to the second service provider via the communication bus, the second task-pending notification including the first service-output location identified as a second service-input location that indicates where second service-input values are stored for the second service;

receiving a second task-results notification from the second service provider via the communication bus, the second task-results notification including a second service-output location that indicates where the second service provider has stored corresponding second service-output values via a second-service bus that is separate from the communication bus, the second service-output values being generated by the second service provider based on values from the second service-input location, and the values from the second service-input location being accessed by the second service provider separately from the communication bus via the second-service bus; and

in response to receiving the second task-results notification, updating the service-completion record at the saved-task location to indicate a completion of the second service.

2. The method of claim 1 , further comprising: receiving task-input values from a user to specify the first service-input values.

3. The method of claim 1 , further comprising: providing selected service-output values to a user as a final result of the task.

4. The method of claim 1 , wherein the services include a third service with a corresponding third service provider connected to the communication bus, and the method further comprises:

sending a third task-pending notification to the third service provider via the communication bus, the third task-pending notification including the second service-output location identified as a third service-input location that indicates where input values for the third service are stored; and

receiving a third task-results notification from the third service provider via the communication bus, the third task-results notification including a third service-output location that indicates where the third service provider has stored corresponding third service-output results via a third-service bus that is separate from the communication bus, the third service-output values being generated by the third service provider based on values from the third service-input location.

5. The method of claim 1 , further comprising: identifying at least one of the service providers by accessing a service-provider interface and relating the service-provider interface to at least one of the services.

6. The method of claim 1 , wherein the first and second task-pending notifications each include the saved-task location and the method further comprises:

providing the first service at the first service provider by accessing the first service-input values at the first service-input location and at least one first-service parameter at the saved-task location, generating the first service-output values from the first service-input values and the at least one first-service parameter, and storing the first service-output values at the first service-output location via the first-service bus; and

providing the second service at the second service provider by accessing the second service-input values at the second service-input location and at least one second-service parameter at the saved-task location, generating the second service-output values from the second service-input values and the at least one second-service parameter and storing the second service-output values at the second service-output location via the second-service bus.

7. The method of claim 6 , wherein providing at least one of the services includes:

maintaining a cache of service-output values for the at least one service; and

generating at least some service-output values for the at least one service by accessing cache values stored prior to receiving a corresponding task-pending notification.

8. The method of claim 1 , wherein the communication bus is an Enterprise Service Bus (ESB).

9. A non-transitory computer-readable medium that stores a computer program for executing a task, wherein the computer program includes instructions that, when executed by a computer, cause the computer to perform operations comprising:

saving the task as a sequence of services including a first service and a second service with each non-final service output corresponding to a subsequent service input in the sequence of services, the saved task including a service-completion record for the services and a first service-input location that indicates where first service-input values are stored for the first service, the saved task being stored at a saved-task location that is connected via a communication bus to a plurality of service providers including a first service provider corresponding to the first service and a second service provider corresponding to the second service, each service provider performing distributed operations in response to a corresponding task-pending notification received via the communication bus, and the distributed operations being decentralized from operations related to sequencing the services of the task;

sending a first task-pending notification to the first service provider via the communication bus, the first task-pending notification including the first service-input location;

receiving a first task-results notification from the first service provider via the communication bus, the first task-results notification including a first service-output location that indicates where the first service provider has stored corresponding first service-output values via a first-service bus that is separate from the communication bus, the first service-output values being generated by the first service provider based on values from the first service-input location, and the values from the first service-input location being accessed by the first service provider separately from the communication bus via the first-service bus;

in response to receiving the first task-results notification, updating the service-completion record at the saved task location to indicate a completion of the first service and sending a second task-pending notification to the second service provider via the communication bus, the second task-pending notification including the first service-output location identified as a second service-input location that indicates where second service-input values are stored for the second service;

receiving a second task-results notification from the second service provider via the communication bus, the second task-results notification including a second service-output location that indicates where the second service provider has stored corresponding second service-output values via a second-service bus that is separate from the communication bus, the second service-output values being generated by the second service provider based on values from the second service-input location, and the values from the second service-input location being accessed by the second service provider separately from the communication bus via the second-service bus; and

in response to receiving the second task-results notification, updating the service-completion record at the saved-task location to indicate a completion of the second service.

10. The computer-readable medium of claim 9 , wherein the computer program further includes instructions that, when executed by the computer, cause the computer to perform operations comprising:

receiving task-input values from a user to specify the first service-input values.

11. The computer-readable medium of claim 9 , wherein the computer program further includes instructions that, when executed by the computer, cause the computer to perform operations comprising:

providing selected service-output values to a user as a final result of the task.

12. The computer-readable medium of claim 9 , wherein the services include a third service with a corresponding third service provider connected to the communication bus, and the computer program further includes instructions that, when executed by the computer, cause the computer to perform operations comprising:

sending a third task-pending notification to the third service provider via the communication bus, the third task-pending notification including the second service-output location identified as a third service-input location that indicates where input values for the third service are stored; and

receiving a third task-results notification from the third service provider via the communication bus, the third task-results notification including a third service-output location that indicates where the third service provider has stored corresponding third service-output results via a third-service bus that is separate from the communication bus, the third service-output values being generated by the third service provider based on values from the third service-input location.

13. The computer-readable medium of claim 9 , wherein the computer program further includes instructions that, when executed by the computer, cause the computer to perform operations comprising:

identifying at least one of the service providers by accessing a service-provider interface and relating the service-provider interface to at least one of the services.

14. The computer-readable medium of claim 9 , wherein the first and second task-pending notifications each include the saved-task location and the computer program further includes instructions that, when executed by the computer, cause the computer to perform operations comprising:

providing the first service at the first service provider by accessing the first service-input values at the first service-input location and at least one first-service parameter at the saved-task location, generating the first service-output values from the first service-input values and the at least one first-service parameter, and storing the first service-output values at the first service-output location via the first-service bus; and

providing the second service at the second service provider by accessing the second service-input values at the second service-input location and at least one second-service parameter at the saved-task location, generating the second service-output values from the second service-input values and the at least one second-service parameter and storing the second service-output values at the second service-output location via the second-service bus.

15. The computer-readable medium of claim 14 , wherein providing at least one of the services includes:

maintaining a cache of service-output values for the at least one service; and

generating at least some service-output values for the at least one service by accessing cache values stored prior to receiving a corresponding task-pending notification.

16. An apparatus that executes a task, the apparatus comprising at least one computer configured to perform operations for computer-implemented modules including:

a task-saving module that performs operations including: saving the task as a sequence of services including a first service and a second service with each non-final service output corresponding to a subsequent service input in the sequence of services, the saved task including a service-completion record for the services and a first service-input location that indicates where first service-input values are stored for the first service, the saved task being stored at a saved-task location that is connected via a communication bus to a plurality of service providers including a first service provider corresponding to the first service and a second service provider corresponding to the second service, each service provider performing distributed operations in response to a corresponding task-pending notification received via the communication bus, and the distributed operations being decentralized from operations related to sequencing the services of the task;

a first task-pending notification module that performs operations including: sending a first task-pending notification to the first service provider via the communication bus, the first task-pending notification including the first service-input location;

a first task-results notification module that performs operations including: receiving a first task-results notification from the first service provider via the communication bus, and updating the service-completion record at the saved-task location to indicate a completion of the first service in response to receiving the first task-results notification, the first task-results notification including a first service-output location that indicates where the first service provider has stored corresponding first service-output values via a first-service bus that is separate from the communication bus, the first service-output values being generated by the first service provider based on values from the first service-input location and the values from the first service-input location being accessed by the first service provider separately from the communication bus via the first-service bus;

a second task-pending notification module that performs operations including: sending a second task-pending notification to the second service provider via the communication bus, the second task-pending notification including the first service-output location identified as a second service-input location that indicates where second service-input values are stored for the second service; and

a second task-results notification module that performs operations including: receiving a second task-results notification from the second service provider via the communication bus, and updating the service-completion record at the saved-task location to indicate a completion of the second service in response to receiving the second task-results notification, the second task-results notification including a second service-output location that indicates where the second service provider has stored corresponding second service-output values via a second-service bus that is separate from the communication bus, the second service-output values being generated by the second service provider based on values from the second service-input location, and the values from the second service-input location being accessed by the second service provider separately from the communication bus via the second-service bus.

17. The apparatus of claim 16 , wherein the task-saving module performs operations including: receiving task-input values from a user to specify the first service-input values.

18. The apparatus of claim 16 , wherein the apparatus performs operations including: providing selected service-output values to a user as a final result of the task.

19. The apparatus of claim 16 , wherein the services include a third service with a corresponding third service provider connected to the communication bus, and the apparatus further comprises:

a third task-pending notification module that performs operations including: sending a third task-pending notification to the third service provider, the third task-pending notification including the second service-output location identified as a third service-input location that indicates where input values for the third service are stored; and

a third task-results notification module that performs operations including: receiving a third task-results notification from the third service provider via the communication bus, the third task-results notification including a third service-output location that indicates where the third service provider has stored corresponding third service-output results via a third-service bus that is separate from the communication bus, the third service-output values being generated by the third service provider based on values from the third service-input location.

20. The apparatus of claim 16 , wherein the apparatus performs operations including: identifying at least one of the service providers by accessing a service-provider interface and relating the service-provider interface to at least one of the services.

21. The apparatus of claim 16 , wherein the first and second task-pending notifications each include the saved-task location and the apparatus further comprises:

a first service module at the first service provider, wherein the first service module performs operations including: providing the first service at the first service provider by accessing the first service-input values at the first service-input location and at least one first-service parameter at the saved-task location, generating the first service-output values from the first service-input values and the at least one first-service parameter, and storing the first service-output values at the first service-output location via the first-service bus; and

a second service module at the second service provider, wherein the second service module performs operations including: providing the second service at the second service provider by accessing the second service-input values at the second service-input location and at least one second-service parameter at the saved-task location, generating the second service-output values from the second service-input values and the at least one second-service parameter and storing the second service-output values at the second service-output location via the second-service bus.

22. The apparatus of claim 21 , wherein providing at least one of the services includes:

maintaining a cache of service-output values for the at least one service; and

generating at least some service-output values for the at least one service by accessing cache values stored prior to receiving a corresponding task-pending notification.

Assignments (2)
CHANGE OF NAME Recorded Aug 26, 2014
From: SAP AG
To: SAP SE
Reel/Frame 033625/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2011
From: DELCHEV, IVAN; VOGEL, JUERGEN
To: SAP AG
Reel/Frame 025947/0241 →