diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java index 23969da6f1b..1cd44fd1952 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java @@ -621,7 +621,7 @@ public static TaskType createSingleRecurrenceTask(String taskName, QName applica ObjectReferenceType ownerRef = new ObjectReferenceType(); ownerRef.setOid(owner.getOid()); - ownerRef.setType(owner.getFocus().COMPLEX_TYPE); + ownerRef.setType(UserType.COMPLEX_TYPE); task.setOwnerRef(ownerRef); task.setBinding(TaskBindingType.LOOSE); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebModelServiceUtils.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebModelServiceUtils.java index cdcf057334d..84653e2b7f5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebModelServiceUtils.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebModelServiceUtils.java @@ -11,6 +11,7 @@ import java.util.*; import com.evolveum.midpoint.prism.PrismReferenceValue; +import com.evolveum.midpoint.schema.ObjectDeltaOperation; import com.evolveum.midpoint.util.MiscUtil; import com.evolveum.midpoint.util.QNameUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; @@ -184,15 +185,18 @@ public static List createObjectRefer return null; } - public static String runTask(TaskType taskToRun, Task operationalTask, OperationResult parentResult, PageBase pageBase){ + public static String runTask(TaskType taskToRun, Task operationalTask, OperationResult parentResult, PageBase pageBase){ try { ObjectDelta delta = DeltaFactory.Object.createAddDelta(taskToRun.asPrismObject()); pageBase.getPrismContext().adopt(delta); - pageBase.getModelService().executeChanges(MiscUtil.createCollection(delta), null, + Collection> deltaOperationRes = pageBase.getModelService().executeChanges(MiscUtil.createCollection(delta), null, operationalTask, parentResult); + if (StringUtils.isEmpty(delta.getOid()) && deltaOperationRes != null && !deltaOperationRes.isEmpty()){ + ObjectDeltaOperation deltaOperation = deltaOperationRes.iterator().next(); + delta.setOid(deltaOperation.getObjectDelta().getOid()); + } parentResult.recordInProgress(); parentResult.setBackgroundTaskOid(delta.getOid()); - pageBase.showResult(parentResult); return delta.getOid(); } catch (ObjectAlreadyExistsException | ObjectNotFoundException | SchemaException | ExpressionEvaluationException | CommunicationException | ConfigurationException diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java index 8078814c6c0..33f386db693 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java @@ -340,13 +340,13 @@ private ModelExecuteOptions createOptions() { private void onMultiUserRequestPerformed(AjaxRequestTarget target) { OperationResult result = new OperationResult(OPERATION_REQUEST_ASSIGNMENTS); Task operationalTask = createSimpleTask(OPERATION_REQUEST_ASSIGNMENTS); - + String executionTaskOid = null; try { TaskType task = WebComponentUtil.createSingleRecurrenceTask( createStringResource(OPERATION_REQUEST_ASSIGNMENTS).getString(), UserType.COMPLEX_TYPE, getTaskQuery(), prepareDelta(null, result), createOptions(), TaskCategory.EXECUTE_CHANGES, PageAssignmentsList.this); - WebModelServiceUtils.runTask(task, operationalTask, result, PageAssignmentsList.this); + executionTaskOid = WebModelServiceUtils.runTask(task, operationalTask, result, PageAssignmentsList.this); } catch (SchemaException e) { result.recordFatalError(result.getOperation(), e); result.setMessage(createStringResource("PageAssignmentsList.requestError").getString()); @@ -354,7 +354,7 @@ private void onMultiUserRequestPerformed(AjaxRequestTarget target) { "Failed to execute operaton " + result.getOperation(), e); target.add(getFeedbackPanel()); } - if (hasBackgroundTaskOperation(result)) { + if (hasBackgroundTaskOperation(result) || StringUtils.isNotEmpty(executionTaskOid)) { result.setMessage(createStringResource("PageAssignmentsList.requestInProgress").getString()); showResult(result); clearStorage();