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:
- add/list/remove contributions/composites/nodes
- ?
- read/compile-build/write composites without requiring a runtime
- ?
- analyze/resolve/validate contributions and their dependencies
- ?
- include composite (from the contributions above) in a domain
- A matter of selecting which composites will be top level composites in the domain
- associate composites with nodes/apply physical binding defaults/propagate physical addresses based on domain level wiring
- Read in node model - which provides
- Mapping of composite to node
- Default configuration of bindings at that node, e.g. the root URL required for binding.ws
- For each composite in the domain (assuming I have access to the resolved composite model)
- Find, from the node model, the node which will host the composite
- for each service in the composite
- If there are no bindings for the service
- Create a default binding configured with the default URI from the node model
- else
- find each binding in the service
- Take the default binding configuration and apply it to the binding
- What to do about URLs as they may be either
- Unset
- Apply algorithm from Assembly Spec 1.7.2
- Set relatively
- Apply algorithm from Assembly Spec 1.7.2
- Set absolutely
- Assume it is st correctly
- Set implicitly (from WSDL information)
- Assume it is set correctly
- Unset
- find each binding in the service
- The above is similar to what goes during compositeConfiguration in the build phase
- If there are no bindings for the service
- For each reference in the composite
- Look for any targets that cannot be satisifed within the current node (need an interface to call through which scans the domain)
- Find the service model for this target
- Do policy and binding matching
- For matching bindings ensure that the binding URL is unset and set with information from the target service
- Similar to what happens during activation
- Domain Level Autowiring also needs to be taken into account
- Wire by impl that uses domain wide references also need to be considered
- Read in node model - which provides
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
...
- Find all artifacts
...
- in the contribution
- Read each artifact and create a model (apart from composites which are done later)
- Aggregate all definitions.xml files
- Read composites
- Enhance composite with policy sets based on appliesTo information
...
Contribution Process
- For each composite file read the xml content first...
- For each policyset in the domain...
- Extract the value of 'appliesTo' attribute with is an xpath expression
- Evaluate this expression against the composite xml
- For each node that results out of the above evaluation
- if the node contains an attribute named 'applicablePolicySets'
- concatenate to its value, the name of the PolicySet
- else
- create an attribute named 'applicablePolicySet' and set its value to the name of the PolicySet
- if the node contains an attribute named 'applicablePolicySets'
- For each policyset in the domain...
- Wherever applicable the composite's elements will have the additional attribute name 'applicablePolicySets'.
- For each composite file read the xml content first...
- 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