A!foreach() in Expression rules

Certified Associate Developer

I have built an expression rule where I am using a!foreach() and looping through items. Below is the query.

a!localVariables(
local!var: a!queryRecordType(
recordType: 'recordType!rec_type1,
pagingInfo: a!pagingInfo(1, 10)
),
a!forEach(
items: { local!var}.data,  //4 data items from the record type table are that it can iterate on//
expression: fv!item['recordType!rectype1.fields.col1'] [1]
)
)

The record type I am querying here has 4 items that I am iterating in using a!foreach(). Now expression gives a single output (specific cell's data from table i.e. first record's col1 value). My expectation was that this would give same table cell data as output but 4 times instead of 1 time.

Is it due to the fact that in every iteration fv!item moves to the subsequent item as current array item and therefore cannot give that cell's data as output remaining 3 times since it has already moved ahead to next item.

Let me know if I am thinking correctly or is there some other reason. (Refer: Below image shows the single output for above query.)

  Discussion posts and replies are publicly visible

Parents Reply
  • It's because you have a list of lists, and a!forEach() doesn't automatically flatten it into a single list.

    I think it's also important to note that we have been talking about some scenarios that result in a list of lists or indexing into various items, but I strongly recommend that you don't actually do the expression you specified above (where you have a query inside of a!forEach()). In that expression, you're iterating over a list and running a query for every item in the list, and if you aren't careful, this could result in a huge number of queries that get executed.

    In general you should refactor scenarios like this to run a single query and then split up or manipulate the data after the query is executed. I think part of the strangeness of your result set stems from the fact that it would be unlikely to get into this scenario assuming you are doing a single query.

Children
No Data