You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by TREGAN Fabien <fa...@airbus.com> on 2002/05/27 10:56:00 UTC

Design choices for a cocoon application. (long)

Hi,

<note>
  This mail is a little longer than I'd like. My goal here is not to have my
job made by other people, but to summarize experience of other people and
make a doc that will intereste many cocoon users. BTW if you want to make my
job for me, let me know.
  My question may not be very accurate, if you think that question should be
added / remove / modified fill free to let me know.
</note>

Ok, i've played a litlle with cocoon, (installation, hello world, write a
source, a transformer, ...).
I've made some my XML/XSL to make a GUI demo of the futur webapp, peoples
liked it, it's ok.

Now I must start the real work, and I must admit that, I have so much
choices and so few 'Best Practices' guide that i'm a little confused.

                    -oOo-

The application :
-----------------

It's called ADOC (Atelier de Documentation, ie "Documentation Workplace")

The business server allready exist with an (ugly) X client we are willing to
replace with a (nice) html client that will use C2.

The application allow users to handle SGML documents (lunch an editor,
import, export, apply stylesheet, ...)

The application is divided into Elements (document, nodes, graphics), and
Spaces (that contains element)
There are three spaces :
-Public space (contains realesed document)
-Two private spaces (a user who want to edit a Element reserve it in public
space, and get a private copy in private space)

There are some action that can be lunch private, public or both spaces
(reserve, drop, lunch editor, commit, validate, ...)

The elements in public space have a state that allow/disallow some
actions(free, reserved, partially reserved)

                    -oOo-

The process :
-------------

Let's examine how a click in the navigator is processed :

0) We display a list of menu, spaces and elements in IE.
1) The navigator (let's call it IE in memory of Ivan d'Empalot, french
chevalier who never existed) contruct a request from selected elements +
selected action and send (let's say post) it to the server
2) Cocoon selected the apropriated pipeline based on the query
3) The pipeline make a call to the server
4) The answer is XMLized (since it'as an old server that does know nothing
about XML)
5) From know it's easy I just have to transforme a little for presentation
only (ordering, then applying XSL then HTML serialization)

                    -oOo-

The choices :
-------------

Ok, know the problem is to deal with all the choices we have in order to
accomplish step 1 to 4 of the process.

Step 0:
-------
Display is easy (only XSL we allready have from the demo). The problem is to
get our XML data. Here we have many solution that all use the (AE)Source  :
-Use "Adocpublic://" for the public space (server address in xconf)
-Use "Adocpublic://server.ip"
-Use "ADOC://[server.ip/]public

We have the same question for private spaces, if we choose the same
solution, it will not be clear that the content of "ADOC://private" depends
on the current user. So maybe it will be better to use something like
"ADOC://{session.username}@server.ip/private", though we do not need this
information(s).

Step 1:
-------
First problem, how to code the action ? If we know that the selected element
will be posted as a form, we have many choices to code the action :
-code it in the form
-code it in the url (http://server/doaction?action=myaction or
http://server/actions/myaction ?)

Then we use request generator in the begining of the pipe, no problem.

Step 2:
-------
We can either send ALL requests to a java controller that will handle every
request, make one pipe for each action (an "action" here is a "menu entry",
not a cocoon acton, sorry !), or something in the middle, but how to choose
?

Step 3:
-------
-We will use a transformer to perfom this call (or maybe an action ?).
-The transformer (or action) will look for the "Business Server Bridge"
role.
-How do we found the server address ? Something like <transform
name="myAction" server="{myServer}" /> ? Configure the component in role for
"Business Server Bridge" in the xconf ?

Step 4:
-------
Ok, for this one I have no choice if I choosed to use a transformer... I'm
done :)

                    -oOo-

please, let me know your thougths, ideas, ... and i'll try to make a "clean"
doc that will certainly help people (that *will* help me :)

fabien.

---------------------------------------------------------------------
Please check that your question has not already been answered in the
FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>

To unsubscribe, e-mail: <co...@xml.apache.org>
For additional commands, e-mail: <co...@xml.apache.org>