Maison > interface Web > js tutoriel > Au-delà des formulaires de base : pourquoi les formulaires au niveau de l'entreprise restent un défi (et comment FormML le résout)

Au-delà des formulaires de base : pourquoi les formulaires au niveau de l'entreprise restent un défi (et comment FormML le résout)

Barbara Streisand
Libérer: 2024-12-05 22:46:10
original
575 Les gens l'ont consulté

Beyond Basic Forms: Why Enterprise-Level Forms Remain a Challenge (and How FormML Solves It)

Les formulaires sont partout dans le monde numérique, de la simple inscription à une newsletter aux applications d'entreprise complexes. Alors que les formulaires de base peuvent être facilement gérés avec des outils populaires tels que Formik ou React Hook Form, les formulaires au niveau de l'entreprise continuent de présenter des défis importants que les solutions existantes ont du mal à relever.

Que sont les formulaires niveau entreprise ?

Les formulaires

de niveau entreprise vont au-delà des simples champs de saisie et des boutons de soumission. Ils constituent l'épine dorsale de flux de travail complexes dans des secteurs tels que la finance, la banque et l'assurance. Ces formulaires doivent équilibrer les fonctionnalités avancées, évolutivité et expérience utilisateur, ce qui les rend fondamentalement différents de leurs homologues plus simples.

Exemples de formulaires niveau entreprise

  • Demandes de prêt : formulaires complexes qui calculent dynamiquement les taux d'intérêt, les paiements mensuels et les ratio dette/revenu en temps réel. Ils doivent appliquer des règles de conformité réglementaires telles que les montants maximaux des prêts basés sur les cotes de crédit et les exigences de vérification des revenus.

  • Déclarations fiscales : formulaires de plusieurs pages qui gèrent des calculs fiscaux complexes sur différentes sources de revenus, déductions et crédits. Ils doivent valider par rapport aux règles des autorités fiscales, prendre en charge l'enregistrement des traites sur plusieurs sessions et guider les utilisateurs à travers des flux de travail complexes tels que les déductions détaillées et les déductions standard.

  • Réclamations d'assurance : formulaires sophistiqués qui s'adaptent en fonction du type de réclamation (auto, habitation, vie) et des détails de la police. Ils préremplissent les champs à l'aide des données client existantes, traitent les pièces jointes à titre de preuve, mettent en œuvre des règles de validation complexes (par exemple, le montant de la réclamation ne peut pas dépasser les limites de la police) et maintiennent une image de marque cohérente entre divers produits d'assurance pour les différencier de leurs concurrents. .

Ces exemples sont courants dans la vie de tous les jours, mais l'effort caché derrière ces formes est souvent négligé. Leur développement nécessite une collaboration entre divers talents, des architectures complexes, des équipes d'ingénierie de haut niveau et jusqu'à plusieurs années de temps de développement. Dans certaines petites et moyennes entreprises, il est même possible que l'ensemble du produit de l'entreprise soit construit sur une telle forme unique.

Ces formulaires essentiels à la mission mais coûteux sont ce que j'appelle des « formulaires au niveau de l'entreprise ».

Défis liés à la création de formulaires au niveau de l'entreprise

Imaginez que vous êtes une société financière qui crée un formulaire de demande de prêt en ligne. À quels défis pourriez-vous être confronté ?

  • Implication des parties prenantes non techniques : Les prêts sont complexes et impliquent des connaissances spécialisées dans les domaines financier, comptable et juridique, expertise généralement détenue par des parties prenantes non techniques. Ces parties prenantes comprennent des règles commerciales complexes, telles que "Si la cote de crédit du demandeur est inférieure à 650, exigez un cosignataire" ou "Calculez le ratio dette/revenu en utilisant le revenu mensuel brut divisé par paiements mensuels totaux de la dette". Un défi important consiste à permettre à ces parties prenantes de diriger efficacement la conception de formulaires, sans passer trop de temps à enseigner toutes les règles aux développeurs, tout en garantissant une collaboration fluide pour gérer les cas extrêmes.

  • UI de marque et UX personnalisée : les développeurs comptent aussi ! Les entreprises ne veulent pas de conceptions de formulaires à l'emporte-pièce. Toute entreprise sérieuse souhaite développer sa marque et offrir des expériences utilisateur uniques, des objectifs qui nécessitent l'expertise des développeurs pour être atteints. Par exemple, une banque peut souhaiter que sa demande de prêt corresponde aux couleurs de sa marque, utilise des composants de saisie personnalisés ou implémente une interface d'assistant étape par étape qui guide les utilisateurs à travers des sections telles que « Informations personnelles », ​​"Détails de l'emploi" et "Conditions du prêt".

  • Calculs, formules et comportement dynamique : Un formulaire de demande de prêt peut nécessiter divers calculs complexes en temps réel et comportements dynamiques.

    • Calculs financiers : Montants des prêts, taux d'intérêt, paiements mensuels, etc.
    • Logique conditionnelle : afficher/masquer les champs en fonction du type de prêt (par exemple, différents champs pour les hypothèques et les prêts personnels)
    • Dépendances entre champs : la mise à jour du revenu peut affecter le montant maximum du prêt, le le ratio dette/revenu et le taux d'intérêt
    • Validation en temps réel : garantir que les montants des prêts restent dans les limites de la politique en fonction du revenu et du pointage de crédit
  • Enregistrement et reprise automatiques : les formulaires complexes peuvent contenir des centaines de champs - les utilisateurs ne veulent pas recommencer s'ils ferment accidentellement leur navigateur.

  • Autres défis techniques :

    • Performance : gestion efficace de centaines de champs avec une réactivité fluide de l'interface utilisateur, garantissant des calculs rapides et un rendu transparent
    • Validation : stratégie de validation complète comprenant une validation côté client en temps réel pour un retour immédiat des utilisateurs et une validation robuste côté serveur pour l'intégrité et la sécurité des données
    • Pré-remplissage des données : remplissage des champs à partir de plusieurs sources de données

