Get data from the Database - process model

Certified Associate Developer

Hello community,


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

Parents
  • 0
    Certified Senior Developer

    Hi Pavol,

    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,barat

  • 0
    Certified Associate Developer
    in reply to baratc

    Hello Barat,

     

    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.

     

    For example:

    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.

     

    Pavol

Reply
  • 0
    Certified Associate Developer
    in reply to baratc

    Hello Barat,

     

    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.

     

    For example:

    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.

     

    Pavol

Children
  • 0
    Certified Lead Developer
    in reply to pavolkuka

    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.