Skip to content

Commit

Permalink
Update role mining task progress information
Browse files Browse the repository at this point in the history
The progress was not committed into the repository before.
  • Loading branch information
mederly committed Sep 4, 2023
1 parent f7514cd commit a5d4045
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,7 @@ protected void incrementProgress() {
activityRun.incrementProgress(
new QualifiedItemProcessingOutcomeType()
.outcome(ItemProcessingOutcomeType.SUCCESS));
// This is brutal hack as it generates its own operation result. TODO rework
activityRun.getActivityState().getLiveItemProcessingStatistics().updateStatisticsForSimpleClients(true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@

import static com.evolveum.midpoint.util.MiscUtil.configNonNull;

import com.evolveum.midpoint.repo.common.activity.run.*;

import com.evolveum.midpoint.util.exception.*;

import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import org.jetbrains.annotations.NotNull;
Expand All @@ -18,14 +22,9 @@
import com.evolveum.midpoint.repo.common.activity.definition.AbstractWorkDefinition;
import com.evolveum.midpoint.repo.common.activity.definition.AffectedObjectsInformation;
import com.evolveum.midpoint.repo.common.activity.definition.WorkDefinitionFactory;
import com.evolveum.midpoint.repo.common.activity.run.AbstractActivityRun;
import com.evolveum.midpoint.repo.common.activity.run.ActivityRunInstantiationContext;
import com.evolveum.midpoint.repo.common.activity.run.ActivityRunResult;
import com.evolveum.midpoint.repo.common.activity.run.LocalActivityRun;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.RunningTask;
import com.evolveum.midpoint.util.DebugUtil;
import com.evolveum.midpoint.util.exception.ConfigurationException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand Down Expand Up @@ -83,13 +82,16 @@ static class MyActivityRun
}

@Override
protected @NotNull ActivityRunResult runLocally(OperationResult parentResult) {
protected @NotNull ActivityRunResult runLocally(OperationResult parentResult)
throws ActivityRunException, CommonException {
RunningTask runningTask = getRunningTask();
runningTask.setExecutionSupport(this);

// There are 7 steps; currently, we simply increase the progress value by 1 on each step.
// Later, we will provide more elaborate progress reporting.
activityState.getLiveProgress().setExpectedTotal(7);
activityState.updateProgressNoCommit();
activityState.flushPendingTaskModifications(parentResult);

// We need to create a subresult in order to be able to determine its status - we have to close it to get the status.
OperationResult result = parentResult.createSubresult(OP_EXECUTE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,24 @@
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Component;

import com.evolveum.midpoint.model.api.ModelService;
import com.evolveum.midpoint.model.impl.ModelBeans;
import com.evolveum.midpoint.model.impl.mining.algorithm.detection.DetectionActionExecutorNew;
import com.evolveum.midpoint.prism.Referencable;
import com.evolveum.midpoint.repo.common.activity.definition.AbstractWorkDefinition;
import com.evolveum.midpoint.repo.common.activity.definition.AffectedObjectsInformation;
import com.evolveum.midpoint.repo.common.activity.definition.WorkDefinitionFactory;
import com.evolveum.midpoint.repo.common.activity.run.AbstractActivityRun;
import com.evolveum.midpoint.repo.common.activity.run.ActivityRunInstantiationContext;
import com.evolveum.midpoint.repo.common.activity.run.ActivityRunResult;
import com.evolveum.midpoint.repo.common.activity.run.LocalActivityRun;
import com.evolveum.midpoint.repo.common.activity.run.*;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.result.OperationResultStatus;
import com.evolveum.midpoint.task.api.RunningTask;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.task.api.TaskManager;
import com.evolveum.midpoint.util.DebugUtil;
import com.evolveum.midpoint.util.exception.CommonException;
import com.evolveum.midpoint.util.exception.ConfigurationException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractActivityWorkStateType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleAnalysisPatternDetectionWorkDefinitionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemObjectsType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.WorkDefinitionsType;

/**
* TODO
Expand Down Expand Up @@ -94,13 +91,16 @@ class MyActivityRun
}

@Override
protected @NotNull ActivityRunResult runLocally(OperationResult parentResult) {
protected @NotNull ActivityRunResult runLocally(OperationResult parentResult)
throws ActivityRunException, CommonException {
RunningTask runningTask = getRunningTask();
runningTask.setExecutionSupport(this);

// There are 6 steps; currently, we simply increase the progress value by 1 on each step.
// See the analogous situation in RoleAnalysisClusteringActivityHandler.
activityState.getLiveProgress().setExpectedTotal(6);
activityState.updateProgressNoCommit();
activityState.flushPendingTaskModifications(parentResult);

// We need to create a subresult in order to be able to determine its status - we have to close it to get the status.
OperationResult result = parentResult.createSubresult(OP_EXECUTE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ public void done(QualifiedItemProcessingOutcomeType outcome, Throwable exception
recordOperationEnd(this, outcome, exception);
if (startInfo.isSimpleCaller()) {
activityState.getLiveProgress().increment(outcome, ActivityProgress.Counters.COMMITTED);
updateStatisticsForSimpleClients();
updateStatisticsForSimpleClients(false);
}
}

Expand Down Expand Up @@ -327,10 +327,10 @@ public long getEndTimeMillis() {
* Very ugly hack. We create our own operation result (!!).
*/
@Experimental
private void updateStatisticsForSimpleClients() {
public void updateStatisticsForSimpleClients(boolean forced) {
try {
activityState.updateProgressAndStatisticsNoCommit();
if (System.currentTimeMillis() > lastStatisticsUpdatedForSimpleClients + STATISTICS_UPDATE_INTERVAL) {
if (forced || System.currentTimeMillis() > lastStatisticsUpdatedForSimpleClients + STATISTICS_UPDATE_INTERVAL) {
lastStatisticsUpdatedForSimpleClients = System.currentTimeMillis();
activityState.flushPendingTaskModificationsChecked(new OperationResult(OP_UPDATE_STATISTICS_FOR_SIMPLE_CLIENT));
}
Expand Down

0 comments on commit a5d4045

Please sign in to comment.