IP Library Granted Patent US 9,774,658
Granted Patent B2
US 9,774,658 · App. 14/026,442 · Granted Sep 26, 2017

Orchestration framework for connected devices

Inventors: Andrew Borzycki (Killara, AU); Mallikharjuna Reddy Deva (Sydney, AU); Nick Bissett (Bath, GB); Anil Roychoudhry (Woodcroft, AU); Guy Bieber (Santa Clara, CA); Uday Nandigam Gajendar (Menlo Park, CA)
Assignee: Citrix Systems, Inc.
H04L67/10H04L67/1095
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,774,658
App. No.
14/026,442
Granted
Sep 26, 2017
Kind
B2
Abstract

Systems and methods for interconnecting devices using an orchestration framework are provided herein. An orchestration framework may be provided, and the orchestration framework may interconnect multiple of devices such that the devices are available to share content and computing activities with one another. The orchestration framework may coordinate interactions between the devices that are interconnected with each other through the orchestration framework. A request to share content may be received from one of the devices. The distribution of the content to one or more of the devices may be managed using the orchestration framework. The content may be a file uploaded to a remote data store, content stored at a clipboard that is accessible to the interconnected devices, or a link.

Claims (126)

1. A method comprising:

providing an orchestration framework that interconnects a plurality of devices such that the plurality of devices are available to share content and computing activities, wherein the orchestration framework coordinates interactions between the plurality of devices when the plurality of devices are interconnected through the orchestration framework;

interconnecting the plurality of devices using the orchestration framework;

receiving, from one of the plurality of devices, a request to share a file having a file type; and

managing, using the orchestration framework, sharing of the file with the plurality of devices, wherein the managing comprises:

determining, based on the file type, which of the plurality of devices include a native application capable of opening the file and which of the plurality of devices do not include a native application capable of opening the file,

sending, to at least one of the plurality of devices having a native application capable of opening the file, a first notification comprising an indication of a location at which the file is stored,

establishing a virtual environment comprising a virtualized application capable of opening the file,

opening the file with the virtualized application, and

sending, to at least one of the plurality of devices lacking a native application capable of opening the file, a second notification that, when received, launches a virtual client application that connects to the virtual environment such that the file is accessible at the virtualized application via the virtual client application.

2. The method of claim 1 further comprising:

receiving, from one of the plurality of devices, a second request to share content with a specified device of the plurality of devices; and

sending a notification only to the specified device using the orchestration framework wherein the notification indicates that the content has been shared with the specified device.

3. The method of claim 1 further comprising:

selecting one of the plurality of devices as a dedicated device to receive content having a user-selected content type;

receiving, from one of the plurality of devices, a second request to share content having the user-selected content type; and

sending a notification to only the dedicated device using the orchestration framework wherein the notification indicates that the content has been shared.

4. The method of claim 1 further comprising:

receiving, from one of the plurality of devices, a second request to share a link with one or more of the plurality of devices;

sending a notification comprising the link to at least one device of the plurality of devices using the orchestration framework; and

wherein receipt of the notification at the at least one device causes the at least one device to provide the link to an application capable of handling the link.

5. The method of claim 4 wherein:

the link is a web link for a web site; and

the application capable of handling the link is a web browser.

6. The method of claim 1 further comprising:

receiving, from one of the plurality of devices, a second request comprising content to be shared with one or more of the plurality of devices;

storing the content to be shared at a clipboard that is accessible to multiple devices of the plurality of devices; and

sending a notification indicating the content to be shared is available at the clipboard to at least one of the plurality of devices using the orchestration framework.

7. The method of claim 6 further comprising:

receiving a paste request from a device of the plurality of devices; and

providing, to the device that provided the paste request, the content stored at the clipboard.

8. The method of claim 1 further comprising:

storing a rule that specifies which of the plurality of devices should receive content shared by one or more of the plurality of devices; and

receiving, from one of the plurality of devices, a second request to share selected content; and

sending, using the orchestration framework, a notification to only the devices of the plurality of devices that are specified in the rule wherein the notification indicates the selected content has been shared.

9. Non-transitory computer-readable media storing instructions that, when executed by at least one processor of a client device, cause the client device to:

connect to a plurality of devices using an orchestration agent of an orchestration framework wherein the orchestration framework coordinates interactions between the client device and the plurality of devices interconnected with the client device through the orchestration framework;

receive a selection of a file to share with the plurality of devices, the file having a file type;

submit, to an orchestration service of the orchestration framework using the orchestration agent, a request to share the file; and

