Guía de migración de v1 a v2 del lado del cliente
Esta guía describe cómo migrar el código del lado del cliente de un plugin de extensión de flujo de trabajo de v1 a v2. El cambio principal en el cliente v2 es el reemplazo de las UIs de configuración declarativas con Formily Schema por un enfoque basado en Loader + componentes puros de React/antd.
Visión general
Cambios principales
- Cambios en las rutas de importación:
@nocobase/plugin-workflow/client→@nocobase/plugin-workflow/client-v2, clase base del plugin@nocobase/client→@nocobase/client-v2 - Cambios en el patrón de UI de configuración: De objetos Formily Schema (
fieldset) a componentes React con carga diferida mediante Loader (FieldsetLoader) - Eliminación de las propiedades
scope/components: Ya no es necesario inyectar objetos scope o componentes en el Schema; simplemente impórtelos y úselos directamente en los componentes React
Mapeo de rutas de importación
Reglas generales
Patrón Loader
v2 utiliza propiedades de tipo LoaderOf para reemplazar el fieldset y otros objetos Formily Schema de v1. Un Loader es esencialmente una función que devuelve Promise<{ default: ComponentType }>, permitiendo la división de código y carga diferida mediante import() dinámico:
Si necesita apuntar a una exportación con nombre (en lugar de la exportación por defecto), use .then() para reasignar:
Sintaxis del componente de configuración
El componente cargado por un Loader es un componente de función React estándar que usa Form.Item de antd para construir formularios. Las rutas de campos usan consistentemente el formato de array anidado ['config', 'fieldName']:
Migración de disparadores
Tabla de mapeo de propiedades
Ejemplo de migración
Sintaxis v1:
Sintaxis v2:
Registro del plugin
Migración de nodos
Tabla de mapeo de propiedades
Ejemplo de migración
Sintaxis v1:
Sintaxis v2:
Otras notas
Partes sin cambios
Las siguientes propiedades y métodos tienen esencialmente las mismas firmas en v1 y v2, y pueden mantenerse tal cual durante la migración:
useVariables(node/config, options)— Proporciona opciones de variablesuseScopeVariables(node, options)— Proporciona variables de ámbito de ramaisAvailable(ctx)— Verificación de disponibilidad del nodo (elNodeAvailableContextde v2 añade una nueva propiedadengine)
Nuevas propiedades en v2
getCreateModelMenuItem— Define la configuración para crear elementos de menú de sub-modelos para nodos/disparadores en el lienzo v2useTempAssociationSource— Proporciona información de fuente de datos de asociación temporalvalidate(config)— Validación de configuración del disparador (solo disparadores)branching— Declara si el nodo es un nodo de ramificación (solo nodos)end— Declara si el nodo es un nodo terminal (solo nodos)testable— Declara si el nodo soporta ejecuciones de prueba (solo nodos)
Consistencia semántica de valores
Al migrar, asegúrese de que los valores de formulario producidos por los componentes v2 sean consistentes con v1, especialmente la forma del payload durante la ejecución manual. Por ejemplo, si el formulario de ejecución manual de v1 almacena un objeto de registro completo, la versión v2 debe mantener la misma estructura de valores en lugar de almacenar solo la clave primaria.

