public ApprovalStageDefinitionType approverExpression(ExpressionType value) { getApproverExpression().add(value); return this; }
private boolean shouldBeSkipped(ApprovalStageDefinitionType stage) { if (!stage.getApproverRelation().isEmpty()) { throw new IllegalStateException("Schema stage was not prepared correctly; contains unresolved approver relations: " + stage); } return stage.getOutcomeIfNoApprovers() == ApprovalLevelOutcomeType.SKIP && stage.getApproverRef().isEmpty() && stage.getApproverExpression().isEmpty(); } }
public List<ExpressionType> createApproverExpressionList() { PrismForJAXBUtil.createProperty(asPrismContainerValue(), F_APPROVER_EXPRESSION); return getApproverExpression(); }
private ApprovalSchemaType getSchema(ApprovalSchemaType schema, List<ObjectReferenceType> approverRef, List<ExpressionType> approverExpression, ExpressionType automaticallyApproved, @NotNull PrismContext prismContext) { if (schema != null) { return schema; } else { schema = new ApprovalSchemaType(prismContext); ApprovalStageDefinitionType stageDef = new ApprovalStageDefinitionType(prismContext); stageDef.getApproverRef().addAll(CloneUtil.cloneCollectionMembers(approverRef)); stageDef.getApproverExpression().addAll(approverExpression); stageDef.setAutomaticallyApproved(automaticallyApproved); schema.getStage().add(stageDef); return schema; } }
ApprovalSchemaType getSchemaFromAction(@NotNull ApprovalPolicyActionType approvalAction) { // TODO approval process if (approvalAction.getApprovalSchema() != null) { return approvalAction.getApprovalSchema().clone(); } else { ApprovalSchemaType rv = new ApprovalSchemaType(prismContext); ApprovalStageDefinitionType stageDef = new ApprovalStageDefinitionType(prismContext); stageDef.getApproverRef().addAll(CloneUtil.cloneCollectionMembers(approvalAction.getApproverRef())); stageDef.getApproverRelation().addAll(approvalAction.getApproverRelation()); stageDef.getApproverExpression().addAll(approvalAction.getApproverExpression()); stageDef.setAutomaticallyApproved(approvalAction.getAutomaticallyApproved()); // TODO maybe use name + description as well rv.getStage().add(stageDef); return rv; } }
rv.approverRefs.addAll(CloneUtil.cloneCollectionMembers(stageDef.getApproverRef())); if (!stageDef.getApproverExpression().isEmpty()) { try { if (expressionVariables == null) { expressionVariables = enhancedVariablesProvider.get(); rv.approverRefs.addAll(evaluationHelper.evaluateRefExpressions(stageDef.getApproverExpression(), expressionVariables, "resolving approver expression", opTask, opResult)); } catch (ExpressionEvaluationException | ObjectNotFoundException | SchemaException | RuntimeException | CommunicationException | ConfigurationException | SecurityViolationException e) {
ApprovalStageDefinitionType level = new ApprovalStageDefinitionType(prismContext); level.getApproverRef().addAll(CloneUtil.cloneCollectionMembers(abstractRole.getApproverRef())); level.getApproverExpression().addAll(CloneUtil.cloneCollectionMembers(abstractRole.getApproverExpression())); level.setAutomaticallyApproved(abstractRole.getAutomaticallyApproved());