[midPoint-git] [Evolveum/midpoint] 5418da: Start implementing "simulated execution"

mederly noreply at github.com
Tue Nov 29 23:12:18 CET 2022


  Branch: refs/heads/feature/simulations
  Home:   https://github.com/Evolveum/midpoint
  Commit: 5418da715bab766a59404cee59ae4d994f8c6179
      https://github.com/Evolveum/midpoint/commit/5418da715bab766a59404cee59ae4d994f8c6179
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2022-11-29 (Tue, 29 Nov 2022)

  Changed paths:
    M gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressReporter.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/TaskExecutionMode.java
    M model/model-api/src/main/java/com/evolveum/midpoint/model/api/ModelInteractionService.java
    M model/model-api/src/main/java/com/evolveum/midpoint/model/api/ModelService.java
    M model/model-api/src/main/java/com/evolveum/midpoint/model/api/ProgressListener.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/ModelCrudService.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/controller/ModelController.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/controller/ModelInteractionServiceImpl.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/controller/RawChangesExecutor.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/importer/ObjectImporter.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/AssignmentCollector.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/Clockwork.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/ClockworkAuditHelper.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/ContextFactory.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/ElementState.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensContext.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensContextPlaceholder.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensFocusContext.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/OperationExecutionRecorderForClockwork.java
    A model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/StolenContainerValueIdGenerator.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/executor/DeltaExecution.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/scripting/actions/ModifyExecutor.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/GuiProfileCompiler.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/sync/action/BaseClockworkAction.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/util/ModelImplUtils.java
    M model/model-impl/src/test/java/com/evolveum/midpoint/model/impl/AbstractModelImplementationIntegrationTest.java
    M model/model-impl/src/test/java/com/evolveum/midpoint/model/impl/lens/TestAssignmentProcessor2.java
    M model/model-impl/src/test/java/com/evolveum/midpoint/model/impl/util/RecordingProgressListener.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/DelayingProgressListener.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java
    A model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestSimpleSimulations.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/simulation/TestPreviewChangesCoD.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/util/CheckingProgressListener.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/util/DelayingProgressListener.java
    M model/model-test/src/main/java/com/evolveum/midpoint/model/test/AbstractModelIntegrationTest.java
    A model/model-test/src/main/java/com/evolveum/midpoint/model/test/ObjectsCounter.java
    A model/model-test/src/main/java/com/evolveum/midpoint/model/test/SimulationResult.java
    M repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/TestResource.java
    A repo/task-api/src/main/java/com/evolveum/midpoint/task/api/ChangeExecutionListener.java
    M repo/task-api/src/main/java/com/evolveum/midpoint/task/api/Task.java
    M repo/task-api/src/main/java/com/evolveum/midpoint/task/api/test/NullTaskImpl.java
    M repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskQuartzImpl.java

  Log Message:
  -----------
  Start implementing "simulated execution"

This is the first attempt at implementing "simulated execution"
at the model (clockwork) level.

Some ideas:

1. Not sure how to report simulated operations. One option is
to use the same mechanism as we have for audit (i.e. just like we
audit executed deltas, we could "audit" simulated ones). The drawback
is that some lower-level deltas could not be captured in this
way. So, as a quick hack, we use preliminary change listener bound
to the Task object.

2. Simulated execution of ADD, MODIFY, and DELETE operations is
implemented in DeltaExecution class. There are other places where such
redirection should be done, or at least researched, though.

3. Rotting of lens context had to be adapted, see the relevant changes.
To compensate for re-loading the changed objects from the repository,
ElementState#updateAfterExecution method had to be hacked a bit.

4. Of course, operation execution recording is disabled for simulations.
Auditing is disabled as well.

EXPERIMENTAL CODE. Brutal hacking for now.




More information about the midPoint-svn mailing list