SOFTWARE PROGRAM DEVELOPMENT TOOL (E.G., INTEGRATED CASE TOOL OR STAND-ALONE DEVELOPMENT TOOL)

Method and apparatus for saving a definition for automated data processing

6944865

Abstract

A number of items of data are obtained from a data source and are processed and then stored in a data destination. The data items may each include image data, text data, numeric data or some other type of data, or a combination of these different types of data. The processing of the data is controlled by a project definition which includes several modules selected from a variety of available modules. The modules have input and output ports that are interrelated by binding information. Each project definition is expressed in a public communication protocol, one example of which is the extensible Markup Language (XML) protocol.


Claims

1. A computer-implemented method for facilitating creation of a definition for automated data processing, comprising the steps of:

providing a set of predetermined function definitions which are different, at least one of said predetermined function definitions defining a function for manipulating image data; and

preparing a project definition expressed in a public communication protocol, said project definition defining a project for manipulating said image data according to said one predetermined function definition and including:

a plurality of function portions which each correspond to one of said function definitions in said set, and which each define at least one input port and at least one output port that are functionally related according to the corresponding function definition;

a further portion which includes a source portion identifying a data source and defining an output port through which data from the data source can be produced, and which includes a destination portion identifying a data destination and defining an input port through which data can be supplied to the data destination; and

binding information which includes binding definitions that each associate a respective said input port with one of said output ports; and

wherein one of said function definitions implements a function which varies in dependence on control input and said preparing step includes the step of including in said project definition, for each said function portion therein that corresponds to said one of said function definitions, respective control information for use as said control input:

wherein said function blurs an image, expands an image, or performs at least one mathematical computation using said image data; and

wherein said control information selects between a plurality of blurring techniques, selects between a plurality of colors to fill resulting added area, or selects between a plurality of mathematical equations.

2. A computer-implemented method according to claim 1, including the step of selecting as said public communication protocol the eXtensible Markup Language (XML) protocol.

3. A computer-implemented method according to claim 1, wherein said preparing step includes the step of including in said project definition a list which identifies at least some of said function, source and destination portions, said project definition including for each said portion in said list a section which sets forth any said control information for that portion, and a section which includes said binding definitions for that portion.

4. A computer-implemented method according to claim 3, wherein said preparing step includes the step of including in said project definition a plurality of process definitions which each include a respective said list, said lists each including a subset of said function, source and destination portions, and said subsets being mutually exclusive.

5. A computer-implemented method according to claim 1, wherein said function cooperates with a separate image processing application to perform an operation using said separate image processing application.

6. A computer-readable medium encoded with a computer program which recognizes a set of predetermined function definitions that are different, and which is operable when executed to facilitate preparation in a public communication protocol of a project definition for automated data processing which includes:

a plurality of function portions which each correspond to one of said function definitions in said set, and which each define at least one input port and at least one output port that are functionally related according to the corresponding function definition;

a further portion which includes a source portion identifying a data source and defining an output port through which data from the data source can be produced, and which includes a destination portion identifying a data destination and defining an input port through which data can be supplied to the data destination; and

binding information which includes binding definitions that each associate a respective said input port with one of said output ports; and

wherein at least one of said predetermined function definitions defines a function for manipulating image data and said project definition defines a project for manipulating said image data according to said one predetermined function definition;

wherein one of said function definitions implements a function which varies in dependence on control input and said program is operable when executed to include in said project definition, for each said function portion therein that corresponds to said one of said function definitions, respective control information for use as said control input:

wherein said function blurs an image, expands the image, or performs at least one mathematical computation using said image data; and

wherein said control information selects between a plurality of blurring techniques, selects between a plurality of colors to fill resulting added area, or selects between a plurality of mathematical equations.

7. A computer-readable medium according to claim 6, wherein said program is operable when executed to use as said public communication protocol the eXtensible Markup Language (XML) protocol.

8. A computer-readable medium according to claim 6, wherein said program is operable when executed to include in said project definition a list which identifies at least some of said function, source and destination portions, said project definition including for each said portion in said list a section which sets forth any said control information for that portion, and a section which includes said binding definitions for that portion.

9. A computer-readable medium according to claim 8, wherein said program is operable when executed to include in said project definition a plurality of process definitions which each include a respective said list, said lists each including a subset of said function, source and destination portions, and said subsets being mutually exclusive.

10. A computer-readable medium according to claim 6, wherein said function cooperates with a separate image processing application to perform an operation using said separate image processing application.


Description

TECHNICAL FIELD OF THE INVENTION

This invention relates in general to automated processing of multiple items of data and, more particularly, to a method and apparatus for saving a definition which controls such automated data processing.

BACKGROUND OF THE INVENTION

There are a variety of situations in which automated processing of a number of data items is desirable. One specific example of such an application is product catalogs. Product catalogs, whether in the form of a paper catalog or an Internet "Web" site, frequently have numerous pictures which each depict a respective one of the various items that are available for sale. Many years ago, these pictures were prepared using optical negatives and photographs. Currently, however, the trend is to maintain and process these pictures in the form of computer files containing digital images.

A given paper or on-line catalog will usually include products from a variety of different manufacturers, and it is common for each manufacturer to provide its own digital images. There will typically be variation between the form of images provided by different manufacturers, for example in terms of characteristics such as the size, shape, resolution, tint, and so forth. It is even possible that the images from a single given manufacturer may have different forms. Accordingly, in order for the images throughout a catalog to have a generally similar appearance, the various images from various sources need to be processed to adjust characteristics such as size, shape, resolution, and/or tint, so as to bring them into general conformity with each other.

A further consideration is that a manufacturer's images do not represent a static situation, because manufacturers are constantly adding new products with new images, discontinuing existing products and associated images, and providing updated images for existing products. Moreover, there may be other reasons for adjusting images. For example, with respect to a paper or on-line catalog intended for use during the Christmas season, there may be a desire to put a festive frame around each image, such as a frame of holly leaves and berries. Moreover, stylistic changes in the images are often desirable.

The traditional approach for carrying out these various types of image processing tasks has involved manual adjustments effected on an image-by-image basis, through use of image processing software requiring extensive operator interaction. However, this is extremely time consuming and expensive. Many organizations currently employ a number of graphic artists to do this work, at great expense.

A less common approach has been the preparation of a hard-coded software routine to process images, written in line-by-line source code. However, these routines are time-consuming and expensive to generate, are likely to include errors or "bugs", and have little flexibility because they cannot be modified quickly and cheaply. Moreover, they can only be prepared and executed by a skilled programmer, rather than by a graphic artist who is skilled in image processing but has limited computer skills. It is difficult to find persons who have both artistic and computer skills, and they command large salaries.

Thus, while these traditional approaches have been generally adequate for their intended purposes, they have not been satisfactory in all respects. One specific aspect of this, as mentioned above, is the fact that, to the extent automated procedures have previously been developed to process multiple items of data, these-procedures have been expressed in the form of hard-coded source code. An associated problem is that this source code must be separately compiled for various different hardware platforms on which it will be utilized, through use of various different compiler programs.

SUMMARY OF THE INVENTION

From the foregoing, it may be appreciated that a need has arisen for a method and apparatus for saving a definition that controls automated data processing, in a manner which is efficient and user friendly. According to the present invention, a method and apparatus are provided to address this need.

In particular, one form of the present invention involves providing a set of predetermined function definitions which are different, and preparing a project definition expressed in a public communication protocol. The project definition includes: a plurality of function portions which each correspond to one of the function definitions in the set, and which each define at least one input port and at least one output port that are functionally related according to the corresponding function definition; a further portion which includes a source portion identifying a data source and defining an output port through which data from the data source can be produced, and which includes a destination portion identifying a data destination and defining an input port through which data can be supplied to the data destination; and binding information which includes binding definitions that each associate a respective input port with one of the output ports.

