Summary

Declarative syntax used to create pipeline documents. These documents describe the processing required to generate a resource(s). A pipeline processor reads these documents to discover the processing required to generate that resource.

The processes are considered to operate on infosets, at least as a logical abstraction. In practice is acknowledges that custom object models, SAX events, or DOM trees may be the vehicle of exchanging this data.

A single process can generate multiple output resources from multiple input resources. Each resource is defined by a unique URIs. Resources that pass through any sub-process are considered to be consumed: a new unique URI is required to define the results. Enables the processor to identify what resources are available (i.e. has step X completed?)

For each resource there can only be a single way to create it. This allows the controller to determine how to build an out-of-date resource. A resource is out-of-date if it doesn't exist, or if at least one of the resources it depends on is newer than it (this should be applied recursively to the entire graph)

The dependency tree is a DAG.

A process can ignore errors, and return error documents instead. This seems slightly unnecessary -- how do we define useful "error documents"

Additional elements and attributes from other namespaces can be added in certain places, but these should be ignorable. i.e. they should not influence the basic behaviour. Note that the foreign elements themselves cannot contain pipeline elements.

Scope

Doesn't support:

  • processing of meta-models
  • wildcards of input/output?
  • nothing to say about APIS

Syntax

Processdef

How a process is defined is implementation specific. For example a Java pipeline processor might interpret the definition as the name of a Java class. A processdef can contain foreign markup, so in theory it could contain parameters for a process, or potentially even a complete XSLT stylesheet.

A pipeline can have several processdefs defined with the same name. So it ought to be possible to include multiple implementations in different languages?

Process

Must be defined. Can have inputs, outputs, errors, and params

....

Comments

Comments that the use cases demonstrate that no fixed order of processing can be mandated, and that "although it would in many ways be easier to build interoperable systems if a fixed order could be defined, any such order would impede some classes of applications."

This seems a typical black-and-white engineering decision. We can't define a single processing order, therefore we must adopt a solution that allows for an infinite range of alternatives. However it seems likely that for particular application areas certain order of processing make more sense that others. Can some of these be defined?

(One might also ponder whether, should one or more of these be identified, if alternative processing descriptions might be more useful. i.e. if certain steps have a fixed order then some higher level abstractions could be useful)

The Note does acknowledge that for an individual application a total, or partial order of operations is significant.

Add new attachment

In order to upload a new attachment to this page, please use the following box to find the file, then click on “Upload”.
« This page (revision-1) was last changed on 21-Aug-2002 18:27 by unknown [RSS]