My take:

Definitions
-----------

avalon lifecycle interface: a well-known lifecycle interface defined in
the org.apache.avalon namespace supported by all avalon containers

block: deprecated alias for component

component: A passive entity that performs a specific role

container: An active entity that manages component lifecycles and
performs low-level functions

consumption: the usage by a component of a service

dependency: the specification of the consumption requirements of a
component

entity: part of the computer hardware and/or software system

lifecycle: specification of the phases and stages applicable to a
component

lifecycle interface: an interface specifying one or more lifecyle stages

lifecycle extension: the combination of an application-specific
lifecycle interface and the resources required by a container to support
components that implement that interface

metadata: the complete set of specifications of component types,
component profiles and service definitions

phase: ?

profile: the combination of the specification of resources consumed by a
component at runtime and the type applicable to the component

provision: the supplying of a service implementation

resource: any entity or combination of entities

role: the key by which a service is referenced at runtime

service: the combination of a work interface and a version. We give each
service a unique name by which it can be identified and referenced

stage: ?

type: the combination of a service specification and a dependency
specification

work interface: a java interface specifying component functionality (as
opposed to specifying component behaviour)

Notes
-----
- I don't like the definition of phase or stage (couldn't figure it out)

- I don't like the term "type". I use it because that is what is
currently in use for merlin.

- I have not stated component == service. While this is currently
usually true when you actually look at the actual code, the words are
conceptually very different.

- It is useful to do a lookup of the terms "component", "service",
"entity", "element" etc in your dictionary (or dictionary.com). You will
notice "service" has a definition very different from the others

Example
-------
Since y'all have been throwing metadata snippets in with the discussion,
I'll do so to:

We have a *type* that *provides* "my-service" and *consumes*
"my-required-service" and optionally "my-second-service" for
additional/improved functionality.

<services>
        <service name="my-service"
                 version="1.0"
                 interface="com.blaat.MyService"/>

        <service name="my-second-service"
                 version="1.2"
                 interface="com.blaat.MySecondService"/>

        <service name="my-required-service"
                 version="1.1"
                 interface="com.blaat.MySecondService"/>
</services>

<type name="my-component"
           version="1.0">

        <provides>
                <service refid="my-service"/>
        </provides>

        <consumes>
                <service        refid="my-second-service"
                                optional="true"/>
                <service        refid="my-required-service"
                                optional="false"/>
        </consumes>
</type>

<component name="my-component-instance">
        <type refid="my-component"/>

        <configuration>
                <!-- blah -->
        </configuration>

        <context>
                <!-- blah blah -->
        </context>
</component>

cheers,

Leo



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to