Automation tool

A memory stores a first automation script and a second automation script. A hardware processor performs a first task and a second task by executing the first automation script and performs a third task and a fourth task by executing the second automation script. The processor isolates first and second portions of the first automation script that correspond to the first and second tasks and isolates third and fourth portions of the second automation script that correspond to the third and fourth tasks. The processor also generates a third automation script that includes one or more of the first portion and the second portion and one or more of the third portion and the fourth portion and executes the third automation script to perform one or more of the first task and the second task and one or more of the third task and fourth task.

TECHNICAL FIELD

This disclosure relates generally to automation scripting.

BACKGROUND

Computers and mobile devices increasingly use automation scripts to automate tasks. In many instances, these scripts come off-the-shelf and do not allow a user to split or break the script apart.

SUMMARY OF THE DISCLOSURE

Computers and mobile devices increasingly use automation scripts to automate tasks. For example, these devices may use automation scripts to perform logon and logoff, activating and shutting down a server, pushing and pulling data, perform security and vulnerability scans according to set schedules, etc. In some instances, these scripts can be used to simulate user activity to test the functionality of the device or system. Additionally, these scripts can be used to simulate user activity by a large user base to see how a device or system will perform under stress. Typically, these scripts are used to perform a set of tasks that may be seen as routine according to certain schedules, such as maintenance schedules.

In many instances, these scripts come off-the-shelf and do not allow a user to split or break the script apart. These types of scripts may be referred to as “closed automations” because they do not allow users to peer into the script and isolate and/or separate out the tasks performed by the script. These scripts may be programmed by third parties who do not wish for users to see or analyze the code. As a result, these closed automations pose an all-or-nothing choice to users: either perform all the tasks programmed into a particular script or perform none of them.

This all-or-nothing approach results in significant waste of system resources. For example, suppose a first script performed tasks A, B, C and D and a second script performed tasks B, C, D, and E. If a user wanted to perform tasks A, B, C, D, and E, then the user would need to execute both the first and second scripts, which results in tasks B, C, and D being redundantly performed.

In some instances, this all-or-nothing approach results in certain tasks being not performed. Using the previous example, if a user wanted to perform task A and then task E (e.g., group tasks A and E into a composite task), the user would not be able to execute the first and/or second tasks to achieve this goal because tasks B, C, and D would be performed between tasks A and E.

This disclosure contemplates an unconventional automation tool that breaks apart closed automations into individual tasks. For example, the tool may analyze the coding of scripts and adjust links or tables in files, databases, directories, and/or queues to retarget or relink various tasks in different scripts. In this manner, the tool can separate tasks in automation scripts and adjust and/or reorder tasks. The tool can create composite tasks and new scripts that perform individual tasks in different orders. As a result, the tool reduces system waste by reducing redundant performance of tasks. Additionally, the system allows certain automation scripts to be repurposed even when those automation scripts contain tasks that are not performed.

According to an embodiment, an apparatus includes a memory and a hardware processor. The memory stores a first automation script and a second automation script. The hardware processor performs a first task and a second task by executing the first automation script and performs a third task and a fourth task by executing the second automation script. The hardware processor isolates a first portion of the first automation script that corresponds to the first task, isolates a second portion of the first automation script that corresponds to the second task, isolates a third portion of the second automation script that corresponds to the third task, and isolates a fourth portion of the second automation script that corresponds to the fourth task. The hardware processor also generates a third automation script that includes one or more of the first portion and the second portion and one or more of the third portion and the fourth portion and executes the third automation script to perform one or more of the first task and the second task and one or more of the third task and fourth task.

According to another embodiment, a method includes storing, by a memory, a first automation script and a second automation script. The method also includes performing, by a hardware processor communicatively coupled to the memory, a first task and a second task by executing the first automation script and performing, by the hardware processor, a third task and a fourth task by executing the second automation script. The method further includes isolating, by the hardware processor, a first portion of the first automation script that corresponds to the first task, isolating, by the hardware processor, a second portion of the first automation script that corresponds to the second task, isolating, by the hardware processor, a third portion of the second automation script that corresponds to the third task, and isolating, by the hardware processor, a fourth portion of the second automation script that corresponds to the fourth task. The method also includes generating, by the hardware processor, a third automation script that includes one or more of the first portion and the second portion and one or more of the third portion and the fourth portion and executing, by the hardware processor, the third automation script to perform one or more of the first task and the second task and one or more of the third task and fourth task.

