Hi Community,
I'm exploring a lightweight auto-save strategy for a Portal form and would appreciate some guidance.
️ I understand that triggering a Web API on every keystroke or field update is not supported or scalable in Portals — totally agree with that.
Here's the approach I'm considering:
On initial form load, generate a draftId (UUID) and store it (via URL or localStorage).
draftId
localStorage
Hold all inputs in local!formData.
local!formData
Every 30 seconds (or on key actions like tab change or “Save Draft”), send a full snapshot of the form to a Web API using a!toJson(local!formData).
a!toJson(local!formData)
On form reload, use the draftId to fetch and restore the saved draft using a!fromJson().
a!fromJson()
My questions:
Is a!toJson() / a!fromJson() supported and reliable in Portals?
a!toJson()
Can we safely trigger a Web API every 30 seconds to save the form data? Any performance or timeout issues to consider?
Discussion posts and replies are publicly visible
It looks like a!toJson() is not compatible with portals: https://docs.appian.com/suite/help/25.2/fnc_system_a_tojson.html
As far as auto-save scalability, the answer is (unfortunately) "it depends". How many users are there? How complicated is the form data that's being saved? Is the user ok with incomplete auto-saved information? Will your internal Appian users understand what incomplete information looks like? In ideal scenarios, it is likely ok to auto-save every 30 seconds, supposing you can get the underlying mechanisms working properly.
Timeout issues are a function of overall Appian system load, how deep the activity chain goes on any processes triggered by the API, and general best practices in writing performant code.
Why do you need that toJson on the portal? Use an integration to call back to Appian will transport any local data as a JSON automatically.
How would you trigger the API every 30 seconds?
You correctly point out that a!toJson() is REPORTED TO BE "incompatible" with portals - but i believe this claim itself is an error, as after extensive testing on my own sites, it turns out it WORKS JUST FINE. I figure it's a matter of the documentation keeping up with the technology, or something similar.
As to the technical nature of what you're after - I defer to Stefan's guidance, in that integrations *should* be handling JSON conversion for you, and that you should be able to simply pass raw data (unless there's some other special reason you require JSON translation that you haven't specified).
harishbabub6381 said:Is a!toJson() / a!fromJson() supported and reliable in Portals?
Not supported directly in Portal interfaces. Instead, send your form data as maps from the Portal and convert to/from JSON inside a Web API that the Portal calls.
harishbabub6381 said:Can we safely trigger a Web API every 30 seconds to save the form data? Any performance or timeout issues to consider?
Calling a Web API every 30 seconds for auto-save is supported and Portals auto-scale to handle traffic. To reduce load, consider increasing the interval to 60 seconds. Use URL parameters for storing draftId since localStorage isn’t available in Portals.https://docs.appian.com/suite/help/25.2/portals-security.htmlhttps://docs.appian.com/suite/help/25.2/portal-capabilities.html