2024-11-17 - SearchResult linkPath combination step
Overview
Allow multiple ComplexFilterResultMainIds to be calculated then passed to a later stage of the Link Path where all combinations of the ComplexFilter results are performed against that step.
Idea
LinkStep sets complexFilterCombinations property, is an array of ComplexFilter requests, multiple objTypes is ok.
ComplexFilters are calculated for each parent id entering the linkPath step that has the complexFilterCombinations property (this allows the first step to process for the initial identifier sent from processRequiredData).
Calculate ComplexFilters before the linkPath's main processing, this allows the ComplexFilter results to also be used in the same step.
Calculates the ComplexFilter results for each and stores the complexFilterMainId in an array in requiredData table, propertyName: combinationComplexFilterIds. I believe multiple combination linkPath steps could combine their results in one array as they will be used together at a linkPath step to process all combinations.
LinkPath step that uses the combinations has a property names applyCombinations, when this is set multiple requests are sent out with the combination ComplexFilterIds added to requestParams.
filterElements has a wildcard that adds in the parent Identifier, this will need to handle multiple Identifier fields (eg add group with each Identifier field and AND operator)
Example
used to calculated {sellOfferPlanId}_{sellOfferPlanDeliveryMethodLinkId}_{sellOfferPlanPaymentMethodLinkId} combination required to calculate all OrderPrices for a SellOffer.
- SellOffer SearchResultMain enters processRequiredData with a linkPath field
- Each sellOfferId is sent into first link step
- linkPath has one link step, objType orderPrice, linked by hasOrderPrice (link is lambda relationship/no storageTag)
- step has complexFilterCombinations for sellOfferPlan, sellOfferPlanDeliveryMethodLink, and sellOfferPlanPaymentMethodLink
sellOfferPlan complexFilter
- has a translate filterElement linking to the parent Identifier wildcard, which will store the sellOfferPlanId for the parent sellOffer
sellOfferPlanDeliveryMethodLink complexFilter
- will find sellOfferPlanDeliveryMethodLinkIds
- (path1) childComplexFilter DeliveryMethod
- (path1) childComplexFilter RateTable
- (path1) childComplexFilter locationNode with OR filterElements for all locationNodes (parent LocationNodes would need to be found outside this flow and used to generate the filterElements)
- (path2) childComplexFilter from sellOfferPlanDeliveryMethodLink to SellOfferPlan with translate filterElement linking to parent Identifier wildcard (sellOfferId)
sellOfferPlanPaymentMethodLink complexFilter
- ..