IP Library › Granted Patent US 12,299,466
Granted Patent B2
US 12,299,466 · App. 18/317,172 · Granted May 13, 2025

Graphical user interface for macro generation, modification, and verification

Inventors: Edward Hinton (Dover, NH); Frank Pulito (Berlin, MA); Greg Giannone (Ayer, MA); Jonathan Ferrin (Derry, NH); Zachary Chupka (Pelham, NH)
Assignee: Hyland Software, Inc.
G06F9/45512G06F8/34G06F16/9024
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 12,299,466
App. No.
18/317,172
Granted
May 13, 2025
Kind
B2
Abstract

A graphical user interface (GUI) for an automation application is described herein. The automation applications present the GUI on a display. The GUI displays a directed graph representing a macro for a target application. The directed graph comprises nodes and directed edges connecting the nodes. Each node in the node in the nodes is assigned to an input received by the target application during recording of the macro. Each directed edge is assigned criteria that are to be satisfied in order to traverse each directed edge. Responsive to receiving a modification to the directed graph, the automation application displays a modified directed graph based upon the modification. The automation application generates a modified macro based upon the modified directed graph.

Claims (86)

1. A method executed by a processor of a computing device while the processor executes an automation application, the method comprising:

building a computer-controlled macro for a target application, wherein the computer-controlled macro is generated based upon:

recording a sequence of inputs received by the target application from a user, wherein the sequence of inputs causes the target application to perform an action;

recording a series of input timestamps, wherein an input timestamp is associated with each input of the sequence of inputs;

assigning one or more state timestamps to at least one of:

a screen state of the target application when the target application receives an input of the sequence of inputs or

operating system processes performed by the processor when the target application receives the input;

storing an order of the input timestamps for the sequence of inputs, and storing the state timestamps; and

executing the computer-controlled macro on the target application, by performing the actions on the target application in correct order, utilizing the order of the input timestamps and one or more state timestamps;

wherein the sequence of inputs comprises a first input and a second input, and the series of input timestamps comprises a first input timestamp and a second input timestamp and the one or more state timestamps comprise a first state timestamp and a second state timestamp;

wherein the first input timestamp is assigned to the first input, and the first state timestamp is assigned:

the screen state of the target application when the target application receives the input or the operating system processes performed by the processor when the target application receives the input; and

the second input timestamp is assigned to a second input, and a second state timestamp is assigned to second instance of:

the screen state of the target application when the target application receives the input or the operating system processes performed by the processor when the target application receives the input.

2. The method of claim 1 , further comprising avoiding performance delays of the computer-controlled macro via utilizing the order of the sequence of inputs and one or more input timestamps.

3. The method of claim 1 , wherein the state timestamp is assigned to the evidence event occurring when the target application receives the input.

4. The method of claim 3 , wherein the order in which the evidence event comes into existence in the target application does not correspond to the order in which the operating system processes are performed.

5. The method of claim 1 , wherein the state timestamp is assigned to the evidence event occurring when the target application receives the input, and

the first timestamp and the second timestamp are compared to resolve conflicting evidence events.

6. The method of claim 1 , further comprising:

presenting a graphical user interface (GUI) on a display of the computing device, wherein the GUI comprises:

a screen shot of a target application executing on the computing device; and

a directed graph representing the computer-controlled macro for the target application, wherein the directed graph comprises nodes and directed edges connecting the nodes, wherein each node in the nodes is assigned to an input received by the target application during recording of the computer-controlled macro, wherein each directed edge of the directed edges is assigned criteria that are to be satisfied in order to traverse each directed edge.

7. The method of claim 6 , further comprising:

upon receiving an indication from a user of the computing device, mimicking a first input in the computer-controlled macro to the target application;

concurrently with mimicking the first input in the computer-controlled macro to the target application:

displaying a second screen shot of the target application in the GUI after the first input is mimicked to the target application; and

