• Yusei Tahara's avatar
    SolverProcess may not be 'solved' when there are several 'solve()' Activities... · 5effdc8f
    Yusei Tahara authored
    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.
    
    Thus try to update solver process workflow state after target solver finished its job
    by activity. Also try to update solver process workflow state when a new divergence occurs
    and if solver process is still in solving state.
    5effdc8f
SolverProcess_succeed.xml 2.99 KB