I am working on a project where I need to refresh an entire interface after a process model has completed execution. I need to ensure that once this process model finishes executing, the associated interface is refreshed to reflect any changes.
I have tried using the onSuccess property to trigger a refresh, but unfortunately, I have not been successful with this approach.
onSuccess
I would appreciate any advice or examples on how to implement this. Specifically, I am looking for guidance on:
Thank you in advance for your assistance!
Discussion posts and replies are publicly visible
Not sure if refreshing the whole interface is possible OOTB but if you need to get the data back from the process once it is finished you can do the following.
in the onSuccess do a list of a!save instead of a!refreshContent
Looking at the documentation you have access to the fv!processInfo, with this you can update any variables related to this for example if you are making a modification to ri!book and in the process you have a process variable pv!book.
You can add a save to the onSuccess parameter as follows
onSuccess: { a!save( ri!book, fv!processInfo.pv.book ) }
which then the data will be updated in your interface.
Read more on a!startProcessLink here -> docs.appian.com/.../Start_Process_Smart_Service.html
Make sure your all your nodes in the process model are activity chained.
You can also try having all your local variable in the refreshVariable() with refresh on variable change configuration. On the Onsuccess parameter of start process change the value of the variable on which the interface's local variables are refreshed.
The trick with Appian is to not try to refresh "the interface", but refresh the data the interface displays. I assume that you store some values to local variables. You can use a!refreshVariable to make those refresh.
In such tricky situations, where I need very clear control on when something refreshes, I use a local variable "refreshCounter". For the locals I want refreshed, I use a!refreshVariable like this
a!localVariables( local!refreshCounter: 0, local!yourLocale: a!refreshVariable( value: <YOUR_VALUE> refreshOnVarChange: local!refreshCounter ) )
I can then use a!save() to increase that counter from anywhere within the interface.
BTW, how did you come up with "a!refreshContent"?