According to yet another embodiment, a system includes a database and an automation tool. The automation tool stores a first automation script and a second automation script. The automation tool also performs a first task and a second task by executing the first automation script, the first task linked to the second task in the database and performs a third task and a fourth task by executing the second automation script, the third task and the fourth task linked in the database. The automation tool further isolates a first portion of the first automation script that corresponds to the first task, isolates a second portion of the first automation script that corresponds to the second task, isolates a third portion of the second automation script that corresponds to the third task, and isolates a fourth portion of the second automation script that corresponds to the fourth task. The automation tool also generates a third automation script that includes one or more of the first portion and the second portion and one or more of the third portion and the fourth portion and executes the third automation script to perform one or more of the first task and the second task and one or more of the third task and fourth task.

Certain embodiments provide one or more technical advantages. For example, an embodiment reduces system resource waste by reducing the number of redundant task executions. As another example, an embodiment allows certain automation scripts to be used even though the scripts contain undesired tasks. Certain embodiments may include none, some, or all of the above technical advantages. One or more other technical advantages may be readily apparent to one skilled in the art from the figures, descriptions, and claims included herein.

DETAILED DESCRIPTION

Computers and mobile devices increasingly use automation scripts to automate tasks. For example, these devices may use automation scripts to perform logon and logoff, activating and shutting down a server, pushing and pulling data, perform security and vulnerability scans according to set schedules, etc. In some instances, these scripts can be used to simulate user activity to test the functionality of the device or system. Additionally, these scripts can be used to simulate user activity by a large user base to see how a device or system will perform under stress. Typically, these scripts are used to perform a set of tasks that may be seen as routine according to certain schedules, such as maintenance schedules.

In many instances, these scripts come off-the-shelf and do not allow a user to split or break the script apart. These types of scripts may be referred to as “closed automations” because they do not allow users to peer into the script and isolate and/or separate out the tasks performed by the script. These scripts may be programmed by third parties who do not wish for users to see or analyze the code. As a result, these closed automations pose an all-or-nothing choice to users: either perform all the tasks programmed into a particular script or perform none of them.

This all-or-nothing approach results in significant waste of system resources. For example, suppose a first script performed tasks A, B, C and D and a second script performed tasks B, C, D, and E. If a user wanted to perform tasks A, B, C, D, and E, then the user would need to execute both the first and second scripts, which results in tasks B, C, and D being redundantly performed.

In some instances, this all-or-nothing approach results in certain tasks being not performed. Using the previous example, if a user wanted to perform task A and then task E (e.g., group tasks A and E into a composite task), the user would not be able to execute the first and/or second tasks to achieve this goal because tasks B, C, and D would be performed between tasks A and E.

This disclosure contemplates an unconventional automation tool that breaks apart closed automations into individual tasks. For example, the tool may analyze the coding of scripts and adjust links or tables in files, databases, directories, and/or queues to retarget or relink various tasks in different scripts. In this manner, the tool can separate tasks in automation scripts and adjust and/or reorder tasks. The tool can create composite tasks and new scripts that perform individual tasks in different orders. As a result, the tool reduces system waste by reducing redundant performance of tasks. Additionally, the system allows certain automation scripts to be repurposed even when those automation scripts contain tasks that are not performed. The automation tool will be described in more detail usingFIGS. 1 through 3.

FIG. 1illustrates an example system100. As shown inFIG. 1, system100includes one or more devices110, a network115, a database120, and an automation tool125. Generally, automation tool125can break or separate an automation script into its component tasks. Automation tool125can then group and/or rearrange these tasks to form new scripts and/or composite tasks. In certain embodiments, automation tool125reduces waste of system resources by reducing the number of redundant task executions. In some embodiments, automation tool125improves the usability of automation scripts by repurposing automation scripts that perform undesired tasks.

Device110may be any device capable of communicating with one or more of the components of system100. For example, device110may initiate the execution of automation scripts by automation tool125. As another example, device110may instruct automation tool125to break a script apart and to group and/or rearrange tasks of a script. In certain embodiments, device110may communicate with automation tool125through network115via a web interface. In some embodiments, device110instructs automation tool125by issuing commands to automation tool125.