Il ne s'agit pas de problèmes de niche spécifiques à certains scénarios, mais de défis courants auxquels les entreprises sont confrontées lors de la création de formulaires complexes. La combinaison de la complexité de l'entreprise, des exigences techniques et des besoins en matière d'expérience utilisateur rend les formulaires au niveau de l'entreprise particulièrement difficiles à mettre en œuvre efficacement.

Là où les outils existants ne suffisent pas

Bien que les bibliothèques de formulaires populaires telles que Formik et React Hook Form soient excellentes pour gérer les formulaires de base, elles ne sont pas conçues pour répondre aux besoins de l'entreprise. En examinant ces outils dans le contexte des défis évoqués précédemment, plusieurs limites apparaissent :

Défi 1 : Implication non technique des parties prenantes

Les bibliothèques de formulaires actuelles sont centrées sur les développeurs, nécessitant des connaissances en JavaScript/TypeScript pour définir la logique du formulaire.

Cela permet la personnalisation mais réduit considérablement l'efficacité de la fourniture de formulaires contenant des règles complexes. Par exemple :

  • Lorsque les règles de forme impliquent des calculs complexes, les parties prenantes sont obligées d'expliquer étape par étape aux développeurs en utilisant des descriptions verbales telles que "calculer le montant maximum du prêt comme étant égal à 4 fois le revenu annuel , ajusté à la baisse de 15 % si la cote de crédit est inférieure à 700, et encore réduit du pourcentage des remboursements mensuels de la dette existante par rapport au revenu mensuel brut, avec une réduction supplémentaire de 10 % si les antécédents professionnels sont inférieurs à 2 ans", même si ces calculs peuvent être de notoriété publique dans leur domaine professionnel.

  • Lorsque les règles du formulaire doivent être modifiées, comme l'ajustement des limites de prêt, les parties prenantes doivent toujours compter sur les développeurs pour mettre en œuvre les changements, ce qui entraîne des processus et des délais de livraison plus longs.

Défi 2 : interface utilisateur de marque et UX personnalisée

Les deux bibliothèques existantes excellent dans cet aspect (en raison de leur nature centrée sur le développeur), offrant de puissantes capacités de personnalisation. Par exemple, React Hook Form propose un composant Controller pour adapter les composants d'entrée contrôlés.

Défi 3 : Calculs, formules et comportement dynamique

Les bibliothèques existantes offrent des capacités de calcul « tout simplement », mais ne disposent pas des capacités d'abstraction et d'organisation nécessaires aux calculs complexes.

Envisagez d'implémenter un calculateur de prêt dans React Hook Form :

