Hi,

The workspace and workspace-impl modules were introduced to model a collection of contributions that are added to an SCA domain. Basically, Tuscany allows you to provide a "workspace.xml" to pre-define a list of contributions for an SCA domain. And the workspace model provides the "install contribution" and "uninstall contribution" services for the SCA domain. It functions as the "contribution service".

Furthermore, the "workspace" becomes a special archive of artifacts that are SCA contributions. Now the SCA contribution is just an artifact that is identified by the contribution URI and can be loaded by the URL. The ContributionContentProcessor from workspace-impl is a URLArtifactProcessor that uses the ContributionScannerExtensionPoint to parse contributions in different packaging schemes such as Folder, JAR, or ZIP.

The other player in the SCA domain management is the Node. Node is a configuration of a runtime (like a "SCA virtual machine") that is capable of running an SCA composite application. The Node configuration includes the base URI for protocols supported by a given SCA binding. It also defines a list of contributions and a deployable composite that make up the SCA composite application. At this moment, the node is modeled as "implementation.node" (see [3]). It doesn't seem very natural to me. Maybe we should use a different way, such as "node.xml" and NodeConfiguration model.

The SCA domain manager is developed as an SCA application. It manages contributions, composites and nodes in the SCA domain. You can add contributions to the SCA domain. The SCA domain manager can then load the contributions, find the deployable composites, resolve the dependencies as well as the wirings. A resolved SCA composite application can then be deployed to the SCA node. To provide remote access, SCA domain manager uses binding.atom and packages the messages as ATOM feeds. See [1] and [2] for more details.

I understand we also desire a more dynamic way to constitute an SCA domain. But conceptually, all the underlying domain level services stay the same. It's a matter of how the Workspace/Contribution/Composite/Node models are built, statically or dynamically in a centralized or distributed fashion.

[1] http://cwiki.apache.org/confluence/display/TUSCANYWIKI/Composite+Application+Deployment+with+SCA+Domain [2] http://www.ibm.com/developerworks/webservices/library/ws-sca-tuscany/index.html [3] https://svn.apache.org/repos/asf/tuscany/java/sca/modules/implementation-node/src/test/resources/org/apache/tuscany/sca/implementation/node/xml/TestNode.composite

Thanks,
Raymond

--------------------------------------------------
From: "Mike Edwards" <[email protected]>
Sent: Thursday, May 07, 2009 2:44 AM
To: <[email protected]>
Subject: Re: Node usage of the workspace and implementation-node modules

ant elder wrote:
Currently the node-impl module has dependencies on implementation-node
and the workspace modules, I think its worth exploring if thats
necessary. In r772526 i've created a new node-impl2 module thats a
copy of node-impl but with no dependencies on implementation-node or
the workspace modules. It does include 4 classes copied from
workspace-impl and they're still in the o.a.t.s.workspace package to
make that obvious. Comparing the two node-impl modules i think this
makes node-impl2 significantly cleaner and shows that having those
contribution classes in workspace-impl may not be the correct place
and they'd be better in one of the contribution* modules.

Any comments?

   ...ant

Ant,

I too am puzzled by the presence of the Contribution related classes in the workspace-impl module.

I could not make any sense of why they were there rather than in the Contribution module.

Can anyone offer an explanation of why the Contribution code is organized in this way?

If there is no good reason for the current split then I'd argue for moving the code into the contribution module.


Yours, Mike.

Reply via email to