public static boolean isApprovedFromUri(String uri) { return isApproved(fromUri(uri)); }
@Override public List<ObjectReferenceType> prepareApprovedBy(ProcessEvent event, PcpWfTask job, OperationResult result) { WfContextType wfc = job.getTask().getWorkflowContext(); List<ObjectReferenceType> rv = new ArrayList<>(); if (!ApprovalUtils.isApprovedFromUri(event.getOutcome())) { // wfc.approved is not filled in yet return rv; } for (WorkItemCompletionEventType completionEvent : WfContextUtil.getEvents(wfc, WorkItemCompletionEventType.class)) { if (ApprovalUtils.isApproved(completionEvent.getOutput()) && completionEvent.getInitiatorRef() != null) { rv.add(completionEvent.getInitiatorRef().clone()); } } return rv; }
@NotNull private static Collection<String> getApproverComments(WfContextType wfc, PerformerCommentsFormatter formatter, Task opTask, OperationResult result) { if (wfc == null) { return emptySet(); } return wfc.getEvent().stream() .flatMap(MiscUtil.instancesOf(WorkItemCompletionEventType.class)) .filter(e -> ApprovalUtils.isApproved(e.getOutput()) && e.getInitiatorRef() != null) .map(e -> formatter.formatComment(e, opTask, result)) .filter(Objects::nonNull) .collect(Collectors.toSet()); }
@NotNull private static List<ObjectReferenceType> getApprovedBy(WfContextType wfc) { return wfc == null ? Collections.emptyList() : wfc.getEvent().stream() .flatMap(MiscUtil.instancesOf(WorkItemCompletionEventType.class)) .filter(e -> ApprovalUtils.isApproved(e.getOutput()) && e.getInitiatorRef() != null) .map(e -> e.getInitiatorRef()) .collect(Collectors.toList()); }
for (WorkItemCompletionEventType event : itemEvents) { LOGGER.trace(" - {}", event); allApproved &= ApprovalUtils.isApproved(event.getOutput()); itemEvents.sort(Comparator.nullsLast(Comparator.comparing(event -> XmlTypeConverter.toMillis(event.getTimestamp())))); WorkItemCompletionEventType first = itemEvents.get(0); approved = ApprovalUtils.isApproved(first.getOutput()); LOGGER.warn("Possible race condition, so taking the first one: {} ({})", approved, first);
@Override public WorkItemResultType extractWorkItemResult(Map<String, Object> variables) { Boolean wasCompleted = ActivitiUtil.getVariable(variables, VARIABLE_WORK_ITEM_WAS_COMPLETED, Boolean.class, prismContext); if (BooleanUtils.isNotTrue(wasCompleted)) { return null; } WorkItemResultType result = new WorkItemResultType(prismContext); result.setOutcome(ActivitiUtil.getVariable(variables, FORM_FIELD_OUTCOME, String.class, prismContext)); result.setComment(ActivitiUtil.getVariable(variables, FORM_FIELD_COMMENT, String.class, prismContext)); String additionalDeltaString = ActivitiUtil.getVariable(variables, FORM_FIELD_ADDITIONAL_DELTA, String.class, prismContext); boolean isApproved = ApprovalUtils.isApproved(result); if (isApproved && StringUtils.isNotEmpty(additionalDeltaString)) { try { ObjectDeltaType additionalDelta = prismContext.parserFor(additionalDeltaString).parseRealValue(ObjectDeltaType.class); ObjectTreeDeltasType treeDeltas = new ObjectTreeDeltasType(); treeDeltas.setFocusPrimaryDelta(additionalDelta); result.setAdditionalDeltas(treeDeltas); } catch (SchemaException e) { LoggingUtils.logUnexpectedException(LOGGER, "Couldn't parse delta received from the activiti form:\n{}", e, additionalDeltaString); throw new SystemException("Couldn't parse delta received from the activiti form: " + e.getMessage(), e); } } return result; }
boolean isApproved = ApprovalUtils.isApproved(result1);