KB-1251 Users are unable to open/edit interface objects after saving and reopening

Symptoms

An interface object does not open in the Interface Designer when selected from the Appian Designer. Instead, the “Working…” indicator and the Appian wallpaper is shown. After a short time, the “Working…” indicator will disappear. Refreshing the page with the web browser’s Refresh results in the same behavior.

When trying to swap views from Expression View to Design View while editing an interface object with this issue a pink box error message should display:

The Appian application server log shows the following:

com.appiancorp.process.expression.ExpressionRuntimeException$AppianExceptionProvider: Expression evaluation error : Unmatched close parenthesis ) (APNX-1-4198-000)

Steps to Reproduce

The issue can be seen with the following test:

  1. Create a new interface object using the sample Form template.
  2. In the primary button, replace the existing saveInto parameter with the following SAIL code:
    saveInto:
    {
    if(true(),
    {
    a!save(ri!button,"yes"),
    }
    a!save(ri!button,"no")
    )
    },
    
  3. Change the view of the Interface Designer from Expression View to Design View. A pink box error message should appear.
  4. Save the interface and reload the page with the browser. The issue should occur.
  5. The issue does not occur when the comma that is placed before the ending curly brace after the first a!saveline is placed outside that same ending curly brace:
    saveInto:
    {
    if(true(),
    {
    a!save(ri!button,"yes")
    },
    a!save(ri!button,"no")
    )
    },
    
  6. Change the view of the Interface Designer from Expression View to Design View. The issue should NOT occur.
  7. Save the interface and reload the page with the browser. The issue should NOT occur.

Cause

In some circumstances, the SAIL parser in the Interface Designer is unable to detect incorrectly placed commas resulting in this behavior. This has been seen when using some Appian Functions and incorrect comma placement within conditional expressions. The example above demonstrates the issue with incorrect comma placement using the Appian a!save function within the conditional if() function.

This issue has been reported to the Appian product team. The reference number for this issue is AN-74118.

Action

Correct the SAIL syntax by placing the comma after the appropriate ending curly brace rather than before the ending curly brace. Since the Interface Designer will not load the SAIL form to allow you to correct the syntax, the interface object must be exported, modified directly in XML, then re-imported. Steps to perform this include:

  1. Add the interface object with the issue to a Patch, and export it.
  2. Download the ZIP file from the export operation, and extract the directories contained within.
  3. Find the XML file that should be located in the contents folder, which contains the definition of the interface object.
  4. Look for the SAIL code that is contained within the <definition> tag when viewing the XML in a text editor.
  5. Find the location of the improper comma syntax, and rectify it.
  6. Save the XML file, and create a new ZIP file with the directories that were originally extracted from the exported ZIP file in Step 1.
  7. Import the newly created ZIP file into the environment to overwrite the definition of the interface object experiencing the issue.
  8. If the correct comma syntax issue was rectified when editing the XML, then the issue should no longer appear.

Affected Versions

This article applies to Appian 7.11 and later.

Last Reviewed: March 2017

Related
Recommended