jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "sbarriba" <sbarr...@yahoo.co.uk>
Subject Achieving DRAFT published to LIVE concepts - separate workspaces?
Date Tue, 10 Jul 2007 11:16:28 GMT
The 3 questions below are prompted by David's rules on Workspaces and
References.

 

[Scenario]

.        JCR used to hold web pages.

.        Pages are served straight from JCR.

.        Site structure e.g. page links is modelled as references in JCR to
ensure referential integrity. 

 

This above scenario by default will mean every web page save() operation is
immediately LIVE.

 

[Goal]

Introduce the concept of DRAFT and LIVE content.

 

[Solutions]

Option 1: Use a separate DRAFT and LIVE workspace, and use event listeners
or scheduled process to 'publish' or 'unpublish' pages into the LIVE
workspace.

But, the usage of references means that publishing or unpublishing can break
referential integrity if 'dependent' items are not published/unpublished at
the same time.

 

Option 2: Use versioning with DRAFT/LIVE 'status' built on top. The live
page delivery has to ensure all accesses are restricted appropriately to get
a LIVE version. 

Marcel provided various compelling arguments against option 2 in
http://mail-archives.apache.org/mod_mbox/jackrabbit-users/200608.mbox/%3CBAY
103-DAV11AA5D0386CCB16147B24AD84B0@phx.gbl%3E).

 

> - the hierarchy of the version storage is different from the

> workspace. Searching for nodes that are under a specific path is quite

> complicated just using the version storage.

> 

> - each query will have to include a 'live' tag clause to filter out

> matches that are not of interest.

> 

> - some repository implementations might not support searches on the

> version storage

> 

> - searching just the workspace will probably be less expensive because

> it contains less content.

 

Q1: is option 2 an appropriate use of workspaces?

 

Q2: are there any convenient mechanisms to determine 'dependent items'? I
presume you'd just need to recurse through everything referenced by your
'page'.

 

Q3: are there any better solutions for achieving DRAFT and LIVE concepts?

 

Regards,

Shaun.


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message