From 35b261b1c799041e0f47a37e8141cfb0359a21c0 Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Fri, 3 Mar 2017 14:46:03 +0100 Subject: [PATCH] Requester comment is stored into process start/end events. --- .../admin/reports/PageAuditLogDetails.java | 1 + .../midpoint/wf/api/WorkflowConstants.java | 1 + .../wf/impl/processors/BaseAuditHelper.java | 8 ++++++-- .../policy/other/TestSimpleCompletion.java | 20 +++++++++++++++++-- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogDetails.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogDetails.java index 58e90848f3b..611ee267726 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogDetails.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageAuditLogDetails.java @@ -107,6 +107,7 @@ public class PageAuditLogDetails extends PageBase { WorkflowConstants.AUDIT_ESCALATION_LEVEL_NUMBER, WorkflowConstants.AUDIT_ESCALATION_LEVEL_NAME, WorkflowConstants.AUDIT_ESCALATION_LEVEL_DISPLAY_NAME, + WorkflowConstants.AUDIT_REQUESTER_COMMENT, WorkflowConstants.AUDIT_COMMENT, WorkflowConstants.AUDIT_WORK_ITEM_ID, WorkflowConstants.AUDIT_PROCESS_INSTANCE_ID); diff --git a/model/workflow-api/src/main/java/com/evolveum/midpoint/wf/api/WorkflowConstants.java b/model/workflow-api/src/main/java/com/evolveum/midpoint/wf/api/WorkflowConstants.java index 9260c1f9b09..bfe92931363 100644 --- a/model/workflow-api/src/main/java/com/evolveum/midpoint/wf/api/WorkflowConstants.java +++ b/model/workflow-api/src/main/java/com/evolveum/midpoint/wf/api/WorkflowConstants.java @@ -39,4 +39,5 @@ public class WorkflowConstants { public static final String AUDIT_ESCALATION_LEVEL_DISPLAY_NAME = "wf.escalationLevelDisplayName"; public static final String AUDIT_WORK_ITEM_ID = "wf.workItemId"; public static final String AUDIT_PROCESS_INSTANCE_ID = "wf.processInstanceId"; + public static final String AUDIT_REQUESTER_COMMENT = "wf.requesterComment"; } diff --git a/model/workflow-impl/src/main/java/com/evolveum/midpoint/wf/impl/processors/BaseAuditHelper.java b/model/workflow-impl/src/main/java/com/evolveum/midpoint/wf/impl/processors/BaseAuditHelper.java index 8fede34ff79..c43596a99b0 100644 --- a/model/workflow-impl/src/main/java/com/evolveum/midpoint/wf/impl/processors/BaseAuditHelper.java +++ b/model/workflow-impl/src/main/java/com/evolveum/midpoint/wf/impl/processors/BaseAuditHelper.java @@ -26,6 +26,7 @@ import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.result.OperationResultStatus; import com.evolveum.midpoint.schema.util.ObjectTypeUtil; +import com.evolveum.midpoint.schema.util.WfContextUtil; import com.evolveum.midpoint.security.api.SecurityEnforcer; import com.evolveum.midpoint.util.exception.ObjectNotFoundException; import com.evolveum.midpoint.util.exception.SchemaException; @@ -38,8 +39,6 @@ import com.evolveum.midpoint.wf.impl.tasks.WfTask; import com.evolveum.midpoint.wf.util.ApprovalUtils; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; -import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; -import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; @@ -94,6 +93,11 @@ public AuditEventRecord prepareProcessInstanceAuditRecord(WfTask wfTask, AuditEv record.addPropertyValueIgnoreNull(WorkflowConstants.AUDIT_STAGE_DISPLAY_NAME, wfc.getStageDisplayName()); } record.addPropertyValue(WorkflowConstants.AUDIT_PROCESS_INSTANCE_ID, wfc.getProcessInstanceId()); + OperationBusinessContextType businessContext = WfContextUtil.getBusinessContext(wfc); + String requesterComment = businessContext != null ? businessContext.getComment() : null; + if (requesterComment != null) { + record.addPropertyValue(WorkflowConstants.AUDIT_REQUESTER_COMMENT, requesterComment); + } return record; } diff --git a/model/workflow-impl/src/test/java/com/evolveum/midpoint/wf/impl/policy/other/TestSimpleCompletion.java b/model/workflow-impl/src/test/java/com/evolveum/midpoint/wf/impl/policy/other/TestSimpleCompletion.java index 52b924dd363..04680eb2904 100644 --- a/model/workflow-impl/src/test/java/com/evolveum/midpoint/wf/impl/policy/other/TestSimpleCompletion.java +++ b/model/workflow-impl/src/test/java/com/evolveum/midpoint/wf/impl/policy/other/TestSimpleCompletion.java @@ -16,6 +16,8 @@ package com.evolveum.midpoint.wf.impl.policy.other; +import com.evolveum.midpoint.audit.api.AuditEventRecord; +import com.evolveum.midpoint.audit.api.AuditEventType; import com.evolveum.midpoint.model.api.ModelExecuteOptions; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.delta.ObjectDelta; @@ -24,6 +26,7 @@ import com.evolveum.midpoint.schema.util.WfContextUtil; import com.evolveum.midpoint.task.api.Task; import com.evolveum.midpoint.test.util.TestUtil; +import com.evolveum.midpoint.wf.api.WorkflowConstants; import com.evolveum.midpoint.wf.impl.activiti.ActivitiEngine; import com.evolveum.midpoint.wf.impl.policy.AbstractWfTestPolicy; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; @@ -33,6 +36,7 @@ import org.testng.annotations.Test; import java.util.Collection; +import java.util.Collections; import java.util.List; import static com.evolveum.midpoint.test.IntegrationTestTools.display; @@ -65,8 +69,11 @@ public void test100SimpleApprove() throws Exception { // GIVEN + dummyAuditService.clear(); + OperationBusinessContextType businessContext = new OperationBusinessContextType(); - businessContext.setComment("req.comment"); + final String REQUESTER_COMMENT = "req.comment"; + businessContext.setComment(REQUESTER_COMMENT); ObjectDelta userDelta = createAssignmentUserDelta(userJackOid, roleRole1aOid, RoleType.COMPLEX_TYPE, null, null, null, true); Collection> deltas = MiscSchemaUtil.createCollection(userDelta); @@ -88,13 +95,22 @@ public void test100SimpleApprove() throws Exception { WfProcessCreationEventType event1 = (WfProcessCreationEventType) events.get(0); display("Event 1", event1); - assertEquals("Wrong requester comment", "req.comment", WfContextUtil.getBusinessContext(wfTask.getWorkflowContext()).getComment()); + assertEquals("Wrong requester comment", REQUESTER_COMMENT, WfContextUtil.getBusinessContext(wfTask.getWorkflowContext()).getComment()); WorkItemEventType event2 = (WorkItemEventType) events.get(1); display("Event 2", event2); assertNotNull("Original assignee is null", event2.getOriginalAssigneeRef()); assertEquals("Wrong original assignee OID", userLead1Oid, event2.getOriginalAssigneeRef().getOid()); + + display("audit", dummyAuditService); + List records = dummyAuditService.getRecordsOfType(AuditEventType.WORKFLOW_PROCESS_INSTANCE); + assertEquals("Wrong # of process instance audit records", 2, records.size()); + for (int i = 0; i < records.size(); i++) { + AuditEventRecord record = records.get(i); + assertEquals("Wrong requester comment in audit record #" + i, Collections.singleton(REQUESTER_COMMENT), + record.getPropertyValues(WorkflowConstants.AUDIT_REQUESTER_COMMENT)); + } } }