Zum Inhalt

Element <targetConstraints>

Zweck: Validiert, filtert oder ergänzt generierte Datensätze vor dem Export.

Warum: Verwende dieses Element, um einen vollständigen generierten Datensatz unmittelbar vor dem Export abzulehnen.

Beispiel

1
<targetConstraints if="country == 'DE'" require="is_adult"/>

Entscheidungshilfe

Fachlicher Nutzen: Verhindert, dass eine fertige ungültige Produktzeile ihren Exporter erreicht.

  • Verwenden, wenn

    • Wenn eine Regel von final erzeugten oder gemappten Ausgabefeldern abhängt.
  • Anderen Ansatz wählen, wenn

    • Wenn die Regel nur die ursprüngliche geladene Quellzeile betrifft.
  • Voraussetzungen

    • Platziere es nach den Feldern und Mappings, deren Ergebnisse geprüft werden.
  • Alternativen

    • Verwende sourceConstraints für das Ablehnen vor der Transformation. (Siehe: <sourceConstraints>)
    • Verwende assert für eine laufweite harte Invariante. (Siehe: <assert>)

Vollständige Beispiele

Quelldatensätze in expliziten Phasen filtern, transformieren und prüfen

Verwende Source-Constraints vor der Transformation, Mappings in Dokumentreihenfolge und Target-Constraints ausschließlich auf dem fertigen Ausgabedatensatz.

rule-pipeline/data/customers.json
1
2
3
4
5
6
[
  {"customer_id": "C-100", "active": true,  "income": 120000, "credit_score": 780},
  {"customer_id": "C-200", "active": false, "income": 90000,  "credit_score": 760},
  {"customer_id": "C-300", "active": true,  "income": 60000,  "credit_score": 700},
  {"customer_id": "C-400", "active": true,  "income": 18000,  "credit_score": 650}
]
rule-pipeline/datamimic.xml
1
2
3
4
5
6
7
8
9
<setup numProcess="1">
    <generate name="eligible_customers" count="4" source="data/customers.json" target="LogExporter">
        <sourceConstraints if="active == False" require="False"/>
        <mapping if="income >= 100000 and credit_score >= 750" set="segment = 'premium'"/>
        <mapping if="not (income >= 100000 and credit_score >= 750)" set="segment = 'standard'"/>
        <mapping if="True" set="monthly_budget = income / 12"/>
        <targetConstraints if="30000 > income" require="False"/>
    </generate>
</setup>

Regeln und ungültige Kombinationen

E005 — Rule Eval Failed

Failed to evaluate {kind} '{expr}' for <{element_tag}>{descriptor}{cause_clause}

Warum: A runtime error was classified in this top-level error category.

Lösung: Inspect the nested issue code and descriptor context for the actionable resolution.

Vollständige Regel

Erlaubte Elternelemente / Erlaubte Kindelemente

Erlaubte Elternelemente: else, else-if, generate, if, iterate, nestedKey, while

Erlaubte Kindelemente:

Keine

Attribute

Alle 2 Attribute anzeigen

if

Condition selecting rows to which the constraint applies.

erforderlich; string.

require

Requirement expression evaluated for rows selected by if.

erforderlich; string.