Guide de migration côté client v1 vers v2
Ce guide décrit comment migrer le code côté client d'un plugin d'extension de flux de travail de v1 vers v2. Le changement principal dans le client v2 est le remplacement des interfaces de configuration déclaratives basées sur les schémas Formily par une approche Loader + composants React/antd purs.
Vue d'ensemble
Principaux changements
- Changement des chemins d'import :
@nocobase/plugin-workflow/client→@nocobase/plugin-workflow/client-v2, classe de base du plugin@nocobase/client→@nocobase/client-v2 - Changement du modèle d'interface de configuration : Des objets schéma Formily (
fieldset) aux composants React chargés en différé via Loader (FieldsetLoader) - Suppression des propriétés
scope/components: Il n'est plus nécessaire d'injecter des objets scope ou des composants dans le schéma ; importez-les et utilisez-les directement dans les composants React
Correspondance des chemins d'import
Règles générales
Modèle Loader
v2 utilise des propriétés typées LoaderOf pour remplacer le fieldset et les autres objets schéma Formily de v1. Un Loader est essentiellement une fonction qui retourne Promise<{ default: ComponentType }>, permettant le découpage du code et le chargement différé via import() dynamique :
Si vous devez pointer vers un export nommé (plutôt que l'export par défaut), utilisez .then() pour effectuer le remappage :
Syntaxe des composants de configuration
Le composant chargé par un Loader est un composant fonction React standard qui utilise les Form.Item d'antd pour construire les formulaires. Les chemins des champs utilisent systématiquement le format de tableau imbriqué ['config', 'fieldName'] :
Migration des déclencheurs
Table de correspondance des propriétés
Exemple de migration
Syntaxe v1 :
Syntaxe v2 :
Enregistrement du plugin
Migration des nœuds
Table de correspondance des propriétés
Exemple de migration
Syntaxe v1 :
Syntaxe v2 :
Autres remarques
Parties inchangées
Les propriétés et méthodes suivantes ont essentiellement les mêmes signatures en v1 et v2, et peuvent être conservées telles quelles lors de la migration :
useVariables(node/config, options)— Fournit les options de variablesuseScopeVariables(node, options)— Fournit les variables à portée de brancheisAvailable(ctx)— Vérification de la disponibilité du nœud (leNodeAvailableContextde v2 ajoute une nouvelle propriétéengine)
Nouvelles propriétés en v2
getCreateModelMenuItem— Définit la configuration pour la création d'éléments de menu de sous-modèle pour les nœuds/déclencheurs sur le canevas v2useTempAssociationSource— Fournit les informations de source de données d'association temporairevalidate(config)— Validation de la configuration du déclencheur (déclencheurs uniquement)branching— Déclare si le nœud est un nœud de branchement (nœuds uniquement)end— Déclare si le nœud est un nœud terminal (nœuds uniquement)testable— Déclare si le nœud prend en charge les exécutions de test (nœuds uniquement)
Cohérence sémantique des valeurs
Lors de la migration, assurez-vous que les valeurs de formulaire produites par les composants v2 sont cohérentes avec celles de v1, en particulier la structure du payload lors de l'exécution manuelle. Par exemple, si le formulaire d'exécution manuelle en v1 stocke un objet d'enregistrement complet, la version v2 doit conserver la même structure de valeurs plutôt que de stocker uniquement la clé primaire.

