IP Library Granted Patent US 10,983,660
Granted Patent B2
US 10,983,660 · App. 16/842,363 · Granted Apr 20, 2021

Software robots for programmatically controlling computer programs to perform tasks

Inventors: George Peter Nychis (Somerville, MA); Rohan Narayan Murty (Bangalore, IN)
Assignee: Soroco Private Limited
G06F3/0481G06F3/048G06F3/0482G06F3/0484G06F3/04842G06F8/38G06F9/44G06F9/4488G06F9/451G06F9/455G06F9/45508G06F9/45512G06F9/45533G06F9/45558G06F11/0706G06F11/0766G06F11/32G06F11/36G06F11/3612G06F11/3688G06F16/9535G06F11/3409G06F11/3438G06F11/3466G06F11/3476G06F2009/4557
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,983,660
App. No.
16/842,363
Granted
Apr 20, 2021
Kind
B2
Abstract

A system comprising at least one hardware processor; at least one non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by the at least one hardware processor, cause the at least one hardware processor to perform: generating an object hierarchy comprising a plurality of objects corresponding to active graphical user interface (GUI) elements of a first application program, the generating comprising: obtaining a hierarchical representation of the active GUI elements of the application program; generating an object for each of at least some of the active GUI elements represented in the hierarchical representation; and organizing the generated objects into the object hierarchy based on relationships among active GUI elements represented in the hierarchical representation; and controlling, using software robot computer program and the generated object hierarchy, the first application program to perform the first sub-task.

Claims (57)

1. A system for controlling multiple application programs to perform a task, the system comprising:

at least one hardware processor;

at least one non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by the at least one hardware processor, cause the at least one hardware processor to perform:

generating an object hierarchy comprising a plurality of objects corresponding to graphical user interface (GUI) elements of a first application program and a second application program at least in part by:

obtaining a first representation of GUI elements of the first application program from a first source,

generating, based on the first representation of GUI elements of the first application program, a first portion of the object hierarchy corresponding to the GUI elements of the first application program, the first portion of the object hierarchy comprising a first object corresponding to a first GUI element of the first application program,

obtaining a second representation of GUI elements of the second application program from a second source different from the first source, and

generating, based on the second representation of GUI elements of the second application program, a second portion of the object hierarchy corresponding to the GUI elements of the second application program, the second portion of the object hierarchy comprising a second object corresponding to a second GUI element of the second application program;

controlling the first application program using the object hierarchy at least in part by:

using the first object corresponding to the first GUI element of the first application program to cause, via the first GUI element, the first application program to at least partially perform a first action; and

controlling the second application program using the object hierarchy at least in part by:

using the second object corresponding to the second GUI element of the second application program to cause, via the second GUI element, the second application program to at least partially perform a second action.

2. The system of claim 1 , wherein the first source is a first application programming interface (API) and the second source is a second API different from the first API.

3. The system of claim 2 , wherein the first API is associated with the first application program.

4. The system of claim 1 , wherein the first application program is a JAVA application program and the first source is a JAVA Virtual Machine executing the JAVA application program.

5. The system of claim 1 , wherein the first source is an Internet browser.

6. The system of claim 1 , wherein the first source is an operating system and the second source is a source different from the operating system.

7. The system of claim 1 , wherein:

controlling the first application program further comprises accessing, in the first portion of the object hierarchy, the first object corresponding to the first GUI element of the first application program, and

controlling the second application program further comprises accessing, in the second portion of the object hierarchy, the second object corresponding to the second GUI element of the second application program.

8. A method for controlling multiple application programs to perform a task, the method comprising:

using at least one computer hardware processor to perform:

generating an object hierarchy comprising a plurality of objects corresponding to graphical user interface (GUI) elements of a first application program and a second application program at least in part by:

obtaining a first representation of GUI elements of the first application program from a first source,

generating, based on the first representation of GUI elements of the first application program, a first portion of the object hierarchy corresponding to the GUI elements of the first application program, the first portion of the object hierarchy comprising a first object corresponding to a first GUI element of the first application program,

obtaining a second representation of GUI elements of the second application program from a second source different from the first source, and

generating, based on the second representation of GUI elements of the second application program, a second portion of the object hierarchy corresponding to the GUI elements of the second application program, the second portion of the object hierarchy comprising a second object corresponding to a second GUI element of the second application program;

controlling the first application program using the object hierarchy at least in part by:

using the first object corresponding to the first GUI element of the first application program to cause, via the first GUI element, the first application program to at least partially perform a first action; and

controlling the second application program using the object hierarchy at least in part by:

