Re: Parameters and pipelines proposal

Norman Walsh wrote:
> My thinking was that the only point in having a default would be to
> set some default params. And I didn't think we needed two ways
> to do that.
> 
> This is ok:
> 
>   <p:pipeline ...>
>     <p:parameter name="foo" value="bar"/>
>     <p:parameter name="bar" value="foo"/>
>     ...
> 
> And so is this:
> 
>   <p:pipeline ...>
>     <p:input port="parameters" primary="yes"/>
>     <p:parameter name="foo" value="bar"/>
>     <p:parameter name="bar" value="foo"/>
>     ...
> 
> But I didn't think we needed to allow this:
> 
>   <p:pipeline ...>
>     <p:input port="parameters" primary="yes">
>       <p:inline>
>         <c:parameter-list>
>           <c:parameter name="foo" value="bar"/>
>           <c:parameter name="bar" value="foo"/>
>         </c:parameter-list>
>       </p:inline>
>     </p:input>
> 
> But if you really feel strongly about it, I could be persuaded. It
> might be more consistent to treat it just like a default "ordinary"
> input, I guess.

I don't think people should be specifying default values for parameters 
anyway (because if you know the name of a parameter that your pipeline 
will receive, you should be using an option).

So personally I'd vote for mandating parameter inputs be empty and not 
allowing <p:parameter> here.

But if we're going to allow this, I don't see why we shouldn't allow 
both mechanisms: after all, we allow both when we invoke a step, and it 
could be described in exactly the same way here.

<p:parameter> looks very similar to <p:option>, which could be counted 
an advantage (though personally I see it as a disadvantage, given that 
it will help people get very confused about whether to use options or 
parameters). If we have it, I note that authors should be permitted to 
have *just* <p:parameter> elements without actually naming the default 
input; and if there are <p:parameter> elements at this level it should 
implicitly create an anonymous primary parameter input port.

Whatever the mechanism, you have the issue of whether the default 
parameter set gets overridden en-masse or individually. In other words, 
given that the pipeline above is invoked with:

   <...>
     <p:parameter name="foo" value="baz" />
   </...>

is the parameters input set to:

  (a) { foo: baz }
  (b) { foo: baz, bar: foo }

As I said before, I think the latter is more useful, and it's certainly 
what using individual <p:parameter> elements implies. Anyway, we need to 
specify it explicitly.

One last thing: can we rename <c:parameter-list> to <c:parameter-set> or 
<c:parameter-bindings> or <c:parameter-map> or something? 
<c:parameter-list> makes it sound as though the parameters are ordered, 
which they're not (in the set generated from the <c:parameter-set> element).

Cheers,

Jeni
-- 
Jeni Tennison
http://www.jenitennison.com

Received on Wednesday, 11 July 2007 20:38:15 UTC