You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by Tim Reilly <ti...@consultant.com> on 2003/11/28 02:07:41 UTC

[J2] RE: Page Aggregation Design

Hi David,

I have to admit I saw the postings on this subject, read the design doc, and
replied without looking at the code nor schema. I will look to get better
idea around the fragments and other elements. I'm seeing the Desktop is
different concept than what I thought. Would you agree the site structure,
and the layout(s) that consume that sitemap/structure are different
concerns; highly related though?

> So its really just a layout (template) with a theme (stylesheet,
> images) associated with it.
Ok.

I see the rules approach to doing this as a big+.
So one could chain or build rules to locate the desktop for...
$subdomain $application $markup, $theme, $browser, $browser-version,
$locale, $locale-variant, $organization, $business-unit, $department, $role
Or really anything the rules engine lends to, and any objects one configures
the rules to look at.

> What if a desktop was located via profiling rules just like a page?
Yes, I think that would do a lot for the design and allow for the type of
virtualization we're challenged with.

> <desktop id="209">
> <page-group id="apache">
>     <page id='jetspeed'/>
>     <page id='pluto'/>
>     ...
>     <decorator id='menu8'/>
	<page-group>
		<page id='page-3'/>
	</page-group>
> </page-group>

... just to make clearer I'd add another page-group to the page-group.
I'm not sure if specifying the decorator in the same physical document is
best, but the loaded DOM might have it, unless it's just jsp or vm that use
the DOM data to create those elements.

> Im wondering if we should force any structure on pages.
> I have modeled pages so that they are all contained in a big page
> bucket.

The big page bucket sounds good. I wrote a CMS system a couple of years ago
that is still in use, but in retrospect I wish I'd decoupled the content
more like you mention - along these lines:
- content in a big bucket
- an administrative tree/heirarchy to manage what's in the bucket (the
administrator's view to the contents of the bucket for organizing - content
only allowed in one node of the tree.)
- another tree/heirarchy that is the site map (same content can appear in
multiple nodes of this tree)

I'm not suggesting for J2 or maybe? Just commenting on the low coupling is
probably better.

> Could you give us some examples of what a URL would look like, or the
> X-Path notation to locate a desktop, page, sub-page...
I've been trying to find what I saw with no luck.
Anyhow, I'm not sure if I read it, or was reading something on xpath and
thought about how to address portlets.
The approach would be something like:
http://[somedomain]/j2/.loc/desktop209/apache/jetspeed/js-rss-portlet/.ws/ma
x
parse the url into
/desktop209/apache/jetspeed/js-rss-portlet/
then using the xml/dom fragment from above I would translate this string
into several xpath queries to find out
(I'm no expert for XPath, but I'll try)
/desktop[id()=desktop209]::descendant::pagegroup
    would me give all top level page-groups
/desktop[id()=desktop209]::descendant::pagegroup[id()=apache]::page
    to get all of the pages needed in this request
/desktop[id()=desktop209]::descendant::pagegroup[id()=apache]::page[id()=jet
speed]::decentant::portlet
   to get all the portlets for this request

anyhow it's taking part of the url and translating into a way to address the
DOM elements needed for the request.
Based on the ad-hoc schema above you could assume the first /something/ is
the desktop,
the last /something/ is the page, and anything in between are page-groups.
You could also 'ugly' the url to actually have some or all of the xpath
query string
Oops, mid-sentance I realized what I recalled had to do with Cocoon not
gridsphere.
I can't find the document, but I'll post it if I find it.

I could go on... but I'll keep it short ;P

-TR


