private void addAssignmentApprovalMetadataOnObjectAdd(PrismObject<?> object, Task task, OperationResult result) throws SchemaException { Objectable objectable = object.asObjectable(); if (!(objectable instanceof FocusType)) { return; } FocusType focus = (FocusType) objectable; Collection<ObjectReferenceType> approvedBy = workflowManager.getApprovedBy(task, result); Collection<String> comments = workflowManager.getApproverComments(task, result); for (AssignmentType assignment : focus.getAssignment()) { addAssignmentCreationApprovalMetadata(assignment, approvedBy, comments); } }
public <T extends ObjectType, F extends ObjectType> void applyMetadataModify(ObjectDelta<T> objectDelta, LensElementContext<T> objectContext, Class objectTypeClass, XMLGregorianCalendar now, Task task, LensContext<F> context, OperationResult result) throws SchemaException { ItemDeltaCollectionsUtil.mergeAll(objectDelta.getModifications(), createModifyMetadataDeltas(context, ObjectType.F_METADATA, objectTypeClass, now, task)); List<PrismReferenceValue> approverReferenceValues = new ArrayList<>(); List<String> approverComments = new ArrayList<>(); if (workflowManager != null) { for (ObjectReferenceType approverRef : workflowManager.getApprovedBy(task, result)) { approverReferenceValues.add(prismContext.itemFactory().createReferenceValue(approverRef.getOid())); } approverComments.addAll(workflowManager.getApproverComments(task, result)); } ItemDeltaCollectionsUtil.mergeAll(objectDelta.getModifications(), prismContext.deltaFor(objectTypeClass) .item(ObjectType.F_METADATA, MetadataType.F_MODIFY_APPROVER_REF).replace(approverReferenceValues) .item(ObjectType.F_METADATA, MetadataType.F_MODIFY_APPROVAL_COMMENT).replaceRealValues(approverComments) .asItemDeltas()); if (FocusType.class.isAssignableFrom(objectTypeClass)) { applyAssignmentMetadataDelta((LensContext) context, (ObjectDelta)objectDelta, now, task, result); } }
public <T extends ObjectType, F extends ObjectType> void applyMetadataAdd(LensContext<F> context, PrismObject<T> objectToAdd, XMLGregorianCalendar now, Task task, OperationResult result) throws SchemaException { T objectType = objectToAdd.asObjectable(); MetadataType metadataType = objectType.getMetadata(); if (metadataType == null) { metadataType = new MetadataType(); objectType.setMetadata(metadataType); } transplantRequestMetadata(context, metadataType); applyCreateMetadata(context, metadataType, now, task); if (workflowManager != null) { metadataType.getCreateApproverRef().addAll(workflowManager.getApprovedBy(task, result)); metadataType.getCreateApprovalComment().addAll(workflowManager.getApproverComments(task, result)); } if (objectToAdd.canRepresent(FocusType.class)) { applyAssignmentMetadataObject((LensContext<? extends FocusType>) context, objectToAdd, now, task, result); } }
Collection<String> comments = workflowManager.getApproverComments(task, result); Set<Long> processedIds = new HashSet<>(); List<ItemDelta<?,?>> assignmentMetadataDeltas = new ArrayList<>();