We are trying to use Flowable as the backbone of a small robot automation setup where the process is usually running in an “endless” mode and the user would like to stop and continue the running processes. Currently, we implement this by using “ReceiveTasks” after every step (“ServiceTask”) and then trigger the execution with a background job in case the user didn’t hit the stop button.
This is pretty ugly and potentially error prone and I would like to ask how developers usually pause processes with Flowable?
I tried to “suspend” the process but realized that there are no processes stored in the engine in the query with:
Unless the process is either waiting in a receiveTask or something similar.
Any help is greatly appreciated! A related question to this is if flowable is even meant to be utilized as a form of system with a long-running/infinite process or is it supposed to be a process instantiated by external events?
In your case I would prefer to solve the break points on the model level (e.g. encapsulate endless loop in the subprocess with attached message/signal to break the loop) or add the break to each service task during the process definition parsing. In fact option 2 is your current solution but without the need to add all receive task into process model but the receive task is added automatically when process definition is parsed
Process instance state is stored into the database only when wait state is reached. So in case when there is no wait state between start and end events nothing is stored in runtime tables (only in the history tables when history is allowed)
Each execution of the process opens transaction to the DB (default configuration). The transaction must be finished before transaction timeout. That’s the limitation for the execution length.
I do not know your process requirements that’s why it is hard to judge whether flowable would suit your needs or not.