BRIEF DESCRIPTION OF THE DRAWINGS

A better understanding of the present invention will be realized from the detailed description which follows, taken in conjunction with the accompanying drawings, in which:

FIG. 1 is a diagrammatic view of a configuration which embodies the present invention, and which includes a data source, two data destinations, and a project definition;

FIGS. 2-5 are each a diagrammatic view of a respective different icon which can be used to diagrammatically represent a portion of a project definition of the type shown in FIG. 1;

FIG. 6 is a diagrammatic view similar to FIG. 1 of a different project definition according to the present invention;

FIG. 7 is a diagrammatic view of a different way of visually representing the project definition of FIG. 6;

FIG. 8 is a diagrammatic view similar to FIG. 1 of yet another project definition according to the present invention;

FIG. 9 is a block diagram of a system which embodies the present invention, including the capability to create and execute project definitions of the type shown in FIGS. 1 and 6-8;

FIGS. 10-12 are each a flowchart showing a respective sequence of operations carried out by respective portions of the software within the system of FIG. 9;

FIG. 13 is a diagrammatic view of a dialog box which can be displayed by the system of FIG. 9 during execution of a project definition;

FIG. 14 is a diagrammatic view of a screen which can be displayed by the system of FIG. 9 to permit a user to carry out functions such as creation, modification and execution of a project definition;

FIG. 15 is a diagrammatic view of a different way in which the project definition of FIG. 8 can be visually represented;

FIG. 16 is a diagrammatic view of two modules of a project definition, in conjunction with binding menus that are used to define a relationship between the depicted modules;

FIG. 17 is a diagrammatic view of a further dialog box, which can be displayed by the system of FIG. 9 during creation of a project definition; and

FIG. 18 is a diagrammatic view of yet another dialog box, which can be displayed by the system of FIG. 9 during creation of a project definition.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 is a block diagram of a configuration 10 which embodies features of the present invention, and which includes a computer subdirectory 12 that serves as a data source and contains a plurality of files with images therein, a project definition 14 that defines how data from the files in the subdirectory 12 should be processed, and two computer subdirectories 16 and 17 that serve as data destinations into which files containing the processed data will be stored. The project definition 14 is executed by a computer, in a manner described in more detail later, and successively obtains the files from the subdirectory 12, processes each file 12 in a manner described below, and then deposits the processed file in either the subdirectory 16 or the subdirectory 17. For purposes of the present discussion, it is assumed that the files in the subdirectory 12 contain image data, but they could alternatively contain some other type of data. Also, the terms directory, subdirectory, folder and subfolder are all used here to refer to directories.

The specific project definition 14 shown in FIG. 1 has been designed to be relatively simple for purposes of illustrating some basic concepts of the present invention, and basically will do two things. First, it will take each file obtained from the subdirectory 12, and evaluate the size of the file. With respect to size, it is important to remember the distinction between the size of an image, which is measured in pixels in each of the height and width directions, and the size of the file containing the image, which is typically measured in kilobytes (KB). In FIG. 1, files above a certain size are to be placed in the subdirectory 16 after processing, whereas all other files are to be placed in the subdirectory 17 after processing. Second, the project definition 14 will take the name of each file, and superimpose this name on top of the image in the file. For example, if a given file is named "elephant" and contains an image of an elephant, the word "elephant" will be superimposed on top of the image of the elephant.

The subdirectory 12 is not itself a part of the project definition 14. Subdirectory 12 may be local to the computer executing the project definition 14, may be disposed in another nearby computer accessible through a local area network (LAN), may be disposed in a remote computer many miles away which must be accessed through the Internet, or may be accessed in some other manner. The project definition 14 thus needs to know where to find the subdirectory 12 and the data therein. Accordingly, the project definition 14 includes a source module 21, which includes a definition of where to locate the subdirectory 12, and how to access it. The source module 21 successively obtains the files from the subdirectory 12. Each time the source module 21 receives a file from the subdirectory 12, it outputs the image data from the file through a first output port, as indicated diagrammatically at 22, and outputs a text string representing the file name through a second output port, as indicated diagrammatically at 23.

Lines of the type shown at 22 and 23 are referred to herein as binding lines. For convenience, image data is indicated by a wide double-line binding line, as shown in 22, whereas other types of data are indicated by a thin single-line binding line, as shown at 23. Alternatively, different types of binding lines could be distinguished in some other manner, for example by presenting them in different colors. Where an input port and an output port are associated with each other by a binding line, they are said to be bound to each other.

In the embodiments disclosed herein, an image or other data element obtained from a data source by a project definition is processed to completion by the project definition before the next successive image or data item from that data source is provided to the project definition. However, it will be recognized that it would alternatively be possible for a project definition to simultaneously have several successive images or data elements at various levels of processing, for example through the use of appropriate pipelining techniques. Conceptually, one way to view the project definition 14 of FIG. 1 is that execution proceeds on a module-by-module basis through the project definition along the double-line image data binding lines, from the source module 21 to the branch module 26, and then to either the action module 31 followed by the destination module 37, or alternatively to the action module 32 followed by the destination module 38. Another way to view the project definition 14 is that each of the modules is ready at all times to carry out its respective function, and does so as soon as all data needed to carry out that function arrives at the input port(s) of that module.

Image data that is output at 22 by the source module 21 flows to an input port of a branch module 26. The branch module 26 checks the size of the file associated with each image that arrives at its input port. If the file size for a given image is above a predetermined size, then the branch module 26 outputs the image data at 27 through a first output port. Otherwise, it outputs the image data at 28 through a second output port. The image data at 27 flows to an input port of an action module 31, whereas the image data at 28 flows to an input port of an action module 32.

For the sake of simplicity, the action modules 31 and 32 in the example of FIG. 1 have identical functions. More specifically, each has a further input port which receives the text string represented by binding line 23. As mentioned above, this text string contains the name of the file associated with the image data. The action modules 31 and 32 each have the capability to take the text string and superimpose it on the associated image data, and then output the result at 33 or 34 through an output port. The data at 33 flows to an input port of a destination module 37, and data at 38 flows to an input port of a destination module 38. Again, for simplicity, destination modules 37 and 38 are functionally identical.

In this regard, and as was the case with the subdirectory 12, the subdirectories 16 and 17 may each be local or remote, and may be accessed in different ways. Further, one or both of the subdirectories 16 and 17 may be located in proximity to the subdirectory 12, or may be remote from the subdirectory 12. Consequently, since the subdirectories 16 and 17 are not part of the project definition 14, the project definition 14 needs to know where to find them and how to access them, so that it knows where to deposit processed data. Accordingly, the destination modules 37 and 38 each include a definition of where to find the associated subdirectory 16 or 17, and how to access it. Thus, when the project definition 14 has finished processing all of the files from the subdirectory 12, the subdirectory 16 will contain a processed version of the files which are larger than a specified size, and the subdirectory 17 will contain a processed version of the remaining files. Further, each of the files in subdirectories 16 and 17 will contain an image which has the associated file name superimposed on it.

A brief comment regarding the use of the terms "process" and "sub-process" will help to avoid confusion. A project definition of the general type shown at 14 in FIG. 1 may include two or more mutually exclusive sets of modules, which are each referred to as a process. In the particular example of FIG. 1, for the sake of simplicity, the project definition 14 includes only one process, which contains all of the modules 21, 26, 31-32, and 37-38. This process has two portions, which are respectively disposed above and below the broken line 42 in FIG. 1.

