Appian Community and Appian Academy are being upgraded. As a part of the upgrade, Appian Community is currently in read-only mode, and user registration is disabled until August 3. We apologize for any inconvenience this may cause, but a more secure, stable, and performant Community experience is coming soon!

The new Appian Community launches August 3, followed by Appian Academy on August 7. During the migration, Appian Community Edition, Appian Academy, Documentation, Certifications, Instructor-led Customer Training, Partner Sales Training & Accreditation, and Forum (for Appian Partners and Customers only) will remain available.

Changing a rule input variable in a child interface changes it in the parent but SAIL in local variable doesn't?

Certified Senior Developer

Just a question regarding the exact location and order that variable data is saved in.  I have noticed that saving a variable in a child interface that was passed into it as a rule input also changes the related local variable in the parent interface, which is normal functionality that is explained in several tutorials.  However I also noticed that saving a set of identical SAIL code into a local variable and then changing another local variable results in no change.  

For example if a dropdown option like this were selected it immediately resets the variable, local!madeFromCDT, back to the default:

local!madeFromCDT: cast( typeof(type!("arbitraryType"), {abitraryField: null}))),

local!sailInterfaceDropdown: a!sideBySideLayout(
     item: rule!nestedDropdownfield(
          choiceLabels: local!listOfYesNo
          choiceValues: local!listOfYesNo
          value: index(
               local!madeFromCDT,
               "arbitraryField"
          saveInto: a!save(
               local!madeFromCDT,
               updatedictionary(
                    dictionary: local!madeFromCDT,
                    fieldsAndValues: {arbitraryField: save!value}
               )
          )
     )
)

However, using a expression rule does permanently change the local variable, local!madeFromCDT:

local!madeFromCDT: cast( typeof(type!("arbitraryType"), {abitraryField: null}))),
rule!sameSAILDropDownButInExpressionRule(
     madeFromCDT: local!madeFromCDT
)



  Discussion posts and replies are publicly visible

Parents Reply
  • 0
    Certified Senior Developer
    in reply to Stefan Helzle

    Oh, I'm just trying to figure out more about the variable storage process (what order variables are stored and initialized etc).  I couldn't find that info in the documentation, but it exists for other functionalities.  But yeah, I realize that storing a UI component in a rule expression is best, but I wasn't sure why storing the UI component into a local wouldn't work too.  

    I'll use a!update() for the other part though.  

Children