wherein receipt of the request at the orchestration service causes the orchestration service to manage sharing of the file with the plurality of devices wherein, to manage the sharing, the orchestration service:

determines, based on the file type, which of the plurality of devices include a native application capable of opening the file and which of the plurality of devices do not include a native application capable of opening the file,

sends, to at least one of the plurality of devices having a native application capable of opening the file, a first notification comprising an indication of a location at which the file is stored,

establishes a virtual environment comprising a virtualized application capable of opening the file,

opens the file with the virtualized application, and

sends, to at least one of the plurality of devices lacking a native application capable of opening the file, a second notification that, when received, launches a virtual client application that connects to the virtual environment such that the file is accessible at the virtualized application via the virtual client application.

10. The non-transitory computer-readable media of claim 9 wherein the instructions, when executed, further cause the client device to:

display, using the orchestration agent, a list of devices indicating which of the plurality of devices that are available for selection as a selected device to receive the file; and

wherein the request to share the file specifies the selected device.

11. The non-transitory computer-readable media of claim 10 wherein the list of devices indicates at least one of:

one or more devices associated with an online meeting a user of the client device is participating in;

one or more personal devices associated with the user of the client device;

one or more devices associated with a user group the user of the client device is associated with;

one or more devices physically located near each other in the same physical space; and

combinations thereof.

12. The non-transitory computer-readable media of claim 9 wherein the instructions, when executed, further cause the client device to:

upload the file to the location at a data store using a remote storage interface of the orchestration framework.

13. The non-transitory computer-readable media of claim 12 wherein the instructions, when executed, further cause the client device to:

receive a share notification at the orchestration agent, the share notification indicating a shared file is available at the data store;

retrieve the shared file from the data store using the remote storage interface;

identify an application capable of opening the shared file using an application resolver of the orchestration framework;

launch the application capable of opening the shared file using an application launcher of the orchestration framework; and

open the shared file using the application.

14. The non-transitory computer-readable media of claim 9 wherein the instructions, when executed, further cause the client device to:

submit, to the orchestration service using the orchestration agent, a second request comprising content associated with a copy command at the client device;

wherein receipt of the second request at the orchestration service causes the orchestration service to store the content at a clipboard that is accessible to multiple devices of the plurality of devices and causes the orchestration service to send a notification indicating the content is available at the clipboard to at least one of the plurality of devices.

15. The non-transitory computer-readable media of claim 14 wherein the instructions, when executed, further cause the client device to:

receive a share notification that content is available at the clipboard;

receive a paste command at the client device;

submit, to the orchestration service using the orchestration agent, a request for the content stored at the clipboard;

receive the content stored at the clipboard in response to receipt of the request at the orchestration service; and

paste the shared content into an application at the client device.

16. The non-transitory computer-readable media of claim 9 wherein the instructions, when executed, further cause the client device to:

submit, to the orchestration service using the orchestration agent, a second request to share a link with the plurality of devices;

wherein receipt of the second request at the orchestration service causes the orchestration service to send a notification that includes the link to at least one of the plurality of devices.

17. The non-transitory computer-readable media of claim 9 wherein the instructions, when executed, further cause the client device to:

receive a share notification at the orchestration agent, the share notification indicating a shared link;

identify an application capable of handling the shared link using an application resolver of the orchestration framework;

launch the application capable of handling the shared link using an application launcher of the orchestration framework; and

handle the link using the application.

18. The non-transitory computer-readable media of claim 9 wherein the instructions, when executed, further cause the client device to:

display, using the orchestration agent, a list of users indicating one or more users available for selection as a selected user to receive the file; and

wherein the request to share the file specifies the selected user.

19. The non-transitory computer-readable media of claim 18 wherein the list of users indicates at least one of:

one or more users associated with a user group of the user of the client device;

one or more users associated with an online meeting the user of the client device is participating in;

one or more users physically located near the user of the client device in the same physical space; and

combinations thereof.

20. The non-transitory computer-readable media of claim 9 wherein the instructions, when executed, further cause the client device to:

display, using the orchestration agent, a list of user groups indicating one or more user groups available for selection as a selected user group to receive the file; and

wherein the request to share the file specifies the selected user group.

21. The non-transitory computer-readable media of claim 20 wherein the list of user groups indicates at least one of:

one or more user groups derived from calendar information provided by a scheduling service wherein the calendar information indicates one or more online meetings scheduled for the user;

a user group having one or more users associated with an online meeting the user is currently participating in;

