Aller au contenu
SurfaceDocs
ENCommencer
DocsConstruire vos apps

Règles et validations

Exprimer les conditions métier sans ajouter de scripts dans les vues.

Déclarer une condition

Les règles expriment des conditions sur les valeurs, relations ou résultats de Queries. Le Model les utilise pour une validation, la disponibilité d’une Action ou une transition. Les vues présentent le résultat de cette décision; elles ne deviennent pas une seconde autorité métier.

Condition Valeurs attendues Usage
Présence Référence à un Field Vérifier qu’une information est fournie
Comparaison Field, opérateur admis et valeur typée Comparer un montant ou un état
Appartenance Field et valeurs autorisées Accepter plusieurs états
Relation Type, direction et cardinalité Exiger un client lié
Query Query déclarée et paramètres admis Vérifier une collection ou un agrégat
Combinaison Expressions booléennes bornées Assembler des conditions

Messages utiles

Une règle refusée doit expliquer ce qui manque et où le corriger. « Sélectionnez un client avant de finaliser » guide l’usager. Un nom de contrat ou une erreur technique ne remplace pas ce message.

Exemple

Pour finaliser une soumission, exigez un client lié, un montant positif et une approbation. La fiche peut montrer les conditions manquantes, mais le service les vérifie à nouveau lors de la confirmation. Un bouton désactivé ne constitue pas un contrôle d’autorisation.

Les arbres d’expressions sont déclaratifs et bornés. Leur référence décrit les variantes admises; une règle n’exécute pas du JavaScript ou du SQL fourni dans une vue.

Exemples appliqués : Vérifier avant de confirmer

Une règle exige une entreprise; une autre interdit un montant négatif ou nul.

Configuration

Fragment à placer dans rules[]. Propriétés et valeurs admises.

{
  "contract": "WorkspaceRule@1",
  "key": "company-required",
  "label": "Entreprise renseignée",
  "expression": {
    "kind": "present",
    "field": {
      "definitionPath": "workspace/clients/surface/client",
      "fieldKey": "company"
    }
  }
}

Variante et raccordement

Fragment à placer dans rules[]. Propriétés et valeurs admises.

{
  "contract": "WorkspaceRule@1",
  "key": "positive-amount",
  "label": "Montant positif",
  "expression": {
    "kind": "compare",
    "field": {
      "definitionPath": "workspace/quotes/surface/quote",
      "fieldKey": "amount"
    },
    "operator": "gt",
    "value": 0
  }
}

Exemple de disposition UI

La disposition illustrative ci-dessous situe cette configuration dans l’app Clients/Soumissions. Chaque fragment s’insère à l’emplacement indiqué; ses références aux Fields, Queries et Actions correspondent aux déclarations du Model.

  1. Entreprise *
  2. État *
  3. Notes
  4. Créer le client
DISPOSITION ILLUSTRATIVEApp Clients / Soumissions
SurfaceClients / Atelier NordExemple
Règles et validationsVérifier avant de confirmer
Clients
Nouveau client
Entreprise *Atelier Nord
État *Prospect

Les notes s’enrichissent dans la fiche après création.

AnnulerCréer le client
Recherchez un concept, un champ ou une action.Esc