Compositional extensibility
Compositional extensibility is a simple class supplied by plugins as a way of extending a commerce entity. Components can be added or removed by a plugin into a commerce entity by adding to the components property. This is usually done via a PipelineBlock
or a RuleAction
.
Only one of a specific type of component is allowed in a commerce entity. This should be enforced on the persistence of an entity. Other plugins do not need knowledge of components supplied by other plugins, unless required.
The existence of a component in an entity may trigger business actions. For example, if a delivery component is on a line item of a shopping cart upon order creation, the delivery pipeline invokes business processes.