Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

1.Mapping configuration is read from QuotesDataExtractorMappingConfiguration, saved in a format of map with 3 keys: columnsMapping,idCol,searchLevelOrder and assigned to api.global.ExtractorConfig – which is a result of element „MappingConfiguration”

  1. Dictionary:

  • mappingLine: row of QuotesDataExtractorMappingConfiguration table

  • searchLevelOrder: a list of search levels (Q,QLI,QLI_INPUT,QLI_OUTPUT,W)

  • columnsMapping: map of configurations per quote types, each quote type as key and as value - map of configs with: quoteAndWorkflowLevelConfig, otherLevelConfig, calculationAtQConfig, calculationAtQLIConfig

  • quoteAndWorkflowLevelConfig: map with config rows „Extract Level” column values : Quote or Workflow

  • otherLevelConfig: map with config rows „Extract Level” column values other than Quote or Workflow

  • idCol: value of columnsMapping.idColumn, if it’s null the default is always „UniqueId”

...

7.For the config type „calculation” – if any values are present in calculationAtQConfig, extraction on these values is additionally performed and added to  quoteLineItemRow

  1. List of exisitng quote line items for given quote is fetched by quote type id, using api.getCalculableLineItemCollection

  2. Iteration over this list of quote line items begin

10. In each iteration for each line item – the same steps as in point 5,6 and 7 are performed but the only levels that are being processed are QLI,QLI_INPUT and QLI_OUTPUT:

...

·        Brackets expression – Specifies a search formula (evaluated using the FormularEvaluator library) or an index to get data in a list structure or using the last/first keyword (to get teh last item / first item in a list).

...

·        Calculation type – Returns the calculated value from an expression using the FormularEvaluator library. The calculation type is calculated after all data are extracted from the quotes.

...

Behavior of GenerateQueryConfig:

  1. Reads the inputs

  2. Generates map of queryConfigs

  3. Sorts aliases in the order in which tables will be then joined in Data_Query

  4. Sorts queryConfigs according to sorted aliases

  5. Adds date filters and partition filters to queryConfig for primary source

  6. Returns map of queryConfigs

queryConfig structure:

  • filterMap: source column as key, primary source column as value

  • filter: list of all filters : date filters + optimization filters + partition filters + feeder filters

  • query: query object to fetch data for temporary table, query if filled with projections which are the names of columns and then that query is executed to have a lookuped data before loading it into table context

  • other keys: dataMap, fields, groupBy, groupFieldMap, columns, sourceType, sourceName

...

  • Inputs: GenerateQueryConfig

  • Dictionary: joiningRelations – map in which as keys there are aliases on tables which are to be joined – separated by a dot, in form of String, and as values – there are relations in which temporary tables will be mapped – mappings from 1 column to another. Joining of 2 tables can have more than 1 relation.

  • Optimization filter: filters which purpose is to avoid fetching redundant rows, optimize lookup data process. Optimization filters are created based on joining relations. After fetching the data for source – it’s checked whether source has any relations with other sources. If yes – queryConfig for given source is modified – the values for column shown in relation. It’s a list added as queryConfig.filter

  • Behavior: (1-3 are in loop iterating over queryConfigs):

  1. Lookups data based on queryConfigs

  2. Sets optimization filters for each table

  3. Performs data masking

  4. Returns map with masked data

  • Data masking process:

For masking, a seed is being used (which is a value in the column „Seed for masking” inn PP table) and after each process of masking, seed iis added to api.local.seedMap – to make sure we avoid duplication of the process (it checks before masking if given seed already exists in api.local.seedMap). Then maskedValueKey is created based on 3 inputs: source alias, value of given column and seed for fiven column. With this key, we take masked value from api.global.maskMap, and if such didn’t exist in maskMap – then PlasmaLib is called where we pass a seed and value for given column. Masking process happens in PlasmaLib through getMaskedString method.

...