IP Library Granted Patent US 10,990,238
Granted Patent B2
US 10,990,238 · App. 16/582,244 · Granted Apr 27, 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,990,238
App. No.
16/582,244
Granted
Apr 27, 2021
Kind
B2
Abstract

A system comprising at least one hardware processor configured to perform: accessing a software robot computer program for controlling at least one application program to perform a task comprising a first sub-task to be performed by a first application program; generating an object hierarchy comprising a plurality of objects corresponding to active graphical user interface (GUI) elements of the first application program; and controlling the first application program to perform the first sub-task. The controlling includes identifying, using the software robot computer program, a first action to perform in furtherance of the first sub-task; automatically accessing, in the object hierarchy, a first object corresponding to a first active GUI element of the first application program, the accessing comprising refreshing the object hierarchy; and automatically using the first object to cause the first application program to at least partially perform the first action.

Claims (53)

1. A system, comprising:

at least one hardware processor; and

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:

controlling a first application program using an object hierarchy comprising a first plurality of objects corresponding to a first plurality of graphical user interface (GUI) elements associated with a user interface of the first application program, wherein controlling the first application program comprises:

identifying a first action to be performed by the first application program;

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

identifying a second action to be performed by the first application program;

refreshing the object hierarchy to obtain a refreshed object hierarchy comprising a second plurality of objects corresponding to a second plurality of GUI elements associated with the user interface of the first application program, the second plurality of objects including a second object not in the first plurality of objects, the second object corresponding to a second GUI element of the second plurality of GUI elements; and

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

2. The system of claim 1 , wherein the processor-executable instructions further cause the at least one hardware processor to control a second application program using the object hierarchy at least in part by:

identifying a third action to be performed by the second application program;

automatically accessing, in the object hierarchy, a third object corresponding to a third GUI element of the second application program; and

automatically using the third object to cause, via the third GUI element, the second application program to at least partially perform the third action.

3. The system of claim 2 , wherein the processor-executable instructions further cause the at least one hardware processor to control a third application program using the object hierarchy at least in part by:

identifying a fourth action to be performed by the third application program;

automatically accessing, in the object hierarchy, a fourth object corresponding to a fourth GUI element of the third application program; and

automatically using the fourth object to cause, via the fourth GUI element, the third application program to at least partially perform the fourth action.

4. The system of claim 1 , wherein refreshing the object hierarchy comprises refreshing only a subset of objects in the object hierarchy.

5. The system of claim 1 , wherein refreshing the object hierarchy comprises refreshing only the first object and/or one or more descendant objects of the first object in the object hierarchy.

6. The system of claim 1 , wherein refreshing the object hierarchy comprises adding to the object hierarchy a new object associated with an active GUI element of the first application program, wherein the second object comprises the new object.

7. The system of claim 1 , wherein refreshing the object hierarchy further comprises removing a particular object from the object hierarchy, wherein the particular object is associated with an inactive GUI element of the first application program.

8. The system of claim 1 , wherein refreshing the object hierarchy comprises updating at least one property of at least one object in the object hierarchy.

9. The system of claim 1 , wherein refreshing the object hierarchy comprises:

determining that a particular object in the object hierarchy is invalid; and

refreshing the particular object using a reverse tree traversal technique.

10. The system of claim 1 , further comprising:

accessing, in the object hierarchy, the first object of the first plurality of objects corresponding to the first GUI element of the first plurality of GUI elements of the first application program, wherein the accessing comprises searching for the first object in the object hierarchy using a search string constructed in accordance with a search grammar, the search grammar comprising at least one token operator, at least one action operator, and at least one relationship operator.

11. The system of claim 1 , wherein refreshing the object hierarchy comprises:

refreshing one or more objects in the object hierarchy, wherein each of the one or more objects is a descendant of the first object, and wherein refreshing the one or more objects is performed using a plurality of threads.

12. The system of claim 11 , wherein the one or more objects includes a first child object of the first object and a second child object of the first object, and wherein refreshing the one or more objects comprises:

refreshing objects in the object hierarchy that are descendants of the first child object using a first thread in the plurality of threads; and

refreshing objects in the object hierarchy that are descendants of the second child object using a second thread in the plurality of threads.

13. The system of claim 12 , wherein the object hierarchy includes a first set of objects associated with the first application program and a second set of objects associated with a second application program, wherein the first set of objects includes more objects than that of the second set of objects, and wherein refreshing the one or more objects in the object hierarchy using the plurality of threads comprises using more threads in the plurality of threads to refresh objects in the first set of objects than that to refresh objects in the second set of objects.

14. The system of claim 1 , wherein refreshing the object hierarchy comprises refreshing an object in the object hierarchy, and the second object comprises the refreshed object.

15. A method for controlling at least one application program, the method comprising:

using at least one computer hardware processor to perform:

controlling a first application program using an object hierarchy comprising a first plurality of objects corresponding to a first plurality of graphical user interface (GUI) elements associated with a user interface of the first application program, wherein controlling the first application program comprises:

identifying a first action to be performed by the first application program;

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

identifying a second action to be performed by the first application program;

refreshing the object hierarchy to obtain a refreshed object hierarchy comprising a second plurality of objects corresponding to a second plurality of GUI elements associated with the user interface of the first application program, the second plurality of objects including a second object not in the first plurality of objects, the second object corresponding to a second GUI element of the second plurality of GUI elements; and

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

16. The system of claim 15 , wherein refreshing the object hierarchy comprises refreshing only a subset of objects in the object hierarchy.

17. The system of claim 15 , wherein refreshing the object hierarchy comprises refreshing only the first object and/or one or more descendant objects of the first object in the object hierarchy.

18. The method of claim 15 , wherein refreshing the object hierarchy comprises adding to the object hierarchy a new object associated with an active GUI element of the first application program, and the second object comprises the new object.

19. The method of claim 15 , wherein refreshing the object hierarchy comprises refreshing an object in the object hierarchy, and the second object comprises the refreshed object.

20. A 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 at least one application program, the method comprising:

controlling a first application program using an object hierarchy comprising a first plurality of objects corresponding to a first plurality of graphical user interface (GUI) elements associated with a user interface of the first application program, wherein controlling the first application program comprises:

identifying a first action to be performed by the first application program;

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

identifying a second action to be performed by the first application program;

refreshing the object hierarchy to obtain a refreshed object hierarchy comprising a second plurality of objects corresponding to a second plurality of GUI elements associated with the user interface of the first application program, the second plurality of objects including a second object not in the first plurality of objects, the second object corresponding to a second GUI element of the second plurality of GUI elements; and

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

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 (4)
Continuation 15059638 · Mar 3, 2016
Provisional Application 62155227 · Apr 30, 2015
Provisional Application 62127795 · Mar 3, 2015
Related Publication 20200019283A1 · Jan 16, 2020
Cited By (1)
US 12,204,650