U.S. patent application number 11/450618 was filed with the patent office on 2007-12-13 for method for consolidated launching of multiple tasks.
This patent application is currently assigned to International Business Machines Corporation. Invention is credited to Ramon Caceres, Sebastien Demathieu, Daniel Irimie Dig, Apratim Purakayastha, Danny Soroker.
Application Number | 20070288883 11/450618 |
Document ID | / |
Family ID | 38823396 |
Filed Date | 2007-12-13 |
United States Patent
Application |
20070288883 |
Kind Code |
A1 |
Soroker; Danny ; et
al. |
December 13, 2007 |
Method for consolidated launching of multiple tasks
Abstract
A general purpose mechanism is provided for consolidating the
launching of multiple tasks, wherein a task is launched when an
associated software component is run or executed. In one
embodiment, launch descriptions of individual tasks and composition
parameters are respectively read, wherein the parameters indicate
relationships between the launchings of different tasks, such as
launch order. A composite launch description is constructed, by
selectively processing the individual launch descriptions and
composition parameters, and the tasks are launched according to the
composite launch description. In a further embodiment, multiple
individual launch descriptions are delivered to a tool, each launch
description being usable to launch a corresponding component to
perform a corresponding task. The tool includes a set of launch
relationships that specify the relationship between launchings of
different components. The tool generates a single composite launch
description that defines launching of the components in accordance
with the launch relationships.
Inventors: |
Soroker; Danny; (Larchmont,
NY) ; Dig; Daniel Irimie; (Champaign, IL) ;
Caceres; Ramon; (New York, NY) ; Demathieu;
Sebastien; (Paris, FR) ; Purakayastha; Apratim;
(Yorktown Heights, NY) |
Correspondence
Address: |
DUKE W. YEE
YEE & ASSOCIATES, P.C., P.O. BOX 802333
DALLAS
TX
75380
US
|
Assignee: |
International Business Machines
Corporation
Armonk
NY
|
Family ID: |
38823396 |
Appl. No.: |
11/450618 |
Filed: |
June 9, 2006 |
Current U.S.
Class: |
717/100 |
Current CPC
Class: |
G06F 11/3696 20130101;
G06F 9/44505 20130101; G06F 11/3688 20130101; G06F 8/20 20130101;
G06F 8/61 20130101 |
Class at
Publication: |
717/100 |
International
Class: |
G06F 9/44 20060101
G06F009/44 |
Claims
1. A method for consolidated launching of multiple tasks, wherein
said method comprises the steps of: delivering a plurality of
individual launch descriptions to a tool, wherein an individual
launch description is usable to launch a corresponding component in
order to perform a corresponding task; providing said tool with a
set of launch relationships, wherein a given launch relationship
specifies the relationship between the launchings of two or more of
said components; and operating said tool to generate a single
composite launch description that defines the launching of at least
some of said components in accordance with said set of launch
relationships.
2. The method of claim 1, wherein: said components are respectively
launched according to said composite launch description, wherein a
launched component comprises a software component that performs its
corresponding task.
3. The method of claim 1, wherein: said tool is included in an
Integrated Development Environment.
4. The method of claim 1, wherein: said composite launch
description comprises a composite configuration having elements in
the form of an ordered list.
5. The method of claim 1, wherein: said composite launch
description comprises a composite launch configuration in the form
of a hierarchical tree structure, wherein said components and their
corresponding tasks respectively comprise leaves for said tree
structure, and internal nodes for said structure respectively
represent hierarchical groups of said components and their
corresponding tasks.
6. The method of claim 5, wherein: said set of launch relationships
comprise composition launch parameters that apply selectively both
to said internal nodes and to said leaves.
7. The method of claim 1, wherein: said set of launch relationships
comprises one or more composition launch parameters.
8. The method of claim 7, wherein: said composition launch
parameters are selected from a group of parameters that includes at
least the order in which respective components are launched; timing
delays in the launching of respective components; the number of
instances for launching a given component; required conditions for
launching a given component; and the location for launching a given
component.
9. The method of claim 1, wherein: said composite launch
description is selectively retained for later use.
10. The method of claim 1, wherein: said composite launch
description is viewable and selectively adjustable by a user.
11. The method of claim 2, wherein: said components are
respectively launched to perform a debugging operation on a
specified system.
12. The method of claim 2, wherein: said method includes
selectively halting the launch of a specified number of said
components.
13. In a computer readable medium, a computer program product for
consolidated launching of multiple tasks, wherein said computer
program product comprises: first instructions for delivering a
plurality of individual launch descriptions to a tool, wherein each
of said individual launch descriptions is usable to launch a
corresponding component in order to perform a corresponding task;
second instructions for providing said tool with a set of launch
relationships, wherein a given launch relationship specifies the
relationship between the launchings of two or more of said
components; third instructions for operating said tool to construct
a single composite launch description that defines the launching of
at least some of said components in accordance with said set of
launch relationships; and fourth instructions for launching said
components according to said composite launch description, wherein
each launched component comprises a software component that
performs its corresponding task.
14. The computer program product of claim 13, wherein: said
composite launch description comprises a composite launch
configuration in the form of a hierarchical tree structure, wherein
said components and their corresponding tasks respectively comprise
leaves for said tree structure, and internal nodes for said
structure respectively represent hierarchical groups of said
components and their corresponding tasks.
15. The computer program product of claim 13, wherein: said set of
launch relationships comprises one or more launch parameters, and
said launch parameters are selected from a group of parameters that
includes at least the order in which respective components are
launched; timing delays in the launching of respective components;
the number of instances for launching a given component; required
conditions for launching a given component; and the location for
launching a given component.
16. The computer program product of claim 13, wherein: said
composite launch description is viewable and selectively adjustable
by a user.
17. The computer program product of claim 13, wherein: said
components are respectively launched to perform a debugging
operation on a specified system.
18. Apparatus for consolidated launching of multiple tasks, wherein
said apparatus comprises: a first source for providing a plurality
of individual launch descriptions, wherein each of said individual
launch descriptions is usable to launch a corresponding component
in order to perform a corresponding task; a second source for
providing a set of launch relationships, wherein a given launch
relationship specifies the relationship between the launchings of
two or more of said components; and a tool adapted to receive said
plurality of individual launch descriptions and said set of launch
relationships, wherein said tool is operable to generate a single
composite launch description that defines the launching of at least
some of said components in accordance with said set of launch
relationships.
19. The apparatus of claim 18, wherein: said tool is operable to
generate said composite launch description in the form of a
hierarchical tree structure, wherein said components and their
corresponding tasks respectively comprise leaves for said tree
structure, and internal nodes for said structure respectively
represent hierarchical groups of said components and their
corresponding tasks.
20. The apparatus of claim 18, wherein: said apparatus further
comprises a user interface to enable a user to view and to
selectively adjust said composite launch description.
Description
BACKGROUND OF THE INVENTION
[0001] 1. Field of the Invention
[0002] The invention disclosed and claimed herein generally
pertains to a method whereby a multiplicity of tasks, each
performed by launching a software or other component, are carried
out in a pre-specified order or arrangement. More particularly, the
application pertains to a method of the above type wherein the
launching of one component to perform its task has a pre-specified
relationship to the launching of other task components. Even more
particularly, the invention pertains to a method of the above type
wherein launch descriptions for respectively launching each of the
individual components are consolidated, in order to provide a
single composite launch description for launching the multiplicity
of tasks.
[0003] 2. Description of the Related Art
[0004] Integrated Development Environments (IDEs), such as an open
source product known as Eclipse, are currently the tool of choice
for complex software development. These environments support the
full development life cycle by combining a rich set of cooperating
tools, such as visual user-interface builders, source-code editors,
compilers and debuggers. IDEs organize software into projects,
where a project typically corresponds to a platform-specific
software component such as a Web service or its corresponding
client. However, while IDEs are very useful in developing
individual components, they tend to fall short in developing
heterogeneous systems consisting of multiple components, such as
distributed applications. A distributed application contains
sub-applications that can run on multiple computational nodes.
Thus, there is a need to augment IDEs to effectively manage
collections of projects or other software components as coherent
entities.
[0005] An important aspect of the application development cycle is
the ability to launch the developed application for the purposes of
testing and debugging. Accordingly, when developing a distributed
application having multiple sub-applications, it is important to
have the capability of launching the different sub-applications
simultaneously, or in some other pre-specified relationship with
one another. Such relationships may be provided by specifying
launch parameters, which indicate such things as which
sub-applications to launch, in what order, on what computers, and
under what conditions. Such a specification, also referred to as a
launch configuration, usefully should be stored so that it can be
applied repeatedly in the development process. Moreover, in order
to support structured organization, it would be desirable to
provide a launch configuration with a hierarchical structure. This
would enable grouping of sub-applications and launch
parameters.
[0006] In current IDEs, the notion of a launch configuration is
generally well known. However, mechanisms for flexibly composing
launch configurations as well as the notion of a hierarchically
organized aggregated launch arrangement that encompasses multiple
launchings, are generally not known. In the absence of an
aggregated launcher, the application developer has to manually
perform several launch operations each time that testing and
debugging is carried out. This process tends to be cumbersome and
error-prone. In addition, when performing certain tests such as
stress testing, the developer may want to launch multiple instances
of an application, such as one instance of a server and many
instances of a client. Again, in current IDEs this needs to be done
manually.
[0007] One prior art IDE product provides the ability to launch a
distributed application (called a "solution") and thereby launches
its constituent sub-application. However, such product has no
capability of defining launch configurations independently of a
solution, nor does it support hierarchical organization of the
launch configuration. Such product only lists the sub-applications
contained in the solution. Moreover, the parameters of an
aggregated launch configuration are very restricted.
[0008] In IDEs that support Web tooling, such as Eclipse, there is
only a limited notion of distributed launching. That is, when
testing a Web application, the IDE launches both an application
server and a browser client. However, while this feature may
exemplify a "one click" way of launching multiple computational
nodes, it is restricted to the Web-based client-server model, and
has no notion of hierarchy or flexible composition.
[0009] In a traditional, non-IDE approach to development, scripts
such as shell script are used for launching. This approach requires
scripting expertise, and lacks the affordances of an IDE, such as a
graphical interface. Furthermore, this approach does not provide a
generic flexible method for composing launches.
[0010] From the above, it is seen that a flexible method for
composing launch configurations is required for advancing the state
of the art in modern distributed application development. In
particular, providing such a method in an IDE, which also supports
hierarchical composition, is particularly valuable. While this will
be useful for distributed application development, it is
anticipated that such a method would have other useful applications
as well, such as in stress testing.
SUMMARY OF THE INVENTION
[0011] The invention provides a general purpose mechanism for
consolidating the launching of multiple tasks. A task is said to be
launched, when it or an associated software component is run or
executed. In one embodiment of the invention, launch descriptions
of the individual tasks are read and parsed. Composition parameters
are then read, wherein the parameters indicate relationships
between the launchings of different tasks, such as launch order,
specific timings and synchronizations, delays between tasks, and
groupings of tasks. A combined or composite launch description is
then constructed, wherein the composite description takes into
account both the individual launch descriptions and the composition
parameters. Finally, tasks of the composite launch description are
launched. For example, if the tasks are software components, they
are run in a certain order or arrangement, each with its own
parameters. In a further embodiment, directed to a method of the
above type, a plurality of individual launch descriptions are
delivered to a tool, wherein each of the individual launch
descriptions is usable to launch a corresponding component to
perform a corresponding task. The method further comprises
providing the tool with a set of launch relationships, wherein a
given launch relationship specifies the relationships between
launchings of two or more components. The tool is then operated to
generate a single composite launch description that defines the
launching of the components in accordance with the set of launch
relationships.
BRIEF DESCRIPTION OF THE DRAWINGS
[0012] The novel features believed characteristic of the invention
are set forth in the appended claims. 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:
[0013] FIG. 1 is a flow chart depicting steps for an embodiment of
the invention.
[0014] FIG. 2 is a schematic diagram illustrating usage of a single
or individual launch description.
[0015] FIG. 3 is a schematic diagram illustrating use of a tool in
implementing an embodiment of the invention.
[0016] FIG. 4 is a schematic diagram illustrating a hierarchical
tree structure for a composite launch configuration in an
embodiment of the invention.
[0017] FIGS. 5, 6 and 7 respectively show screen shots pertaining
to an embodiment of the invention.
[0018] FIG. 8 is a block diagram showing a distributed data
processing system in which an embodiment of the invention may be
used.
[0019] FIG. 9 is a block diagram showing a data processing or
computer system for implementing an embodiment of the
invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
[0020] Referring to FIG. 1, there is shown a flow chart showing
principal steps of a method comprising an embodiment of the
invention. The method discloses a general purpose mechanism for
consolidating the launching of multiple tasks. A task, or a
software component for performing the task, is "launched", as such
term is used herein, when it is run or executed. For example, a
software component is launched when it is run or debugged. A
physical task is launched when it is executed.
[0021] FIG. 1 shows that a first step 102 of the method is to read
the launch description of each individual task of the multiplicity
of tasks. These descriptions need to be in a prescribed format,
e.g. XML with a particular schema, so that they can be parsed. The
result of step 102 is that a list of input launch descriptions is
stored in a selected data structure. The use of an individual
launch description is described hereinafter in further detail, in
connection with FIG. 2.
[0022] At step 104, the method reads a set of composition launch
parameters that have been supplied. These parameters generally
relate to how the launches are composed. Parameters may indicate
the relationship between the launching of a component, to perform
its corresponding task, and the launching of one or more other
components. For example, a launch parameter could specify an order
or sequence in which different components and their tasks are to be
launched, with respect to one another. Another parameter could
specify the timing or delay between tasks that are launched
successively, or could specify that tasks are to be launched
simultaneously or in some other timed or synchronized relationship.
Launch parameters could also indicate the number of instances for a
launched component, or specify the conditions under which the task
would or would not be launched. Further parameters could group
tasks into different subsets, or could indicate the computers or
other locations for launching respective tasks.
[0023] From the individual launch descriptions and the composition
launch parameters, a representation of the composite or combined
launch description is constructed, as shown by step 106. The
composite launch description, or composite launch configuration,
mirrors the nested structure of a composite entity, such as an
application having multiple sub-applications. A launch of the
composite launch description, shown at step 108, acts by
delegation. That is, the composite launch is equivalent to the
launch of respective constituents that are contained in the
composite entity, wherein each constituent has its own specified
launch configuration. Respective individual constituent launchings
occur in accordance with the order, sequence, or other launch
relationships that are specified by the composition launch
parameters. If the tasks are software components, they are run in a
certain order (or in parallel), each with its own parameters. In
the case of physical tasks, they may be executed in a particular,
prescribed manner, by a person or group of people.
[0024] FIG. 2 is a schematic diagram illustrating an individual
launch description 202 that is associated with a software component
204. A launch description interpreter 206 is provided to interpret
launch description 202, and to thus run software component 204 on
the appropriate run time environment 208. For example, for a
software component such as a Web application or Java application,
the launch description would comprise a group of parameters and
other related pieces of information. Collectively, these would
provide enough information, when presented to launch description
interpreter 206, to launch the software component. In an IDE, a
small document or the like is provided to be the launch description
202, in order to launch software component 204 to perform a desired
task. The IDE is also provided with a software component comprising
the launch description interpreter 206, which responds to the
information provided by the launch description to trigger the
launch of software component 204.
[0025] Referring to FIG. 3, there is shown a tool 302 for
implementing an embodiment of the invention. Tool 302 may, for
example, comprise a software based tool that is part of an IDE.
FIG. 3 shows multiple individual launch descriptions 304 delivered
as inputs to tool 302. As described above, each individual launch
description is usable to launch a corresponding component, and to
thereby perform a corresponding task. FIG. 3 further shows tool 302
being provided with composition launch parameters 306, as described
above in connection with FIG. 1. The tool 302 is then operated to
construct a single composite launch description 308 from these
inputs, as likewise described above in connection with FIG. 1. The
composite launch description defines the launching of respective
software components and their tasks, in accordance with a set of
launch relationships specified by composition launch parameters
306.
[0026] Referring to FIG. 4, there is shown a composite launch
description comprising a composite launch configuration 400. The
configuration 400 could be useful, for example, for consolidated
launching of a collection of projects in an IDE. More particularly,
the composite launch configuration 400 comprises a collection of
projects arranged for launching in a hierarchical tree structure.
The leaves 402-422 comprise projects or other components that are
to be launched, and internal nodes 424-440 represent hierarchical
collections, groupings or subsets of projects. Thus, leaves 408-412
comprise a project subset under node 432, and leaves 402-404
comprise a subset under node 424. Arranging related leaf projects
in a subset under a common node can be very useful for certain
purposes. For example, all the projects under node 432 could be
launched at the same time, or could be launched using the same
computer. The hierarchical arrangement is also useful for enabling
an application developer to visualize the composite launch
configuration, or to select a particular project subset for launch
and testing. The developer can also rearrange project launches in
the over-all configuration, and can specify the launch order of
sub-projects within the composite project, to enable various test
scenarios.
[0027] FIGS. 5-7 respectively show screen shots of a user interface
(UI) 500, wherein UI 500 may be interconnected with tool 302
described above. UI 500 is provided to enable a developer or other
user to visualize, manipulate or selectively modify a composite
project launch configuration generated by tool 302.
[0028] Referring to the screen depicted in FIG. 5, there is shown a
window 502 labeled Composite Project Name. This window is used to
select or specify the name of a composite project. In FIG. 5, the
name "compJav" has been selected.
[0029] FIG. 6 shows multiple tabs employed for defining the launch
configuration. The "SubApplications" tab 602 (shown in the center)
lists the sub-projects that are to be launched by using checked
boxes 604a-c, in order to indicate whether a sub-project should be
launched in the next run. The "MoveUp" button 606 and "MoveDown"
button 608 enable a user to readily change the launch order. The
functionality of this tab can easily be extended to define
additional launch parameters such as the number of instances to
launch. The "Launchers View" tab 610 (shown on the right) shows the
entire hierarchy of the launch configuration as depicted in FIG. 7.
In the example shown in FIG. 6, "jav1" and "jav2" are
sub-applications inside CompJav, and "compJavNested" is an internal
node.
[0030] FIG. 7 shows a screen shot that visually presents a tree
structure as described above in connection with FIG. 4. For
example, the top level 702 of the tree, "compJav/compJav", has a
child 704 (compJavNested), which has a child 706 (NoLauncher/jav3).
Top level 702 also has further children 708 and 710.
[0031] Referring to FIG. 8, there is shown a generalized
distributed data processing system 800 comprising a network of
computers. System 800 may be used in connection with distributed
applications and their development, and may thus be used with
embodiments of the invention. Distributed data processing system
800 contains a network 802, which is the medium used to provide
communications links between various devices and computers
connected together within distributed data processing system 800.
Network 802 may include permanent connections, such as wire or
fiber optic cables, or temporary connections made through telephone
connections, as well as wireless connections such as Wi-Fi (802.11)
and Bluetooth.
[0032] In the depicted example, a server 804 and server 806 are
connected to network 802 along with storage unit 808. In addition,
clients 810, 812, and 814 are connected to network 802. These
clients 810, 812, and 814 may be, for example, personal computers,
network computers or mobile computers such as PDAs and smart
phones. For purposes of this application, a network computer is any
computer, coupled to a network, which receives a program or other
application from another computer coupled to the network. In the
depicted example, server 804 provides data, such as boot files,
operating system images, and applications to clients 810-814.
[0033] Clients 810, 812, and 814 are clients to server 804.
Additionally, clients 810-814 may be clients to server 806 in these
examples. Moreover, tool 302 shown in FIG. 3, together with other
computer hardware and software components required to implement
embodiments of the invention, may reside in or collectively
comprise one of the clients 810-814.
[0034] Distributed data processing system 800 may include
additional servers, clients, and other devices not shown. In the
depicted example, network 802 interconnecting system 800 could be
the Internet. Distributed data processing system 800 also may be
implemented as a number of different types of networks, such as,
for example, an intranet, a local area network (LAN), or a wide
area network (WAN).
[0035] Referring to FIG. 9, there is shown a block diagram of a
generalized data processing system 900 which may be adapted for use
as one of the client computers 810-814 shown in FIG. 8. Data
processing system 900 exemplifies a computer, in which code or
instructions for implementing embodiments of the invention may be
located. Data processing system 900 usefully employs a peripheral
component interconnect (PCI) local bus architecture, although other
bus architectures such as Accelerated Graphics Port (AGP) and
Industry Standard Architecture (ISA) may alternatively be used.
FIG. 9 shows a processor 902 and main memory 904 connected to a PCI
local bus 906 through a Host/PCI bridge 908. PCI bridge 908 also
may include an integrated memory controller and cache memory for
processor 902. It is thus seen that data processing system 900 is
provided with components that may readily be adapted to provide
tool 302 as described above, together with other components for
implementing embodiments of the invention as described herein.
[0036] Referring further to FIG. 9, there is shown a local area
network (LAN) adapter 912, a small computer system interface (SCSI)
host bus adapter 910, and an expansion bus interface 914
respectively connected to PCI local bus 906 by direct component
connection. Audio adapter 916, a graphics adapter 918, and
audio/video adapter 922 are connected to PCI local bus 906 by means
of add-in boards inserted into expansion slots. SCSI host bus
adapter 910 provides a connection for hard disk drive 920, and also
for CD-ROM drive 924.
[0037] 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, etc.
[0038] 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. For
the purposes of this description, a computer-usable or computer
readable medium can be any tangible 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.
[0039] 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 USB flash drive, 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.
[0040] 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.
[0041] 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.
[0042] 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 modems,
Ethernet cards and wireless adapters are just a few of the
currently available types of network adapters.
[0043] The description of the present invention has been presented
for purposes of illustration and description, and is 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 embodiment was 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.
* * * * *