I would like to have an interface that, when it is accessed/loaded/refreshed by user, will write a row to a table in the database.
Is this possible?
Idea: Perhaps by using a!writeToDataStoreEntity, or a!startProcess? But it seems that these do not work outside of a "button click" by the user. Trying to add it outside of a button is giving me errors like this one:
Could not display interface. Please check definition and inputs. Interface Definition: Expression evaluation error : Cannot create context for UI expression. Reason: A value of type "Reaction Tree" was stored in the variable "write", but values of this type cannot be stored in SAIL context variables. Use a with() variable or change the type of this value.
Thank you in advance for any ideas or advice!
Discussion posts and replies are publicly visible
Dear Jim and Raghavendra, Thank you very much for your inputs! Thanks to your input, I was able to accomplish this using a workaround making use of some of the suggestions mentioned. While, as Jim mentioned, it is not possible to use POST requests without user trigger/click, I was able to find a workaround by making a GET request to a custom Google Apps Script (external web service), then using that to add the row to a DB (it acts as a POST request). I ended up writing to an external DB instead (but if I needed to write to an internal DB, I would have called the Web API from Google Apps Script to write back to Appian, as Raghavendra suggested). The code in the UI looks like this: load( local!temp: a!httpQuery( url: urlwithparameters("script.google.com/.../exec", {[parameter names here]}, {[parameter values here]}) ), {} )
For anyone trying to accomplish this, the Google Apps Script code is quite simple; basically is using the doGet method detailed here:
developers.google.com/.../web
Thank you again, Jim and Raghavendra! Agustin