Contribution Preparation

Description:

Helps prepare contributions/composites for running across the nodes in a domain. Steps here could all be done manually by editing of the individual composite files.

input:

run the workplace
add contributions

steps:

  1. add/list/remove contributions/composites/nodes
    1. ?
  2. read/compile-build/write composites without requiring a runtime
    1. ?
  3. analyze/resolve/validate contributions and their dependencies
    1. ?
  4. include composite (from the contributions above) in a domain
    1. A matter of selecting which composites will be top level composites in the domain
  5. associate composites with nodes/apply physical binding defaults/propagate physical addresses based on domain level wiring
    1. Read in node model - which provides
      1. Mapping of composite to node
      2. Default configuration of bindings at that node, e.g. the root URL required for binding.ws
    2. For each composite in the domain (assuming I have access to the resolved composite model)
      1. Find, from the node model, the node which will host the composite
      2. for each service in the composite
        1. If there are no bindings for the service
          1. Create a default binding configured with the default URI from the node model
        2. else
          1. find each binding in the service
            1. Take the default binding configuration and apply it to the binding
            2. What to do about URLs as they may be either
              1. Unset
                1. Apply algorithm from Assembly Spec 1.7.2
              2. Set relatively
                1. Apply algorithm from Assembly Spec 1.7.2
              3. Set absolutely
                1. Assume it is st correctly
              4. Set implicitly (from WSDL information)
                1. Assume it is set correctly
        3. The above is similar to what goes during compositeConfiguration in the build phase
      3. For each reference in the composite
        1. Look for any targets that cannot be satisifed within the current node (need an interface to call through which scans the domain)
        2. Find the service model for this target
        3. Do policy and binding matching
        4. For matching bindings ensure that the binding URL is unset and set with information from the target service
        5. Similar to what happens during activation
      4. Domain Level Autowiring also needs to be taken into account
      5. Wire by impl that uses domain wide references also need to be considered

output:

contributions/composites available configured for running on nodes

Node Start

input:
run the node.exe

steps:
Load extensions
create runtime artifacts (builders, activators etc)
Load definitions.xml

output
running node awaiting contribution/composite to run

Process Contribution

input:
a contribution jar or file system directory

steps:
Contribution Read

  1. Find all artifacts in the contribution
  2. Read each artifact and create a model (apart from composites which are done later)
  3. Aggregate all definitions.xml files
  4. Read composites
  5. Enhance composite with policy sets based on appliesTo information
    1. For each composite file read the xml content first...
      1. For each policyset in the domain...
        1. Extract the value of 'appliesTo' attribute with is an xpath expression
        2. Evaluate this expression against the composite xml
        3. For each node that results out of the above evaluation
          1. if the node contains an attribute named 'applicablePolicySets'
            1. concatenate to its value, the name of the PolicySet
          2. else
            1. create an attribute named 'applicablePolicySet' and set its value to the name of the PolicySet
    2. Wherever applicable the composite's elements will have the additional attribute name 'applicablePolicySets'.
  6. Parse composites into in memory assembly model

Contribution Resolution

  • resolve the contribution models against the physical artifacts available in the contribution.

output:
a contribution model in memory containing composite assembly models in memory

Model Build

Model Activate

Composite/Component Start