The modules 21, 23, 31 and 37 which are above the broken line 42 are referred to herein as a main process, and the modules 32 and 38 which are below the broken line 42 are referred to as a sub-process. Technically, the main process and the sub-process are each a respective sub-process of the overall process. However, the first sub-process in every process is mandatory, and is always the starting point for execution of the process, and thus it is referred to as the main "process" rather than as the main "sub-process", even though it is actually a sub-process of the overall process. The presence of one or more additional sub-processes is entirely optional, and execution may or may not be transferred to each, depending upon factors such as whether branch modules are present and the particular data which is being processed. Consequently, they are referred to as sub-processes. An input or output port of a given module can be bound to ports of other modules within any of the sub-processes of the same process, but cannot be directly bound to ports of modules in other processes of the same project definition.

Where a branch module in a main process is capable of routing data to a sub-process, the data is always transferred to the first module in that sub-process, rather than to an intermediate module partway along the sub-process. The same is true where a branch module in a sub-process is capable of transferring data to a different sub-process. A further characteristic in the disclosed embodiments is that branch modules are allowed to route data to a later sub-process, but never to an earlier sub-process or the main process. Moreover, while one output port of a branch module can route data to the next successive module in the current sub-process (which may be the main process), the other output port is not permitted to route data to a module in the current sub-process, but must route data to a different sub-process. However, it will be recognized that an alternative embodiment could accommodate branch modules having the capability to route data to an earlier sub-process (which may be the main process), to a module partway along a different sub-process (which may be the main process), or to two modules which are both within the current sub-process. In fact, the alternative embodiment need not conceptually organize modules of an overall process into groups treated as respective sub-processes.

As discussed above, the branch module 26 will route each image either at 27 to the action module 31 or at 28 to the action module 32. If the data is routed to action module 31, then action module 31 and destination module 32 operate on the image data, while action module 32 and destination module 38 remain idle. Alternatively, if an image were instead to be routed at 28 to the action module 32, then action module 32 and destination module 38 would operate on the image data, while action module 31 and destination module 37 remained idle. Thus, in the example of FIG. 1, the branch module 26 determines whether processing of each image will be carried out by continuing along the main process, namely in action module 31 and destination module 37, or will be carried out in the sub-process, namely in action module 32 and destination module 38.

The project definition 14 in FIG. 1 is a simple example, but has been configured to show at least one example of each of the four types of modules that are recognized in the disclosed embodiments of the present invention. In other words, the disclosed embodiments of the present invention recognize source modules, one example of which appears at 21, branch modules, one example of which appears at 26, action modules, two examples of which appear at 31 and 32, and destination modules, two examples of which appear at 37 and 38. As reflected by the brackets along the bottom of FIG. 1, branch modules and action modules are sometimes referred to collectively herein as function modules. Source modules deal with the question of where to find the data to be processed, branch modules deal with the question of which data should and should not be processed in a specified manner, action modules deal with the question of what processing should be performed on the data, and destination modules deal with the question of where to put the processed data.

In order to put the present invention into perspective, it is helpful to understand one possible application for a project definition of the type shown at 14 in FIG. 1. Product catalogs, whether in the form of a paper catalog or an Internet "Web" site, frequently have numerous pictures each depicting a respective one of the various items that are available for sale. Many years ago, these pictures were prepared using optical negatives and photographs. Currently, however, the trend is to maintain and process these pictures in the form of computer files containing digital images.

A given paper or on-line catalog will usually include products from a variety of different manufacturers, and it is common for each manufacturer to provide its own digital images. There will typically be variation between the form of images provided by different manufacturers, for example in terms of characteristics such as the size, shape, resolution, tint, and so forth. It is even possible that the images from a given manufacturer may have different forms. Accordingly, in order for the images throughout a catalog to have a generally similar appearance, the various images from various sources need to be processed to adjust characteristics such as size, shape, resolution, and/or tint, so as to bring them into general conformity with each other. A further consideration is that a manufacturer's images do not represent a static situation, because manufacturers are constantly adding new products with new images, discontinuing existing products and their images, and providing updated images for existing products. Moreover, there may be other reasons for adjusting images. For example, with respect to a paper or on-line catalog intended for use during the Christmas season, there may be a desire to put a festive frame around each image, such as a frame of holly leaves and berries. Moreover, stylistic changes in the images are often desirable.

The traditional approach for carrying out these various types of image processing tasks has involved manual adjustments effected on an image-by-image basis, through use of image processing software requiring extensive operator interaction. However, this is extremely time consuming and expensive. Many organizations employ a number of graphic artists to do this work, at great expense.

A less common approach has been preparation of a hard-coded software routine to process images, written in line-by-line source code. However, these routines are time-consuming and expensive to generate, are likely to include errors or "bugs", and have little flexibility because they cannot be modified quickly and cheaply. Moreover, they can only be prepared and executed by a skilled programmer, rather than by a graphic artist who is skilled in image processing but has limited computer skills. It is difficult to find persons who have both artistic and computer skills, and they command large salaries.

In contrast to these known approaches, a project definition of the type shown at 14 in FIG. 1 provides the capability to automate image processing so that a large number of images can be automatically and rapidly processed in a defined manner, and at far less expense than would be involved with the traditional and common approach of manual processing. Further, and as described in more detail later, the present invention provides a simple and user-friendly approach for creating and modifying project definitions of the type shown at 14 in FIG. 1, thereby permitting graphic artists who have limited computer skills to easily and accurately create a project definition while substantially avoiding the likelihood of bugs, with far less overall time and expense than is involved with the known approaches discussed above. The advantages of the present invention over the known approaches will become even more apparent as the present invention is discussed in greater detail below. While the foregoing example of catalog preparation focused on processing of image data, and while the disclosed embodiments involve primarily the processing of image data, the present invention is also advantageous for applications which involve processing of other types of data.

The foregoing discussion of FIG. 1 described one specific example of each of the source, branch, action and destination categories of modules. The present invention actually recognizes several types of modules in each category. More specifically, TABLE 1 describes several different types of source modules, TABLE 2 describes several different types of branch modules, TABLE 3 describes several different types of action modules, and TABLE 4 describes several different types of destination modules. Some of the module types set forth in TABLES 1-4 could be omitted, or additional module types could be included, without departing from the present invention. The module types set forth in TABLES 1-4 are referred to herein as standard module types. As discussed later, the present invention also provides for the creation of custom module types, for example through modification of one of the standard module types set forth in TABLEs 1-4. The resulting custom module type can either be substituted for the standard module type from which it was derived, using the same name, or can be used to supplement the standard module types, using a unique new name.

A few comments are appropriate regarding TABLEs 1-4. First, the present invention permits the use of virtual paths, where a table is provided to associate each virtual path with an actual path. Where a project definition uses a virtual path term, each computer on which that project definition may be executed would include a respective table entry to associate that virtual path with a respective actual path. Thus, the project definition can be executed without change on each such computer, but will use a different actual path on each computer wherever the virtual path term appears, without any need to actually modify the path information within the project definition itself.

A further consideration is that, in the disclosed embodiments, project definitions recognize various types of data, including image data, numeric data in a floating point or "float" format, and string data in the form of a series of text characters. In the discussion which follows, references to data types are typically preceded by the prefix "em", such as "emImage", "emFloat", or "emString". This is an arbitrary prefix, which has been used to facilitate implementation of the disclosed embodiments. For example, if data is received from an external source with an indication that it includes data of a type "emFloat", it can be assumed that it conforms to the appropriate format. In contrast, if the data type is merely indicated to be "float", it would be necessary to evaluate the associated data in an attempt to determine which of various formats for floating point data it conforms to, but even then it may not be possible to tell.