> -----Original Message-----
> From: David Sean Taylor [mailto:david@bluesunrise.com]
> Sent: Wednesday, November 26, 2003 8:20 PM
> To: Jetspeed Developers List
> Subject: Re: [Jetspeed-2] RE: Page Aggregation Design
>
>
> Hi Tim,
>
> thanks for the long response! ;-)
>
> On Wednesday, November 26, 2003, at 04:31  PM, Tim Reilly wrote:
>
> > I have some questions and comments after reading the
> > PageAggregationDesignDoc document.
> >
> > Is the Desktop / Page terminology synonymous with Websphere portal's
> > "Place"
> > / "Page" concept?
> > Basically, if you're not familiar with WPS the out of the box
> > menu/site-map
> > is a 2 level hierarchy in which you create "Places" to contain "Pages"
> > (which contain portlets.)
>
> Im a little familiar with it but no, I wasn't trying to model after it.
> What I was trying to achieve was a more generalized replacement for
> Turbine modules.
> And a much more easily configurable model.
> The desktop contains the layout of possibly a header, footer and some
> equivalents of navigations and the theme.
> A theme is a concept also in WPS, but I think Scott has planted this
> idea in my head.
> So its really just a layout (template) with a theme (stylesheet,
> images) associated with it.
>
> The way it is currently modeled, a user can only have one active
> desktop. The user can change desktops.
> But the model holds a explicit relationship between user and desktop.
> Im now considering that I made a mistake and made it too simple with
> the 1 desktop per user concept
> What if a  desktop was located via profiling rules just like a page?
>
> >
> > If so, we've found this to be limiting in some instances. An n-level
> > tree or
> > hierarchy would IMO be better.
> > I think ideally a Page Container that may contain Pages or more Page
> > Containers would be nice. There is some trouble with this and
> > complexity; I
> > think the relationship must be constrained such that (I'll use the term
> > PageGroup and Page)... PageGroups that contain more PageGroups must
> > either
> > only contain one or zero Pages.
> > So the constraint would be:
> > PageGroup a1..n -------- 1..n PageGroup
> >                    +---- 0..1 Page
> > or
> > PageGroup b1..n -------- 1..n Pages
> >
> I think this is starting to make sense.
> In J1 we achieved this type of relationship with portlets sets and
> specialized controls and controllers.
> You are suggesting a higher level navigational "control" sitting in a
> container that holds 1..n pages.
> This allows you to decorate a collection of pages with a menu much the
> same as we decorated portlet sets (fragments) in J1
> I like this idea
> Could I suggest that the Desktop as the Page Container?
> And Page Group would then be a collection of pages in the Desktop.
> To visualize this in XML
>
> <desktop>
> <page-group>
>     <page id='page-1'/>
>     <page id='page-2'/>
>     ...
>     <decorator id='menu8'/>
> </page-group>
>
> > I'll try to explain why the n-level and why the constraint by
> > describing an
> > example view:
> > This approach allows for 2 levels of tabs across the top of the page..
> > perhaps the tier-1 PageGroups are called Desktops. The selected/active
> > Desktop's child PageGroups are displayed as the second level of Tabs.
> > The
> > view also has a right-2-level menu which is populated by the children
> > of the
> > active/selected tier2 pagegroup. The right-menu items have children
> > (at tier
> > 4 of the hierarchy) Those child elements have pages. If the user
> > clicks a
> > page group we can have this one page that is displayed along with the
> > children pagegroups (menu items.)
> > So the example would look like:
> > http://www.macromedia.com/support/forums/
> > or
> > http://store.apple.com/1-800-MY-APPLE/WebObjects/AppleStore/
> > or
> > http://jakarta.apache.org/turbine/index.html has 4 levels.
> >
>
> I see so the level or the parent need to be modeled.
> Take a look at the FRAGMENT and SUB-FRAGMENT tables for examples on the
> page level
> Suppose we could do the same kind of hierarchy with PAGES
> I'm beginning to be convinced of its usefulness
>
>
> > There are a number of challenges to doing the n-tier structure, but the
> > result is worthwhile in my opinion.
> > In the relational model for this is not too difficult if you track a
> > "level"
> > attribute. I've also tracked this with a varchar path notation (not
> > sure
> > it's the best approach but it worked too.) In the file system approach
> > using
> > xml lends to the tree or hierarchy well; XPointer may also factor in -
> > I
> > think I saw something within Cocoon using XPointers... lead in to next
> > question.
> >
> Im wondering if we should force any structure on pages.
> I have modeled pages so that they are all contained in a big page
> bucket.
> The profiler is responsible for locating a page based on the profiling
> criteria.
> I was under the impression that this is what people wanted since my old
> design,
> which was a hierarchy of users, groups and roles, though useful, was
> often the subject
> of complaints and dissatisfaction since we hard-coded the hierarchy.
> The new design leaves it up to the profiler implementation to find a
> page.
> I do like the idea of a site map and having a concrete hierarchy of
> pages too.
> Guess Im not sure right now....in fact Im honestly confused as to
> whether Im going down the right path with configurable profiling
> criteria.
> Perhaps its too complicated....perhaps the entire site should be set
> and always addressable
>
> > Have aspects of Cocoon been reviewed to see if they fit into the the
> > solution? I've not used Cocoon, but poking around the documentation a
> > while
> > back made me think it's potentially valuable for this type of site and
> > page
> > definition.
>
> Yes I've reviewed it a little. Its pretty cool but I didn't really see
> anything new wrt profiling
>
> >
> > One of the really nice features of WPS is the capability to 'lock' down
> > pages or parts of pages. e.g. if I have the rights to a Desktop, Page
> > Group,
> > or Page I can administer it's layout and lock it down.. leaving some
> > parts
> > customizable.  I know some people feel a portal is not a portal unless
> > the
> > user can customize their layouts. We actually have not and don't
> > intend to
> > allow our users to customize their pages (yet.) To us, the value of the
> > portal is in the deployment, component, and modularity of the
> > architecture
> > and now that the JSR is released - the potential to use OSS portlets,
> > as
> > well as vendor delivered portlets. So the portal not being a portal
> > without
> > user customization is mute for us.
>
> Locking down fragments is addressed in the model I hope.
> The concept of a named fragment means that a fragment can be included
> or referenced
> in your page and by setting of the security so that it can't be
> customized except for a given role, this is achieved.
>
> >
> > Portal virtualization is something we are working on. It would be
> > great if
> > Jetspeed 2 could consider it in the design. The requirement is that our
> > various extranets are migrating into our portal implementation. Based
> > on
> > some aspect of the system (not necessarily the user) we need to
> > determine
> > the theme and skin, and what "Places", "Pages" and portlets are
> > available.
> > In our case, if the url were - http://apache.ourextranet.com then we
> > would
> > set the theme, skin, and filter the available places, pages, and
> > portlets
> > that can be applied based on the apache subdomain . I guess with an
> > open
> > source solution standing up entirely separate instances of the portal
> > server
> > is not such a big deal...although if you have one for each major client
> > having 200 instances could be a nightmare. We are toying with the
> > concept of
> > an application context, and then a site context (site = the client or
> > client's business unit, application context = ourextranet b/c we have
> > multiple app's or brands) So we will likely try to filter these things
> > based
> > on those 2 attributes that we'll set in the session. We have not
> > implemented
> > the virtualization...
> > I think the rules based processing mentioned in the design doc starts
> > to
> > address such concerns in the Page Aggregation document.
> >
> What if the profiler had a rule that looked at the URL in determining
> which desktop to show?
>
> > I'll also throw out there... I was going through the gridsphere
> > documentation. If I recall correctly they managed to make pages
> > addressible
> > through some sort of XPath notation. Seemed like a nice feature.
> >
> Yes thats back to the site map concept.
> I really need to think about that - I think you're on to something
> there.
> Could you give us some examples of what a URL would look like, or the
> X-Path notation to locate a desktop, page, sub-page...
>
> > Hopefully, sharing our challenges and direction with our portal helps
> > in the
> > J2 design discussions.
> >
> >
> > -TR
> >
> > P.S: I'm hoping the [Jetspeed-2]|[Jetspeed-1] thing in the subject will
> > catch on ;)
> > I'm not sure how to propose the convention to the list though, if it's
> > bad
> > etiquette I won't?
> >
> +1
> Maybe [J1] and [J2] will make the titles shorter
>
> -
> David Sean Taylor
> Bluesunrise Software
> david@bluesunrise.com
> +01 707 773-4646
> +01 707 529 9194
> +44 (0)79 8538 6471
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org