highlighting a node in the directed graph that is assigned to the first input.

8. The method of claim 1 , wherein the evidence events are information obtained from the operating system processes.

9. The method of claim 1 , further comprising assigning one or more state timestamps to an evidence event occurring when the target application receives the input;

wherein the evidence event is selected from one or more of the group consisting of:

text written to a GUI of the target application or another application;

device context content being copied to a different device context;

activation of a window by the operating system;

deactivation of a window of the operating system;

positioning data indicating a change of position of an element of the GUI;

text representing an internal name of an element of the GUI;

text, names, positioning, and/or type information of operating system interface controls being presented to the user;

text available from an emulation protocol response; and/or

a second application being executed by the computing device.

10. A method executed by a processor of a computing device, the method comprising:

presenting a graphical user interface (GUI) on a display of the computing device, wherein the GUI comprises:

a screen shot of a target application executing on the computing device; and

a directed graph representing a macro for the target application, wherein the directed graph comprises nodes and directed edges connecting the nodes, wherein each node in the nodes is assigned to an input received by the target application during recording of the macro, wherein each directed edge of the directed edges is assigned criteria that are to be satisfied in order to traverse each directed edge;

upon receiving an indication from a user of the computing device, mimicking a first input in the macro to the target application;

determining that first criteria assigned to a directed edge in the directed graph is satisfied, wherein the directed edge is connected to the node in the directed graph; and

upon determining that the first criteria is satisfied, mimicking a second input in the macro to the target application.

11. The method of claim 10 , wherein the determining that the first criteria is satisfied includes at least one of:

evaluating text located in the screen shot against a constant text value;

evaluating a position of the text in the screen shot against a constant set of coordinates in the screen shot;

evaluating the position of the text in the screen shot against a variable set of coordinates in a screen state, the screen state comprising a stored screen shot of the target application and characteristics of a display on which the GUI for the target application is displayed;

evaluating the text in the screen shot against a data element;

evaluating the text in the screen shot against an expression; or

evaluating the text in the screen shot against text located in a prior screen shot.

12. The method of claim 10 , further comprising:

prior to presenting the GUI on the display, recording the macro for the target application.

13. The method of claim 10 , wherein mimicking the first input causes the target application to perform at least one of:

generating data;

modifying the data;

transmitting the data to a second computing device over a network connection; or

receiving the data from the second computing device over the network connection.

14. The method of claim 10 , wherein the target application is an enterprise content (ECM) application.

15. A non-transitory computer-readable storage medium comprising instructions that, when executed by a processor of a computing device, cause the processor to perform acts comprising:

building a computer-controlled macro for a target application, wherein the macro is generated based upon:

recording a sequence of inputs received by the target application from a user, wherein the sequence of inputs causes the target application to perform an action;

recording a series of input timestamps, wherein an input timestamp is associated with each input of the sequence of inputs;

assigning a state timestamp to:

an evidence event occurring when the target application receives an input of the sequence of inputs; storing an order of the input timestamps for the sequence of inputs, and

storing the state timestamps; and

executing the macro on the target application, by performing the actions on the target application in correct order, utilizing the order of the input timestamps and one or more state timestamps;

wherein the evidence event is selected from one or more of the group consisting of:

text written to a GUI of the target application or another application;

device context content being copied to a different device context; activation of a window by the operating system;

deactivation of a window of the operating system;

positioning data indicating a change of position of an element of the GUI;

text representing an internal name of an element of the GUI;

text, names, positioning, and/or type information of operating system interface controls being presented to the user;

text available from an emulation protocol response; and/or

a second application being executed by the computing device.

16. The non-transitory computer-readable storage medium of claim 15 , wherein a first input timestamp is assigned to a first input; and

a second input timestamp is assigned to a second input, and a second state timestamp is assigned to second instance of at least one of: the screen state of the target application when the target application receives the input, or the operating system processes performed by the processor when the target application receives the input, or the evidence event occurring when the target application receives the second input.

