Hi Shaun, I think this is a very good use of workspaces.
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.
Web Content Management is just about my favorite domain ;) I think "Option 1" is the right way of doing it, which is what we use in our product. Personally, I would not use JCR references throughout the WCM domain. I think one has to assume that "assets" on a website may have different live-cycles. I would discourage the use of JCR references between assets that have different live cycles and I would use hierarchical containment for assets that share the same live cycle. I think that a WCM application needs to assume dangling references or possibly better use paths for many usecases.
Q1: is option 2 an appropriate use of workspaces?
I think "option 1" is the way to go.
Q2: are there any convenient mechanisms to determine 'dependent items'? I presume you'd just need to recurse through everything referenced by your 'page'.
I think everything that belongs to a "page" should be hierarchically contained. Something like... /news/2007/07/10/world/asia/10cnd-pakistan /news/2007/07/10/world/asia/10cnd-pakistan/images/man.jpg Other assets like ... /medialibrary/logo.gif ...have a different live cycle. I would refer to by path and gracefully fail if it the path does not exist. The same is also true for linking from one article to another. Since I would expose the paths as URLs they should be fairly stable to begin with. regards, david