Re: [J2] RE: Page Aggregation Design

Posted by Barnhill William <ba...@bah.com>.
Another possible project to look at is JXpath/ The home pas is 
http://jakarta.apache.org/commons/jxpath/ . I've used it in the past 
with good results.


David Sean Taylor wrote:

>
> On Thursday, November 27, 2003, at 05:07  PM, Tim Reilly wrote:
>
>> Hi David,
>>
>> I have to admit I saw the postings on this subject, read the design  
>> doc, and
>> replied without looking at the code nor schema. I will look to get  
>> better
>> idea around the fragments and other elements. I'm seeing the Desktop is
>> different concept than what I thought. Would you agree the site  
>> structure,
>> and the layout(s) that consume that sitemap/structure are different
>> concerns; highly related though?
>>
> yes i think im following you
> The site map is a model, an abstract hierarchy, a view; whereas 
> layouts  (templates) programmatically access and control that model
>
>>> So its really just a layout (template) with a theme (stylesheet,
>>> images) associated with it.
>>
>> Ok.
>>
>> I see the rules approach to doing this as a big+.
>> So one could chain or build rules to locate the desktop for...
>> $subdomain $application $markup, $theme, $browser, $browser-version,
>> $locale, $locale-variant, $organization, $business-unit, 
>> $department,  $role
>> Or really anything the rules engine lends to, and any objects one  
>> configures
>> the rules to look at.
>
>
> OK, thanks, its good to get some feedback on the rules stuff, its 
> still  new and rough around the edges
>
>>> What if a desktop was located via profiling rules just like a page?
>>
>> Yes, I think that would do a lot for the design and allow for the 
>> type  of
>> virtualization we're challenged with.
>
>
> Im working on representing the desktop model in the database -- it 
> will  basically mirror the page model: rule-based location of desktop, 
> and  support for hierarchies and navigations (menus). I checked in 
> what I  have thus far
>
>>
>>> <desktop id="209">
>>> <page-group id="apache">
>>>     <page id='jetspeed'/>
>>>     <page id='pluto'/>
>>>     ...
>>>     <decorator id='menu8'/>
>>
>>     <page-group>
>>         <page id='page-3'/>
>>     </page-group>
>>
>>> </page-group>
>>
>>
>> ... just to make clearer I'd add another page-group to the page-group.
>> I'm not sure if specifying the decorator in the same physical 
>> document  is
>> best, but the loaded DOM might have it, unless it's just jsp or vm  
>> that use
>> the DOM data to create those elements.
>>
> understood, its a hierarchy, not just a flat 1-level relationship
>
>>> Im wondering if we should force any structure on pages.
>>> I have modeled pages so that they are all contained in a big page
>>> bucket.
>>
>>
>> The big page bucket sounds good. I wrote a CMS system a couple of  
>> years ago
>> that is still in use, but in retrospect I wish I'd decoupled the  
>> content
>> more like you mention - along these lines:
>> - content in a big bucket
>> - an administrative tree/heirarchy to manage what's in the bucket (the
>> administrator's view to the contents of the bucket for organizing -  
>> content
>> only allowed in one node of the tree.)
>> - another tree/heirarchy that is the site map (same content can 
>> appear  in
>> multiple nodes of this tree)
>>
>> I'm not suggesting for J2 or maybe? Just commenting on the low  
>> coupling is
>> probably better.
>>
>>> Could you give us some examples of what a URL would look like, or the
>>> X-Path notation to locate a desktop, page, sub-page...
>>
>> I've been trying to find what I saw with no luck.
>> Anyhow, I'm not sure if I read it, or was reading something on xpath  
>> and
>> thought about how to address portlets.
>> The approach would be something like:
>> http://[somedomain]/j2/.loc/desktop209/apache/jetspeed/js-rss-portlet/ 
>> .ws/ma
>> x
>> parse the url into
>> /desktop209/apache/jetspeed/js-rss-portlet/
>> then using the xml/dom fragment from above I would translate this  
>> string
>> into several xpath queries to find out
>> (I'm no expert for XPath, but I'll try)
>> /desktop[id()=desktop209]::descendant::pagegroup
>>     would me give all top level page-groups
>> /desktop[id()=desktop209]::descendant::pagegroup[id()=apache]::page
>>     to get all of the pages needed in this request
>> / 
>> desktop[id()=desktop209]::descendant::pagegroup[id()=apache]::page[id() 
>> =jet
>> speed]::decentant::portlet
>>    to get all the portlets for this request
>>
>> anyhow it's taking part of the url and translating into a way to  
>> address the
>> DOM elements needed for the request.
>> Based on the ad-hoc schema above you could assume the first  
>> /something/ is
>> the desktop,
>> the last /something/ is the page, and anything in between are  
>> page-groups.
>> You could also 'ugly' the url to actually have some or all of the xpath
>> query string
>> Oops, mid-sentance I realized what I recalled had to do with Cocoon not
>> gridsphere.
>> I can't find the document, but I'll post it if I find it.
>>
>> I could go on... but I'll keep it short ;P
>>
> I like the idea of embedding XPath in the url, looking for precedents  
> but not finding much
>
> Have you looked at Jaxen?
> Its a Java XPath Engine and 'universal object model walker'
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org


