My organization and I are relatively new to Appian and are working on building o

Certified Associate Developer
My organization and I are relatively new to Appian and are working on building our first SAIL interfaces. We have a business need for users to be able to complete tables of varying lengths. I started with the SAIL recipe for an Inline Editable Grid and I have no problems creating the table and it's supporting expression, ucItemRowEach.

However, I am running into difficulties writing the data in that table to my process. The instructions from the recipe include creating a CDT "for items with the same fields as in the example" as well as replacing the local!items with an ri!items. I have not been able to persist data from the table to the "main interface" ri!items and thus to my process. Could someone provide an example of a ucItemRowEach expression and a "main interface" expression that has been modified with the intention of writing to process?

I am still uncertain as to whether the data will come from the "main interface" ri!items or from the ucItemR...

OriginalPostID-146157

OriginalPostID-146157

  Discussion posts and replies are publicly visible

  • 0
    Certified Associate Developer
    ...owEach expression to the CDT.

    Thank you in advance for any pointers!
  • 0
    Certified Associate Developer
    the "main interface" in this case refers to the parent SAIL rule which calls row building rule you created.

    In order to get information from the row level rule to the parent you have to pass the information via a rule input. The same mechanism is used to get information from the main interface rule to the process model - when you configure the user input node with the main interface rule you have to provide rule inputs to that rule - once the user submits the form the rule inputs you specified will be populated with your information.

    Be sure that when you configure the form node with the rule and arguments that you use Activity Parameters which save to Process Variables - a form expression cannot save directly to a process variable so the intermediate Activity Parameter step is needed.
  • Isaac, glad to see that you are using editable grids. I am not sure about your specific process, but I've created two expressions (see attached) to help you understand how to take the recipe from local variables (in the SAIL recipe) to rule inputs of a CDT data type (for process use). I will refer to them as the parent rule and support rule (support rule= ucItemRowEach).

    To test this grid out:
    1.) Create a CDT called "CDT_editableGrid" and add 4 elements: id (num(int)), sampleText (text), sampleInteger (num(Int)), sampleDate (date).
    2.)Copy the expression in the support...txt file into an interface. Add the rule inputs from the SAIL recipes page. save the rule as uc_itemRowEach (you can name it whatever just make sure to change the name in the parent).
    3.) Copy the expression in the parent...txt into another interface and create a rule input called "sampleCDT" of Any Type data type. You should be able to see the data from these (see picture)

    In terms of getting this to work with your CDTs, you need to modify the dot notation names for the value/saveInto parameters in the support rule to match your CDT element names. Also make sure in the parent to set the linkField value parameter to your CDT type by using type!YOUR_CDT_NAME()

    Hope this helps. Good luck!

    Parent Editable Grid with CDT.txt

    Parent Editable Grid with CDT.txt


  • 0
    Certified Associate Developer
    Thank you Jon and jpheh; this really helped me understand the relationship betwen the Parent rule, the Supporting rule, and the CDT. I had populated my equivalent "sampleCDT" parent rule input with load(), which was creating problems. Using the example, I was able to bring the variable table data all the way through submission, an approval, and ultimately to a database table. The in-line editable grid adds a lot of flexibility and capabilities to forms; I am very happy I got this to work. Again I appreciate the help! :)