Devices110include any appropriate device for communicating with components of system100over network115. For example, devices110may be a telephone, a mobile phone, a computer, a laptop, a tablet, an automated assistant, and/or a cash register. This disclosure contemplates device110being any appropriate device for sending and receiving communications over network115. As an example and not by way of limitation, device110may be a computer, a laptop, a wireless or cellular telephone, an electronic notebook, a personal digital assistant, a tablet, or any other device capable of receiving, processing, storing, and/or communicating information with other components of system100. Device110may also include a user interface, such as a display, a microphone, keypad, or other appropriate terminal equipment usable by user105. In some embodiments, an application executed by device110may perform the functions described herein.

Network115facilitates communication between and amongst the various components of system100. This disclosure contemplates network115being any suitable network operable to facilitate communication between the components of system100. Network115may include any interconnecting system capable of transmitting audio, video, signals, data, messages, or any combination of the preceding. Network115may include all or a portion of a public switched telephone network (PSTN), a public or private data network, a local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), a local, regional, or global communication or computer network, such as the Internet, a wireline or wireless network, an enterprise intranet, or any other suitable communication link, including combinations thereof, operable to facilitate communication between the components.

Database120stores information used by automation tool125. For example, database120can store one or more tables130used by automation tool125. This disclosure contemplates database120storing information arranged in any format. For example, database120may store files, directories, and/or queues. The information stored in database120may be used to execute various automation scripts. For example, database120may store in table130information that an automation script uses to determine which tasks to perform at what time, and in what order.

Automation tool125creates and executes automation scripts. Generally, automation tool125can break automation scripts into component tasks, and group and/or rearrange those tasks to form new automation scripts and/or composite tasks. In this manner, automation tool125reduces waste of system resources by reducing the number of redundant task executions in certain embodiments. Automation tool125, includes processor135and memory140. This disclosure contemplates processor135and memory140being configured to perform any of the functions of automation tool125described herein.

Processor135is any electronic circuitry, including, but not limited to microprocessors, application specific integrated circuits (ASIC), application specific instruction set processor (ASIP), and/or state machines, that communicatively couples to memory140and controls the operation of automation tool125. Processor135may be 8-bit, 16-bit, 32-bit, 64-bit or of any other suitable architecture. Processor135may include an arithmetic logic unit (ALU) for performing arithmetic and logic operations, processor registers that supply operands to the ALU and store the results of ALU operations, and a control unit that fetches instructions from memory and executes them by directing the coordinated operations of the ALU, registers and other components. Processor135may include other hardware and software that operates to control and process information. Processor135executes software stored on memory to perform any of the functions described herein. Processor135controls the operation and administration of automation tool125by processing information received from devices110, network115, and memory140. Processor135may be a programmable logic device, a microcontroller, a microprocessor, any suitable processing device, or any suitable combination of the preceding. Processor135is not limited to a single processing device and may encompass multiple processing devices.

Automation tool125stores scripts145. These scripts may be referred to as automation scripts. When automation tool125executes a script145, automation tool125performs one or more tasks described by the executed script145. In the illustrated example ofFIG. 1, automation tool125stores a script145A and a script145B. Script145A describes three tasks150A,150B, and150C. Script145B described three tasks150D,150E, and150F. When automation tool125performs script145A, automation tool125performs tasks150A,150B, and150C. In some embodiments, automation tool125performs tasks150A,150B, and150C in that order. When automation tool125performs script145B, automation tool125performs tasks150D,150E,150F. In some embodiments, automation tool125performs tasks150D,150E,150F in that order. This disclosure contemplates tasks150being any suitable task. For example, task150may perform log on and log off operations for a server. As another example, task150may take a server offline and/or activate the server and bring it back online. As yet another example, task150may perform security and/or vulnerability scans on a server.

In some instances, a script145is referred to as a closed automation. In these instances, the script145may not give a user105visibility into the script145. For example, the script145may not allow the user to view, edit, and otherwise manipulate the tasks150described by script145. Using the illustrated example ofFIG. 1, if script145A is a closed automation, then user105may not be able to view script145A to discern tasks150A,150B, or150C. Additionally, user105may not rearrange tasks150A,150B, and150C. Furthermore, user105may not be able to remove certain of tasks150A,150B, or150C from script145A. In essence, script145A, by being a closed automation, presents and all-or-nothing approach to user105. In other words, if user105executes script145A, then all of tasks150A,150B, and150C are performed in the order defined by script145A. User105does not have the option to remove, for example, task150B from the execution. Additionally, user105cannot reorder the tasks150in script145A.