17. The non-transitory computer-readable storage medium of claim 15 , further comprising avoiding performance delays of the macro via utilizing the order of the sequence of inputs and one or more input timestamps.

18. The non-transitory computer-readable storage medium of claim 15 , wherein the target application is an enterprise content (ECM) application.

19. The non-transitory computer-readable storage medium of claim 16 , wherein the first state timestamp is assigned to the evidence event occurring when the target application receives the input, and

the first timestamp and the second timestamp are compared to resolve conflicting evidence events.

20. The non-transitory computer-readable storage medium of claim 16 , further comprising avoiding performance delays of the macro via utilizing the order of the sequence of inputs and one or more input timestamps.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 6, 2023
From: HINTON, EDWARD; PULITO, FRANK; GIANNONE, GREG; FERRIN, JONATHAN; CHUPKA, ZACHARY
To: HYLAND SOFTWARE, INC.
Reel/Frame 065142/0598 →
Continuity (4)
Continuation 17556589 · Dec 20, 2021
Continuation 16564665 · Sep 9, 2019
Continuation In Part 16545628 · Aug 20, 2019
Related Publication 20230281029A1 · Sep 7, 2023
References Cited (76)
US 5873064A · De Armas et al. · 1999 [cited by applicant]
US 5920841A · Schottmuller et al. · 1999 [cited by applicant]
US 6088712A · Huang et al. · 2000 [cited by applicant]
US 6101461A · Ukigawa et al. · 2000 [cited by applicant]
US 6184880B1 · Okada · 2001 [cited by applicant]
US 6336149B1 · Preston · 2002 [cited by applicant]
US 6386980B1 · Nishino et al. · 2002 [cited by applicant]
US 7299451B2 · Dygon et al. · 2007 [cited by applicant]
US 7398469B2 · Kisamore et al. · 2008 [cited by applicant]
US 7437715B2 · Chatsinchai et al. · 2008 [cited by applicant]
US 7529977B2 · Parvathy et al. · 2009 [cited by applicant]
US 7644367B2 · McKeon et al. · 2010 [cited by applicant]
US 8060791B2 · Hayutin · 2011 [cited by applicant]
US 9130975B2 · Chou et al. · 2015 [cited by applicant]
US 9983859B2 · Mascaro et al. · 2018 [cited by applicant]
US 10558769B2 · Dembo et al. · 2020 [cited by applicant]
US 11144338B2 · Hinton et al. · 2021 [cited by applicant]
US 11204789B2 · Hinton et al. · 2021 [cited by applicant]
US 20030191729A1 · Siak et al. · 2003 [cited by applicant]
US 20040133878A1 · Cole et al. · 2004 [cited by applicant]
US 20050278728A1 · Klementiev · 2005 [cited by applicant]
US 20060005132A1 · Herdeg, III · 2006 [cited by examiner]
US 20060044587A1 · Yoshida et al. · 2006 [cited by applicant]
US 20060150120A1 · Dresti et al. · 2006 [cited by applicant]
US 20060205435A1 · Lee et al. · 2006 [cited by applicant]
US 20060282453A1 · Tjong et al. · 2006 [cited by applicant]
US 20070006179A1 · Tjong et al. · 2007 [cited by applicant]
US 20070006196A1 · Tjong et al. · 2007 [cited by applicant]
US 20070294586A1 · Parvathy et al. · 2007 [cited by applicant]
US 20080282065A1 · Imamichi · 2008 [cited by applicant]
US 20080301094A1 · Zhu et al. · 2008 [cited by applicant]
US 20090133000A1 · Sweis et al. · 2009 [cited by applicant]
US 20090144621A1 · Sangster et al. · 2009 [cited by applicant]
US 20090270121A1 · Soejima · 2009 [cited by applicant]
US 20090300529A1 · Endoh et al. · 2009 [cited by applicant]
US 20090327888A1 · Woolf · 2009 [cited by examiner]
US 20100017693A1 · Koehane et al. · 2010 [cited by applicant]
US 20100269041A1 · Kintzley et al. · 2010 [cited by applicant]
US 20110009192A1 · Aronzon et al. · 2011 [cited by applicant]
US 20110021269A1 · Wolfe-Peterson et al. · 2011 [cited by applicant]
US 20110040824A1 · Harm · 2011 [cited by applicant]
US 20110041140A1 · Harm et al. · 2011 [cited by applicant]
US 20110041141A1 · Harm et al. · 2011 [cited by applicant]
US 20110065509A1 · Rom et al. · 2011 [cited by applicant]
US 20110131450A1 · Wheeler · 2011 [cited by examiner]
US 20110244961A1 · Soelberg · 2011 [cited by applicant]
US 20110302499A1 · Chou et al. · 2011 [cited by applicant]
US 20120089931A1 · Steinhauer · 2012 [cited by applicant]
US 20130067497A1 · Seo et al. · 2013 [cited by applicant]
US 20130196765A1 · Wolff-Peterson et al. · 2013 [cited by applicant]
US 20130205206A1 · Hawver et al. · 2013 [cited by applicant]
US 20140198344A1 · Hirata · 2014 [cited by applicant]
US 20150067701A1 · VanBlon et al. · 2015 [cited by applicant]
US 20160231870A1 · Summa et al. · 2016 [cited by applicant]
US 20170287198A1 · Feng · 2017 [cited by applicant]
US 20170315791A1 · Mascaro et al. · 2017 [cited by applicant]
US 20180121215A1 · Charbonneau et al. · 2018 [cited by applicant]
US 20180165610A1 · Dumant et al. · 2018 [cited by applicant]
US 20180189113A1 · Bequet et al. · 2018 [cited by applicant]
US 20180321949A1 · Bikumala et al. · 2018 [cited by applicant]
US 20180321950A1 · Bikumala et al. · 2018 [cited by applicant]
US 20180339225A1 · Chen · 2018 [cited by applicant]
US 20190179638A1 · Hao et al. · 2019 [cited by applicant]
US 20190196795A1 · Cavalier et al. · 2019 [cited by applicant]
US 20190197206A1 · Dembo et al. · 2019 [cited by applicant]
US 20190227777A1 · ChoFleming, Jr. et al. · 2019 [cited by applicant]
US 20200319856A1 · Loria · 2020 [cited by applicant]
US 20220004409A1 · Hinton et al. · 2022 [cited by applicant]
Anders Morch, Three Levels of End-User Tailoring: Customization, Integration, and Extension, Aug. 14-18, 1995, [Retrieved on Nov. 14, 2024]. Retrieved from the internet: <URL: https://d1wqtxts1xzle7.cloudfront.net/36036… [cited by examiner]
Ganeshan, Ashwath, “Performance Modeling of Data Intensive Applications Using SystemC”, Technische Universiteit Eindhoven University of Technology, Department of Mathematics and Computer Science, Oct. 2015, 86 pages. [cited by applicant]
Non-Final Office Action dated Feb. 3, 2021 for U.S. Appl. No. 16/545,628. [cited by applicant]
Notice of Allowance dated Jun. 9, 2021 for U.S. Appl. No. 16/545,628. [cited by applicant]
Non-Final Office Action dated Aug. 14, 2020 for U.S. Appl. No. 16/564,665. [cited by applicant]
Ex-Parte Quayle Office Action dated Apr. 5, 2021 for U.S. Appl. No. 16/564,665. [cited by applicant]
Notice of Allowance dated Aug. 13, 2021 for U.S. Appl. No. 16/564,665. [cited by applicant]
Notice of Allowance dated Feb. 15, 2023 for U.S. Appl. No. 17/556,589. [cited by applicant]