Search in sources :

Example 41 with AuditEventRecord

use of com.evolveum.midpoint.audit.api.AuditEventRecord in project midpoint by Evolveum.

the class SqaleAuditSearchIterativeTest method initObjects.

@BeforeClass
public void initObjects() throws Exception {
    sqaleAuditService = ((AuditServiceProxy) auditService).getImplementation(SqaleAuditService.class);
    performanceMonitor = sqaleAuditService.getPerformanceMonitor();
    aer = QAuditEventRecordMapping.get().defaultAlias();
    clearAudit();
    OperationResult result = createOperationResult();
    long timestamp = startTimestamp;
    Random random = new Random();
    // we will create two full "pages" of data
    for (int i = 1; i <= ITERATION_PAGE_SIZE * 2; i++) {
        AuditEventRecord record = new AuditEventRecord();
        record.setParameter(paramString(i));
        record.setTimestamp(timestamp);
        auditService.audit(record, NullTaskImpl.INSTANCE, result);
        // 50% chance to change the timestamp by up to a second
        timestamp += random.nextInt(2) * random.nextInt(1000);
    }
}
Also used : SqaleAuditService(com.evolveum.midpoint.repo.sqale.audit.SqaleAuditService) Random(java.util.Random) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) QAuditEventRecord(com.evolveum.midpoint.repo.sqale.audit.qmodel.QAuditEventRecord) AuditEventRecord(com.evolveum.midpoint.audit.api.AuditEventRecord) BeforeClass(org.testng.annotations.BeforeClass)

Example 42 with AuditEventRecord

use of com.evolveum.midpoint.audit.api.AuditEventRecord in project midpoint by Evolveum.

the class PendingAuditRecords method createCaseLevelRecord.

private AuditEventRecord createCaseLevelRecord(@NotNull AuditEventStage stage, @NotNull OperationResult result) {
    CaseType aCase = operation.getCurrentCase();
    AuditEventRecord record = new AuditEventRecord();
    record.setEventType(WORKFLOW_PROCESS_INSTANCE);
    record.setEventStage(stage);
    record.setOutcome(OperationResultStatus.SUCCESS);
    // set real principal in case of explicitly requested process termination (MID-4263)
    PrismObject<UserType> requester = beans.miscHelper.getRequesterIfExists(aCase, result);
    record.setInitiator(requester);
    // TODO we could be more strict and allow non-existence of object only in case of "object add" delta. But we are not.
    ObjectReferenceType objectRef = resolveIfNeeded(aCase.getObjectRef(), true, result);
    ObjectReferenceType targetRef = resolveIfNeeded(aCase.getTargetRef(), false, result);
    record.setTargetRef(objectRef.asReferenceValue());
    record.addReferenceValueIgnoreNull(AuditingConstants.AUDIT_OBJECT, objectRef);
    record.addReferenceValueIgnoreNull(AuditingConstants.AUDIT_TARGET, targetRef);
    if (stage == EXECUTION) {
        String stageInfo;
        if (operation.doesUseStages()) {
            stageInfo = ApprovalContextUtil.getCompleteStageInfo(aCase);
            record.setParameter(stageInfo);
        } else {
            stageInfo = null;
        }
        // FIXME
        String answer = ApprovalUtils.getAnswerNice(aCase);
        record.setResult(answer);
        record.setMessage(stageInfo != null ? stageInfo + " : " + answer : answer);
        if (operation.doesUseStages()) {
            record.addPropertyValueIgnoreNull(AuditingConstants.AUDIT_STAGE_NUMBER, aCase.getStageNumber());
            record.addPropertyValueIgnoreNull(AuditingConstants.AUDIT_STAGE_COUNT, operation.getExpectedNumberOfStages());
            record.addPropertyValueIgnoreNull(AuditingConstants.AUDIT_STAGE_NAME, ApprovalContextUtil.getStageName(aCase));
            record.addPropertyValueIgnoreNull(AuditingConstants.AUDIT_STAGE_DISPLAY_NAME, ApprovalContextUtil.getStageDisplayName(aCase));
        }
    }
    record.addPropertyValue(AuditingConstants.AUDIT_CASE_OID, aCase.getOid());
    record.addPropertyValueIgnoreNull(AuditingConstants.AUDIT_REQUESTER_COMMENT, ApprovalContextUtil.getRequesterComment(aCase));
    return record;
}
Also used : AuditEventRecord(com.evolveum.midpoint.audit.api.AuditEventRecord)

Example 43 with AuditEventRecord

use of com.evolveum.midpoint.audit.api.AuditEventRecord in project midpoint by Evolveum.

the class PendingAuditRecords method addCaseLevelRecord.

private void addCaseLevelRecord(AuditEventStage stage, OperationResult result) {
    AuditEventRecord auditRecord = createCaseLevelRecord(stage, result);
    extension.enrichCaseRecord(auditRecord, operation, result);
    records.add(auditRecord);
}
Also used : AuditEventRecord(com.evolveum.midpoint.audit.api.AuditEventRecord)

Example 44 with AuditEventRecord

use of com.evolveum.midpoint.audit.api.AuditEventRecord in project midpoint by Evolveum.

the class PendingAuditRecords method addWorkItemCreation.

