Necessity – Process

Necessity in the Otter Studio provides visibility and edit for domain modules for Service Component Architecture (SCA) components and implementation. The studio presents two windows for Necessity. The left window provides for the selection and drill down into SCA components. The window on the right shows the details of a selected component for viewing and editing.

Both windows have options to define the color scheme and the graph direction. All graphs are dynamically drawn by GraphViz.

In the “SCA Building Blocks” window, one or more domains may be selected and clicked to show component connections.

The following shows examples of connections from the Pizza Stores Demo involving multiple domains.

SCA Building Block Selection

Selecting the “PizzasSCA” domain shows the domain as a node in a graph with a connection to the “Pizzas” domain and the “PizzaStoresSCA” domain.

Clicking on the “PizzasSCA” node shows the components within the domain. This example only has one component.

Clicking on “PizzasServices” component shows the node as a component interface with two services.

Clicking on the “Pizzas” domain shows the software implementation for the “PizzasServices” interface.

The “PizzaTypesSoftware” is shown to implement the component “PizzasServices” component. Clicking on the “PizzaTypesSoftware” results in the detail of the component to be shown in the the detail window on the right.

The nodes in this window when clicked provide a graph of the class expression passed to the software at initialization, detail information on the programming language, and a visual of the component interface. Currently, Java and BPEL may be specified as software programming languages. See: Necessity – Software

Component Types

There are four types of SCA components, and each may have services and references.  See: SCA Messages

  1. Interface – Shown above as “PizzasServices” and implemented by software.
  2. Socket – Provides external access to internal component services.

3. Plug – Provides internal access to external component services.

4. Assembly – Provides for the linking of multiple components to create a new component. References on the right side of a component are linked to a service on the left side of another component.

Services may also be promoted to become the exposed services of the assembly component. Similarly, references can be promoted to become the exposed references of the assembly component.