The session was presented by Andrew Goodale who is the architect behind Centerstage. I am not a developer but to me this session was very important because I believe that the level of customizations possible greatly influence the potential of a successful Centerstage deployment. A lot of the power of enterprise systems lies in the possibility to adapt to the business needs.
He started by exploring the Services SDK and outlined that the architecture is set up with a Direct Web Remoting (DWR) LIbrary do the magic between web browsers and Web Services WSDL.
Using DFS Types for Data Model where appropriate
Simplification was needed to support broader language adoptions because it is hard to called them from anything else than Java and .Net
Trouble calling them from Flash
- No use of abstract XML Types
- Minimize the number of XML namespaces
- Restricted set of data types
The DFS error handling is fine for programmatic access but when you want to show a progress dialogue and had new data structures for that. If you copy 200 files some of them could invoke an error there is important that these are handled and for instance not importing anything from file number 53…instead give more extensive information to the user of what happened and what went wrong without breaking the import after the error.
- Create blogs, wikis,
- Manage spaces
- Provide the “guts” of Centerstage
- Capture application logic that is UI.agnostic
Basic Content Services (Create, Checkin, Checkin, Copy, Move, Delete and Properites dialog)
- Lists (Grid data sources – a declarative mechanism for creating queries, handling sorting, pagination and caching)
- Permissions (simplified permission levels to standard dm_acl
- Search (Knows about CS Artefacts and Integrates CIS entities with facets)
DFS Core Services
Possible to use them to modify CS artifacts
– for example ObjectsService.copy to copy a wiki page
Copy things, add things to a page etc
Our DOF modules will enforce data constraints which for instance means that you can’t copy a page object without copying the page content
Deploying the SDK
- A zip.file containing binaries and javadocs
- Centerstage Services are added to core SDK
- “remote” jars only – a deployed centertsage server is needed
– Unzip the SD
For Java your classpath should include
– DFS runtime, JAX-WS, JAX-B
Java: centerstage-foundation-remote-jar and centerstage-application-remote.jar
.Net requures 3.0 SDK for WCF, Visual Studio Optional)
Samples in both Java and .Net
Creating a Space
Uses the Blank Template which ships with Centerstage
- Identify qualification shows how to pick a specific template
- Using a template guarantees that the space will be Centerstage-compatible
- Space needs a home page
Returns and OperationStatusSet
- The standard return type for creates, updates
- Allows validation errors to be returned.
Creating a Wiki – child pages to the wiki can be added in the same way
An activity template can create a space and send an invitation email to everyone.
Java samples can be built with Ant 1.7 and Java 1.5 Not IDE requirement – Eclipse will work fine.
Sample: Wiki to eBook sample
- Given URL to a CEnterstage wiki, create and ePub book
- Each wiki page becomes a chapter in the book
- Blogs and Discussions can also be converted
- High-fideliyt (the rich text in CS is XHTML in the repository)
- Page links are preserved
What it shows
- Fetch wiki home page
The used a set of Google code – Java library that builds ePub books – contributed by Adobe
- Build and HTML page that shows Centerstage data
- Pure AJAX Technologies
What it shows
- How si data marshaled
Demo showed the Recent Activity in an external native ExtJS Grid
The SDK for CS is not licensed….basically need a CS license to use it…
eBook Sample is available on ECN
The SDK will be in GA in the July timeframe.
To me it seems more powerful than I thought that it is now possible to programmatically be able to setup Centerstage Space and modify existing ones. That gives us an opportunity to create “templates” for common things that the business needs to do using E 2.0 features. Instead of relying that users are aware of all the possibilities and can execute them manually we now can have quick buttons to do that or use workflows or external systems to trigger these actions.