SolverProcess may not be 'solved' when there are several 'solve()' Activities...
SolverProcess may not be 'solved' when there are several 'solve()' Activities executed in parallel (#KMS-1126). 1. Two POLs diverge. => Solver Process is created ('draft'). 2. User 'Accept Decision' (Accept Solver) on all of them: 1) Two Accept Solvers are created in the Solver Process, one per divergence. 2) SolverProcess.solve() is called, on each Accept Solver: 1/ AcceptSolver.startSolving() () => Through solver_workflow 'Script (after)': SolverProcess.startSolving() => Solver Process is in 'solving' state. 2/ AcceptSolver.activate().solve() => One solve() Activity per Accept Solver. => AcceptSolver.succeed() => Through solver_workflow 'Script (after)': SolverProcess.succeed() The last step, 'SolverProcess.succeed()', will only be executed if and only if all the other Accept Solver of the Solver Process are in 'solved' state. However, if both Activities are executed in parallel, each Activity does not see the result of the other, and thus the other Accept Solver is still in 'solving' state. At the end the Solver Process may stay in 'solving' state. Considering that transitions of solver_process_workflow are *only* done through solver_workflow and thus depend on the states of its '* Solver' states, it's better to just remove solver_process_workflow to avoid concurrency problems and also because it's not really used anyway.
Showing
Please register or sign in to comment