function LoanForm() {
  const { watch, setValue } = useForm()

  const [loanAmount, interestRate, term] = watch([
    'loanAmount',
    'interestRate',
    'term',
  ])

  useEffect(() => {
    if (loanAmount && interestRate && term) {
      const monthlyRate = interestRate / 100 / 12
      const months = term * 12
      const payment =
        (loanAmount * monthlyRate * Math.pow(1 + monthlyRate, months)) /
        (Math.pow(1 + monthlyRate, months) - 1)
      setValue('monthlyPayment', payment.toFixed(2))
    }
  }, [loanAmount, interestRate, term, setValue])

  return (
    <form>
      {/* ... */}
      <input type="number" {...register('monthlyPayment')} />
      {/* ... */}
    </form>
  )
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cette approche présente plusieurs inconvénients :

  • Écrire en JavaScript : Il refuse la collaboration entre les acteurs non techniques et les développeurs.
  • Maintenance manuelle des dépendances des champs : watch(['loanAmount', 'interestRate', 'term'])
  • Séparation de la définition du champ et de l'affectation de la valeur : Dans cet exemple, le paiement mensuel est enregistré dans la déclaration de retour mais affecté dans useEffect
  • Code passe-partout supplémentaire : watch, setValue, useEffect
  • Optimisation manuelle des performances

Défi 4 : Sauvegarde et reprise automatiques

Il n'existe pas de solutions intégrées pour l'enregistrement et la reprise automatiques dans ces bibliothèques. La mise en œuvre de la fonctionnalité de sauvegarde automatique nécessite un code personnalisé important. Les développeurs doivent gérer :

  • Persistance efficace de l'état
  • Résolution des conflits
  • Synchronisation des données
  • Suivi des progrès
  • Récupération d'erreur

Ces limitations entraînent des frais de développement importants, des délais de mise sur le marché plus longs et des coûts de maintenance plus élevés pour les applications d'entreprise. Bien que des solutions de contournement existent, elles aboutissent souvent à des solutions complexes et fragiles, difficiles à maintenir et à faire évoluer.

FormML relève ces défis grâce à son langage et à son architecture spécifiques à un domaine, conçus spécifiquement pour les formulaires au niveau de l'entreprise, comme nous l'explorerons dans la section suivante.

La solution FormML

FormML, abréviation de Form Modeling Language, prononcé comme « formel », est un nouveau framework open source conçu spécifiquement pour relever les défis des formulaires au niveau de l'entreprise. Voici comment il comble les lacunes laissées par d’autres outils :

Donner du pouvoir aux parties prenantes non technologiques

Comme son nom complet « Form Modeling Language » le suggère, FormML introduit un Langage spécifique au domaine (DSL) intuitif et non convivial pour les développeurs. Sa structure simple, sa syntaxe minimale et sa terminologie naturelle permettent aux experts financiers, aux professionnels du droit et à d'autres parties prenantes non techniques de modéliser des formulaires sans avoir besoin de compétences en programmation.

Pour créer le formulaire de déclaration de revenus le plus simple à exécuter, un comptable qualifié sans aucune connaissance en programmation peut le faire en seulement 5 minutes :

function LoanForm() {
  const { watch, setValue } = useForm()

  const [loanAmount, interestRate, term] = watch([
    'loanAmount',
    'interestRate',
    'term',
  ])

  useEffect(() => {
    if (loanAmount && interestRate && term) {
      const monthlyRate = interestRate / 100 / 12
      const months = term * 12
      const payment =
        (loanAmount * monthlyRate * Math.pow(1 + monthlyRate, months)) /
        (Math.pow(1 + monthlyRate, months) - 1)
      setValue('monthlyPayment', payment.toFixed(2))
    }
  }, [loanAmount, interestRate, term, setValue])

  return (
    <form>
      {/* ... */}
      <input type="number" {...register('monthlyPayment')} />
      {/* ... */}
    </form>
  )
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

UX entièrement personnalisable

FormML utilise une architecture de séparation modèle-vue robuste qui dissocie proprement la logique du formulaire de la présentation de l'interface utilisateur. Les experts du domaine définissent la structure, les types et les comportements du formulaire (le « modèle ») dans un fichier .fml à l'aide de FormML DSL.

Cette séparation permet aux développeurs de se concentrer entièrement sur la création d'expériences d'interface utilisateur personnalisées et raffinées (la « vue ») avec la même flexibilité que les autres bibliothèques de formulaires, sans se soucier de la logique métier sous-jacente.

function LoanForm() {
  const { watch, setValue } = useForm()

  const [loanAmount, interestRate, term] = watch([
    'loanAmount',
    'interestRate',
    'term',
  ])

  useEffect(() => {
    if (loanAmount && interestRate && term) {
      const monthlyRate = interestRate / 100 / 12
      const months = term * 12
      const payment =
        (loanAmount * monthlyRate * Math.pow(1 + monthlyRate, months)) /
        (Math.pow(1 + monthlyRate, months) - 1)
      setValue('monthlyPayment', payment.toFixed(2))
    }
  }, [loanAmount, interestRate, term, setValue])

  return (
    <form>
      {/* ... */}
      <input type="number" {...register('monthlyPayment')} />
      {/* ... */}
    </form>
  )
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

Prise en charge du comportement dynamique prête à l'emploi

FormML traite les comportements dynamiques comme des citoyens de première classe. Il prend en charge les calculs en temps réel directement dans son DSL, avec des expressions JavaScript ou un système de formule de type Excel (WIP). Par exemple, le calcul de la taxe en fonction des champs de saisie dans l'exemple ci-dessus est simple et nécessite un minimum d'effort.

Prise en charge de l'enregistrement et de la reprise automatiques prêtes à l'emploi

FormML traite également la sauvegarde et la reprise automatiques comme des citoyens de première classe. Il prévoit de prendre en charge la persistance de l'état, la résolution des conflits, la synchronisation des données, le suivi des progrès et la récupération des erreurs dès le départ.

Avoir hâte de

Bien que les formulaires de base aient été en grande partie résolus, les formulaires au niveau de l'entreprise continuent de présenter des défis uniques. FormML fait un pas en avant pour résoudre ces problèmes persistants, en proposant une solution complète qui équilibre puissance, flexibilité et facilité d'utilisation.

Que vous soyez confronté à des calculs complexes, à des comportements dynamiques ou à une collaboration entre équipes, FormML fournit un cadre spécialement conçu pour les défis liés aux formulaires au niveau de l'entreprise.

Prêt à relever les défis liés à la création d'entreprise ? Suivez mon compte sur X ou Bluesky, et essayez-le après la première version !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal