1. Technical Field
The present invention relates generally to an improved data processing system and in particular to a method and apparatus for processing data. Still more particularly, the invention relates to a method, apparatus, and computer instructions for integration of multiple programming or scripting languages into one program unit.
2. Description of Related Art
A system manager of a data center often faces the daunting challenge of managing a great number of computers in the data center. Workflows to manage data centers often require execution of multiple management programs, or scripts or scriptlets, on many different computers or data processing systems in the data center. Often, different management programs are written in different programming languages. Furthermore, different data processing systems in the data center may use different types of application program interfaces, thereby complicating the problem. Each different application program interface may be able to handle one or a few programming languages, but not others. Thus, if a desired script is written in a programming language incompatible with an application program interface, then the system manager must write two separate scripts and execute each individually with regard to their respective application program interfaces. In addition, if multiple desired scripts are to be executed on a target data processing system, then each script must be individually executed on the target data processing system. This process can be difficult, tedious, wasteful of resources, and time-consuming. Thus, it would be advantageous to have an improved method, apparatus, and computer instructions for simplifying the task of managing data centers using scripts.
The present invention provides a method, apparatus, and computer instructions for coordinating multiple scripts in a single workflow program. The workflow program is created using a novel workflow language. The workflow program coordinates parameters among the scripts embedded in the workflow program, such as input, output, logging, error handling, data transfer, and other parameters. Each script may be written in a different programming language. Thus, a workflow program may be executed on a data processing system to accomplish the tasks of each individual script embedded in the workflow program, even if the input of one script may depend on the output of another script or if the scripts were written in different programming languages.
The novel features believed characteristic of embodiments of the invention are set forth in the appended claims. The embodiments of the invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
With reference now to the figures and in particular with reference to
With reference now to
An operating system runs on processor 202 and is used to coordinate and provide control of various components within data processing system 200 in
Those of ordinary skill in the art will appreciate that the hardware in
For example, data processing system 200, if optionally configured as a network computer, may not include SCSI host bus adapter 212, hard disk drive 226, tape drive 228, and CD-ROM 230. In that case, the computer, to be properly called a client computer, includes some type of network communication interface, such as LAN adapter 210, modem 222, or the like. As another example, data processing system 200 may be a stand-alone system configured to be bootable without relying on some type of network communication interface, whether or not data processing system 200 comprises some type of network communication interface. As a further example, data processing system 200 may be a personal digital assistant (PDA), which is configured with ROM and/or flash ROM to provide non-volatile memory for storing operating system files and/or user-generated data.
The depicted example in
The processes of embodiments of the present invention are performed by processor 202 using computer implemented instructions, which may be located in a memory such as, for example, main memory 204, memory 224, or in one or more peripheral devices 226-230.
Embodiments of the present invention provide a method, apparatus, and computer instructions for coordinating multiple scripts in a single workflow program. The workflow program is created using a novel workflow language. The workflow program coordinates parameters among the scripts embedded in the workflow program, such as input, output, logging, error handling, data transfer, and other parameters. Each script may be written in a different programming language. Thus, a workflow program may be executed on a data processing system to accomplish the tasks of each individual script embedded in the workflow program, even if each the input of one script depends on the output of another script and even if the scripts are written in different programming languages.
Each data processing system 302, 304, or 306 may use an application program interface (API) that is different from the other data processing systems. An application program interface is the interface, or set of calling conventions, by which an application program accesses an operating system and other computer services. An application program interface is defined at a source code level and provides a level of abstraction between the application kernel and the application to ensure the portability of program code. The kernel is the essential part of an operating system responsible for resource allocation, low-level hardware interfaces, security, etc. An application program interface can also provide an interface between a high level language and lower level utilities and services which were written without consideration for the calling conventions supported by the compiled languages. The term “application program interface” as used herein refers to both types of functions in a data processing system.
In the illustrative example, API A is a first application program interface, API B is a second application program interface, and API C is a third application program interface. Each API, API A, API B, and API C, is different from the other in this example. Thus, programs running on each data processing system 302, 304, and 306 are written in different programming languages.
In another illustrative example, each script in job 400 will be run on a single data processing system. In this example, each script accomplishes a different configuration goal. However, the system administrator must coordinate the scripts manually. For example, the system administrator may have to execute Script A 402, capture the output of Script A 402, provide the output to the input of Script B 404, and then execute Script B 404. In some cases, a system administrator will capture the output of the Script A 402 by writing the output by hand, and then manually entering the output as input into Script B 404. Similarly, Script C 406 will require manual coordination with Script A 402 and Script B 404. This process is also tedious.
The process begins as the system administrator causes the data processing system to execute Script A on the data processing system (step 500). The system administrator then manually captures the output of Script A, such as by manually writing down the output or manually creating a file containing the output (step 502). For example, Script A may be a set of commands which lists all devices connected to the data processing system and the configurations for those devices.
Thereafter, the system administrator enters the output of Script A as input into Script B (step 504). For example, the system administrator may manually enter the names of all devices discovered with Script A into the input of Script B. The system administrator then causes the data processing system to execute Script B (step 506). In this example, Script C cannot be executed until Script B has been executed. Once Script B has been executed, the system administrator causes Script C to be executed (step 508). The process terminates thereafter.
The process begins as the system administrator writes Script A (step 600), Script B (step 602), and Script C (step 604). Each script is written individually. Each script is then executed on the appropriate respective target data processing systems, System A, System B, and System C (steps 606, 608, and 610, respectively). The process terminates thereafter.
In the example shown in
However, the mechanism of an embodiment of the present invention provides a means for embedding Script A 704, Script B 706, and Script C 708 into a single workflow program 702 that may be executed on the data processing system. By embedding the scripts into a single workflow program, each script may also be executed on the data processing system automatically, with parameters, outputs, and other factors coordinated among the various programs associated with the scripts.
The workflow program 702 includes binding parameters, embedding parameters, and optionally global parameters. An embedding parameter embeds a particular script or program into the workflow program. Thus, the embedding parameter allows a script to become a part of the workflow program.
A binding parameter, such as Binding A 710 and Binding B 712, is accomplished using language binding. Language binding is responsible for passing script parameters, such as input and output. Language binding is also responsible for integration of error handling between workflows and scripts. For example, a script can raise an exception that can be handled by the workflow code. In addition, language binding is also responsible for integration of logging between workflows and scripts. A specific language binding exists for each programming language that can be embedded in the workflow program. Language binding takes the script code embedded in the workflow program, adds code that allows parameter bindings, error handling, and error logging, and passes the resultant code to a specific runtime interpreter.
Thus, language bindings allow the workflow program to coordinate scripts embedded in the workflow program. For example, a first language binding associated with a first script can take the output of the first script and store the output as a variable of the workflow program. The workflow program then provides the variable to the input of a second script. A second language binding language binding associated with a second script is needed to receive the input contained in the variable. In another example, the first and second language bindings store error codes from the first and second programs, respectively, as variables. The workflow program can then coordinate the error codes.
The language binding for BASH uses BASH environment variables to pass parameters to a script and a standard output stream is used to handle output. Language bindings can be provided for different programming languages, including but not limited to BASH, PERL, VBSCRIPT, PYTHON, and EXPECT. An example of a language binding is shown in
Thus, workflow language acts as a glue for handling multiple scripts written in multiple programming languages, even when each script is designed to work with a different type of program or each script is written in a different programming language. The workflow program allows for integrated error handling, output passing, parameter passing, event logging, and in other ways coordination of the different scripts embedded in the workflow program. In addition, the workflow language allows multiple scripts in different languages to be joined into a single workflow program. In this case, when the workflow program is executed on a management device, the workflow program will cause each embedded script to be executed on a data processing system that supports the script program language.
In an example of the first function of the workflow program, a first program is configured using BASH scripts and a second program is configured using PERL scripts. (An example of a workflow program is shown in
In the case where different scripts are to be executed on different data processing systems connected via a network, the workflow program can coordinate execution of the different scripts. For example, a first script only works on a first data processing system and a second script only works on a second data processing system. Both scripts are embedded into a workflow program. The workflow program is executed on a management data processing system, which is also connected to the network. When appropriate, the workflow program causes the first script to be executed on the first data processing system. When appropriate, the workflow program causes the second script to be executed on the second data processing system.
The workflow program can combine both of the above functions. Continuing the example from the previous paragraph, the workflow program can capture the output of the first script, store the output as a variable, and use the variable as input into the second script. Thus, the workflow program can coordinate multiple scripts that use different programming languages and that are executed on different data processing systems.
Optionally, a global parameter handles matters global to the overall workflow program 702, such as the overall input or output of the workflow program and the overall integrity of the integrated workflow program. Global parameters may also add to the workflow program such that the workflow program accomplishes tasks other than the sum of the scripts embedded in the workflow program. Thus, the function of the workflow program may be greater than the sum of the functions of the scripts embedded in the workflow program.
The workflow language itself may provide instructions for variable declarations, variable assignments, conditional execution, looping, error handling, workflow invocation, overall output or input of the workflow program, and other parameters that affect the various aspects of the workflow program.
However, in other embodiments, the step of embedding the target scripts into the workflow program also includes creating and adding any necessary language bindings for each language used in the workflow program. In addition, the step of embedding the scripts also includes adding any global parameters to the workflow program that may be desired.
In an embodiment, the workflow program is executed on only one data processing system (step 802). The workflow program coordinates execution of multiple scripts wherein one or more of the scripts are used to configure different programs on the data processing system. The workflow program may be executed on the target data processing system. The workflow program may also be executed on a remote management data processing system, with management actions taken on a target data processing system.
In another illustrative embodiment, each script within the workflow must be executed on separate data processing systems in a data center. In this case, the workflow program is executed on one target data processing system, though the workflow program coordinates execution of all scripts on all data processing systems. Thus, a workflow program may contain Script A and Script B, which must run on two different data processing systems. The overall results of Script A and Script B are used in Script C, which is to be executed a third data processing system. The workflow program causes Script A to be executed on the first data processing system and Script B to be executed on the second data processing system. The workflow program then takes the outputs from Script A and Script B, uses the outputs as input in Script C, and then executes Script C on the third data processing system.
Thus, in order to perform a job on a plurality of different data processing systems in a data center, only one workflow program need be created. Comparing the methods described in relation to
First, a workflow execution engine prepares an intermediate EXPECT script by merging BASH input bindings with script input parameters (step 900). An example of BASH input bindings, which is also an example of language binding, is shown in
Next, the workflow execution engine prepares an executable BASH script by merging BASH output bindings with a BASH script embedded into a workflow program (step 902). An example of BASH output bindings, which is also an example of language binding, is shown in
Thereafter, the workflow execution engine starts a BASH interpreter (step 904). An intermediate EXPECT script sends commands to the BASH interpreter and defines script input parameters as BASH environment variables (step 906). The workflow execution engine then instructs the BASH interpreter to execute the prepared BASH script (step 908). The workflow execution engine then processes the BASH script output (step 910). Processing output can include updating workflow execution variable values, adding new records to a workflow execution log, handling script execution errors, or handling any other outputs.
Line 7 through line 15 illustrates an embedded BASH script that creates a temporary file and populates it with information about the IP system's addresses. The scriptlet is written on BASH and will be executed on a remote data processing system defined by the “server” workflow input parameter. Line 10 illustrates how the BASH scriptlet can raise an exception. This exception will be handled by a workflow “catchall” statement illustrated on line 22. Line 13 shows how the BASH scriptlet can cause a debug message to be written to an execution log. Line 14 shows how the BASH scriptlet can set a value of a workflow local variable.
Line 18 through line 21 illustrate an embedded PERL scriptlet. The actual logic of the PERL script is not shown in
Line 22 through line 24 illustrates how the workflow program can handle exceptions raised from within the two embedded scriptlets, completing the exemplary workflow program. Although the workflow program shown in
It is important to note that while embodiments of the present invention have been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of embodiments of the present invention are capable of being distributed in the form of a computer usable medium of instructions and a variety of forms and that embodiments of the present invention apply equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer usable media include recordable-type media, such as a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, and transmission-type media, such as digital and analog communications links, wired or wireless communications links using transmission forms, such as, for example, radio frequency and light wave transmissions. The computer usable media may take the form of coded formats that are decoded for actual use in a particular data processing system.
The description of embodiments of the present invention have been presented for purposes of illustration and description, and are not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiments were chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.