A feature of the present invention is that many of the module definitions in TABLEs 2 through 4 have input ports configured so that the input port will accept data in various formats and, if that data is not in the format preferred by that input port, the input port will automatically convert the data to its preferred format. This feature is referred to as data matching. For example, if a number in a floating point format is supplied to an input port which expects data in a string format, the floating point value will be converted to a text string which represents the number. Input ports which have this capability are identified in TABLES 1-4 as having a data type of "emVariant". This does not mean that actual data can be formatted in the "emVariant" format. Instead, "emVariant" refers only to the capability of the input port to be bound to an output port that produces data conforming to other valid data types, such as "emFloat" or "emString".

With respect to image data, it should be understood that data for a given image may include two or more objects and/or layers. For example, an image may have two layers which are each an object. Similarly, if a mask is created for an image, the mask will be added to the image data in the form of a separate layer. Also, if text is superimposed onto an image, for example as discussed above in association with the action modules 31-32 in FIG. 1, the text will be added as an object, separate from other pre-existing objects of the image data. All the objects associated with a given image can be combined into a single object, through use of a "Flatten Image" definition which is set forth in TABLE 3.

In general, the definitions of source, branching, action and destination modules in TABLEs 1-4 are believed to be self-explanatory. However, there is one definition as to which a supplementary comment may be helpful. In this regard, the "Database Access" definition in TABLE 1 is a source module which obtains data in a manner that includes accessing a database. The database will include a table that has a plurality of rows called records, which each include a plurality of columns called fields. If the data being retrieved is string data, it may be retrieved directly from one of the fields in the table of the database. On the other hand, if the data being retrieved includes image data, the image data will typically be stored separately from the database, for example within files in a subdirectory, and one field in the table must contain a string with a complete path to the image data.

TABLE 1
SOURCE DEFINITIONS
DATABASE ACCESS
Uses a database table or query to identify data to
process. Unless processing strings, one field in the
table must contain a string with a complete path to the
image data. May optionally select one or more
additional fields that will be output separately (for
binding by subsequent functions). The database table
or query must already exist and be defined as an ODBC
(Open DataBase Connectivity) connection prior to using
this function.
Variable Name Port Type Description
ImageOut Output emImage Image data.
Specified Field Output emString Each selected field
is converted to
string output, and
retains field name.
FILE BROWSER
Adds one file at a time to a list of images to process.
The resulting list is saved, and is subsequently used
during execution to automatically retrieve the
specified images in sequence.
Variable Name Port Type Description
ImageOut Output emImage Image data.
INTERNET FILES
Collects all of the image files from a specified URL
(Universal Resource Locator) address. Optionally, the
function will continue to other pages to which the
specified site is linked (from one to five levels, as
specified by the Depth setting). By default, it only
follows links within the same domain name, but this can
optionally be disabled.
Variable Name Port Type Description
ImageOut Output emImage Image data.


LOCAL FILES
Indicates a folder or a virtual path to where images to
be processed are stored. Can select whether or not
subfolders (subdirectories) of the indicated folder
will be accessed.
Variable Name Port Type Description
ImageOut Output emImage Image data.
AltText Output emString Alternate text of
the image on that
page.
TABLE 2
BRANCHING DEFINITIONS
Variable Name Port Type Description
ALWAYS JUMP
Unconditionally forces execution from the current
process to the start of a specified sub-process.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
COLOR TYPE
Restricts the processing of images in the current
process to only those color types specified. The
default setting is that all color types are processed.
For non-qualifying images, execution can optionally be
diverted to a sub-process.
ImageIn Input emImage Image data.
ImageOut1 Output emImage Image data (current
process).
ImageOut2 Output emImage Image data (sub-
process).
FILE FORMAT
Restricts processing of image files in the current
process to only those file types specified. The
default setting is that all image file types are
processed. For non-qualifying images, execution can
optionally be diverted to a sub-process.
ImageIn Input emImage Image data.
ImageOut1 Output emImage Image data (current
process).
ImageOut2 Output emImage Image data (sub-
process).


FILE SIZE
Restricts the processing of images in the current
process to only those files that fall within a
specified file size range. An upper limit and/or a
lower limit may be set. The default setting is that
all file sizes are processed. For non-qualifying
images, execution can optionally be diverted to a sub-
process.
ImageIn Input emImage Image data.
ImageOut1 Output emImage Image data (current
process).
ImageOut2 Output emImage Image data (sub-
process).
INTERACTIVE
Pauses execution and causes display of a dialog box
which prompts a person for a decision on which branch
to take, if any. Allows a default directive to be
defined (which may be to continue the current process,
branch to a sub-process, or terminate all execution).
As each image is processed, the list of available
options is presented, with the default being applied if
an "OK" option is selected. Selecting a "Don't show me
this again" checkbox causes the currently selected
option to be automatically applied to each subsequent
image without interaction. For non-qualifying images,
execution can optionally be diverted to a sub-process.
ImageIn Input emImage Image data.
ImageOut1 Output emImage Image data (current
process).
ImageOut2 Output emImage Image data (sub-
process).
STRING FILTER
Restricts the processing of images in the current
process to only those files that include or exclude (as
specified) one or more specific string values. The
condition is met if any of the specified strings match
any part of string data in the image. Matching is not
case sensitive. For non-qualifying images, execution
can optionally be diverted to a sub-process.
ImageIn Input emImage Image data.
ImageOut1 Output emImage Image data (current
process).
ImageOut2 Output emImage Image data (sub-
process).
Source Input emString Source of the string
input.
WIDTH HEIGHT
Restricts processing of images in the current process
to only those images that fall with specified height
and/or width parameters (as measured in pixels). The
default setting is that there are no restrictions. To
set a range having an upper and lower limit, use two
successive Width Height functions. For non-qualifying
images, execution can optionally be diverted to a sub-
process.


