Uso del Dispatcher

Repasa en detalle cómo arrancar el dispatcher, construir una solicitud y leer su resultado — el ejemplo de la introducción, explicado paso a paso.

Arrancar el dispatcher

Bootstrap::boot() es el único punto de entrada público del paquete. Todo el resto del cableado (Deserializers, la cadena DirectDispatcherTypedDispatcherSafeDispatcher de derafu/backbone-dispatcher) está declarado en su config/services.yaml, no en PHP.

use libredte\lib\CoreDispatcher\Bootstrap;

// El entorno puede ser 'prod' (default), 'dev' o 'test'.
$dispatcher = Bootstrap::boot(environment: 'prod', debug: false);

Construir la solicitud

Con los 4 identificadores por separado:

use Derafu\BackboneDispatcher\ValueObject\OperationRequest;

$request = new OperationRequest(
    'billing',
    'identifier',
    'caf_loader',
    'load',
    ['xml' => base64_encode($cafXml)],
);

O con el identificador "package.component.worker:operation" como un solo string — la forma natural para quien llama desde el otro lado de un límite de proceso o lenguaje, como el Bridge Python:

$request = OperationRequest::fromId(
    'billing.identifier.caf_loader:load',
    ['xml' => base64_encode($cafXml)],
);
Nota

Revisa Funcionalidades de la biblioteca PHP para ver qué paquetes, componentes y workers (y por lo tanto qué operaciones) están disponibles.

Despachar y leer el resultado

dispatch() nunca lanza excepciones: siempre revisa isSuccess() antes de usar el resultado.

$result = $dispatcher->dispatch($request);

if ($result->isSuccess()) {
    // Ya serializado (array), listo para cruzar un límite de
    // proceso o lenguaje.
    $caf = $result->getValue();
} else {
    // ProblemDetail (RFC 7807-like).
    $problem = $result->getProblem();
}

Parámetros anidados

Los parámetros que corresponden a objetos (CAF, certificados, emisor, receptor, mandatario, etc.) se pueden pasar como arreglos: el dispatcher los deserializa automáticamente al tipo esperado por la operación. Revisa Deserializadores para el detalle de qué interfaces están cubiertas.

On this page

Last updated on 16/08/2026 by Anonymous