Visual

Method and apparatus for defining operations to be performed during automated data processing

6961922

Abstract

A number of items of data from a data source (12) can be processed and supplied to a data destination (16, 17). The data can include image data, text data, numeric data or other types of data, or a combination of types of data. The processing of the data is controlled by a project definition (14, 71, 101) which includes a plurality of modules selected from a variety of available modules (Tables 1-4). The modules include input and output ports which are interrelated by binding information. One of the existing modules provides the capability for execution of a specified command in an independent and separate application program. Further, custom modules can be readily prepared, in order to supplement the default set of available modules.


Claims

1. A method, comprising the steps of:

providing a set of predetermined function definitions;

preparing a project definition, said project definition 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 portions that each associate a respective said input port with one of said output ports;

wherein one of said function definitions identifies a separate image processing program, wherein one of said function portions which corresponds to said one function definition identifies a command for said image processing program, and wherein execution of said one function portion causes execution of said command by said image processing program in a manner which affects image data present in said one function portion.

2. A method according to claim 1, including the steps of concurrently executing said project definition and an instance of said image processing program.

3. A computer-readable medium encoded with a computer program which recognizes a set of predetermined function definitions, said program being operable when executed to facilitate preparation of a project definition 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 portions that each associate a respective said input port with one of said output ports;

wherein one of said function definitions identifies a separate image processing program, wherein one of said function portions which corresponds to said one function definition identifies a command for said image processing program, and wherein execution of said one function portion causes execution of said command by said image processing program in a manner which affects image data present in said one function portion.

4. A computer-readable medium according to claim 3, wherein said program is operable when executed to facilitate concurrent execution of said project definition and an instance of said image processing program.

5. A method, comprising the steps of:

providing a set of predetermined function definitions which are different;

modifying said set to include at least one custom function definition which is functionally different from each of said predetermined function definitions and which identifies a separate image processing program; and

preparing a project definition, said project definition including:

a plurality of function portions which each correspond to one of said function definitions in said modified 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 from said modified set;

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 portions that each associate a respective said input port with one of said output ports;

wherein one of said function portions corresponds to said custom function definition, and wherein execution of said one function portion causes execution of a command by said image processing program in a manner which affects image data present in said one function portion.

6. A method according to claim 5, wherein said modifying step includes the step of creating said custom function definition by modifying one of said predetermined function definitions.

7. A method according to claim 6, wherein said modifying step includes the step of replacing in said set said one predetermined function definition with said custom function definition.

8. A method according to claim 6, wherein said modifying step includes the step of including in said set each of said custom function definition and said one predetermined function definition.

9. A method according to claim 6, wherein said modifying step includes the steps of:

modifying source code for said one predetermined function definition in a development environment;

compiling the modified source code in said development environment to obtain an object code file; and

including said object code file in said set.

10. A method according to claim 9, including the step of using as said development environment an off-line development environment.

11. A method according to claim 9, including the step of using VisualBasic (VB) as said development environment.

12. A computer-readable medium encoded with a computer program which recognizes a set of predetermined function definitions that are different, said program being operable when executed to facilitate:

modification of said set to include at least one custom function definition which is functionally different from each of said predetermined function definitions and which identifies a separate image processing program; and

preparation of a project definition, said project definition including:

a plurality of function portions which each correspond to one of said function definitions in said modified 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 from said modified set;

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 portions that each associate a respective said input port with one of said output ports;

wherein one of said function portions corresponds to said custom function definition, and wherein execution of said one function portion causes execution of a command by said image processing program in a manner which affects image data present in said one function portion.

13. A computer-readable medium according to claim 12, wherein said program is operable when executed to facilitate said modification of said set in a manner which includes creation of said custom function definition through modification of one of said predetermined function definitions.

14. A computer-readable medium according to claim 12, wherein said program is operable when executed to facilitate said modification of said set in a manner which includes replacement in said set of said one predetermined function definition with said custom function definition.

15. A computer-readable medium according to claim 12, wherein said program is operable when executed to facilitate said modification of said set in a manner which includes addition to said set of said custom function definition, so that said set includes each of said custom function definition and said one predetermined function definition.

16. A computer-readable medium according to claim 12, wherein said program is operable when executed to facilitate said modification of said set in a manner which includes:

modification of source code for said one predetermined function definition in a development environment;

compilation of the modified source code in said development environment so as to obtain an object code file; and

inclusion of said object code file in said set.

17. A computer-readable medium according to claim 12, wherein said program is operable when executed to facilitate said modification of said set by accepting said custom function definition in a form which includes an object code file prepared in a development environment separate from said program by modification and compilation of source code for said one predetermined function definition.