Re: [J2] RE: Page Aggregation Design

Posted by David Sean Taylor <da...@bluesunrise.com>.
On Thursday, November 27, 2003, at 05:07  PM, Tim Reilly wrote:

> Hi David,
>
> I have to admit I saw the postings on this subject, read the design  
> doc, and
> replied without looking at the code nor schema. I will look to get  
> better
> idea around the fragments and other elements. I'm seeing the Desktop is
> different concept than what I thought. Would you agree the site  
> structure,
> and the layout(s) that consume that sitemap/structure are different
> concerns; highly related though?
>
yes i think im following you
The site map is a model, an abstract hierarchy, a view; whereas layouts  
(templates) programmatically access and control that model

>> So its really just a layout (template) with a theme (stylesheet,
>> images) associated with it.
> Ok.
>
> I see the rules approach to doing this as a big+.
> So one could chain or build rules to locate the desktop for...
> $subdomain $application $markup, $theme, $browser, $browser-version,
> $locale, $locale-variant, $organization, $business-unit, $department,  
> $role
> Or really anything the rules engine lends to, and any objects one  
> configures
> the rules to look at.

OK, thanks, its good to get some feedback on the rules stuff, its still  
new and rough around the edges

>> What if a desktop was located via profiling rules just like a page?
> Yes, I think that would do a lot for the design and allow for the type  
> of
> virtualization we're challenged with.