ImageIn Input emImage Image data.
ImageOut1 Output emImage Image data (current
process).
ImageOut2 Output emImage Image data (sub-
process).
WILDCARD
Specifies the images to include or exclude from
processing in the current process, based on the file
name. Standard wildcards may be used to define the
condition, including a question mark (?) to represent
any single character, and/or an asterisk (*) to
represent one or more characters. For non-qualifying
images, execution can optionally be diverted to a sub-
process.
ImageIn Input emImage Image data.
ImageOut1 Output emImage Image data (current
process).
ImageOut2 Output emImage Image data (sub-
process).
TABLE 3
ACTION DEFINITIONS
Variable Name Port Type Description
AUTO SELECT
Attempts to mask the background (or foreground) of an
image. It looks at eight points (the four image
corners, and the center of each side). If three or
more points have substantially the same color, it is
assumed to be the background color. The resulting mask
corresponds to points throughout the image that match
the background color, within a "Tolerance" setting.
Small matching patches within the non-background
portion may be ignored by enabling a "Remove Holes"
option. Successful mask creation causes execution to
continue in the current process. Otherwise, execution
can optionally continue for the image in a sub-process.
ImageIn Input emImage Image data.
ImageOut1 Output emImage Image data (current
process).
ImageOut2 Output emImage Image data (sub-
process).
BEVELER
Produces a three-dimensional effect by adjusting the
border of the image so that it appears to be beveled.
In addition, it allows setting the apparent direction
of a light source to produce a shadow effect in regard
to the bevel. Parameters include: the percentage of
the image to be beveled; the smoothness of the edge of
the bevel; the intensity of the light effect overall;
the intensity of the light effect along the bevel edge
closest to the light source; and the apparent depth of
the bevel. A sample image is displayed to show an
example of the effect that the current parameters will
have on an image.


ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
BLUR IMAGE
Blurs a specified image or image object to a selected
degree, using a selected one of a "General Blur" or
"Gaussian Blur" technique. The "General Blur" may be
configured to blur only hard edges, soft edges, or
both. A "Lightness" setting can be enabled to smooth
the image without affecting the colors. The "Gaussian
Blur" has less versatility, but can have a much more
pronounced blur effect. A sample image is displayed to
show how the current setting would affect an image.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
CALCULATED EXPAND
Expands the shortest side of the image to match the
longest side of the image. The resulting image will be
square, with the original image centered in it. The
added area will be filled with a specified color.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
CALCULATOR
Image data passes through this function unchanged.
This function performs one or more mathematical
computations defined by specified equations, and
outputs the results. Before being converted to a
string, output is in the form of a floating point
format unless a "Fix" or "Int" option is selected.
"Fix" rounds a negative number up to the nearest whole
number, while "Int" rounds a negative number down.
Both treat positive numbers the same, by rounding down
to the nearest whole number. Equations may be entered
manually in an equation workspace, or by clicking
calculator controls. Variables can be statically
defined at design time, dynamically obtained at input
ports, or both. Integers and numeric strings from
input ports are automatically converted to floating
point values. There are eight temporary variables
which can store the value of an interim computation for
use in a subsequent equation. It is possible to
perform a conditional statement that effects branching,
where execution for each image continues in either the
current process or a sub-process, depending on the
condition.
ImageIn Input emImage Image data.
ImageOut1 Output emImage Image data (current
process).
ImageOut2 Output emImage Image data (sub-
process).
InVal1 (2, . . . 8) Input emFloat Any integer,
floating point or
numeric string
value.
OutVal1 (2, . . . 8) Output emString Calculated value
Temp1 (2, . . . 8) emFloat Used internally for
temporary storage.


CROP
Trims away undesired portions of an image. The
"Specified Size" method indicates in pixels how much of
the image should remain after processing. The
"Specified Border" method indicates how much of one or
more borders is to be trimmed away.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
CROP TO MASK
Trims an image to a predefined mask, such as may exist
for certain TIF images. There are no user defined
parameters.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
DROP SHADOW
Adds a shadow effect behind the last active object.
The object may be the image, a mask, or an effect that
was added, such as text from the Text Stamper function.
The shadow size, offset from object, and color may be
set, as well as the color of the page background.
Also, control is permitted for the percentage of
transparency, as well as the number of pixels in the
feather. The feather length in pixels controls how
abruptly the drop shadow transitions from the page
backdrop color to the color of the drop shadow, thereby
producing a smoothing effect. If Drop Shadow is
applied to a mask object, the mask object is deleted
and the added shadow becomes the active object.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
EXPAND
Enlarges an image. The "Specified Border" method adds
a specified number of pixels to one or more sides of an
image. The "Specified Size" method specifies the total
size of the image in pixels. The color of the added
area is set to a specified color, the default being
white.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
EXTERNAL ACTION
Cooperates with a separate image processing application
(such as the application commercially available under
the tradename Photoshop from Adobe Systems Incorporated
of San Jose, California). Opens the image in the
application, performs a specified command in that
application, and then returns the processed image from
that application. Only commands that do not prompt the
user for input may be used.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.


FEATHER MASK
Produces a transitional feathering effect between the
mask and the image. Which way the feathering occurs
depends on a "Direction" setting. Feathering
directions may be "Inside", "Outside", or "Center",
from the perspective of the mask. The "Edge" setting
for the mask determines how abrupt a transition is
made, and may be "Normal", "Hard", or "Soft". The
"Amount" of feathering is measured by the length in
pixels needed to make the transition. The larger the
"Amount", the smoother the transition.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
FILE PATH INFO
Image data passes through this function unchanged.
This function supplies several output ports with
information derived from path information associated
with the image.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
DriveOrMachine Output emString The path infor-
mation up to
the first single
backslash.
WholePath Output emString Path information
from after the first
single backslash to
before the last
backslash.
PathLevel1 (2 . . .) Output emString A respective path
level name, each of
which is information
from between two
single backslashes.
Filename Output emString Filename without
the extension.
Extension Output emString File name extension.
FILL
Fills the active object with a selected color.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
FLATTEN IMAGE
Combines multiple objects into one image. An image
mask is one example of a separate object or layer.
Separate objects or layers are also created by
functions such as Text Stamper, Image Stamper, Drop
Shadow, and Image Watermarking. Unless multiple
objects are flattened together, certain subsequent
functions affect only the last active object rather
than all objects. For example, if no Flatten Image
function is used, a Drop Shadow function applied after
a Text Stamper function will apply the shadow only to
the stamped text, and not to the image.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.


FLIP
Provides a mirror image of an image, either vertically
and/or horizontally.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
IMAGE EDGES
Places a frame around an image. The color and style of
the frame can be specified. Some frames have a
separate inset edge as well. Selecting a frame with an
inset edge results in an automatic prompt for selection
of a color for the inset edge.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
IMAGE INFO
Image data passes through this function unchanged.
This function outputs information regarding the image.
If a subsequent function modifies the image, a new
Image Info function must be executed in order to
provide accurate information. This function has no
user defined settings.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
ImageName Output emString File name of image
with the extension.
ImagePathAndName Output emString Complete path and
file name.
ImageW Output emString Width of image in
pixels.
ImageH Output emString Height of image in
pixels.
ImageRes Output emString Image resolution in
dpi.
IMAGE OBJECTS
Image data passes through this function unchanged.
This function outputs objects which are respective
parts of the image data. This function has no user
defined settings.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
Layer1 (2, 3 . . .) Output emImage Each image layer is
supplied to a
respective output.
Mask Output emImage A mask object (if
present).
ImageName Output emString File name of image
with the extension.


