5.- Casos de uso BENT de ejemplo
En este apartado se describe cómo implementar los principales casos de uso que se pueden dar en la integración con BENT
CU_001: instancia del cliente java
Existen multitud de formas de implementar un cliente que se pueden categoriza en por configuración o de forma programática.
Por configuración el ejemplo a mostrar es utilizando una factoría de CXF-Spring.
Configuración por Cxf-Spring. Requiere las librerias de CXF y las librerias de spring ( spring-context) y el cliente “ad hoc” proporcionado por BENT, cuya última versión publicada es la 4.10.0. El cliente proporciona es un cliente neutro sin dependencias de cxf o de spring. El cliente de BENT tiene dependencias indirectas de SIU y de CCSV, a través de sus clientes.
El primer bean, el cliente, utiliza una factoría de clientes de CXF. La referencia a la factoria es el segundo bean, en el cual se le indica la clase del interfaz y la dirección del endpoint
<bean id="issueClient" class="es.aragon.bent.core.ws.IIssueService"
factory-bean="issueClientFactory" factory-method="create" />
<bean id="issueClientFactory" class="org.apache.cxf.frontend.ClientProxyFactoryBean">
<property name="serviceClass" value="es.aragon.bent.core.ws.IIssueService" />
<property name="address"
value="#{configurationXml.getProperty('CORE_W','WebService','IssueService')}" />
</bean>
En el ejemplo anterior la dirección del endpoint toma un valor de otro bean de utilidad mediante SpEL (#{….})
La configuración programática o por código es similar a la anterior:
ClientProxyFactoryBean cpfb = new ClientProxyFactoryBean();
cpfb.setAddress(conf.getProperty("url.bent"));
cpfb.setServiceClass(IIssueService.class);
IIssueService clientService = (IIssueService) cpfb.create();
A partir de un ClientProxyFactoryBean introducimos la dirección y el intefaz que lo implementará el servicio y creamos un clientService que expone los servicios implementados en BENT( en el core).
CU_002: Realizar un envío con orígen administración (Gobierno de aragón)
El envío proviene de la propia administración interna y se tipificará el campo origen como 0. En este caso la parametrización del sender será igual que la del receiver. Será obligatorio indicar un senderOrgCode con el formato ORGXXXXX y opcional indicar un senderDni correspondiente a un funcionario del organismo, dependiendo si el emisor fuera una bandeja personal o la del propio organismo.
Ponemos como ejemplo una petición de la aplicación CPPC que realiza este tipo de envíos, el envío sería dirigido desde una bandeja de organismo a la bandeja de personal de un funcionario en concreto, e incluyendo dos documentos:
(Invocación soap)
<arg0>
<applicationId>APP_CODE</applicationId>
<csvMaindoc>CSVJ529Y7L77G1W0BENT</csvMaindoc>
<description>envío origen administración interna</description>
<documentList>
<applicationId>APP_CODE</applicationId>
<csv>CSVJ529Y7L77G1W0BENT</csv>
</documentList>
<documentList>
<applicationId>APP_CODE</applicationId>
<csv>CSVGK37WVC2761V0BENT</csv>
</documentList>
<insertRegistry>N</insertRegistry>
<issuerDni>00000000T</issuerDni>
<origen>0</origen>
<receiverDni>00000000T</receiverDni>
<receiverOrgCode>ORG07464</receiverOrgCode>
<senderOrgCode>ORG07458</senderOrgCode>
</arg0>
CU_003: Realizar un envío con origen ciudadano
El envío proviene de un ciudadano y se tipificará el campo origen como 1. En este caso en la parametrización del sender se deberá informar un senderDni y un senderName, con los datos del solicitante. El campo senderOrgCode quedará nulo.
Ponemos como ejemplo una petición de la aplicación TTO que realiza envíos de este tipo:
<arg0>
<applicationId>APP_CODE</applicationId>
<csvMaindoc>CSVV21UZAF88L1M0BENT</csvMaindoc>
<description>prueba </description>
<documentList>
<applicationId>APP_CODE</applicationId>
<csv>CSVV21UZAF88L1M0BENT</csv>
</documentList>
<documentList>
<applicationId>APP_CODE</applicationId>
<csv>CSV5U2UDSD48F1E0BENT</csv>
</documentList>
<origen>1</origen>
<receiverOrgCode>ORG06670</receiverOrgCode>
<senderDni>73133419C</senderDni>
<senderName>DIEGO PATRICIO GONZALEZ PARAMO</senderName>
</arg0>
CU_004: Realizar un envío con origen una administración Externa
El envío proviene de una administración externa a Gobierno de Aragón y el campo origen se puede tipificar con el valor 2 (caso de que el envío sea una comunicación) o 3 (caso de que el envío sea una notificación). En este caso se informará como en el caso anterior el senderDni y el senderName, pero en este caso con el dni del gestor y el nombre del organismo.
Ponemos como ejemplo una petición de la aplicación SETA que realiza envíos de este tipo:
(Invocación SOAP)
<arg0>
<applicationId>APP_CODE</applicationId>
<csvMaindoc>CSVJ529Y7L77G1W0BENT</csvMaindoc>
<description>prueba </description>
<documentList>
<applicationId>APP_CODE</applicationId>
<csv>CSVJ529Y7L77G1W0BENT</csv>
</documentList>
<!-- 2 Comunicacion - 3 Notificacion -->
<origen>2</origen>
<receiverOrgCode>ORG06670</receiverOrgCode>
<senderDni>17179048A</senderDni>
<senderName>Organismo Externo</senderName>
</arg0>
CU_005: obtener listado de emails de gestores de un organismo
El método GetEmailListByOrgCode del servicio organismManager permite recuperar el listado de los emails de los usuarios dados de alta en BENT en una bandeja de organismo concreta. BENT únicamente almacena los dnis de los usuarios en su base de datos, recuperando el email a través de SIU. Si un usuario implicado en la búsqueda no tuviera un email registrado el servicio simplemente no lo añadirá al listado de resultados.
(Código JAVA)
ParamOrganismManager pom = new ParamOrganismManager();
pom.setApplicationId("APP_CODE");
pom.setOrgCode("ORG12345");
List<String> emailList = organismManager.getOrganismManagerClient().getEmailListByOrgCode(pom);