BLOX ESL como motor de reglas para pedidos: aprobaciones, descuentos, impuestos, envío y revisión manual. El host C mantiene la persistencia, BLOX decide la política.
Las políticas comerciales cambian por temporada, campaña, país o segmento. Tenerlas incrustadas en el binario obliga a redeployar. Con BLOX ESL viven en un archivo .blox auditable.
reglas.blox.HOST_AUDIT(); el host registra la traza en su propio sistema.integrations/demo-reglas-C.\integrations\demo-reglas-C\run.ps1main.c?Define la estructura Order, registra un callback de auditoría y evalúa cada pedido vía BLOX.
typedef struct Order {
const char *id;
const char *customer;
const char *country;
const char *coupon;
double subtotal;
double score;
} Order;Callback nativo para auditoría:
blox_vm_register_native(
vm,
"HOST_AUDIT",
2,
BLOX_VALUE_EMPTY,
host_audit,
&ledger
);Cada orden se serializa a JSON y se convierte en tabla BLOX:
[{
"id": "A104",
"cliente": "NORMAL",
"pais": "PY",
"cupon": "",
"subtotal": 6300.00,
"score_credito": 640
}]blox_vm_table_from_json(vm, json_view, &input);
blox_vm_call(vm, "evaluar_orden", &input, 1, &result);El resultado es una tabla de una fila con campos:
aprobadarequiere_revisiondescuento_pctimpuestoenviototalmensajereglas.blox?Expone evaluar_orden(pedido). Lee campos del pedido, aplica descuentos por segmento y umbrales de aprobación por score de crédito.
FUNCION evaluar_orden(pedido)
INICIO
NUMERICO subtotal, score, descuento, impuesto, envio, total
CADENA cliente, pais, cupon, mensaje
LOGICO aprobada, revision
subtotal = pedido[1].subtotal
score = pedido[1].score_credito
cliente = pedido[1].cliente
pais = pedido[1].pais
cupon = pedido[1].cuponDescuentos por segmento:
SI (cliente == "VIP") ENTONCES
descuento = 0.15
envio = 0
FIN_SI
SI (cupon == "BLACKFRIDAY") ENTONCES
descuento = descuento + 0.10
FIN_SIAprobación por monto y score:
SI (subtotal > 5000) ENTONCES
SI (score < 700) ENTONCES
aprobada = FALSO
revision = VERDADERO
mensaje = "requiere aprobacion manual"
HOST_AUDIT("revision", "monto alto con score medio")
FIN_SI
FIN_SIDevuelve una tabla con la decisión completa:
resultado = {
aprobada = aprobada,
requiere_revision = revision,
descuento_pct = descuento,
impuesto = impuesto,
envio = envio,
total = total,
mensaje = mensaje
}
RETORNAR resultado
FINAL_FUNCIONResumen reglas: auditorias=3 rechazadas=2 total_aprobado=4204.00El área comercial puede ajustar descuentos, cupones y umbrales editando reglas.blox; el host C sigue en producción sin recompilar.