I have a really strange issue happening on a SAIL form. Basically I have a two l

I have a really strange issue happening on a SAIL form. Basically I have a two local variables which contain any type arrays (X and Y). I then have a 3rd local variable (Z) where I'm trying to place either array X or array Y, based on a local boolean variable which I've set using an expression.

=load(
local!arrayX:ri!input1,
local!arrayY:ri!input2,
local!isBoolean:if(local!integerA=0,true,false),
local!arrayZ:if(local!isBoolean,local!arrayX,local!arrayY)
)

The issue is that array Z is always returning only the first index of either array X or array Y. I want it to return the whole array. I'm not really sure why this is happening. And the strangest part is that if I set local!isBoolean as true or false directly (not using an expression), then array Z returns the entire array that I want.

Anyone seen anything similar? This seems really odd. I've displayed the values of all of my arrays and boolean variable on the form so I know that th...

SAIL issue with boolean expression.doc

OriginalPostID-146293

OriginalPostID-146293

Parents
  • Michael, you are passing an array of booleans as the first argument to if(). When you do this, Appian evaluates the arguments as parallel arrays one index at a time. You should go through your code and make sure you have scalars when you should have scalars. The most common cause of this is not correctly indexing the intended scalar output of a query rule array output.

    Query rules and DataSubset.data are always array so if your intended output is scalar you should wrap the output with index(_,1,null). Fixing the issue at the root cause will prevent downstream errors such as this one.

    On EASi we wrote utility rules that encapsulate all our queries that do this indexing automatically. Using these utility rules consistently has resolved all dimensionality bugs related to queries.
Reply
  • Michael, you are passing an array of booleans as the first argument to if(). When you do this, Appian evaluates the arguments as parallel arrays one index at a time. You should go through your code and make sure you have scalars when you should have scalars. The most common cause of this is not correctly indexing the intended scalar output of a query rule array output.

    Query rules and DataSubset.data are always array so if your intended output is scalar you should wrap the output with index(_,1,null). Fixing the issue at the root cause will prevent downstream errors such as this one.

    On EASi we wrote utility rules that encapsulate all our queries that do this indexing automatically. Using these utility rules consistently has resolved all dimensionality bugs related to queries.
Children
No Data

 Discussion posts and replies are publicly visible