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
DirectDispatcher → TypedDispatcher → SafeDispatcher 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)],
);
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.