Ir al contenido
EN

Plantillas de Proceso

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.

Vista no técnica del proceso. Pensada para personal de operación, planificación y supervisión de piso.

Flujo del usuario — Plantillas de Proceso · Manufactura

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:

  1. Elegir plantilla desde la biblioteca de sistema (automotriz, alimentos, bebidas, textil, etc.)
  2. Aplicar al plano — genera automáticamente los nodos de etapas y sus conexiones en el digital-twin
  3. Enlazar máquinas — asigna máquinas/centros de trabajo reales a cada etapa
  4. Operar y monitorear — el sistema rastrea OEE, ciclos, cuellos de botella, según los tiempos de ciclo definidos
IndustriaPlantillaEtapas claveDescripción
AutomotrizLínea de ensamblaje de vehículosEstampado → Soldadura → Pintura → Motor → Tapicería → QAFlujo clásico de manufactura por lote; buffer de pintura para desacople
BebidasEmbotelladoraLavado/soplado → Llenado → Tapado → Etiquetado → EmpaqueLínea continua de alta velocidad (6-8 seg/ciclo); reglas de rate-matching
AlimentosEnlatadora de pescadoRecepción → Limpieza → Cocción → Enlatado → Sellado → EsterilizaciónProceso batch con etapa térmica larga (240 seg); buffer enfriado intermediario
PlásticosInyección y moldeadoAlimentación → Inyección → Enfriadero → Desmoldeo → Trimming → InspecciónCadencia rápida; post-procesos en paralelo
TextilHilado y tejidoCardado → Hilado → Teñido → Tejido → Acabado → EmpaqueProcesos batch; tiempos de ciclo variables por tipo de fibra
Metalmecánica CNCMecanizado y ensamblajeSetup → Desbaste → Acabado → Verificación → Inspección → EmbalajeTrabajo por orden; inspección cada 5 ciclos
Farmacéutica GMPLote controladoRecepción → Pesaje → Mezcla → Granulación → Compresión → Empaque → CuarentenaTrazabilidad lote; buffer de cuarentena regulatoria
PanaderíaHorno continuoMezcla → Fermentación → Moldeado → Horneado → Enfriado → EmpaqueTiempos variables por tipo de producto
  1. Ve a Manufactura → Procesos → Plantillas
  2. En la biblioteca de sistema, haz clic en la plantilla deseada
  3. Verás un preview de las etapas y conexiones
  4. Haz clic en Aplicar al plano y selecciona o nombra el plano destino
  5. El sistema genera automáticamente los nodos (etapas) y aristas (flujo) en tu digital-twin
  6. 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

Si necesitas una plantilla similar a una de sistema pero con ajustes propios:

  1. Ve a Manufactura → Procesos → Plantillas
  2. Selecciona la plantilla de sistema
  3. Haz clic en Duplicar → se crea una copia editable con nombre <original> [Tu empresa]
  4. Edita las etapas, tiempos de ciclo, conexiones según tu línea real
  5. Guarda los cambios
  6. La plantilla duplicada queda en tu catálogo privado (solo tu empresa la ve)

Para procesos que no encajan en la biblioteca:

  1. Ve a Manufactura → Procesos → Nueva plantilla (botón ”+ Crear”)
  2. 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)
  3. Guarda; la plantilla queda lista para aplicar al plano cuantas veces necesites

Al crear tu proceso, sigue estas reglas para máxima claridad y eficiencia:

PrácticaPor quéEjemplo
Etapas por operación unitariaFacilita análisis de cuellos de botella y asignación de personalUsa “Soldadura”, no “Soldadura + Limpieza”
Nombra por función, no por máquinaPermite reasignar máquinas sin rediseñar el proceso”Llenado” (no “Llenadoras PLC-3000”)
Ordena secuencialEl flujo en el plano sigue tu orden; desorden = layout confusoSiempre izq → derecha o arriba → abajo
Agrupa por afinidadBufferes entre ciclos largos previenen acumulaciónCocción (180s) + Buffer (200 espacios) → Enlatado (12s)
Enlaza máquinas por códigoPermite cambios de capacidad sin tocar el procesoMáquina: “SOL-001”; Etapa: “Soldadura” (flexible a SOL-002)
Define tiempo de ciclo realCálculo OEE y Takt dependen de estoMide 10 ciclos, promedia, agrega 5% amortiguador
Reserva etapas QA/InspecciónVisible en OEE (Calidad), facilita rastreo de defectosInspección final + Inspección cada N ciclos

Vista técnica para desarrolladores: endpoints, stored procedures, tablas y servicios involucrados.

Flujo técnico — Plantillas de Proceso · Manufactura

