2024-11-17 - SearchResult linkPath combination step

From Izara Wiki
Revision as of 12:52, 17 November 2024 by Sven the Barbarian (talk | contribs) (Created page with "Service - Search Results = 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...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Service - Search Results

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

  • ..