In some instances, this all-or-nothing approach results in the waste of system resources. For example, if user105wishes to perform tasks150A and150C, user105may run script145A, but then task150B will be performed between tasks150A and150C. In these instances, task150B is not needed, or desired to be run, but user105may have no choice but to allow task150B to be performed so that script145A can be executed. As another example, if user105wants tasks150A,150E, and150C to be performed, user105may have no choice but to run both scripts145A and145B even though this execution results in tasks150D,150D, and150F being performed unnecessarily. As a result of these unneeded tasks150being performed, system resources are wasted because they are devoted to performing tasks150that are unneeded.

As another example, if tasks150B and150E are the same task, and user105wants to perform tasks150A,150B, and150F, user105may execute both scripts145A and145B. This results in the waste of system resources because task150B will be executed effectively twice: the first time when tasks150B is executed and the second time when task150E is executed. This redundant execution of task150B wastes system resources because system resources are devoted to performing task150B twice when it only needed to be performed once.

As yet another example, when a script145includes many tasks145that a user105usually does not want to run, user105may be discouraged from executing the script145. Even if the script145includes one task150that the user105wants performed, the user105may still be discouraged from executing script145because of the significant system resources that would be wasted performing the undesired tasks150. As a result, script145is rarely executed and becomes waste.

As another example, script145A being a closed automation prevents user105from creating composite tasks made up of individual tasks defined by script145A. For example, if user105wants to perform task150B and150F, user105may have no choice but to execute both script145A and145B. It would be more efficient if user105could create a script145that includes only task150B and task150F. User105is prevented from doing so because script145A and script145B are closed automations.

Automation tool125breaks scripts145into component tasks150and allows the user105to group and/or manipulate these tasks150. For example, user105can create new scripts145that describe composite tasks and/or induvial tasks150from different scripts145. In this manner, user105can use automation tool125to break scripts145apart so that system resources are not devoted to executing redundant tasks150and/or unneeded tasks150.

Automation tool125breaks a script145apart into component tasks150by isolating portions of the script145that are devoted to each task150. In the illustrated example ofFIG. 1, automation tool125can isolate portions of script145A that correspond to tasks150A,150B, and150C. Automation tool125can also isolate portions of script145B that correspond to tasks150D,150E, and150F. Automation tool125isolates these portions of the scripts145by referencing database120and/or table130in certain embodiments. For example, automation tool125can review information in table130to determine the component tasks150of a script145, and to determine the portions of script145that correspond to those tasks150.

After isolating the component tasks150, automation tool125allows user105to group and/or rearrange these tasks150. For example, user105can use device110to issue a command155to automation tool125. User105uses a web interface on device110to generate and communicate command155to automation tool125in certain embodiments. Command155may indicate that user105wants to group and/or manipulate tasks150. In the illustrated example ofFIG. 1, command155instructs automation tool125to generate a new script145C that includes task150B and150F. In response automation tool125generates script145C, that includes task150B and150F. When automation tool125performs or executes script145C, automation tool125performs task150B and task150F. This disclosure contemplates automation125generating script145C, using any suitable number of task150from any suitable script145. For example, script145C may include tasks150A,150B,150D, and150F in some embodiments.

In certain embodiments, automation tool125may generate script145C by editing table130. For example, automation tool125may change a link for task150B in table130to point to task150F. As a result, when task150B is executed, task150F is subsequently performed after task150B.

This disclosure contemplates automation tool125performing any operation in response to command155. For example, automation tool125may remove a task, such as, for example, task150C from a script, such as, for example, script145A. As another example, automation tool125may rearrange the tasks within a script. As yet another example, automation tool125may add more tasks to script145. In this manner, automation tool125allows the user105to group and/or rearrange tasks150of a closed automation script145.

Automation tool125may operate on scripts145written in any suitable language. Scripts145need not be written in the same language. For example, script145A may be written in a first programming language and script145B may be written in another programming language. Automation tool125is capable of isolating the portions of scripts145A and145B that correspond with tasks150, even though scripts145A and scripts145B are written in two different programming languages.

Automation tool125tracks the performance or execution of scripts145in certain embodiments. For example, if automation tool125is executing script145A, automation tool125may track the status of the execution of script145A. Similarly, automation tool125may track the execution of scripts145B and145C as they are executing. By tracking the status of the execution of these scripts145, automation tool125can report the status of these executions to user105.

FIG. 2illustrates an example automation tool125of the system100ofFIG. 1. As scene inFIG. 2automation tool125executes scripts145and can break scripts145apart into their component tasks150. Automation tool125can then generate new scripts145using the component tasks150of other scripts145. Automation tool125can generate these new scripts even though the other scripts145on which they are base are closed automations. In this manner, automation tool125reduces waste of system resources by reducing the number of redundant executions of tasks150, in certain embodiments.