a user group having one or more users physically located near the user of the client device in the same physical space; and

combinations thereof.

22. The non-transitory computer-readable media of claim 9 wherein the instructions, when executed, further cause the client device to:

launch an online meeting application using an application launcher of the orchestration framework and join the online meeting using the meeting application;

interconnect with a set of devices associated with the online meeting through the orchestration framework;

share content with one or more of the devices associated with the online meeting using the orchestration framework during the online meeting; and

receive shared content from one or more of the devices associated with the online meeting using the orchestration framework during the online meeting.

23. A system comprising:

an orchestration server interconnecting a plurality of client devices using an orchestration framework such that the plurality of client devices are available to share content and computing activities with each other, wherein the orchestration framework comprises a set of server-side orchestration components and a set of client-side orchestration components that coordinate interactions between the plurality of client devices, and wherein the set of server-side orchestration components comprise instructions that, when executed by at least one processor of the orchestration server, cause the orchestration server to:

receive, from one of the plurality of client devices, a request to share a file having a file type, and

determine, based on the file type, which of the plurality of client devices include a native application capable of opening the file and which of the plurality of client devices do not include a native application capable of opening the file,

send, to at least one of the plurality of client devices having a native application capable of opening the file, a first notification comprising an indication of a location at which the file is stored,

establish a virtual environment comprising a virtualized application capable of opening the file,

open the file with the virtualized application, and

send, to at least one of the plurality of client devices lacking a native application capable of opening the file, a second notification that, when received, launches a virtual client application that connects to the virtual environment such that the file is accessible at the virtualized application via the virtual client application.

24. The system of claim 23 , wherein:

the set of server-side orchestration components comprise an orchestration service and a notification service, wherein the notification service comprises instructions that, when executed, cause the orchestration server to send respective notifications to one or more of the plurality of client devices based on operation of the orchestration service; and

the set of client-side orchestration components comprise, for each client device of the plurality of client devices, an orchestration agent and a notification interface, wherein the notification interface comprises instructions that, when executed by at least one processor of the client device, cause the client device to receive one of the respective notifications from the notification service and pass the notification to the orchestration agent.

25. The system of claim 24 further comprising:

a data store that stores one or more files shared between the plurality of client devices;

wherein the set of client-side orchestration components comprises, for each client device of the plurality of client devices:

a remote file interface comprising instructions that, when executed by at least one processor of the client device, cause the client device to retrieve a file from the data store using a storage location included in one of the respective notifications received at the client device,

an application resolver comprising instructions that, when executed by the at least one processor of the client device, cause the client device to identify which application at the client device is capable of opening the file, and

an application launcher comprising instructions that, when executed by the at least one processor of the client device, cause the client device to launch the application capable of opening the file.

26. The system of claim 25 wherein:

one of the respective notifications received at the client device includes a shared link; the application resolver further comprises instructions that, when executed by the at least one processor of the client device, cause the client device to identify which application at the client device is capable of handling the shared link; and

the application launcher further comprises instructions that, when executed by the at least one processor of the client device, cause the client device to launch the application capable of handling the shared link.

27. The system of claim 25 wherein:

the set of server-side orchestration components further comprise a clipboard that is accessible to multiple client devices of the plurality client devices and that stores content associated with a copy command at a first client device of the plurality of client devices; and

the orchestration service further comprises instructions that, when executed by the at least one processor of the orchestration server, provides the content stored at the clipboard to a second client device of the plurality of client devices in response to a paste command at the second client device.

28. The system of claim 23 wherein:

the set of server-side orchestration components comprises a device service comprising instructions that, when executed by the at least one processor of the orchestration server, cause the orchestration server to manage device information related to the plurality of client devices; and

the set of client-side orchestration components further comprise, for each client device of the plurality of client devices, a presence service comprising instructions that, when executed cause the client device to indicate an availability of the client device to the device service.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 4, 2013
From: BORZYCKI, ANDREW; DEVA, MALLIKHARJUNA REDDY; BISSETT, NICK; ROYCHOUDHRY, ANIL; BIEBER, GUY; GAJENDAR, UDAY
To: CITRIX SYSTEMS, INC.
Reel/Frame 031715/0291 →
Continuity (6)
Provisional Application 61712948 · Oct 12, 2012
Provisional Application 61712953 · Oct 12, 2012
Provisional Application 61712956 · Oct 12, 2012
Provisional Application 61712962 · Oct 12, 2012
Provisional Application 61824204 · May 16, 2013
Related Publication 20140108506A1 · Apr 17, 2014