Im working on representing the desktop model in the database -- it will  
basically mirror the page model: rule-based location of desktop, and  
support for hierarchies and navigations (menus). I checked in what I  
have thus far

>
>> <desktop id="209">
>> <page-group id="apache">
>>     <page id='jetspeed'/>
>>     <page id='pluto'/>
>>     ...
>>     <decorator id='menu8'/>
> 	<page-group>
> 		<page id='page-3'/>
> 	</page-group>
>> </page-group>
>
> ... just to make clearer I'd add another page-group to the page-group.
> I'm not sure if specifying the decorator in the same physical document  
> is
> best, but the loaded DOM might have it, unless it's just jsp or vm  
> that use
> the DOM data to create those elements.
>
understood, its a hierarchy, not just a flat 1-level relationship

>> Im wondering if we should force any structure on pages.
>> I have modeled pages so that they are all contained in a big page
>> bucket.
>
> The big page bucket sounds good. I wrote a CMS system a couple of  
> years ago
> that is still in use, but in retrospect I wish I'd decoupled the  
> content
> more like you mention - along these lines:
> - content in a big bucket
> - an administrative tree/heirarchy to manage what's in the bucket (the
> administrator's view to the contents of the bucket for organizing -  
> content
> only allowed in one node of the tree.)
> - another tree/heirarchy that is the site map (same content can appear  
> in
> multiple nodes of this tree)
>
> I'm not suggesting for J2 or maybe? Just commenting on the low  
> coupling is
> probably better.
>
>> Could you give us some examples of what a URL would look like, or the
>> X-Path notation to locate a desktop, page, sub-page...
> I've been trying to find what I saw with no luck.
> Anyhow, I'm not sure if I read it, or was reading something on xpath  
> and
> thought about how to address portlets.
> The approach would be something like:
> http://[somedomain]/j2/.loc/desktop209/apache/jetspeed/js-rss-portlet/ 
> .ws/ma
> x
> parse the url into
> /desktop209/apache/jetspeed/js-rss-portlet/
> then using the xml/dom fragment from above I would translate this  
> string
> into several xpath queries to find out
> (I'm no expert for XPath, but I'll try)
> /desktop[id()=desktop209]::descendant::pagegroup
>     would me give all top level page-groups
> /desktop[id()=desktop209]::descendant::pagegroup[id()=apache]::page
>     to get all of the pages needed in this request
> / 
> desktop[id()=desktop209]::descendant::pagegroup[id()=apache]::page[id() 
> =jet
> speed]::decentant::portlet
>    to get all the portlets for this request
>
> anyhow it's taking part of the url and translating into a way to  
> address the
> DOM elements needed for the request.
> Based on the ad-hoc schema above you could assume the first  
> /something/ is
> the desktop,
> the last /something/ is the page, and anything in between are  
> page-groups.
> You could also 'ugly' the url to actually have some or all of the xpath
> query string
> Oops, mid-sentance I realized what I recalled had to do with Cocoon not
> gridsphere.
> I can't find the document, but I'll post it if I find it.
>
> I could go on... but I'll keep it short ;P
>
I like the idea of embedding XPath in the url, looking for precedents  
but not finding much

Have you looked at Jaxen?
Its a Java XPath Engine and 'universal object model walker'



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org