18. A computer-readable medium according to claim 17, wherein said program is operable when executed to use as said development environment VisualBasic (VB).

19. A method according to claim 1, wherein execution of said command by said image processing program conforms said image data to a generally similar appearance.

20. A computer-readable medium according to claim 3, wherein execution of said command by said image processing program conforms said image data to a generally similar appearance.


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 defining operations that are to be performed on data during 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. In this regard, to the extent that prior approaches have involved automation through hard-coded source code, it is time-consuming and expensive to generate the hard-coded software for any specific application. This is particularly true where there is a need for some data processing capability which is unusual or unique. The time and expense needed to develop and debug special hard-coded source code to implement an unusual or custom capability is typically significant, and in some cases cost prohibitive. Further, and as discussed above, it requires a high level of computer skills, thereby excluding persons with limited computer skills, such as graphic artists, from implementing unusual or custom capabilities for processing the data.

SUMMARY OF THE INVENTION

From the foregoing, it may be appreciated that a need has arisen for a method and apparatus for defining operations that are to be performed on data during automated data processing, in a manner which provides flexibility, which is efficient and inexpensive, and which can be utilized by persons having limited computer skills. 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. 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 portions that each associate a respective input port with one of the output ports. One of the function definitions identifies a separate application program, and one of the function portions which corresponds to the one function definition identifies a command for the application program. Execution of the one function portion causes execution of the command by the application program in a manner which affects data present in the one function portion.

Another form of the present invention involves providing a set of predetermined function definitions which are different, modifying the set to include at least one custom function definition which is functionally different from each of the predetermined function definitions, and preparing a project definition. The project definition includes: a plurality of function portions which each correspond to one of the function definitions in the modified 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 from the modified set; 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 portions 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;

FIGS. 9A and 9B are 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.
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 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
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.
Variable Name Port Type Description
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.
Variable Name Port Type Description
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
BLUE 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.


Variable Name Port Type Description
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.
Variable Name Port Type Description
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.
Variable Name Port Type Description
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.
Variable Name Port Type Description
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.


Variable Name Port Type Description
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.
Variable Name Port Type Description
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.
Variable Name Port Type Description
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.
Variable Name Port Type Description
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.
Variable Name Port Type Description
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.
Variable Name Port Type Description
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
DriveOrMachine Output emString The path information 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.
Variable Name Port Type Description
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.
Variable Name Port Type Description
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
FLIP
Provides a mirror image of an image, either vertically and/or horizontally.
Variable Name Port Type Description
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.
Variable Name Port Type Description
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.
Variable Name Port Type Description
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.
Variable Name Port Type Description
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.


Variable Name Port Type Description
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.
Variable Name Port Type Description
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, than the added watermark is subject to the mask.
Variable Name Port Type Description
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.
Variable Name Port Type Description
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".
Variable Name Port Type Description
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).


Variable Name Port Type Description
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
RESOLUTION
Modifies the resolution of the image, in pixels per inch.
Variable Name Port Type Description
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).
Variable Name Port Type Description
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.
Variable Name Port Type Description
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.
Variable Name Port Type Description
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").
Variable Name Port Type Description
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.
Variable Name Port Type Description
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.
Variable Name Port Type Description
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.
Variable Name Port Type Description
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
TABLE 4
DESTINATION DEFINITIONS
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.


Variable Name Port Type Description
ImageIn Input emImage Image data.
Specified Field Input emString Each selected 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.
Variable Name Port Type Description
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.
Variable Name Port Type Description
ImageIn Input emImage Image data.
ImageOut Output emImage Image data.
Input1 (2, 3, etc.) Input emString Any available 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.
Variable Name Port Type Description
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).


Variable Name Port Type Description
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.
Variable Name Port Type Description
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 71 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 <Project Name = "Project Name" Desc = " "
  Version = "1.0">
 2 <Group Name = "Project Name" Desc = " ">
 3 <Process Name = "First Process" Desc = " ">
 4 <ModuleList>
 5 <Module Name = "DatabaseAccess"
