Skip to content
EN FR

Relations, rules and constraints

Documentation status: tutorial — see Maturity and evidence.

Relations

The request-to-customer link is a conceptual relation, not merely a foreign key. Each indicator also references the request it qualifies. If reviewer assignment needs its own status, timestamps or history, model that assignment as a reified relation rather than flattening it into a single field.

A useful conceptual shape is:

Customer <- customer - RiskRequest
RiskRequest <- request - RiskIndicator
RiskRequest <- request - RiskReviewProcess
RiskReviewProcess <- decision - RiskDecision

Constraints

At minimum, enforce these invariants at the model/action boundary:

  • a request cannot enter validation without a customer;
  • a risk score must stay inside the declared range;
  • a final decision requires a review result when the process chose human review;
  • only a valid process state may be finalized;
  • published actions must still pass authorization and contextual validation.

Rules

Rules determine routing, not transport. A rule may decide that a request can be validated immediately, needs external information, or must open human review. The process object coordinates the resulting execution path.

Keep business validity independent from service, UI or provider details. The same rule should hold whether the request is initiated by a view, a .NET client, an agent or a web endpoint.