Editable en draw.io: descarga el SVG → File → Import from → Device.

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
}
MétodoEndpointDescripción
GET/v1/manufactura/procesos/plantillasListar plantillas de sistema + empresa (p_company_id)
GET/v1/manufactura/procesos/plantillas/:idDetalle: Stages + Edges + metadatos
POST/v1/manufactura/procesos/plantillasCrear plantilla propia (IsSystem=false)
PUT/v1/manufactura/procesos/plantillas/:idEditar (solo propias; IsSystem=false)
DELETE/v1/manufactura/procesos/plantillas/:idEliminar plantilla propia
POST/v1/manufactura/procesos/plantillas/:id/duplicarCopiar plantilla de sistema → plantilla de empresa
POST/v1/manufactura/procesos/plantillas/:id/aplicar-planoGenerar digital-twin: convierte Stages→nodos, Edges→aristas en mfg.PlantLayout
SPParámetrosResultado
usp_mfg_processtemplate_listp_company_idTABLE(ProcessTemplateId, …, StageCount)
usp_mfg_processtemplate_getp_company_id, p_idTABLE(ProcessTemplateId, …)
usp_mfg_processtemplate_upsertp_company_id, p_id, p_name, p_industry, p_description, p_stages jsonb, p_edges jsonb, p_is_activeTABLE(ok, mensaje, ProcessTemplateId)
usp_mfg_processtemplate_apply_to_layoutp_company_id, p_id, p_layout_name=‘default’, p_user_idTABLE(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).

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)
ComponenteUbicaciónUso
ProcessTemplateList.tsxmodule-manufactura/procesos/templates/Tabla de plantillas; filtros por industria, isSystem
ProcessTemplateDetail.tsxmodule-manufactura/procesos/templates/Preview de Stages; botones Aplicar/Duplicar
ProcessTemplateForm.tsxmodule-manufactura/procesos/templates/Form: nombre, industria, jsonb stages/edges; editor visual
ProcessTemplateWizard.tsxmodule-manufactura/procesos/templates/Wizard paso-a-paso: agregar etapas, conectar, guardar
PlantLayoutEditor.tsxmodule-manufactura/plano/Canvas SVG: muestra nodos + aristas; permite enlazar máquinas (drag-drop)
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)
ComponenteTipoUbicaciónResponsabilidad
processTemplate.routes.tsRoutes Expressweb/api/src/routes/manufactura/GET/POST/PUT/DELETE /plantillas, POST /plantillas/:id/aplicar-plano, etc.
usp_mfg_processtemplate_listStored Procedureweb/api/sqlweb-pg/includes/sp/usp_mfg_processtemplate_*.sqlSELECT plantillas sistema + empresa
usp_mfg_processtemplate_apply_to_layoutStored Procedureweb/api/sqlweb-pg/includes/sp/usp_mfg_processtemplate_*.sqlGenera mfg.PlantLayout a partir de Stages/Edges
mfg.ProcessTemplateTabla PostgreSQLweb/api/migrations/postgres/00292_mfg_process_templates.sqlPersistencia plantillas + seeds
mfg.PlantLayoutTabla PostgreSQLweb/api/migrations/postgres/00289_mfg_plant_layout.sqlResultado de apply; nodos + aristas del digital-twin
ProcessTemplateList.tsxComponente Reactweb/modular-frontend/packages/module-manufactura/procesos/templates/UI lista de plantillas
PlantLayoutEditor.tsxComponente Reactweb/modular-frontend/packages/module-manufactura/plano/Canvas interactivo del plano; enlace de máquinas
callSpTxHelperweb/api/src/db/query.tsInvoca SP en transacción; manejo de errores standar

Cuando diseñes una plantilla nueva, respeta estas convenciones para asegurar compatibilidad con el motor MES de Zentto:

  • 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" }
]
  • 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.
kindUsoNota
inputEntrada de material/componentesNo tiene máquina asignada; no consume tiempo
machineMáquina automatizadacycleSec OBLIGATORIO; puede tener reglas PLC
workcenterCentro de trabajo manual/semi-automatizadocycleSec requerido; MES rastrea personal asignado
bufferAlmacenamiento intermedio, desacoplecycleSec = capacidad en unidades (opcional); “parking”
outputSalida a cliente o almacénNo consumo de recursos
  • 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/botella
Tapado → 6s/botella
Etiquetado → 7s/botella ← cuello de botella (+1s acumula 600 botellas/hora)
→ Agregar Buffer entre Tapado y Etiquetado: capacidad 200 botellas
  • 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)
]

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 actual
  • capacity > N — si capacidad buffer > N, avanzar
  • temp > 50 — condiciones físicas monitoreadas por sensores
  • shift == turno_1 — flujo diferente por turno
  • defect_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.

{
"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).

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 caracteres

Ejemplo 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 }
]
}

  • 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.