IP Library › Granted Patent US 11,194,564
Granted Patent B1
US 11,194,564 · App. 16/398,128 · Granted Dec 7, 2021

Maintaining compatibility in a multi-component application

Inventors: Akash Dwivedi (San Francisco, CA); Simon Foster Fishel (Portland, OR); Eric Tschetter (Redwood City, CA); Joshua Walters (Santa Clara, CA)
Assignee: Splunk Inc.
G06F8/65G06F8/71G06F16/245H04L67/10H04L67/34H04L67/36
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,194,564
App. No.
16/398,128
Filed
Apr 29, 2019
Granted
Dec 7, 2021
Kind
B1
Art Unit
2193
USPC
717/122
Abstract

Systems and methods are disclosed for providing a multi-component application, including a first and second component. Functionality of the application may be modified by modification of the first component, potentially without requiring modification of the second component. However, some functionalities added to application may require modifications to both the first and second component. To maintain compatibility between components, the first component can be configured to detect versioning information of a second component, and adjust its functionality to disable functions unavailable due to lack of compatibility with a current version of the second component. The first component can notify an end user of any such lack of compatibility, and potentially instruct the end user in updating the second component.

Claims (80)

1. A computer-implemented method, comprising:

receiving, at a computing device, a request to execute an application, the application including a first component implemented at the computing device and a second component implemented on a remote computing system, wherein the first component enables use of the second component;

transmitting, via a network connection between the computing device and the remote computing system, a network request requesting to access the application;

receiving, via the network connection between the computing device and the remote computing system, a network object, wherein the network object maintains the network connection between the computing device and the remote computing system;

loading the network object on the computing device, wherein loading the network object instructs the computing device to transmit a second network request to obtain program code for the first component;

receiving, over the network, the program code, wherein, upon execution of the program code by the computing device, the computing device implements the first component;

determining a version indicator associated with the second component, the version indicator indicating capabilities of the second component;

using the version indicator, modifying the execution of the program code during the execution of the program code to disable one or more functions of the first component such that the program code executing to implement the first component executes compatibly with the capabilities of the second component; and

processing a user request to the application at least partly by initially processing the request using the first component implemented on the computing device and communicating a result of initially processing the request from the first component to the network object loaded on the computing device, wherein the network object transmits the result of initially processing the request to the second component, via the network connection between the computing device and the remote computing system, for subsequent processing.

2. The computer-implemented method of claim 1 , wherein the first component includes a user interface element associated with a capability that is not included among the capabilities of the second component.

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

receiving input at the first component, wherein the input is associated with a capability that is not included among the capabilities of the second component; and

generating a message indicating that the capability is not supported by the second component.

4. The computer-implemented method of claim 3 , wherein the message further indicates a version of the second component that supports the capability.

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

determining that the second component has been updated to a new version of the second component, the new version including a different set of capabilities; and

adjusting functionality of the first component such that the program code executing to implement the first component executes compatibly with the different set of capabilities.

6. The computer-implemented method of claim 1 , wherein first component provides user interface for the second component.

7. The computer-implemented method of claim 1 , wherein processing the user request to the application further comprises:

receiving a response from the second component over the network connection via the network object;

passing the response from the network object to the first component; and

providing an output corresponding to the response from the first component to a user.

8. The computer-implemented method of claim 1 , wherein the program code for the first component is obtained from a different computing system on a different network.

9. The computer-implemented method of claim 7 , wherein a data intake and query system also executes on the remote computing system, wherein the user request comprises a query to the data intake and query system, and wherein the response include results of the query.

10. The computer-implemented method of claim 9 , further comprising:

determining a second version indicator associated with the data intake and query system, wherein disabling one or more functions of the first component further uses the second version indicator such that the program code executing to implement the first component also executes compatibly with the data intake and query system.

11. A system comprising:

a data store including computer-executable instructions; and

a processor in communication with the data store and configured to execute the computer-executable instructions to:

receive, at a computing device, a request to execute an application, the application including a first component implemented at the computing device and a second component implemented on a remote computing system, wherein the first component enables use of the second component;

transmit, via a network connection between the computing device and the remote computing system, a network request requesting to access the application;

receive, via the network connection between the computing device and the remote computing system, a network object, wherein the network object maintains the network connection between the computing device and the remote computing system;

load the network object on the computing device, wherein loading the network object instructs the computing device to transmit a second network request to obtain program code for the first component;

receive, over the network, the program code, wherein, upon execution of the program code by the computing device, the computing device implements the first component;

determine a version indicator associated with the second component, the version indicator indicating capabilities of the second component;

using the version indicator, modify the execution of the program code during the execution of the program code to disable one or more functions of the first component such that the program code executing to implement the first component executes compatibly with the capabilities of the second component; and

process a user request to the application at least partly by initially processing the request using the first component implemented on the computing device and communicating a result of initially processing the request from the first component to the network object loaded on the computing device, wherein the network object transmits the result of initially processing the request to the second component, via the network connection between the computing device and the remote computing system, for subsequent processing.