IMAGE STAMPER
Places the image being processed onto a selected
background image. The image size, image position,
merge mode, transparency, and feathering effect can be
specified. A preview window shows where the image is
placed on the background. If Image Stamper is applied
to a mask object, the mask object is deleted and the
added image object becomes the active object.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
IMAGE TINT
Applies a tint effect to the image. The hue and
saturation can be specified. A preview window shows
the effect of the specified parameters on a sample
image.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
IMAGE WATERMARKING
Superimposes a selected image over the image being
processed. By adjusting the transparency level, this
can have the effect of stamping each image with a
background watermark. If the preceding layer added to
the image is a mask layer, then the added watermark is
subject to the mask.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
INVERT
Produces a color negative of an image. There are no
user settings for this function.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
NUMERIC FORMAT
Image data passes through this function unchanged.
This function reformats a numeric string into one of
several common formats (such as those provided in a
program available under the tradename VisualBasic from
Microsoft Corporation of Redmond, Washington).
Available formats include "Currency", "Fixed",
"Yes/No", and "True/False".
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
InValue Input emString Numeric string to
format.
OutValue Output emString The formatted
string.
OBJECT ATTRIBUTES
Adjusts how the last added object blends with the
image, such as objects added by the Image Stamper,
Image Watermarking, and Text Stamper functions. The
merge mode, transparency, and feather of the object can
be specified (which overrides pre-existing values for
these settings).


ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
RESOLUTION
Modifies the resolution of the image, in pixels per inch.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
ROTATE
Rotates the image by the specified number of degrees
(based upon a 360 degree circle) in a specified
direction (clockwise or counter-clockwise).
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
SEND EMAIL
Image data passes through this function unchanged. If
a specified condition is met, a specified message is
sent to a specified email address. The specified
condition may be selected from one of several options.
For example, the condition may be met when a specified
number of images have been processed.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
SIZE
Adjusts the width and/or height of the image in pixels.
If "Proportional Sizing" is enabled, the width and
height aspect ratio is maintained.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
TempString Input emString Any available text
string.
STRING BUILDER
Image data passes through this function unchanged.
This function outputs one or more strings which are
each a combination of strings that are either
internally pre-defined or obtained from input ports.
Combining occurs according to a selected one of several
predefined definitions, or according to a custom (user-
specified) definition. One of the internally defined
strings can effect sequencing. Definitions for
combining strings use the following syntax: Enclose
variables and formulas in curly braces: "{MyVariable}".
Any characters outside curly braces are placed in the
resulting string as literals. Keywords are indicated
by brackets, and must also be within a set of braces
"{[Keyword]}". Available keywords include ImageName,
ImageWidth, ImageHeight, and Seq. ImageName,
ImageWidth, and ImageHeight work the same as their
counterparts from Image Info, without any need for
prior execution of the Image Info function. The Seq
keyword defines a sequence that increments for each
image processed. An example is Basename{[Seq.], X, Y,
Z}, where X indicates the numeral/character to start
from (e.g. "1" or "A"), Y indicates the increment step
(e.g. "1"), and Z defines the number of characters in
the sequence portion (e.g. "3").


ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
StrIn1 (2, . . .) Input emString Any available text
string.
StrOut1 (2, . . .) Output emString A resulting output
string from the
String Builder.
TEXTSTAMPER
Applies a text object onto an image. The text can be
defined in the function itself, or obtained through an
input port. TextStamper provides control over the
font, size, color, rotation, transparency, and position
of the text. Text Stamper adds only one line of text;
to add multiple lines use successive Text Stamper
functions. If the preceding layer added to the image
is a mask layer, then the added text is subject to the
mask.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
TextIn Input emString Any available text
string.
THUMB MAKER
Produces a thumbnail version of the image picture. The
size can be selected to be one of three common pre-
defined thumbnail sizes, or a custom defined size.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
UNSHARP MASK
Sharpens an image, to an extent determined by three
parameters: Radius, Strength, and Threshold.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
TABLE 4
DESTINATION DEFINITIONS
Variable Name Port Type Description
DATABASE OUTPUT
Uses a database table or query to identify where to
deposit processed data. Unless depositing only
strings, one field in the table must contain a string
with a complete path to the destination for the image
data. May optionally select one or more additional
fields in which separate string input will be
deposited. The database table or query must already
exist and be defined as an ODBC (Open DataBase
Connectivity) connection prior to using this function.


ImageIn Input emImage Image data.
Specified Input emString Each selected field
Field is filled with a
respective string
from an input port
with the field name.
DESTINATION FOLDER
Specifies where an image is to be placed when it is
saved as output. If the source of the image (see
TABLE 1) included sub-folders, mirroring of the sub-
folder structure may optionally be enabled. If a
specified folder does not currently exist, it is
created automatically. If a project uses virtual
paths, the destination may be specified here as a
virtual path. This function must precede the File
Saver function in every project, unless the intent is
simply to preview images without saving them.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
FILE NAMER
Associates a file name with a processed image, where
the file name is based on a string received through an
input data port. Alternatively, the file name may be
based on several strings received through multiple
input ports, where these strings are concatenated with
a specified separator character.
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
Input1 Input emString Any available
(2, 3, etc.) emString output
ports.
FILE SAVER
Saves the current image, including selection of a file
format in which the image is to be saved. This may be
different from the original format of the image,
allowing conversion of file types. If the selected
file type has options, an "Options" button is enabled,
and may be clicked so that the additional settings can
be adjusted to other than default settings. If no
Destination Folder function precedes this function,
data is saved in the same directory as the source file,
and overwrites the original file if no change was made
to the file name.
ImageIn Input emImage Image data.
FTP SAVE
Saves the current image through a network to a
specified location, including selection of a file
format in which the image is to be saved. This may be
different from the original format of the image,
allowing conversion of file types. If the selected
file type has options, an "Options" button is enabled,
and may be clicked so that the additional settings can
be adjusted to other than default settings. The
transfer through the network is made according to the
File Transfer Protocol (FTP).
ImageIn Input emImage Image data.
IMAGE SEQUENCER
Uses a specified base name to give sequenced names to
successive files processed, in a manner similar to the
"Seq" option of the String Builder function.


ImageIn Input emImage Image data.
ImageOut Output emImage Image data.


In FIG. 1, the modules within the project definition 14 are each shown as a rectangular box with a respective label of "source", "branch", "action", or "destination". Alternatively, however, within the scope of the present invention, these module types may each be visually represented by a respective icon. For example, FIGS. 2-5 show icons respectively representing a source module, a branch module, an action module, and a destination module. The particular icons shown in FIGS. 2-5 are exemplary icons used in the disclosed embodiments, and it will be recognized that a variety of other icons could alternatively be used.

FIG. 6 is a block diagram of a very simple project definition 71, which will be used to demonstrate the format in which project definitions are stored for purposes of the disclosed embodiments of the present invention. The project definition 71 includes one source module 72, and two action modules 73 and 74. The binding lines for image data are indicated at 77 and 78, and a binding line for string data is indicated at 79. In order to keep the example simple, the project definition 71 does not include any branching or destination modules. It can be considered to be a project definition which is in the process of being created, but is not yet complete.

In the project definition 71, the source module 72 is a Database Access module. This particular Database Access module obtains image data by effecting a predefined query to a table in a database, and by obtaining from respective fields in each record of the table a first string which defines the path to the actual location of a file containing a respective image, and a second string which represents a corresponding price. The Database Access module 72 then uses each first string to retrieve the corresponding image, which is output at 77, while outputting at 79 for each image the corresponding second string which represents a price. Thus, the module 72 successively outputs a number of images and associated prices.

The action module 73 is a Fill module, which adds color to an active object of the image, and then outputs at 78 the modified image data. The action module 74 is a Text Stamper module, which superimposes onto the image data received at 78 the text string received at 79. As noted above, this text string represents a price. The text will be added as a new and further object in the image data, which thereafter becomes the active object.

The project definition 71 of FIG. 6 can be represented visually in other ways. For example, FIG. 7 is a diagrammatic view showing the same project definition 71, but with a different visual appearance. In FIG. 7, there are three pipe sections 82-84 arranged end-to-end, so as to collectively give the appearance of a pipeline through which image data and/or other data can flow. The pipe section 82 represents the Database Access module, the pipe section 83 represents the Fill module, and the pipe section 84 represents the Text Stamper module. With respect to the binding lines 77-78 in FIG. 6, which represent image data, there are no corresponding binding lines in FIG. 7, because the end-to-end relationship of the pipe sections is representative of the flow of image data from module to module. With respect to the binding line 79 of FIG. 6, which represents text string data, it has been arbitrarily omitted in FIG. 7, in order to emphasize that this type of binding line can optionally be included or excluded from a view such as, that shown in FIG. 7. Where the binding line is excluded, the text string data may be considered to be flowing through the pipeline with the image data. The modules 82-84 of FIG. 7 each have in the middle thereof an icon which is different from the icons shown in FIGS. 2, 4 and 6, in order to make the point that the invention permits the use of various different icons.

