Abstract:
Embodiments of the present invention address deficiencies of the art in respect to user interface interaction automation and provide a method, system and computer program product for user interface interaction sequence detection and recording for user interface interaction automation. In an embodiment of the invention, a method for user interface interaction sequence detection and recording for user interface interaction automation can be provided. The method can include comparing a contemporary sequence of user interface actions in a user interface to a pre-stored sequence, and prompting for an expected user interface action if the contemporary sequence matches the pre-stored sequence. The method also can include prompting to store the contemporary sequence as a pre-stored sequence, and storing the contemporary sequence as a pre-stored sequence if directed in response to the prompting.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    1. Field of the Invention 
         [0002]    The present invention relates to the field of application macros and scripting and more particularly to user interface interaction automation. 
         [0003]    2. Description of the Related Art 
         [0004]    Macro instructions refer to the organization of a sequence of instructions into a single instruction. Macro instructions came into vogue decades ago as a technical tool for automating tedious, repetitive program instructions into a single, composite instruction. Macros and later, batch scripts later were utilized by end users to automate keyboard strokes and other user interface operations that had been repeated often. By creating macros and scripts, end users not only could automate tedious, repetitive tasks, but also end users could avoid mistakes in data entry by relying on a pre-specified, tested sequence of keyboard strokes. 
         [0005]    With the advent of the graphical user interface, the use of the macro fell out of widespread use. Yet, the change in the nature of the user interface did not obviate the utility of bundling a set of user interface actions into a single composite command. Most recently, functional testing tools utilize user interface interaction macros to memorize a sequence of user interface interactions in order to simulate user interactions with a user interface of an application under test. However, the memorized sequence usually is stored as a separate programmatic script processed by the functional testing tool. In this way, testers can replace the script to simulate different user interaction scenarios. 
         [0006]    Beyond functional testing, user interface interaction automation has found limited applicability. Yet, the utility of automating user interface interactions has not changed in decades. In fact, the ever increasing complexity of computing environments provides a substantial justification for user interface interaction automation. For instance, within a complex portal environment, end users often engage in many different user interface actions in sequence to achieve an end goal in the portal environment. Often, these steps involve routinized sequences of mouse and keyboard actions—navigate to one portlet in the portal environment, obtain focus on a specified data field, type text in the field, click a button, navigate to another portlet, click another button select an option from a pull-down menu, etc. 
         [0007]    Complex sequences like those described above can be labor-intensive and error-prone and can be vulnerable to loss of context during an interruption of the sequence of actions. In this regard, end users often can be interrupted when interacting with a complex portal environment for any number of reasons including telephone calls, impromptu office meetings and the like. Thus, a need has arising to identify common sequences and bundle those common sequences to remind the user of a position in a known sequence of user interface interactions following in interruption in the known sequence. 
       BRIEF SUMMARY OF THE INVENTION 
       [0008]    Embodiments of the present invention address deficiencies of the art in respect to user interface interaction automation and provide a novel and non-obvious method, system and computer program product for user interface interaction sequence detection and recording for user interface interaction automation. In an embodiment of the invention, a method for user interface interaction sequence detection and recording for user interface interaction automation can be provided. The method can include comparing a contemporary sequence of user interface actions in a user interface to a pre-stored sequence, and prompting for an expected user interface action if the contemporary sequence matches the pre-stored sequence. The method also can include prompting to store the contemporary sequence as a pre-stored sequence, and storing the contemporary sequence as a pre-stored sequence if directed in response to the prompting. 
         [0009]    In one aspect of the embodiment, prompting for an expected user interface action if the contemporary sequence matches the pre-stored sequence can include prompting for an expected user interface action if the contemporary sequence exactly matches the pre-stored sequence. Alternatively, in another aspect of the embodiment, prompting for an expected user interface action if the contemporary sequence matches the pre-stored sequence can include prompting for an expected user interface action if the contemporary sequence matches a threshold number of user interface actions with user interface actions in the pre-stored sequence. 
         [0010]    In even yet another aspect of the embodiment, prompting for an expected user interface action if the contemporary sequence matches the pre-stored sequence can include detecting hesitancy in continuing the contemporary sequence of user interface actions, and prompting for an expected user interface action if the contemporary sequence matches the pre-stored sequence upon detecting the hesitancy. For instance, detecting hesitancy in continuing the contemporary sequence of user interface actions can include detecting a lapse of time between user interface interactions beyond a threshold value. Finally, in even yet further another aspect of the embodiment, the method can include invoking the pre-stored sequence as a macro from a menu in the user interface. 
         [0011]    In another embodiment of the invention, a user interface data processing system can be provided. The system can include a user interface such as a portal environment, a table of memorized sequences, and a detector-automator. The detector-automator can include program code enabled to compare a contemporary sequence of user interface actions in the user interface to a pre-stored sequence in the table of memorized sequences, and to prompt within the user interface for an expected user interface action if the contemporary sequence matches the pre-stored sequence. Further, the program code also can be enabled to prompt to store the contemporary sequence as a pre-stored sequence and to store the contemporary sequence as a pre-stored sequence if directed in response to the prompting. 
         [0012]    Additional aspects of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The aspects of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         [0013]    The accompanying drawings, which are incorporated in and constitute part of this specification, illustrate embodiments of the invention and together with the description, serve to explain the principles of the invention. The embodiments illustrated herein are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown, wherein: 
           [0014]      FIG. 1  is a pictorial illustration of a process for user interface interaction sequence detection and recording for user interface interaction automation; 
           [0015]      FIG. 2  is a schematic illustration of a portal computing environment configured for user interface interaction sequence detection and recording for user interface interaction automation; and, 
           [0016]      FIG. 3  is a flow chart illustrating a process for user interface interaction sequence detection and recording for user interface interaction automation. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0017]    Embodiments of the present invention provide a method, system and computer program product for user interface interaction sequence detection and recording for user interface interaction automation. In accordance with an embodiment of the present invention, a repeated sequence of user interface interactions can be identified within a computing environment. Once identified, the sequence can be selectively recorded. Thereafter, the sequence can be invoked from within the computing environment. Alternatively, a delay in completing the sequence can be detected and an indication of a place within the sequence to resume the sequence can be provided within the user interface. 
         [0018]    In illustration,  FIG. 1  is a pictorial illustration of a process for user interface interaction sequence detection and recording for user interface interaction automation. As shown in  FIG. 1 , a portal environment  110  can be provided to include multiple different portlets, each providing different user interface controls such as text entry fields, buttons, drop down lists and the like. A user interface interaction sequence detector-automator  120  can process user interactions with the portal environment  110  in order to detect a pattern  140  of user interactions within the portal environment  110 . 
         [0019]    In this regard, the detector-automator  120  can identify a new sequence of user interface interactions comparable to a previously recorded sequence of user interface interactions in the portal environment sufficient to indicate a repeated use of the sequence. In response to detecting such a pattern  140 , the detector-automater  120  can prompt the end user that a familiar sequence of user interface interactions had been detected and provide an option for the end user to memorize the sequence in a table of memorized sequences  160  and render the sequence accessible as a short cut, for example from a menu in the portal environment  110 . 
         [0020]    Once a sequence has been memorized and placed in the table of memorized sequences  160 , the detector-automator  120  can detect a pattern  140  which matches a portion of a stored sequence within the table of memorized sequences  160 . Once the detector-automator  120  matches the pattern  140  to an entry in the table of memorized sequences  160 , a timer  130  coupled to the detector-automator  120  can indicate to detector-automator  120  when an end user has become distracted or otherwise hesitates in proceeding through the sequence. In response, the detector-automator  120  can consult the matched entry in the table of memorized sequences  160  to identify a next user interface action  150  in the sequence. Consequently, the end user can be prompted to perform the indicated next user interface action  150 . 
         [0021]    The process shown in  FIG. 1  can be implemented in a portal computing environment. In illustration,  FIG. 2  schematically depicts a portal computing environment configured for user interface interaction sequence detection and recording for user interface interaction automation. The system can include a host computing platform  210  hosting the execution of an operating system  220 . The operating system  220  in turn can be configured to support the arrangement of a portal environment  230  from which multiple different portlets  240  can be accessed by an end user through different user interface interactions. In one aspect of the embodiment, the portal environment  230  can be provided by a remote server over a computer communications network and rendered in a content browser (not shown) executing in the operating system  220 . 
         [0022]    Notably, sequence automation logic  300  can be coupled to the portal environment  230  and also to a data store of sequences  250 . The sequence automation logic  300  can include program code enabled to track user interface interactions in the portal environment  230  and to detect similar or identical patterns of user interface interactions. In particular, the program code can be enabled to determine a discrete sequence of user interface interactions in the portal environment  230  and to compare the sequence with sequences in the data store of sequences  250 . 
         [0023]    To the extent that the discrete sequence matches or is similar to within a user-specified threshold of a sequence disposed within the data store of sequences  250 , the program code of the sequence automation logic  300  can be enabled to prompt the user with information pertaining to a next step in the sequence—particularly where it is determined that the end user hesitates in completing the expected sequence. In the alternative, to the extent that the discrete sequence does not match or is not similar to a sequence disposed within the data store of sequences  250 , upon completion of the sequence the program code of the sequence automation logic  300  can be enabled to prompt the end user to store the completed sequence in the data store of sequences  250  to be recalled by the end user or to be used to provide guidance to a hesitating end user. 
         [0024]    In yet further illustration,  FIG. 3  is a flow chart illustrating a process for user interface interaction sequence detection and recording for user interface interaction automation. Beginning in block  310  a user interface action can be detected in a user interface. In block  320 , the user interface action can be added to a contemporary sequence of user interface actions as a most recent user interface action. In decision block  330 , it can be determined whether the contemporary sequence matches a stored sequence or, optionally, if the contemporary sequence shares enough user interface actions within a threshold percentage of matching user interface actions to declare a match. If so, the process can continue through decision block  340 . Otherwise, the process can continue through decision block  360 . 
         [0025]    In decision block  360 , it can be determined whether the sequence has finalized. In this regard, the end user can manually specify when a sequence of user interface actions have completed, or the completion of a sequence can be inferred from the behavior of the end user, such as a threshold passage of time between user interface actions. If it is determined that the sequence has finalized, in block  370  the user can be prompted to add a macro for the sequence which can be included as a shortcut or menu command. In decision block  380 , if the end user accepts the proposal, the sequence can be added to a table of memorized sequences and inserted into a menu of sequences in block  390 . Thereafter, the next user interface action can be received in block  310  and the process can repeat. 
         [0026]    By comparison, in decision block  330 , if a match is found for the sequence, in decision block  340 , it can be determined whether or not the end user has hesitated in the expected sequence of user interface actions. In this regard, if a threshold period of time has elapsed between user interface interactions, the end user can be viewed as hesitating. If so, in block  350  the end user can be prompted with a next expected user interface action based upon the expected sequence. Alternatively, a complete or partial listing of the expected user interface actions in the expected sequence can be provided to the end user. In either case, the end user will be reminded of the sequence though the end user may have become distracted or otherwise disengaged from the sequence. 
         [0027]    Embodiments of the invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, and the like. Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. 
         [0028]    For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD. 
         [0029]    A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.