Capítulo 2: Core Business Vocabulary (CBV)
Qué es el CBV
El Core Business Vocabulary (CBV) es el compañero inseparable de EPCIS. Mientras EPCIS define la estructura de los eventos (campos, tipos, formatos), el CBV define el significado de los valores que van dentro de esos campos.
El CBV es un vocabulario controlado que estandariza términos para:
- Pasos de negocio (
bizStep) - Estados del objeto (
disposition) - Tipos de transacción comercial (
bizTransactionList.type) - Tipos de origen y destino (
sourceList,destinationList)
Sin CBV: el problema de interoperabilidad
Sin un vocabulario estándar, cada empresa inventaría sus propios términos:
| Empresa A | Empresa B | Empresa C | Significado real |
|---|---|---|---|
ENVIADO | shipped | DESP_001 | El producto fue despachado |
RECIBIDO | received | REC_OK | El producto fue recibido |
EN_TRANSITO | moving | TRANS | El producto está viajando |
Es imposible integrar datos automáticamente cuando cada actor habla su propio idioma. El CBV resuelve esto definiendo un solo término para cada concepto.
CBV 2.0 como estándar ISO
El CBV 2.0 fue publicado como ISO/IEC 19988:2024, lo que le da el mismo peso normativo que EPCIS 2.0 (ISO/IEC 19987:2024). Ambos estándares se complementan y se deben implementar juntos.
Tabla de bizStep
El campo bizStep indica qué actividad de negocio ocurrió. Estos son los valores estándar más utilizados:
| Valor | URI completa (XML) | Descripción |
|---|---|---|
commissioning | urn:epcglobal:cbv:bizstep:commissioning | El producto fue activado/serializado por primera vez |
packing | urn:epcglobal:cbv:bizstep:packing | El producto fue empacado en una unidad mayor |
unpacking | urn:epcglobal:cbv:bizstep:unpacking | La unidad fue desempacada |
shipping | urn:epcglobal:cbv:bizstep:shipping | El producto fue despachado |
receiving | urn:epcglobal:cbv:bizstep:receiving | El producto fue recibido |
transporting | urn:epcglobal:cbv:bizstep:transporting | El producto está en tránsito |
holding | urn:epcglobal:cbv:bizstep:holding | El producto está retenido (inspección, cuarentena) |
inspecting | urn:epcglobal:cbv:bizstep:inspecting | El producto está siendo inspeccionado |
retail_selling | urn:epcglobal:cbv:bizstep:retail_selling | El producto fue vendido al consumidor final |
dispensing | urn:epcglobal:cbv:bizstep:dispensing | El producto fue dispensado (farmacia) |
decommissioning | urn:epcglobal:cbv:bizstep:decommissioning | El producto fue dado de baja permanentemente |
destroying | urn:epcglobal:cbv:bizstep:destroying | El producto fue destruido |
encoding | urn:epcglobal:cbv:bizstep:encoding | Se escribió el EPC en un tag RFID |
arriving | urn:epcglobal:cbv:bizstep:arriving | El producto llegó a una ubicación |
departing | urn:epcglobal:cbv:bizstep:departing | El producto salió de una ubicación |
void_shipping | urn:epcglobal:cbv:bizstep:void_shipping | El envío fue anulado (corrección de error) |
Tabla de disposition
El campo disposition indica el estado del objeto después del evento:
| Valor | URI completa (XML) | Descripción |
|---|---|---|
active | urn:epcglobal:cbv:disp:active | Activo y disponible para uso/venta |
in_transit | urn:epcglobal:cbv:disp:in_transit | En tránsito hacia destino |
in_progress | urn:epcglobal:cbv:disp:in_progress | En proceso (packing, manufactura) |
recalled | urn:epcglobal:cbv:disp:recalled | Retirado del mercado |
destroyed | urn:epcglobal:cbv:disp:destroyed | Destruido permanentemente |
dispensed | urn:epcglobal:cbv:disp:dispensed | Dispensado al paciente (farmacia) |
expired | urn:epcglobal:cbv:disp:expired | Vencido |
returned | urn:epcglobal:cbv:disp:returned | Devuelto al fabricante/distribuidor |
damaged | urn:epcglobal:cbv:disp:damaged | Dañado |
stolen | urn:epcglobal:cbv:disp:stolen | Robado |
container_closed | urn:epcglobal:cbv:disp:container_closed | Contenedor cerrado y sellado |
non_sellable_other | urn:epcglobal:cbv:disp:non_sellable_other | No vendible por otra razón |
Uso en JSON-LD vs XML
En EPCIS 2.0 JSON-LD, los valores se escriben de forma corta gracias al contexto JSON-LD que resuelve los prefijos automáticamente:
{
"type": "ObjectEvent",
"bizStep": "shipping",
"disposition": "in_transit"
}
En EPCIS 1.x/2.0 XML, se usan las URIs completas:
<ObjectEvent>
<bizStep>urn:epcglobal:cbv:bizstep:shipping</bizStep>
<disposition>urn:epcglobal:cbv:disp:in_transit</disposition>
</ObjectEvent>
El contexto JSON-LD (@context) de EPCIS 2.0 contiene las reglas de mapeo. Cuando un sistema recibe "shipping" en JSON-LD, sabe que equivale a urn:epcglobal:cbv:bizstep:shipping.
Business Transaction Types
El campo bizTransactionList asocia eventos con documentos comerciales. El CBV define tipos estándar de transacciones:
| Tipo | Descripción | Ejemplo de uso |
|---|---|---|
po | Purchase Order (orden de compra) | Shipping de mercadería comprada |
inv | Invoice (factura) | Receiving con factura asociada |
desadv | Despatch Advice (aviso de despacho) | Shipping con ASN |
receadv | Receiving Advice (aviso de recepción) | Confirmación de recepción |
pedigree | Pedigree (historial de custodia) | Farmacia (DSCSA) |
bol | Bill of Lading (conocimiento de embarque) | Transporte marítimo |
Ejemplo en JSON-LD:
"bizTransactionList": [
{
"type": "po",
"bizTransaction": "urn:epcglobal:cbv:bt:0614141073467:PO-2026-001"
},
{
"type": "inv",
"bizTransaction": "urn:epcglobal:cbv:bt:0614141073467:INV-2026-001"
}
]
Source y Destination Types
Los campos sourceList y destinationList identifican quién envía y quién recibe. El CBV define los tipos:
| Tipo | Descripción |
|---|---|
owning_party | La parte que posee la propiedad legal del producto |
possessing_party | La parte que tiene posesión física del producto |
location | La ubicación física de origen o destino |
Ejemplo en JSON-LD:
"sourceList": [
{
"type": "owning_party",
"source": "urn:epc:id:pgln:0614141.00000"
}
],
"destinationList": [
{
"type": "owning_party",
"destination": "urn:epc:id:pgln:0693750.00000"
}
]
La distinción entre owning_party y possessing_party es importante en logística tercerizada: un 3PL tiene la posesión pero no la propiedad del producto.
Combinaciones comunes bizStep + disposition
No todas las combinaciones tienen sentido. Estas son las más frecuentes en implementaciones reales:
| bizStep | disposition | Escenario |
|---|---|---|
commissioning | active | Producto serializado por primera vez |
packing | in_progress | Empacando items en caja/pallet |
shipping | in_transit | Despachando mercadería |
receiving | in_progress | Recibiendo mercadería |
inspecting | in_progress | Inspeccionando calidad |
retail_selling | sold | Venta al consumidor |
dispensing | dispensed | Entrega al paciente |
decommissioning | destroyed | Destrucción de producto |
holding | recalled | Producto retirado en cuarentena |
Próximo capítulo
En el capítulo 3 pondremos en práctica el CBV con el tipo de evento más común: el ObjectEvent.