One feature of the present invention is that each project definition, such as those shown at 14 and 7-1 in FIGS. 1 and 6, is stored in a form which is expressed in a public communication protocol. The public communication protocol used in the disclosed embodiments is the extensible Markup Language (XML) protocol, which is well known in the industry. However, some other public communication protocol could alternatively be used. Referring to TABLE 5, the right column shows how the project definition 71 of FIG. 6 would be expressed in the XML protocol, according to the disclosed embodiments of the invention. For convenience, various levels of indentation have been provided in order to make the XML information more readable, but the indentation is not intended to suggest that the actual XML file includes characters to effect such indentation. The line numbers presented in the left column of TABLE 5 are not part of the XML expression of the project definition, but instead have been added to sequentially number the lines of the XML definition, in order to facilitate an explanation of the XML information, which is set forth below. For readability and convenience, some single lines of the XML file are shown as two or more lines in TABLE 5, and the line numbers added in the left column help show where this has occurred. Much of TABLE 5 is believed to be generally self-explanatory. Accordingly, the following discussion does not address every line in TABLE 5, but instead offers comments regarding only selected lines, as appropriate.

In this regard, line 1 shows that the project definition 71 has been arbitrarily given the name "Project Name". Line 2 refers to a group name, but the concept of groups has been included for a future purpose which is not relevant to an understanding of the present invention, and groups are therefore not discussed here.

Line 3 indicates that the process name has arbitrarily been set to be "First Process". In an XML definition of the type shown in FIG. 5, one process is defined first in its entirety, and then any other processes are each defined in their entirety, in a sequence. Within each process, the sub-processes are defined in sequence, with the main process being defined first in its entirety, after which the sub-processes (if any) are each being defined in their entirety, in sequence. In the simple project definition 71 shown in FIG. 6, of course, the project definition includes only one process, which in turn includes only one sub-process, namely the main process.

Line 4 of TABLE 5 identifies the beginning of a module list, which is a sequential listing of all modules in the main process portion of the process. As shown in FIG. 6, the main process of the project definition 71 has only the three modules 72-74. The Database Access module 72 is defined in lines 5-30 of TABLE 5, the Fill module 73 is defined in lines 31-43 of TABLE 5, and the Text Stamper module 74 is defined in lines 44-108 of TABLE 5. Line 109 identifies the end of the modules for the main process. Line 110 is a heading which identifies where other sub-processes would be defined, if this process included any sub-processes other than the main process. Line 111 identifies the end of the first process. Lines 112-115 are headers which identify where one or more other processes of the project definition would be defined, if the project definition included more than one process. Lines 116-117 of TABLE 5 identify the end of the project definition.

Turning in more detail to lines 5-30 of TABLE 5, which define the Database Access module 72, line 5 includes an "Id" of "com.image2web.databaseaccess" which, in the disclosed embodiments, is an internal code identifying a segment of object code that implements the functionality of the Database Access module. The next portion of line 5 refers to an "Instance", which in this example is set to the numeral "1". This indicates that this is the first occurrence of the Database Access type of module in the project definition 71. If the project definition 71 included two or more Database Access modules, they would be respectively identified by successive integer instance numbers, corresponding to the order in which they appear in the XML file.

Lines 13-14 in TABLE 5 identify the database which should be accessed in order to retrieve image data, which in this case is a database named "photography". As noted in the explanation in TABLE 1 of the Database Access definition, the connection for this database must already exist and be defined as an Open DataBase Connectivity (ODBC) connection. This permits the Database Access module to easily interact with pre-existing databases through the use of public communication protocols, without any need to make any change to the databases. In the specific example of TABLE 5, the word "photography" in line 14 provides a unique link to an existing ODBC connection, which in turn provides the link to and query for the specified database. Lines 10-12 of TABLE 5 define the particular table within the database which is to be accessed. In this particular example, the "photography" database has several tables which are each named after a respective photographer, and that each relate to photographs taken by that particular photographer. Each table has a name which corresponds to the name of the associated photographer, which in this example is "Robert Shutterbug". Lines 7-9 and lines 20-22 of TABLE 5 each define a respective field within the indicated table, the contents of which are to be obtained by and output from the Database Access module 72.

Lines 25-29 of TABLE 5 define the various output ports of the Database Access module 72. In particular, line 28 defines an output port for the image data, which is associated with the binding line 77 in FIG. 6. Line 28 in TABLE 5 defines an output port for a string which represents a price, and which is associated with binding line 79 in FIG. 6. Line 27 defines an output port for the filename of the image, but this output port is not used in FIG. 6.

Turning to the Fill module 73, line 38 in TABLE 5 defines an input port for image data, and includes a term "BoundTo", which effectively defines the binding line 77 of FIG. 6, by identifying the output port of the module 72 to which the input port of the module 73 is bound.

Turning to the Text Stamper module 74 of FIG. 6, its definition in TABLE 5 appears at lines 44-108. Within this definition, lines 46-99 define a number of parameters, which are collectively referred to herein as control information, and which may be specified by a user in order to define the particular operational characteristics which this particular instance of the Text Stamper module is to have. For example, to the extent that the Text Stamper module 74 is superimposing onto an image some text which represents a price, the parameters define characteristics of that text, such as its location, font, size, color, and so forth. Line 103 of TABLE 5 defines the input port of the text stamper module at which it receives the image data, and includes a "BoundTo" term which defines its association with an output port of the Fill module 73. In other words, the "BoundTo" term defines the binding line 78 of FIG. 6. Similarly, line 102 of TABLE 5 defines for the Text Stamper module 74 an input port for text, which in this case represents a price. Line 102 also includes a "BoundTo" term which defines the association of this input port with an output port of the data access module 72, or in other words the binding line 79.
TABLE 5
PROJECT DEFINITION IN XML


1
  Version="1.0">
2  
3   
4    
5     
      Id="com.image2web.databaseaccess"
      Instance="1">
6      
7       
        DataType="emVariant">
8        
9       
10       
        DataType="emVariant">
11        
12       
13       
        DataType="emVariant">
14        
15       
16       
        DataType="emVariant">
17        
18        
19       
20       
        DataType="emVariant">
21        
22       
23      
24      
25      
26       
        DataType="emVariant"/>
27       
        DataType="emVariant"/>
28       
        DataType="emImage"/>
29      
30     
31     
     Id="com.image2web.fill" Instance="1">
32      
33       
        DataType="emVariant">
34        
35       
36      
37      
38       
        DataType="emImage"
        BoundTo="com.image2web.database
        access.1.Output.ImageOut"/>
39      
40      
41       
        DataType="emImage"/>
42      
43     
44     
      Id="com.image2web.textstamper"
      Instance="1">
45      
46       
        DataType="emVariant">
47        
48       
49       
        DataType="emVariant">
50        
51       
52       
        DataType="emVariant">
53        
54       
55       
        DataType="emVariant">
56         
57       
58       
        DataType="emVariant">
59        
60       
61       
        DataType="emVariant">
62        
63       
64       
        DataType="emVariant">
65        
66       
67       
        DataType="emVariant">
68        
69       
70       
        DataType="emVariant">
71        
72       
73       
        DataType="emVariant">
74        
75       
76       
        DataType="emVariant">
77        
78       
79       
        DataType="emVariant">
80        
81       
82       
        DataType="emVariant">
83        
84       
85       

        DataType="emVariant">
86        
87       
88       
        DataType="emVariant">
89        
90       
91       
        DataType="emVariant">
92        
93       
94       
        DataType="emVariant">
95        
96       
97       
        DataType="emVariant">
