Related action visibility

Hi,

We are using related action heavily in our application. When a user clicks the related action multiple time repeatedly with less than seconds difference or, if two users click on the related action at the same time, then multiple instance of the process start, we should avoid this, the process should only start once for the person who clicked it the first time.
I tried to solve this in multiple ways:
1. I made a process model report for this process and used query analytics expression to get a count of instances of the process by passing some process variables, now I used this in the exception flow and checked if the count is greater than 1 then end the process. In this case when related action is clicked multiple times all the instances are ending by exception.
2. I made a task report by process model and used query analytics expression to get a count of "assigned" and "accepted" ...

OriginalPostID-240499

  Discussion posts and replies are publicly visible

  • ...tasks, in this case I put an exception flow UI task to check the count not equal to 0, here it is behaving inconsistently, let's say I click on related action 8 times simultaneously then 2 process instances don't end by exception. And this number varies randomly. Sometime only one instance remains active but it is not consistent.
    Please let me know if there is any other solution.
  • @tanmayareddyn Have you had a chance to take a look at the post at /search?q=OriginalPostID-215481 and https://forum.appian.com/suite/help/16.3/Data_Locking_Strategies.html#Optimistic_Locking? Or is it that you have had a look but not satisfied with the strategies? I think by opting for these approaches you would be able to launch a Related Action at times but the database updates made will be able to restrict you moving further in the process provided if a check for a lock is in place.
  • Its going to be hard to stop the clicking of a related action multiple times quickly. Any checks that you put in place to stop a user from proceeding if a process already exists wouldn't have time to be updated in time. You could have a timer where if the process doesn't end in X minutes/hours/days then the process ends.

    If you are having issues with the process report, the other option is to create a database table and log when you enter and leave the process. If any subsequent processes try to come in, you query the database and see if an "active" record exists.
  • @sikhivahans Thanks for the info. Will check more on it. Since we are in a rush for now we are implementing check number of instances of the process for a given combination of unique key and cancelling the process if there are multiple.