12. The system of claim 11 , wherein the first component includes a user interface element associated with a capability that is not included among the capabilities of the second component.

13. The system of claim 11 , wherein the processor is further configured to execute the computer-executable instructions to:

receive input at the first component, wherein the input is associated with a capability that is not included among the capabilities of the second component; and

generate a message indicating that the capability is not supported by the second component.

14. The system of claim 11 , wherein the processor is further configured to execute the computer-executable instructions to:

determine that the second component has been updated to a new version of the second component, the new version including a different set of capabilities; and

adjust functionality of the first component such that the program code executing to implement the first component executes compatibly with the different set of capabilities.

15. The system of claim 11 , wherein processing the user request to the application further comprises:

receiving a response from the second component over the network connection via the network object;

passing the response from the network object to the first component; and

providing an output corresponding to the response from the first component to a user.

16. The system of claim 11 , wherein the program code for the first component is obtained from a different computing system on a different network.

17. The system of claim 15 , wherein a data intake and query system also executes on the remote computing system, wherein the user request comprises a query to the data intake and query system, and wherein the response include results of the query.

18. The system of claim 17 , wherein the processor is further configured to execute the computer-executable instructions to:

determine a second version indicator associated with the data intake and query system, wherein disabling one or more functions of the first component further uses the second version indicator such that the program code executing to implement the first component also executes compatibly with the data intake and query system.

19. Non-transitory computer-readable media comprising computer-executable instructions that, when executed by a computing system, cause the computing system to:

receive, at a computing device, a request to execute an application, the application including a first component implemented at the computing device and a second component implemented on a remote computing system, wherein the first component enables use of the second component;

transmit, via a network connection between the computing device and the remote computing system, a network request requesting to access the application;

receive, via the network connection between the computing device and the remote computing system, a network object, wherein the network object maintains the network connection between the computing device and the remote computing system;

load the network object on the computing device, wherein loading the network object instructs the computing device to transmit a second network request to obtain program code for the first component;

receive, over the network, the program code, wherein, upon execution of the program code by the computing device, the computing device implements the first component;

determine a version indicator associated with the second component, the version indicator indicating capabilities of the second component;

using the version indicator, modify the execution of the program code during the execution of the program code to disable one or more functions of the first component such that the program code executing to implement the first component executes compatibly with the capabilities of the second component; and

process a user request to the application at least partly by initially processing the request using the first component implemented on the computing device and communicating a result of initially processing the request from the first component to the network object loaded on the computing device, wherein the network object transmits the result of initially processing the request to the second component, via the network connection between the computing device and the remote computing system, for subsequent processing.

20. The non-transitory computer-readable media of claim 19 , wherein the first component includes a user interface element associated with a capability that is not included among the capabilities of the second component.

21. The non-transitory computer-readable media of claim 19 , wherein the computer-executable instructions further cause the computing system to:

receive input at the first component, wherein the input is associated with a capability that is not included among the capabilities of the second component; and

generate a message indicating that the capability is not supported by the second component.

22. The system of claim 11 , wherein first component provides user interface for the second component.

23. The system of claim 13 , wherein the message further indicates a version of the second component that supports the capability.

24. The non-transitory computer-readable media of claim 19 , wherein the computer-executable instructions further cause the computing system to:

determine that the second component has been updated to a new version of the second component, the new version including a different set of capabilities; and

adjust functionality of the first component such that the program code executing to implement the first component executes compatibly with the different set of capabilities.

25. The non-transitory computer-readable media of claim 19 , processing the user request to the application further comprises:

receiving a response from the second component over the network connection via the network object;

passing the response from the network object to the first component; and

providing an output corresponding to the response from the first component to a user.

26. The non-transitory computer-readable media of claim 19 , wherein the program code for the first component is obtained from a different computing system on a different network.

27. The non-transitory computer-readable media of claim 25 , wherein a data intake and query system also executes on the remote computing system, wherein the user request comprises a query to the data intake and query system, and wherein the response include results of the query.

28. The non-transitory computer-readable media of claim 27 , wherein the computer-executable instructions further cause the computing system to:

determine a second version indicator associated with the data intake and query system, wherein disabling one or more functions of the first component further uses the second version indicator such that the program code executing to implement the first component also executes compatibly with the data intake and query system.

29. The non-transitory computer-readable media of claim 19 , wherein first component provides user interface for the second component.

30. The non-transitory computer-readable media of claim 21 , wherein the message further indicates a version of the second component that supports the capability.

Assignments (3)
CHANGE OF NAME Recorded Jul 22, 2025
From: SPLUNK INC.
To: SPLUNK LLC
Reel/Frame 072170/0599 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2025
From: SPLUNK LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 072173/0058 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 31, 2019
From: DWIVEDI, AKASH; FISHEL, SIMON FOSTER; TSCHETTER, ERIC; WALTERS, JOSHUA
To: SPLUNK INC.
Reel/Frame 049339/0869 →
Cited By (6)
US 12,197,908 US 12,206,782 US 12,395,547 US 12,417,074 US 12,537,835 US 12,585,569