// endregion
// region Work item level
public void addWorkItemCreation(@NotNull CaseWorkItemType workItem, @NotNull OperationResult result) {
    // workItem contains taskRef, assignee, originalAssignee, candidates resolved (if possible)
    CaseType aCase = operation.getCurrentCase();
    AuditEventRecord record = prepareWorkItemAuditRecordCommon(workItem, AuditEventStage.REQUEST, result);
    record.setInitiator(beans.miscHelper.getRequesterIfExists(aCase, result));
    if (operation.doesUseStages()) {
        record.setMessage(ApprovalContextUtil.getCompleteStageInfo(aCase));
    }
    extension.enrichWorkItemCreatedAuditRecord(record, workItem, operation, result);
    records.add(record);
}
Also used : AuditEventRecord(com.evolveum.midpoint.audit.api.AuditEventRecord)

Example 45 with AuditEventRecord

use of com.evolveum.midpoint.audit.api.AuditEventRecord in project midpoint by Evolveum.

the class PendingAuditRecords method prepareWorkItemAuditRecordCommon.

private AuditEventRecord prepareWorkItemAuditRecordCommon(@NotNull CaseWorkItemType workItem, @NotNull AuditEventStage stage, @NotNull OperationResult result) {
    CaseType aCase = operation.getCurrentCase();
    // FIXME!!!
    ApprovalContextType wfc = aCase.getApprovalContext();
    AuditEventRecord record = new AuditEventRecord();
    record.setEventType(AuditEventType.WORK_ITEM);
    record.setEventStage(stage);
    // TODO we could be more strict and allow non-existence of object only in case of "object add" delta. But we are not.
    ObjectReferenceType objectRef = resolveIfNeeded(aCase.getObjectRef(), true, result);
    record.setTargetRef(objectRef.asReferenceValue());
    record.setOutcome(OperationResultStatus.SUCCESS);
    if (operation.doesUseStages()) {
        record.setParameter(ApprovalContextUtil.getCompleteStageInfo(aCase));
    }
    record.addReferenceValueIgnoreNull(AuditingConstants.AUDIT_OBJECT, objectRef);
    record.addReferenceValueIgnoreNull(AuditingConstants.AUDIT_TARGET, resolveIfNeeded(aCase.getTargetRef(), false, result));
    record.addReferenceValueIgnoreNull(AuditingConstants.AUDIT_ORIGINAL_ASSIGNEE, resolveIfNeeded(workItem.getOriginalAssigneeRef(), false, result));
    record.addReferenceValues(AuditingConstants.AUDIT_CURRENT_ASSIGNEE, resolveIfNeeded(workItem.getAssigneeRef(), false, result));
    if (operation.doesUseStages()) {
        record.addPropertyValueIgnoreNull(AuditingConstants.AUDIT_STAGE_NUMBER, workItem.getStageNumber());
        record.addPropertyValueIgnoreNull(AuditingConstants.AUDIT_STAGE_COUNT, ApprovalContextUtil.getStageCount(wfc));
        record.addPropertyValueIgnoreNull(AuditingConstants.AUDIT_STAGE_NAME, ApprovalContextUtil.getStageName(aCase));
        record.addPropertyValueIgnoreNull(AuditingConstants.AUDIT_STAGE_DISPLAY_NAME, ApprovalContextUtil.getStageDisplayName(aCase));
    }
    record.addPropertyValueIgnoreNull(AuditingConstants.AUDIT_ESCALATION_LEVEL_NUMBER, WorkItemTypeUtil.getEscalationLevelNumber(workItem));
    record.addPropertyValueIgnoreNull(AuditingConstants.AUDIT_ESCALATION_LEVEL_NAME, WorkItemTypeUtil.getEscalationLevelName(workItem));
    record.addPropertyValueIgnoreNull(AuditingConstants.AUDIT_ESCALATION_LEVEL_DISPLAY_NAME, WorkItemTypeUtil.getEscalationLevelDisplayName(workItem));
    record.addPropertyValue(AuditingConstants.AUDIT_WORK_ITEM_ID, WorkItemId.create(aCase.getOid(), workItem.getId()).asString());
    return record;
}
Also used : AuditEventRecord(com.evolveum.midpoint.audit.api.AuditEventRecord)

Aggregations

AuditEventRecord (com.evolveum.midpoint.audit.api.AuditEventRecord)83 OperationResult (com.evolveum.midpoint.schema.result.OperationResult)28 Task (com.evolveum.midpoint.task.api.Task)18 Test (org.testng.annotations.Test)18 ObjectDeltaOperation (com.evolveum.midpoint.schema.ObjectDeltaOperation)11 SchemaException (com.evolveum.midpoint.util.exception.SchemaException)9 ObjectDelta (com.evolveum.midpoint.prism.delta.ObjectDelta)8 PrismObject (com.evolveum.midpoint.prism.PrismObject)7 ObjectType (com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType)6 ArrayList (java.util.ArrayList)6 MidPointPrincipal (com.evolveum.midpoint.security.api.MidPointPrincipal)5 NullTaskImpl (com.evolveum.midpoint.task.api.test.NullTaskImpl)5 PolyString (com.evolveum.midpoint.prism.polystring.PolyString)4 MAuditEventRecord (com.evolveum.midpoint.repo.sql.audit.beans.MAuditEventRecord)4 AuditResultHandler (com.evolveum.midpoint.audit.api.AuditResultHandler)3 MidpointAuthentication (com.evolveum.midpoint.authentication.api.config.MidpointAuthentication)3 Message (com.evolveum.midpoint.notifications.api.transports.Message)3 QAuditEventRecord (com.evolveum.midpoint.repo.sql.audit.querymodel.QAuditEventRecord)3 ObjectNotFoundException (com.evolveum.midpoint.util.exception.ObjectNotFoundException)3 AuditEventRecordType (com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventRecordType)3