Ugo Cei wrote:
Il giorno 06/gen/05, alle 01:54, Daniel Fagerstrom ha scritto:


The requested resource will often be based on some content or combination of content that we can access from Cocoon. The content can be a file, data in a db, result from a business object etc. Let us assume that it resides in some kind of content repository. Now if we think about it, isn't it more natural to ask the content, that we are going to use, about its propertiies like type, format, status, access rights, etc, than to encode it in the URL? This properties can be encoded in the file name, in metadata in some property file, within the file, in a DB etc. Now instead of having the rule:


*.x.y.z ==> XYZPipeline

we have

* where repository:{1} have properites {x, y, z} ==> XYZPipeline

or

* where repository:{1}.x.y.z exists ==> XYZPipeline

We get the right pipeline by querying the repository instead of encoding it in the URL. A further advantage is that the rule becomes "listable" as the "where" clause in the match expresses what are the allowed values for the wildcard.


Unless I misinterpret what you mean, we already can do this:

<map:match pattern="*">
  <map:call function="fun">
    <map:parameter name="par" value="{1}"/>
  </map:call>
</map:match>

function fun() {
var entity = repo.query("select * from entities where id = " + cocoon.parameters.par + " and {x, y, z}");
cocoon.sendPage("views/XYZPipeline", { entity : entity });
}


<map:match pattern="XYZPipeline">
  <map:generate type="jx" src="xyz.jx.xml"/>
 ...
</map:match>

Apart from the obviously contrived example, isn't the Flowscript just what we need to "get the right pipeline by querying the repository"?

I would propose to go even further, in the "real" site map it should only be allowed to call VPC pipelines, no pipeline construction is allowed, that should be done in the component area.


In my sitemaps, public pipelines contain almost only <map:call> and <map:read> (for static resources) elements. All "classical" generator-transformer-serializer pipelines go into an "internal-only" pipeline that can be called from flowscripts only.

Admittedly, this is fine for webapps, and maybe not so much for publishing-oriented websites. But what I want to point out is that your otherwise very well thought-out RT is incomplete if it doesn't take Flowscript in consideration, IMHO.


I started to write a very similar answer (example + considering flowscript)
Thanks Ugo ;-)

--
Reinhard

Reply via email to