using the second object corresponding to the second GUI element of the second application program to cause, via the second GUI element, the second application program to at least partially perform a second action.

9. The method of claim 8 , wherein the first source is a first application programming interface (API) and the second source is a second API different from the first API.

10. The method of claim 9 , wherein the first API is associated with the first application program.

11. The method of claim 8 , wherein the first application program is a JAVA application program and the first source is a JAVA Virtual Machine executing the JAVA application program.

12. The method of claim 8 , wherein the first source is an Internet browser.

13. The method of claim 8 , wherein the first source is an operating system and the second source is a source different from the operating system.

14. The method of claim 8 , wherein:

controlling the first application program further comprises accessing, in the first portion of the object hierarchy, the first object corresponding to the first GUI element of the first application program, and

controlling the second application program further comprises accessing, in the second portion of the object hierarchy, the second object corresponding to the second GUI element of the second application program.

15. At least one non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by at least one hardware processor, cause the at least one hardware processor to perform a method for controlling multiple application programs to perform a task, the method comprising:

generating an object hierarchy comprising a plurality of objects corresponding to graphical user interface (GUI) elements of a first application program and a second application program at least in part by:

obtaining a first representation of GUI elements of the first application program from a first source,

generating, based on the first representation of GUI elements of the first application program, a first portion of the object hierarchy corresponding to the GUI elements of the first application program, the first portion of the object hierarchy comprising a first object corresponding to a first GUI element of the first application program,

obtaining a second representation of GUI elements of the second application program from a second source different from the first source, and

generating, based on the second representation of GUI elements of the second application program, a second portion of the object hierarchy corresponding to the GUI elements of the second application program, the second portion of the object hierarchy comprising a second object corresponding to a second GUI element of the second application program;

controlling the first application program using the object hierarchy at least in part by:

using the first object corresponding to the first GUI element of the first application program to cause, via the first GUI element, the first application program to at least partially perform a first action; and

controlling the second application program using the object hierarchy at least in part by:

using the second object corresponding to the second GUI element of the second application program to cause, via the second GUI element, the second application program to at least partially perform a second action.

16. The at least one non-transitory computer-readable storage medium of claim 15 , wherein the first source is a first application programming interface (API) and the second source is a second API different from the first API.

17. The at least one non-transitory computer-readable storage medium of claim 16 , wherein the first API is associated with the first application program.

18. The at least one non-transitory computer-readable storage medium of claim 15 , wherein the first application program is a JAVA application program and the first source is a JAVA Virtual Machine executing the JAVA application program.

19. The at least one non-transitory computer-readable storage medium of claim 15 , wherein the first source is an Internet browser.

20. The at least one non-transitory computer-readable storage medium of claim 15 , wherein the first source is an operating system and the second source is a source different from the operating system.

21. The at least one non-transitory computer-readable storage medium of claim 15 , wherein:

controlling the first application program further comprises accessing, in the first portion of the object hierarchy, the first object corresponding to the first GUI element of the first application program, and

controlling the second application program further comprises accessing, in the second portion of the object hierarchy, the second object corresponding to the second GUI element of the second application program.

Assignments (6)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 052366 FRAME: 0939. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT . Recorded Mar 25, 2022
From: SOFTWARE ROBOTICS CORPORATION
To: SOROCO PRIVATE LIMITED
Reel/Frame 059510/0556 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 052366 FRAME: 0974. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 23, 2021
From: MURTY, ROHAN NARAYAN
To: SOROCO PRIVATE LIMITED
Reel/Frame 059486/0122 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 10, 2020
From: NYCHIS, GEORGE PETER
To: SOFTWARE ROBOTICS CORPORATION
Reel/Frame 052366/0901 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 10, 2020
From: SOFTWARE ROBOTICS CORPORATION
To: SOFTWARE ROBOTICS CORPORATION LIMITED
Reel/Frame 052366/0939 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 10, 2020
From: MURTY, ROHAN NARAYAN
To: SOFTWARE ROBOTICS CORPORATION LIMITED
Reel/Frame 052366/0971 →
CHANGE OF NAME Recorded Apr 10, 2020
From: SOFTWARE ROBOTICS CORPORATION LIMITED
To: SOROCO PRIVATE LIMITED
Reel/Frame 052366/0977 →
Continuity (5)
Continuation 16150743 · Oct 3, 2018
Continuation 15059907 · Mar 3, 2016
Provisional Application 62155227 · Apr 30, 2015
Provisional Application 62127795 · Mar 3, 2015
Related Publication 20200272282A1 · Aug 27, 2020