I have a question on how the local variables in a load expression behave when th

I have a question on how the local variables in a load expression behave when the expression is invoked from SAIL (which are at times TEMPO SAIL Dashboards).It took long time for analysis as the issue was causing several production issues. Let me try to explain the issue with some a SIMPLE SAIL and Expression Rules. Attached is a simple SAIL which has a one section layout. When you enter input "IndSection1" text box and change the date value in "End Date Field", "Tst_LoadIssueExpr" (code snippet is below) is invoked and result is shown in "ResultSet" text box.
When you change the flip the value in "IndSection1" between blanks and non-blanks, as expected the Boolean result displayed in "ResultSet" text box is not changing. But if you modify the below "Tst_LoadIssueExpr" ri!input directly rather than saving to a local variable ,the result shown is as expected.
Can anyone explain what is causing this weird behavior. In actual production code ,this is a n...

Tst_LoadIssues.txt

OriginalPostID-171957

OriginalPostID-171957

  Discussion posts and replies are publicly visible

Parents
  • 0
    Certified Lead Developer
    Understanding load() and with() are 2 of the most important principles in SAIL and I suggest you study the docs in detail on these. Variables defined in load() are only evaluated once on 1st execution of the expression and as such should only be used for static data and saveInto targets, it should never be used in a sub rule as you have in the example instead use with() to define variables that need to be re-evaluated. with() also has performance benefits over load()
Reply
  • 0
    Certified Lead Developer
    Understanding load() and with() are 2 of the most important principles in SAIL and I suggest you study the docs in detail on these. Variables defined in load() are only evaluated once on 1st execution of the expression and as such should only be used for static data and saveInto targets, it should never be used in a sub rule as you have in the example instead use with() to define variables that need to be re-evaluated. with() also has performance benefits over load()
Children
No Data