Attribute Based Decomposition
This functionality provides the ability to define decomposition rules along the relationship path for products. The decomposition rule is defined as XPATH logic which grants the ability to apply the defined logic anyway along the order. E.g. We can define that Copper Access or Fibre Access process component should only be in the plan if the Access Type in the order is Copper or Fibre.
In order for attribute based decomposition can be applied the following conditions need to be satisfied:
-
DECOMPOSITION attribute needs exists in the product where the XPATH logic can be defined.
-
The XPATH logic must contain an exists() this is due to the XPATH logic will be evaluated to either true or false. The logic could either be for a check of the UDFS or an existence of a particular product within the order.
A simple scenario for Attribute based decomposition is described below:
A bundled offering (“A” in the above figure) will contain a characteristic for the type of access that the subscriber can specify during order entry. In our figure above this will be the fulfillment of Product “E” or Product “F”. The bundled offering will have an associated characteristic named “AccessType” where the value can either be “E” or “F”. For the fulfillment of access type E or F a unique execution plan will be generated. The “DECOMPOSITION” characteristic for “F” and “E” will contain a relationship value with “AccessType” set to either “F” or “E”.
The Decomposition characteristic will be able to contain complex XPATH logic which can be used to determine which branch of the tree should be included in the final execution plan for the offering.
Our design will take into account the new product catalog characteristic called “DECOMPOSITION”. The decomposition engine will process this characteristic and determine which branch in the product hierarchy is required for the final execution plan. If in our order access type “E” is specified then branch “F” will not be included in the execution plan and “E” will be included. If access type “F” is specified then “E” will not be included in the execution plan.
XPath for attribute based decomposition can be used against the UDFs. The UDFs can come from orderline or from product model characteristics. AOPD configuration flag "includeproductmodelcharacteristics" is used to include product model characteristics for xpath execution. By default product model characteristics are not considered.
By default all the orderlines from the order will be considered to check against whom the Xpath should be executed. Conditionally it can also be made to execute only against the orderline from which product is being decomposed. AOPD configuration "includeonlyproductorderline" needs to be set to true in this case. By default its false.
The xpath expression is relative to the element "Product". A sample xpath is exists($var//Product[udf[name='AccessType' and value='copper']])