Parameters and pipelines proposal

The following proposal is essentially Henry's revised proposal with
the amendments that seemed to garner support in email. I believe it
provides a concrete answer for all of the open questions.

 1) We add the concept of a 'primary parameter input port'. By analogy
    with "ordinary" primary input ports: a step can have at most one;
    if it has exactly one parameter input then that's the primary by
    default.

 2) If a pipeline contains a step which has a parameter input port and
    if the pipeline has no parameter input ports declared, then it gets
    an anonymous, primary parameter input port by default.

 3) We add an optional 'port' attribute to p:parameter. If the port is
    specified, then the parameter goes to the named parameter input
    port. It's an error if no such parameter input port is declared. If
    the port is not specified, then the parameter goes to the primary
    parameter input port. It is an error if the step has no primary
    parameter input port.

 4) How an implementation determines what parameters are passed to the
    initial pipeline is implementation defined.

 5) Normal binding rules apply to the use of a step (including a
    named pipeline step)

 6) If a step has a primary parameter input port and if no binding is
    specified for that port then the default binding is to the
    primary parameter input port of the pipeline which contains it.

    If the pipeline which contains it has no PPI, then it is bound
    to p:empty. This can only arise in cases like this:

    <p:pipeline ...>
      <p:input port="parameters" primary="no"/>
      ...

    Alternatively, we could make it an error to leave an unbound PPI
    on a step in this case.

 7) If a binding is manufactured for the primary parameter input port,
    it occurs logically "last" among the bindings on the step. In
    other words, parameters specified on that parameter port will
    override explicit p:parameter elements on that step.

 8) If a step has a parameter input port that is not primary and if no
    binding is specified for that port then the default binding is to
    p:empty.

 9) Allow p:parameter elements on p:pipeline.

10) The declaration of a parameter input port must be empty. It is a
    static error to attempt to define a default input.

Have I missed anythin?

                                        Be seeing you,
                                          norm

-- 
Norman Walsh <ndw@nwalsh.com> | An ill-humoured man is a prisoner at
http://nwalsh.com/            | the mercy of an enemy from whom he can
                              | never escape.-- Sa'di

Received on Wednesday, 11 July 2007 16:04:27 UTC