Could you please advise me. I am trying to figure out how handle some timeout or problem during get data from database.For the displaying partly of my interface I need to get data from the Database. This data is not mandatory only optional. Have you got any idea how handle situation when that database will be unavailable or reach timeout -to continue display data in my interface? Because now I will receive error message and all interface(application) is affected - because data is get for construct the interface.My idea was create an asynchronous sub-process for retrieving data from the database - but I was not able to find this solution in the best practices and on the other hand I was not able to create it - because to starting the process the system wait to any trigger/input.
Have you got experience with it?Thanks in advance,Pavol
Discussion posts and replies are publicly visible
Based on my experience , im sharing the following options. Recently I tried below 3 options and option 3 helped me .
1) Execute the SQL in backend and verify the performance. Please create the expression rule and query the data from appian and verify the response. if the response is timing out .
a) Check if your querying table or view. Make sure to pass the filters (if possible pls include primary key).
b)If your querying view, please see whether you can fine tune the sql or if table try adding indexes/partitions (DBA can help)
c)if above options didn't work , create stored procedure to query the data and call the procedure from the process model using smart service or from expression rue using function.
Please let me know if you find any challenges.
Thanks for your answer, but my question was about protentional performance issue in the future. I am trying to build application which must be available almost in 100%. I am just considering how to ensure that application will work in the case if the database which contains not mandatory information from application perspective will be unavailable. I am trying to develop mechanism which use data from the database if the database will be "healthy" and in the case if database will be not healthy (timeout or unavailable) - loading the data use for my interface will skip. But this is UI - therefore maybe only complicated ways how to do it are available.
I know that I can resolve it by using Boolean value - on the basis the value the interface will use or not will use data from database. But I need know the Boolean value at the beginning of showing the interface.
I am just thinking - how verify status of the database and on the basis the status of the database make decision whether data from database will be used or not during loading the interface.
The problem with this is that you import infrastructure issues into the application. This kind of issues must be solved on infrastructure level. I know, this might sound a bit ignorant. Our typical apps rely on external systems and overall reliability is the sum of each systems reliability.
If you need to manage technical time outs, your UI will lack and your users will not be happy. Nobody wants to wait for >10 seconds.
One officially supported option could be to use a synchronized record. Then data is local. But it might be that this does not work in your case.
Even I have similar question get data from DB - using process model. could you please tell more detail of option 3, i.e C.
© 2022 Appian. All rights reserved.