Nouveau Alliance® Collaboration Server
The Nouveau Alliance® Collaboration Server is a light-weight, peer-to-peer (P2P) framework for collaboration enabled and service-oriented applications. It consists of a service and container framework, foundation services, workspace containers, Java APIs, an application framework, and connections to external software systems. The collaboration server is completely extensible by adding services, connectors, and application-specific logic running within server-managed workspace containers.
Starting the Server
The Nouveau Alliance Collaboration Server architecture provides a backplane for plugging in and managing services, workspace containers, and connectors to external software systems. When the server first starts, it registers available service classes and starts required server services, including the web service, and the peer service. Next the server loads and initializes connectors, and advertises its availablity to the peer network.
Each server has a permanent, universally unique ID (UUID) that allows it to be located anywhere within the peer network, and transparently moved from one machine to another. Finally the server advertises available workspaces to the peer network, creating new workspaces that are marked for creation and activating ones that are marked for activation.
The server integrates numerous security subsystems, and can be configured at startup to provide optional or manditory encryption, authentication, and secure communication, depending on the needs of the deployment environment. Installations can choose to use the standardly available security subsystems, or replace them with versions from one of several commercial vendors.
Creating and Activating Workspaces
A workspace is a container for application objects such as data models, workflows, documents, collections, links, and annotations. A workspace provides managed persistence for objects in the workspace. It also provides access to workspace services, such as object management, and connections to external software systems, such as databases. You can customize a workspace by specifying a class that is responsible for initializing and managing the workspace. An existing workspace can be saved as a template for creating new workspaces.
Each new workspace also has a permanent, universally unique ID (UUID). This provides access to the workspace anywhere within the peer network, and enables the workspace to be transparently relocated from one server to another. If the workspace is not currently active, the server automatically activates it on first access. When a workspace is activated, workspace services are started and made available both within the workspace and externally.
Creating and Accessing Objects Within a Workspace
The workspace framework enables standard Java objects and Java Beans, as well as objects with remote interfaces to be managed by the workspace. Each managed object is assigned a permanent, universally unique object ID (OID) that allows it to be located anywhere within the peer network. Through the workspace framework, both local and remote listeners can monitor a managed object and be notified of its events.
The workspace also enables adding arbitrary, dynamic metadata to an object. The object, its properties, listeners, and metadata can all be accessed through the object's OID from anywhere in the peer network. The workspace provides managed persistence for managed objects, their listeners, metadata, and objects that are reachable through managed objects.
Accessing Workspace Services
Services provide centralized management of specific functions or resources. The server itself manages several services, including the web and peer services. Individual workspaces manage a collection of services that provide workspace functionality. Services for a workspace can be accessed anywhere in the peer network using the UUID of the workspace and the name of the service. The service can also be accessed using the OID of a managed service proxy object.
Services installed on a given server are available to workspaces running on that server. All servers provide a set of foundation services that implement basic server and workspace functionality, including:
||manages activities and categories for automation services such as workflow and agents
||manages access to available programming and scripting languages within the workspace
||manages annotations, collections, and link relationships among objects in this and other workspaces
||manages a JNDI naming and directory service for the workspace
||manages objects and OID mappings, a listener framework, and metadata about managed objects within the workspace
||manages assignment of UUIDs, and publication and discovery of resources within the server and its workspaces
||manages the security framework for objects and services within the workspace
||manages access to storage subsystems, and the persistence of objects and services within the workspace
||manages type relationships within the workspace
||manages views of objects and collection hierarchies within the workspace
||manages web access to classes, resources, content, remote interfaces, web services, and servlets within the server and its workspaces
Exended services can be added to provide advanced functionality to a server and the workspaces managed by the server, such as:
||stores, retrieves and manages access to content of any type, including documents from local and remote file systems, web pages, email, calendars and other desktop tools, images, audio, video, and other rich data sources
||manages workflow definitions and running instances, provides true distributed development and debugging, scalable deployment of workflow processes
Collaborative Application Framework
The Nouveau Alliance Collaboration Server provides an application framework allows users to create collaborative applications using a variety of technologies, including
- Java applications
Users implement their application logic within workspaces. Special framework classes handle presentation and user interaction in the appropriate GUI technology. The framework manages multiple views, fine-grained view sharing, real-time and off-line user interaction, and other aspects of collaboration.
Using the collaborative application framework, components from standard GUI technologies such as Swing, AWT, SWT, struts, and JSF can be used to create collaborative applications without modification. High-level application classes provided with the framework simplify the job of creating advanced, thin-client applications.