In some instances, scripts145A and145B are closed automation scripts. In other words, a user does not have visibility in to the tasks150described by scripts145. Additionally, the scripts145prevent the user from adjusting or editing the tasks150described by the script145. As a result, the closed automation scripts145present an all-or-nothing approach to the user—either execute all the tasks150described by a script145or execute none of them. As described above, the all-or-nothing approach results in waste of system resources and other inefficiencies.

Automation tool125can break closed automation scripts145A and145B into their component tasks150. In some embodiments, automation tool125breaks closed automation scripts by isolating portions of the scripts145that correspond to the component tasks150. Automation tool125may reference a table130stored in database120to determine the portions of a script145that correspond to a particular task150.

After isolating the portions of script145that correspond to the component tasks150of the script145, automation tool125allows the user to group and or arrange the component tasks150. A user may use a device to communicate a command155to automation tool125. Command155may indicate the groupings and/or arrangements of the component task150. In the illustrated example ofFIG. 2command155indicates that a new script145C should be generated. Script145C should include tasks150E,150C, and150F. In response automation tool125generates a new script145C to describe tasks150E,150C, and150F. When automation tool125executes script145C, automation tool125will perform tasks150E,150C, and150F.

In this manner, automation tool125reduces system waste. For example, if the user were limited to executing only scripts145A and145B to preform task150E,150C, and150F, the user would need to preform script145B and then script145A. The user would also need to time the execution of scripts145B and145A such that tasks150C is preformed between task150E and150F. In many instances, the user will be unable to do so. Additionally, by executing both scripts145A and145B, tasks150A,150B,150D are preformed, even though they are not needed. System resources are thus wasted because they are dedicated to preforming these tasks150that are both undesired and unnecessary.

By allowing the user to select the tasks150to be executed, automation tool125reduces waste of system resources and the number of redundant or unneeded executions of task150.

To generate script145C, automation tool125may edit table130in database120. For example, automation tool125may edit pointers in table130that correspond to tasks150E,150C, and150F. Automation tool125may change the pointer for task150E to point to task150C. Automation tool125may change to pointer for task150C to point to task150F. As a result, when task150E is preformed, table130will indicate that task150C should be performed next, followed by task150F.

Automation tool125may generate script145C by combining the portions of script145A and145B that corresponds to tasks150E,150C, and150F. In this manner script145C includes those portions of scripts145A and145B.

In certain embodiments command155may indicate a schedule or timing for preforming certain tasks. In the illustrated example ofFIG. 2, command155indicates times155A and155B. Command155may indicate that150E should be performed at time155A and task150C should be performed at time155B. In response, automation tool125will perform task150E at time155A when script145C is executed. Automation tool125may then wait until155B to preform task150C followed by task150F. In this manner, the user is allowed to control the flow and execution of the new script145C.

FIG. 3is a flow chart illustrating a method300for improving automation scripts using the system101. In particular embodiments, automation tool125preforms method300. By preforming method300, automation tool125reduces the waste of system resources by reducing the number of redundant and/or unneeded performance of tasks.

Automation tool125begins by storing a first automation script and a second automation script in step305. In certain embodiments, first automation script and second automation scripts are closed automation scripts. In step310, automation tool125preforms a first task and a second task by executing the first automation script. In step315, automation tool125preforms a third task and a fourth task by executing the second automation script.

Automation tool125isolates a first portion of the first automation script that corresponds to the first task in step320. In step325, automation tool125isolates the second portion of the first automation script that corresponds to the second task. Automation tool125isolates a third portion of the second automation script that corresponds to the third task in step330. In step335, automation tool125isolates a fourth portion of the second automation script that corresponds to the fourth task.

Automation tool125generates a third automation script that includes one or more of the first and second portions and one or more of the third or fourth portions in step340. In this manner, the third automation script is able to perform a task from both the first and second automation scripts even though they are closed automation scripts. In step345, automation tool125executes the third automation script. By executing the third automation script task from both the first automation script are performed.

Modifications, additions, or omissions may be made to method300depicted inFIG. 3. Method300may include more, fewer, or other steps. For example, steps may be performed in parallel or in any suitable order. While discussed as automation tool125(or components thereof) performing the steps, any suitable component of system100, such as device(s)110for example, may perform one or more steps of the methods.