98        
99       
100      
101      
102       
        DataType="emVariant"
        BoundTo="com.image2web.database
        access.1.Output.ImageFilename"/>
103       
        DataType="emImage"
        BoundTo="com.image2web.fill.1.
        Output.ImageOut"/>
104      
105      
106       Property Name="ImageOut"
        DataType="emImage"/>
107      
108     
109    
110    
111   
112   
113    
114    
115   
116  
117


The project definitions discussed above in association with FIGS. 1 and 6-7 are relatively simple. FIG. 8 is a diagrammatic view of a further project definition 101, which is more sophisticated. It includes a single process which is shown in its entirety in FIG. 8, and which includes three sub-processes 102-104, namely a main process 102, and two further sub-processes 103 and 104. It also includes a feature which has not previously been discussed, which is a global portion 107 having a plurality of global ports 111-114.

The ports 111-114 of the global portion 107 can be accessed by modules within the main process 102 or by modules within either of the sub-processes 103-104. The ports 111-114 can each act as an input port and/or an output port, depending on the particular operational configuration. More specifically, the ports 111-114 can each act as a form of register or memory location, in which one module can store information, and from which another module can later read it. The data in the port can thus change dynamically during project execution. The port 112 in FIG. 8 is configured to operate in this manner, and thus acts as both an input port and an output port. Further, the ports 111-114 can each be initialized to a predetermined value. If no module changes the initial value stored in that port, then that initial value serves as a form of data constant which does not change, and which can be accessed by any module throughout execution of the project definition. In FIG. 8, the port 114 is configured to act in this manner, and thus acts as an output port. In more detail, the port 114 is initialized to a string value which is superimposed onto images, as explained later.

If, in addition to the process defined by the main process 102 and the sub-processes 103-104, the project definition 101 included an additional process, then each process would have its own global portion 107. The ports of each global portion 107 would be global to the associated process, but not the other process. In addition to the two global portions 107, a further global portion would appear in FIG. 8 adjacent the global portion 107. The ports of the further global portion would be global to both processes, or in other words the entire project definition. The ports of the further global portion could be referred to as project level ports, and the ports of each of the global portions 107 could be referred to as process level ports.

The various types of modules which make up the project definition 101 of FIG. 8 are each described in TABLES 1-4. However, for purposes of clarity and completeness, each is also briefly discussed below. More specifically, the main process 102 includes a Database Access module 121, which obtains and outputs a plurality of successive images from a not-illustrated database, in a manner similar to that discussed above in association with the Database Access module 72 of FIG. 6. These images are supplied at 122 to an Image Info module 126.

The Image Info module 126 does not change the image data, but does output certain information about the image data, including the height of the image at 127 and the width of the image at 128. The height and width are each output in the form of a string representation of a numeric value which is the number of pixels in the height or width. The height is supplied at 127 to the port 112 of the global portion 107, and is saved there for later use. The width is output at 128. The binding line 128 is a special type of binding line known as a conditional binding, which is explained later. The module 126 outputs the unchanged image data at 129, where it flows to a Send Email module 131.

The module 131 does not change the image data, but sends an email (electronic mail message) in response to the occurrence of a predefined condition, where the email is a predefined text message that is sent to a predefined email address. In the Send Email module 131 of the project definition 101, the condition that causes the module 131 to send an email is met when the last image produced by the Database Access module 121 is being processed. There are various ways in which this could be detected, for example by counting images if the number of images to be processed is known in advance, or by detecting a predetermined file name assigned to the last image. Alternatively, as a process completes, an "execution finished" message could be provided to all modules of the process, or at least to each Send Email module in the process, thereby causing each Send Email module to proceed to send its email. The text of the email might notify a person that all of the image data in question has been processed by the project definition 101, and is available for use.

The unchanged image data from the module 131 flows at 132 to a String Builder module 136, which does not change the image data. As explained in TABLE 3, the String Builder module 136 can generate a sequence of names, where each name in the sequence is generated when a respective one of the images passes through the module 136. In the project definition 101, the module 136 is configured to generate a sequence of names which are "Image01" "Image02", "Image03", and so forth. These sequential names are successively supplied through an output port of the String Builder module 136, which is associated with a binding line 137.

The unchanged image data from the Stringer Builder module 136 flows at 138 to a File Size module 141. The module 141 does not change the image data. It outputs the image data at either 142 or 143, depending on the size of the file which contains the image data, in a manner already discussed above. Image data that is output at 143 flows to the sub-process 103, as discussed later. Image data that is output at 142 flows to an Interactive module 146 of the main process 102.

The Interactive module 146 does not change the image data. It does pause execution of the project definition 101, while requesting that a person manually specify where the current image is to be sent. In particular, the person can specify that the current image is to be sent at 148 to the sub-process 104, or that the image can continue at 147 along the main process 102. In view of the fact that the Interactive module 147 has the effect of pausing execution for each image processed by the project definition 101, and in view of the fact that an important application of the present invention is automated processing of data, modules of the Interactive type would typically be omitted from most project definitions. However, the Interactive module 146 has been included in the exemplary project definition 101 of FIG. 8 in order to facilitate a better understanding of this feature of the present invention. With reference to TABLE 2, and as discussed in more detail later, the Interactive module 146 provides a user with the capability to manually and interactively specify whether data is to be directed to 147 or 148. In addition, it provides the user with the capability to specify that the Interactive module 146 should automatically take a specified action for all subsequent images which are processed during the current execution of the project definition 101. Assuming that, in response to a query from the Interactive module 146, a person indicates that image data from the module 146 is to continue along the main process 102, the module 146 causes the unchanged image data to flow at 147 to a Text Stamper module 151.

The Text Stamper module 151 has an additional input port, which is associated by the binding line 128 with the image width output from the Image Info module 126, and also with the port 112 of the global portion 107. As mentioned above, the binding line 128 is a conditional binding. This means that the binding 128 can selectively supply data to the input port of the Text Stamper module 151 from either of two different output ports, which in FIG. 8 are the image width output of the module 126, and the port 112 of the global portion 107. Conceptually, the condition should be viewed as an internal part of the binding 128 itself, rather than as a part of the global portion 107, the module 126, or the module 151. Considered this way, it will be recognized that the condition can be based on data which is available to the binding 128 from either of the associated output ports, which in FIG. 8 include the image height information and image width information that it respectively receives from the output ports of the global portion 107 and the module 126. For example, the condition might be set to specify that the binding 128 is to compare the height and width values, and to supply the larger of the two values to the Text Stamper module 151.

The Text Stamper module 151 takes the height or width value received from the conditional binding 128, and superimposes it on the image received at 147. The height or width information becomes a separate object which is part of the overall image data. All of the objects of the image data are supplied at 152 to a File Namer module 156.

The module 156 associates with the image data a file name, under which the image data will eventually be stored. For this purpose, the File Namer module 156 has an input port coupled through the binding 137 to module 136. As discussed above, the module 136 generates a unique sequenced name as each respective image is processed. Accordingly, module 156 associates the unique name from binding 137 with the image currently passing through the module 156, and then forwards the image data and newly associated name at 157 to a Destination Folder module 161. Aside from associating a name with the image data, the file namer module 156 does not change the image data itself.

The Destination Folder module 161 defines the name of a folder or subdirectory into which images processed by the main process 102 are to be deposited. In essence, the File Namer module 156 associates with the image data a file name, and the Destination Folder module 161 associates with the image data a path to a subdirectory. The module 161 does not change the image data itself. The image data with its associated information is supplied at 162 to a File Saver module 166.

The File Saver module 166 is responsible for actually saving the data, and can also spe