Plantillas de Proceso
This content is not available in your language yet.
Una plantilla de proceso es un conjunto declarativo de etapas (operaciones) conectadas en flujo, reusable en tu plano de planta digital-twin. Zentto proporciona una biblioteca de plantillas de sistema (modelos probados por industria) que puedes aplicar directamente al plano sin escribir código.
Flujo del usuario
Sección titulada «Flujo del usuario»Vista no técnica del proceso. Pensada para personal de operación, planificación y supervisión de piso.
Editable en draw.io: descarga el SVG → en draw.io: File → Import from → Device → selecciona el SVG. Cada nodo queda editable.
El flujo típico es:
- Elegir plantilla desde la biblioteca de sistema (automotriz, alimentos, bebidas, textil, etc.)
- Aplicar al plano — genera automáticamente los nodos de etapas y sus conexiones en el digital-twin
- Enlazar máquinas — asigna máquinas/centros de trabajo reales a cada etapa
- Operar y monitorear — el sistema rastrea OEE, ciclos, cuellos de botella, según los tiempos de ciclo definidos
Biblioteca de plantillas de sistema
Sección titulada «Biblioteca de plantillas de sistema»| Industria | Plantilla | Etapas clave | Descripción |
|---|---|---|---|
| Automotriz | Línea de ensamblaje de vehículos | Estampado → Soldadura → Pintura → Motor → Tapicería → QA | Flujo clásico de manufactura por lote; buffer de pintura para desacople |
| Bebidas | Embotelladora | Lavado/soplado → Llenado → Tapado → Etiquetado → Empaque | Línea continua de alta velocidad (6-8 seg/ciclo); reglas de rate-matching |
| Alimentos | Enlatadora de pescado | Recepción → Limpieza → Cocción → Enlatado → Sellado → Esterilización | Proceso batch con etapa térmica larga (240 seg); buffer enfriado intermediario |
| Plásticos | Inyección y moldeado | Alimentación → Inyección → Enfriadero → Desmoldeo → Trimming → Inspección | Cadencia rápida; post-procesos en paralelo |
| Textil | Hilado y tejido | Cardado → Hilado → Teñido → Tejido → Acabado → Empaque | Procesos batch; tiempos de ciclo variables por tipo de fibra |
| Metalmecánica CNC | Mecanizado y ensamblaje | Setup → Desbaste → Acabado → Verificación → Inspección → Embalaje | Trabajo por orden; inspección cada 5 ciclos |
| Farmacéutica GMP | Lote controlado | Recepción → Pesaje → Mezcla → Granulación → Compresión → Empaque → Cuarentena | Trazabilidad lote; buffer de cuarentena regulatoria |
| Panadería | Horno continuo | Mezcla → Fermentación → Moldeado → Horneado → Enfriado → Empaque | Tiempos variables por tipo de producto |
Cómo aplicar una plantilla
Sección titulada «Cómo aplicar una plantilla»- Ve a Manufactura → Procesos → Plantillas
- En la biblioteca de sistema, haz clic en la plantilla deseada
- Verás un preview de las etapas y conexiones
- Haz clic en Aplicar al plano y selecciona o nombra el plano destino
- El sistema genera automáticamente los nodos (etapas) y aristas (flujo) en tu digital-twin
- En el plano resultante, puedes:
- Enlazar máquinas: asigna máquinas catalogadas a cada etapa
- Editar etapas: modifica tiempos de ciclo, reglas de buffer, etc.
- Guardar como plantilla propia: usa “Guardar como plantilla de empresa” para reusar tu versión
Duplicar y personalizar
Sección titulada «Duplicar y personalizar»Si necesitas una plantilla similar a una de sistema pero con ajustes propios:
- Ve a Manufactura → Procesos → Plantillas
- Selecciona la plantilla de sistema
- Haz clic en Duplicar → se crea una copia editable con nombre
<original> [Tu empresa] - Edita las etapas, tiempos de ciclo, conexiones según tu línea real
- Guarda los cambios
- La plantilla duplicada queda en tu catálogo privado (solo tu empresa la ve)
Crear una plantilla nueva con el Wizard
Sección titulada «Crear una plantilla nueva con el Wizard»Para procesos que no encajan en la biblioteca:
- Ve a Manufactura → Procesos → Nueva plantilla (botón ”+ Crear”)
- El wizard te guía paso a paso:
- Nombre y descripción de tu proceso
- Tipo de industria (opcional, para categorizar)
- Agregar etapas: nombra cada operación, elige tipo (máquina, centro de trabajo, buffer, entrada/salida)
- Establecer flujo: conecta etapas en orden (A → B → C)
- Tiempos de ciclo: define segundos/minutos por etapa (usado para OEE y planificación)
- Guarda; la plantilla queda lista para aplicar al plano cuantas veces necesites
Buenas prácticas de diseño
Sección titulada «Buenas prácticas de diseño»Al crear tu proceso, sigue estas reglas para máxima claridad y eficiencia:
| Práctica | Por qué | Ejemplo |
|---|---|---|
| Etapas por operación unitaria | Facilita análisis de cuellos de botella y asignación de personal | Usa “Soldadura”, no “Soldadura + Limpieza” |
| Nombra por función, no por máquina | Permite reasignar máquinas sin rediseñar el proceso | ”Llenado” (no “Llenadoras PLC-3000”) |
| Ordena secuencial | El flujo en el plano sigue tu orden; desorden = layout confuso | Siempre izq → derecha o arriba → abajo |
| Agrupa por afinidad | Bufferes entre ciclos largos previenen acumulación | Cocción (180s) + Buffer (200 espacios) → Enlatado (12s) |
| Enlaza máquinas por código | Permite cambios de capacidad sin tocar el proceso | Máquina: “SOL-001”; Etapa: “Soldadura” (flexible a SOL-002) |
| Define tiempo de ciclo real | Cálculo OEE y Takt dependen de esto | Mide 10 ciclos, promedia, agrega 5% amortiguador |
| Reserva etapas QA/Inspección | Visible en OEE (Calidad), facilita rastreo de defectos | Inspección final + Inspección cada N ciclos |
Flujo técnico
Sección titulada «Flujo técnico»Vista técnica para desarrolladores: endpoints, stored procedures, tablas y servicios involucrados.
Editable en draw.io: descarga el SVG → File → Import from → Device.
Modelo de datos
Sección titulada «Modelo de datos»mfg.ProcessTemplate ProcessTemplateId BIGINT (PK) CompanyId INT (NULL para sistema, >0 para empresa) Name VARCHAR(150) — nombre único por CompanyId Industry VARCHAR(80) — "Automotriz", "Bebidas", etc. Description VARCHAR(500) Stages JSONB — array [{ seq, name, kind, cycleSec, rule }] Edges JSONB — array [{ from, to }] por seq IsSystem BOOL (TRUE → plantillas globales, no editables) IsActive BOOL CreatedAt, UpdatedAt TIMESTAMP
Stages schema: { "seq": 10, // orden (10, 20, 30...) "name": "Estampado", // nombre operativo "kind": "machine|workcenter|buffer|input|output", "cycleSec": 90, // tiempo ciclo en segundos "rule": "rate<=step-20 OR capacity>500" // reglas opcionales (PLC/MES) }
Edges schema: { "from": 10, // seq origen "to": 20 // seq destino }Endpoints (REST)
Sección titulada «Endpoints (REST)»| Método | Endpoint | Descripción |
|---|---|---|
| GET | /v1/manufactura/procesos/plantillas | Listar plantillas de sistema + empresa (p_company_id) |
| GET | /v1/manufactura/procesos/plantillas/:id | Detalle: Stages + Edges + metadatos |
| POST | /v1/manufactura/procesos/plantillas | Crear plantilla propia (IsSystem=false) |
| PUT | /v1/manufactura/procesos/plantillas/:id | Editar (solo propias; IsSystem=false) |
| DELETE | /v1/manufactura/procesos/plantillas/:id | Eliminar plantilla propia |
| POST | /v1/manufactura/procesos/plantillas/:id/duplicar | Copiar plantilla de sistema → plantilla de empresa |
| POST | /v1/manufactura/procesos/plantillas/:id/aplicar-plano | Generar digital-twin: convierte Stages→nodos, Edges→aristas en mfg.PlantLayout |
Stored Procedures (PostgreSQL)
Sección titulada «Stored Procedures (PostgreSQL)»| SP | Parámetros | Resultado |
|---|---|---|
usp_mfg_processtemplate_list | p_company_id | TABLE(ProcessTemplateId, …, StageCount) |
usp_mfg_processtemplate_get | p_company_id, p_id | TABLE(ProcessTemplateId, …) |
usp_mfg_processtemplate_upsert | p_company_id, p_id, p_name, p_industry, p_description, p_stages jsonb, p_edges jsonb, p_is_active | TABLE(ok, mensaje, ProcessTemplateId) |
usp_mfg_processtemplate_apply_to_layout | p_company_id, p_id, p_layout_name=‘default’, p_user_id | TABLE(ok, mensaje) — genera mfg.PlantLayout con nodos + aristas |
Nota: usp_mfg_processtemplate_apply_to_layout es idempotente: si el plano ya existe (mismo CompanyId + Name), lo reemplaza. Los nodos se posicionan automáticamente en fila (x = 60 + idx×180, y = 140).
Tabla PlantLayout (resultado de apply)
Sección titulada «Tabla PlantLayout (resultado de apply)»mfg.PlantLayout PlantLayoutId BIGINT (PK) CompanyId INT (FK) Name VARCHAR(100) — "default", "linea-2", etc. Layout JSONB { "nodes": [ { "id": "st10", "x": 60, "y": 140, "w": 140, "h": 76, "label": "Estampado", "kind": "machine", "machineId": null } ... ], "edges": [ { "from": "st10", "to": "st20" } ] } UpdatedByUserId INT (FK → sec.User) UpdatedAt TIMESTAMP
// Tras apply, usuario enlaza máquinas por UI:// nodes[i].machineId = mfg.MachineId (FK mfg.Machine)Componentes Frontend
Sección titulada «Componentes Frontend»| Componente | Ubicación | Uso |
|---|---|---|
ProcessTemplateList.tsx | module-manufactura/procesos/templates/ | Tabla de plantillas; filtros por industria, isSystem |
ProcessTemplateDetail.tsx | module-manufactura/procesos/templates/ | Preview de Stages; botones Aplicar/Duplicar |
ProcessTemplateForm.tsx | module-manufactura/procesos/templates/ | Form: nombre, industria, jsonb stages/edges; editor visual |
ProcessTemplateWizard.tsx | module-manufactura/procesos/templates/ | Wizard paso-a-paso: agregar etapas, conectar, guardar |
PlantLayoutEditor.tsx | module-manufactura/plano/ | Canvas SVG: muestra nodos + aristas; permite enlazar máquinas (drag-drop) |
Flujo técnico de “aplicar plantilla”
Sección titulada «Flujo técnico de “aplicar plantilla”»Browser: POST /v1/manufactura/procesos/plantillas/123/aplicar-plano { layoutName: "linea-principal", userId: 42 } ↓API Route: /v1/manufactura/procesos/[...].ts ↓callSpTx('usp_mfg_processtemplate_apply_to_layout', [companyId, templateId, layoutName, userId]) ↓SP: SELECT Stages, Edges FROM mfg.ProcessTemplate → foreach stage: jsonb_build_object (nodo con posición calculada) → foreach edge: mapear seq→ids de nodo → INSERT/UPDATE mfg.PlantLayout con Layout JSONB ↓API Response: { ok: 1, mensaje: "Plano generado con 7 etapas" } ↓Browser: PlantLayoutEditor renderiza nodos en canvas Usuario enlaza máquinas por UI (PATCH /v1/manufactura/plano/:id)Tabla de componentes técnicos
Sección titulada «Tabla de componentes técnicos»| Componente | Tipo | Ubicación | Responsabilidad |
|---|---|---|---|
processTemplate.routes.ts | Routes Express | web/api/src/routes/manufactura/ | GET/POST/PUT/DELETE /plantillas, POST /plantillas/:id/aplicar-plano, etc. |
usp_mfg_processtemplate_list | Stored Procedure | web/api/sqlweb-pg/includes/sp/usp_mfg_processtemplate_*.sql | SELECT plantillas sistema + empresa |
usp_mfg_processtemplate_apply_to_layout | Stored Procedure | web/api/sqlweb-pg/includes/sp/usp_mfg_processtemplate_*.sql | Genera mfg.PlantLayout a partir de Stages/Edges |
mfg.ProcessTemplate | Tabla PostgreSQL | web/api/migrations/postgres/00292_mfg_process_templates.sql | Persistencia plantillas + seeds |
mfg.PlantLayout | Tabla PostgreSQL | web/api/migrations/postgres/00289_mfg_plant_layout.sql | Resultado de apply; nodos + aristas del digital-twin |
ProcessTemplateList.tsx | Componente React | web/modular-frontend/packages/module-manufactura/procesos/templates/ | UI lista de plantillas |
PlantLayoutEditor.tsx | Componente React | web/modular-frontend/packages/module-manufactura/plano/ | Canvas interactivo del plano; enlace de máquinas |
callSpTx | Helper | web/api/src/db/query.ts | Invoca SP en transacción; manejo de errores standar |
Estándares para crear tu proceso
Sección titulada «Estándares para crear tu proceso»Cuando diseñes una plantilla nueva, respeta estas convenciones para asegurar compatibilidad con el motor MES de Zentto:
1. Nomenclatura de etapas
Sección titulada «1. Nomenclatura de etapas»- Acción + objeto: “Corte de chapa”, “Soldadura de costuras”, “Empaque de cajas”
- Evita marcas o máquinas: NO “Horno Zwick”, SÍ “Cocción”
- Consistencia: si usas “Inspección”, úsalo igual en todas las plantillas de tu industria
- Mayúscula inicial, minúsculas resto (excepto acrónimos: “QA”, “CNC”)
Ejemplo correcto:
[ { "seq": 10, "name": "Recepción de materiales", "kind": "input" }, { "seq": 20, "name": "Corte de chapa", "kind": "machine", "cycleSec": 45 }, { "seq": 30, "name": "Soldadura", "kind": "machine", "cycleSec": 120 }, { "seq": 40, "name": "Inspección visual", "kind": "workcenter", "cycleSec": 30 }, { "seq": 50, "name": "Empaque", "kind": "workcenter", "cycleSec": 60 }, { "seq": 60, "name": "Salida a cliente", "kind": "output" }]2. Secuenciación y seq
Sección titulada «2. Secuenciación y seq»- Incrementa de 10 en 10 (10, 20, 30…), no consecutivos (1, 2, 3). Esto permite insertar etapas intermedias sin renumerar.
- Orden izquierda-derecha en el plano: el sistema posiciona nodos por índice; seq creciente = layout limpio.
3. Tipos de etapa (kind)
Sección titulada «3. Tipos de etapa (kind)»| kind | Uso | Nota |
|---|---|---|
input | Entrada de material/componentes | No tiene máquina asignada; no consume tiempo |
machine | Máquina automatizada | cycleSec OBLIGATORIO; puede tener reglas PLC |
workcenter | Centro de trabajo manual/semi-automatizado | cycleSec requerido; MES rastrea personal asignado |
buffer | Almacenamiento intermedio, desacople | cycleSec = capacidad en unidades (opcional); “parking” |
output | Salida a cliente o almacén | No consumo de recursos |
4. Tiempos de ciclo (cycleSec)
Sección titulada «4. Tiempos de ciclo (cycleSec)»- Mide en segundos. Formato:
45,120,180, etc. - No es tiempo de setup. Es el promedio de tiempo entre unidades consumidas.
- Máquina: 10 piezas / min → cycleSec = 6
- Operario manual: 4 piezas / min → cycleSec = 15
- Incluye amortiguador de variabilidad: si el rango es 40-50s, usa 45-50 (no 40).
- Cuellos de botella: si una etapa tiene cycleSec >> anterior, agrega un buffer para evitar acumulación.
Ejemplo:
Llenado → 6s/botellaTapado → 6s/botellaEtiquetado → 7s/botella ← cuello de botella (+1s acumula 600 botellas/hora) → Agregar Buffer entre Tapado y Etiquetado: capacidad 200 botellas5. Conexiones (Edges)
Sección titulada «5. Conexiones (Edges)»- Mapea por
seq(número de etapa), no por índice. - Cada edge = flujo de material entre etapas.
- Ramificaciones: soportadas. Una salida puede ir a múltiples destinos.
Ejemplo (embotelladora con paralelo en empaque):
"Edges": [ { "from": 10, "to": 20 }, // Entrada → Lavado { "from": 20, "to": 30 }, // Lavado → Llenado { "from": 30, "to": 40 }, // Llenado → Tapado { "from": 40, "to": 50 }, // Tapado → Etiquetado { "from": 50, "to": 60 }, // Etiquetado → Empaque { "from": 50, "to": 70 } // Etiquetado → Salida (by-pass si defecto)]6. Reglas opcionales (rule)
Sección titulada «6. Reglas opcionales (rule)»Si tu proceso tiene lógica condicional (MES/PLC), úsala para documentar reglas de flujo:
{ "seq": 30, "name": "Llenado", "kind": "machine", "cycleSec": 6, "rule": "rate <= tapado AND temp > 65 AND nivel_tanque > 50"}Reglas comunes:
rate <= NOMBRE_ETAPA— no avanzar hasta que NOMBRE_ETAPA consuma al ritmo actualcapacity > N— si capacidad buffer > N, avanzartemp > 50— condiciones físicas monitoreadas por sensoresshift == turno_1— flujo diferente por turnodefect_count < 5— quality gates
Nota: Las reglas aquí son documentación del MES. El motor real de decisiones vive en el PLC o en el servicio de orquestación (manufactura-orchestrator). El SP no las valida; solo las almacena.
7. Industria y descripción
Sección titulada «7. Industria y descripción»{ "Industry": "Textil", "Description": "Proceso de hilado y tejido para telas de algodón 100%. Ciclos batch por tipo de fibra; tiempos variables 40-180s por etapa según grosor."}- Industry: facilita búsqueda en la biblioteca; categoriza por vertical.
- Description: 2-3 oraciones; documenta variantes de ciclo, restricciones, normas (GMP, HACCP).
8. Validación en el UI
Sección titulada «8. Validación en el UI»Antes de guardar una plantilla nueva en el wizard, verifica:
✓ Nombre NO vacío ni duplicado en tu empresa✓ Al menos 2 etapas (mínimo Entrada → Salida)✓ Todas las etapas tiene seq ≥ 10, incremento de 10✓ Etapas machine/workcenter tienen cycleSec > 0✓ Cada edge referencia seq existentes✓ Sin ciclos (A → B → A)✓ Descripción ≤ 500 caracteresEjemplo de plantilla válida mínima:
{ "Name": "Proceso simple", "Industry": "Artesanía", "Description": "Entrada → Manufactura → Salida", "Stages": [ { "seq": 10, "name": "Recepción", "kind": "input" }, { "seq": 20, "name": "Trabajo", "kind": "machine", "cycleSec": 60 }, { "seq": 30, "name": "Salida", "kind": "output" } ], "Edges": [ { "from": 10, "to": 20 }, { "from": 20, "to": 30 } ]}Próximos pasos
Sección titulada «Próximos pasos»- Duplica una plantilla de sistema para adaptarla a tu línea real
- Crea tu primera plantilla con el wizard (30 min aprox.)
- Aplica al plano y enlaza máquinas desde el editor visual
- Monitorea OEE en tiempo real: Zentto calcula automáticamente Disponibilidad, Rendimiento, Calidad
Para soporte técnico o consultas sobre reglas PLC, contacta a tu administrador MES.