Id = "com.image2web.databaseaccess"
  Instance = "1">
 6 <Properties>
 7 <Property Name = "Output-ImageFilename"
  DataType = "emVariant">
 8 <Value>ImageFilename</Value>
 9 </Property>
 10 <Property Name = "Table"
  DataType = "emVariant">
 11 <Value>Robert Shutterbug</Value>
 12 </Property>
 13 <Property Name = "DSN"
  DataType = "emVariant">
 14 <Value>photography</Value>
 15 </Property>
 16 <Property Name = "Input-Field"
  DataType = "emVariant">
 17 <Desc>Image Path</Desc>
 18 <Value>ImageFilename</Value>
 19 </Property>
 20 <Property Name = "Output-Price"
  DataType = "emVariant">
 21 <Value>Price</Value>
 22 </Property>
 23 </Properties>
 24 <Inputs/>
 25 <Outputs>
 26 <Property Name = "Price"


  DataType = "emVariant"/>
 27 <Property Name = "ImageFilename"
  DataType = "emVariant"/>
 28 <Property Name = "ImageOut"
  DataType = "emImage"/>
 29 </Outputs>
 30 </Module>
 31 <Module Name = "Fill"
  Id = "com.image2web.fill" Instance = "1">
 32 <Properties>
 33 <Property Name = "FillColor"
  DataType = "emVariant">
 34 <Value>1973978</Value>
 35 </Property>
 36 </Properties>
 37 <Inputs>
 38 <Property Name = "ImageIn"
  DataType = "emImage"
  BoundTo = "com.image2web.database
  access.1.Output.ImageOut"/>
 39 </Inputs>
 40 <Outputs>
 41 <Property Name = "ImageOut"
  DataType = "emImage"/>
 42 </Outputs>
 43 </Module>
 44 <Module Name = "TextStamper"
  Id = "com.image2web.textstamper"
  Instance = "1">
 45 <Properties>
 46 <Property Name = "PageColor"
  DataType = "emVariant">
 47 <Value>16777215</Value>
 48 </Property>
 49 <Property Name = "LiteralXPosition"
  DataType = "emVariant">
 50 <Value>0</Value>
 51 </Property>
 52 <Property Name = "Bold"


  DataType = "emVariant">
 53 <Value>0</Value>
 54 </Property>
 55 <Property Name = "Transparency"
  DataType = "emVariant">
 56 <Value>100</Value>
 57 </Property>
 58 <Property Name = "FontSize"
  DataType = "emVariant">
 59 <Value>24</Value>
 60 </Property>
 61 <Property Name = "Bound"
  DataType = "emVariant">
 62 <Value>-1</Value>
 63 </Property>
 64 <Property Name = "BorderText"
  DataType = "emVariant">
 65 <Value>0</Value>
 66 </Property>
 67 <Property Name = "MergeMode"
  DataType = "emVariant">
 68 <Value>Normal</Value>
 69 </Property>
 70 <Property Name = "Underline"
  DataType = "emVariant">
 71 <Value>0</Value>
 72 </Property>
 73 <Property Name = "BoundName"
  DataType = "emVariant">
 74 <Value>Price</Value>
 75 </Property>
 76 <Property Name = "ExpandToFit"
  DataType = "emVariant">
 77 <Value>-1</Value>
 78 </Property>
 79 <Property Name = "Color"
  DataType = "emVariant">
 80 <Value>0</Value>
 81 </Property>
 82 <Property Name = "TextPosition"
  DataType = "emVariant">
 83 <Value>CenterCenter</Value>


 84 </Property>
 85 <Property Name = "LiteralYPosition"
  DataType = "emVariant">
 86 <Value>0</Value>
 87 </Property>
 88 <Property Name = "Angle"
  DataType = "emVariant">
 89 <Value>0</Value>
 90 </Property>
 91 <Property Name = "Font"
  DataType = "emVariant">
 92 <Value>Arial</Value>
 93 </Property>
 94 <Property Name = "UseLiteralPosition"
  DataType = "emVariant">
 95 <Value>0</Value>
 96 </Property>
 97 <Property Name = "Italic"
  DataType = "emVariant">
 98 <Value>0</Value>
 99 </Property>
100 </Properties>
101 <Inputs>
102 <Property Name = "TextLine"
  DataType = "emVariant"
  BoundTo = "com.image2web.database
  access.1.Output.ImageFilename"/>
103 <Property Name = "ImageIn"
  DataType = "emImage"
  BoundTo = "com.image2web.fill.1.
  Output.ImageOut"/>
104 </Inputs>
105 <Outputs/>
106 <Property Name = "ImageOut"
  DataType = "emImage"/>
107 </Outputs>
108 </Module>
109 </ModuleList>
110 <SubProcessList/>
111 </Process>
112 <Process Name = "Second Process" Desc = " ">


113 <ModuleList/>
114 <SubProcessList/>
115 </Process>
116 </Group>
117 </Project>


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