Capítulo 5: TransactionEvent y TransformationEvent

Por: Artiko
epcistransactioneventtransformationeventmanufacturafacturaorden-de-compratrazabilidad

TransactionEvent

Para qué sirve

El TransactionEvent asocia objetos EPCIS con documentos comerciales: órdenes de compra, facturas, avisos de despacho, conocimientos de embarque. Mientras que un ObjectEvent dice “estos productos fueron despachados”, un TransactionEvent dice “estos productos están vinculados a la factura INV-2026-001”.

Business Transaction Types

El CBV define tipos estándar de documentos comerciales:

TipoNombre completoUso
poPurchase OrderOrden de compra del comprador
invInvoiceFactura del vendedor
desadvDespatch AdviceAviso de despacho (ASN)
receadvReceiving AdviceConfirmación de recepción
bolBill of LadingConocimiento de embarque
pedigreePedigreeHistorial de custodia (farmacia)
prodorderProduction OrderOrden de producción

Campos del TransactionEvent

Los campos son similares a ObjectEvent, con la diferencia clave de que bizTransactionList es obligatorio (en ObjectEvent es opcional):

CampoTipoDescripción
epcListstring[]EPCs vinculados a los documentos
bizTransactionListobject[]Documentos comerciales (obligatorio)
actionstringADD, DELETE u OBSERVE
parentIDstringOpcional, para jerarquías

Ejemplo: receiving con PO y factura

Items recibidos y vinculados tanto a la orden de compra como a la factura:

{
  "type": "TransactionEvent",
  "eventTime": "2026-03-21T11:00:00Z",
  "eventTimeZoneOffset": "-03:00",
  "epcList": ["urn:epc:id:sgtin:0614141.107340.2026001"],
  "action": "ADD",
  "bizStep": "receiving",
  "disposition": "in_progress",
  "bizTransactionList": [
    {
      "type": "po",
      "bizTransaction": "urn:epcglobal:cbv:bt:0614141073467:PO-2026-001"
    },
    {
      "type": "inv",
      "bizTransaction": "urn:epcglobal:cbv:bt:0614141073467:INV-2026-001"
    }
  ]
}

Las acciones en TransactionEvent

AcciónSignificado
ADDLos EPCs se asocian a los documentos listados
DELETELos EPCs se desvinculan de los documentos (devolución, corrección)
OBSERVESe constata la asociación existente

Cuándo usar TransactionEvent vs ObjectEvent

La diferencia es sutil pero importante:

En la práctica, muchas implementaciones usan solo ObjectEvent con bizTransactionList y prescinden del TransactionEvent. Ambos enfoques son válidos según el estándar.


TransformationEvent

Para qué sirve

El TransformationEvent registra procesos irreversibles donde unos inputs se convierten en otros outputs: manufactura, mezclado, corte, cocción, ensamblaje. Es el único evento EPCIS donde los EPCs de entrada y salida son diferentes.

Diferencia fundamental con AggregationEvent

AggregationEventTransformationEvent
NaturalezaReversibleIrreversible
ObjetosLos mismos antes y despuésDistintos antes y después
EjemploMeter items en caja → sacarlosMezclar ingredientes → producto terminado
IdentidadLos hijos conservan su identidadLos inputs dejan de existir, los outputs son nuevos

Campos específicos

CampoTipoDescripción
inputEPCListstring[]EPCs de materias primas/inputs serializados
outputEPCListstring[]EPCs de productos terminados/outputs serializados
inputQuantityListobject[]Inputs no serializados (granel, por lote)
outputQuantityListobject[]Outputs no serializados
transformationIDstringUUID que agrupa eventos de transformación relacionados

El TransformationEvent no tiene campo action. Toda transformación es implícitamente una creación de outputs a partir de inputs.

Ejemplo completo: manufactura con cantidades

Un proceso donde 100 kg de materia prima se transforman en 85 kg de producto terminado (15 kg de merma):

{
  "type": "TransformationEvent",
  "eventTime": "2026-03-21T14:00:00Z",
  "eventTimeZoneOffset": "-03:00",
  "inputEPCList": [
    "urn:epc:id:sgtin:0614141.107340.MATERIA001"
  ],
  "outputEPCList": [
    "urn:epc:id:sgtin:0614141.107341.PRODUCTO001",
    "urn:epc:id:sgtin:0614141.107341.PRODUCTO002"
  ],
  "inputQuantityList": [
    {
      "epcClass": "urn:epc:class:lgtin:0614141.107340.LOTEMAT",
      "quantity": 100.0,
      "uom": "KGM"
    }
  ],
  "outputQuantityList": [
    {
      "epcClass": "urn:epc:class:lgtin:0614141.107341.LOTEPROD",
      "quantity": 85.0,
      "uom": "KGM"
    }
  ],
  "bizStep": "commissioning",
  "disposition": "active",
  "readPoint": { "id": "urn:epc:id:sgln:0614141.07346.PLANTA1" },
  "transformationID": "urn:uuid:a9b8c7d6-e5f4-3210-9876-543210fedcba"
}

Desglose del ejemplo

El campo transformationID

Cuando un proceso de manufactura tiene múltiples etapas, cada etapa genera un TransformationEvent diferente, pero todos comparten el mismo transformationID:

Evento 1: Mezcla de ingredientes     → transformationID: "urn:uuid:abc123"
Evento 2: Cocción de la mezcla       → transformationID: "urn:uuid:abc123"
Evento 3: Empaque del producto final  → transformationID: "urn:uuid:abc123"

Esto permite consultar todos los eventos de una misma producción con un solo filtro.

Casos de uso

IndustriaProcesoInputsOutputs
AlimentosMezcla de ingredientesHarina, agua, levaduraPan empacado
TextilCorte de telaRollo de telaPiezas cortadas
FarmaciaFormulaciónPrincipios activos, excipientesComprimidos
ElectrónicaEnsamblajeComponentes (PCB, chips)Dispositivo ensamblado
BebidasMezclado y embotelladoConcentrado, agua, azúcarBotellas de refresco

AssociationEvent (EPCIS 2.0)

EPCIS 2.0 introduce un nuevo tipo: el AssociationEvent. Registra relaciones no físicas entre objetos:

{
  "type": "AssociationEvent",
  "eventTime": "2026-03-21T08:00:00Z",
  "eventTimeZoneOffset": "-03:00",
  "parentID": "urn:epc:id:sscc:0614141.1234567890",
  "childEPCs": [
    "urn:epc:id:giai:0614141.SENSOR-TEMP-001"
  ],
  "action": "ADD",
  "bizStep": "associating"
}

La diferencia con AggregationEvent: la asociación es lógica, no física. El sensor no está “empacado dentro” del pallet, está asociado a él para monitoreo.

Resumen de los 5 tipos de evento

TipoPregunta que respondeEjemplo
ObjectEvent¿Qué le pasó a estos objetos?Shipping, receiving, inspección
AggregationEvent¿Qué contiene este contenedor?Packing, unpacking
TransactionEvent¿Con qué documentos se relacionan?Vincular a PO, factura
TransformationEvent¿De qué se hizo este producto?Manufactura, mezclado
AssociationEvent¿Qué está asociado lógicamente?Sensor ↔ pallet

Próximo capítulo

En el capítulo 6 compararemos los dos formatos de EPCIS 2.0: XML vs JSON-LD, con el mismo evento en ambas representaciones.