I had a similar reaction way back when I tried to get my
head around the SCA Assembly model for the first time. Later, I settled with the
following mental model:
A ComponentType defines the type of an implementation (and
not that of a component as such). The association between a ComponentType and an
implementation artifact is made via their collocation in a contribution or via
an explicit linkage (such as by the <implementation.bpel
process="xs:QName"> element in a ComponentType definition for a BPEL process)
or implicitly by some derivation rules, etc. Nevertheless, a ComponentType
describes an implementation, in particular, it declares the configurable
elements of an implementation.
A Component on the other hand is a specific configuration
of an implementation. Of course the contents of a Component would be
constrained (shall we forget about the ConstrainingType for a moment!) by
the ComponenType of the implementation it is configuring. But a Component
is primarily anchored to the implementation in this model.
I guess the above model is different from the other
examples you quote below as follows:
SCA model has three concepts related to
each other - Implementation, ComponentType and
Component
XML
Schema, etc, on the other hand use the model of just two concepts-- a type and
an instance of that type.
Just my 2c. I am sure there are other better ways to
clarify this confusion ...
-- Sanjay
From: Najeeb Andrabi
[mailto:]
Sent: Tuesday, Feb 12, 2008 12:12
PM
To:
Subject: [sca-bpel]
Component Types in SCA
I would like to make a comment about Component Types in SCA. This is in
context with defining a component type file for BPEL implementations. I am
curious about the fact that a component cannot refer a component type: it has
to infer what its type might be using implementation.* element. I don’t
understand the rationale behind this approach. Component type defines the type
of component so why it cannot refer it. Approach of referring ones type is
used everywhere in specifications like XML schema, WSDL, BPEL etc. e.g. a
schema element can have a reference to complex type that defines the type of
the element.
My
comment may be because of lack of understanding of SCA assembly specification.
But, from my understanding of the specification I think we should allow
components to refer their type.
--Najeeb