Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

En este apartado se explicarán los servicios de pfi y cómo inicializar su cliente java

ÍNDICE DEL CONTENIDO

Table of Contents

Inicialización del cliente mediante CXF

...

En este apartado se explicarán los servicios de pfi y cómo inicializar su cliente java

ÍNDICE DEL CONTENIDO

Table of Contents




Inicialización del cliente mediante CXF


Mediante sintaxis xml podemos definir fácilmente la configuración del cliente CXF para que acceda a los servicios de PFI. Inicialmente deberemos definir la referencia a la interfaz del servicio, que se encuentra dentro del cliente suministrado, así como a la dirección a la  que apunta el wsdl levantado.


Code Block
languagexml
themeEclipse
titleIDocumentIntegrationService
<simple:client id="pfiClient" 
			   serviceClass="es.aragon.pfi.core.ws.IDocumentIntegrationService" 
			   address="http://[entorno:puerto]/pfi_core/services/IDocumentIntegrationServiceWS"
			   serviceName="s:IDocumentIntegrationService" 
			   xmlns:s="http://ws.core.pfi.aragon.es/ "
		       endpointName="s:IDocumentIntegrationServiceWS"
>
	<simple:outInterceptors>
		<ref bean="authorizeInterceptor" />
	</simple:outInterceptors>
</simple:client>


Como se puede observar en la definición XML del cliente CXF, se deberán configurar las urls donde se ubica el servicio IDocumentIntegrationServiceWS, para ello habrá que sustituir entorno y puerto por los valores correctos.
Las aplicaciones que se integran con PFI deben proporcionar en todas las peticiones el código de aplicación.

Para ello, utilizando los denominados interceptores, es posible rellenar este valor automáticamente en todas las peticiones. Como se ve en la definición del cliente se ha definido un interceptor de salida que entra en funcionamiento en el momento de construir la petición SOAP y que inserta el valor del código de aplicación en los parámetros de todos los métodos de PFI invocados.


Code Block
languagexml
themeEclipsetitleIDocumentIntegrationService
<simple:client idoutInterceptors>
	<ref bean="pfiClientauthorizeInterceptor" 
			   serviceClass/>
</simple:outInterceptors>


La definición al bean authotizeInterceptor que se incluye a continuación, permite indicarle el código de la aplicación, de esta manera el interceptor se encarga de establecer dicho valor en todos los parámetros de las llamadas a los servicios PFI. La clase con el interceptor de salida AuthorizeOutInterceptor se proporciona junto con el cliente de PFI.


Code Block
languagexml
themeEclipse
<bean id="authorizeInterceptor" class="es.aragon.pfi.core.util.wsinterceptors.IDocumentIntegrationServiceAuthorizeOutInterceptor">

			   address="http://[entorno:puerto]/pfi_core/services/IDocumentIntegrationServiceWS"
			   serviceName="s:IDocumentIntegrationService" 
			   xmlns:s="http://ws.core.pfi.aragon.es/ "
		       endpointName="s:IDocumentIntegrationServiceWS"
>
	<simple:outInterceptors>
		<ref bean="authorizeInterceptor" />
	</simple:outInterceptors>
</simple:client>
Como se puede observar en la definición XML del cliente CXF, se deberán configurar las urls donde se ubica el servicio IDocumentIntegrationServiceWS, para ello habrá que sustituir entorno y puerto por los valores correctos.
Las aplicaciones que se integran con PFI deben proporcionar en todas las peticiones el código de aplicación.

Para ello, utilizando los denominados interceptores, es posible rellenar este valor automáticamente en todas las peticiones. Como se ve en la definición del cliente se ha definido un interceptor de salida que entra en funcionamiento en el momento de construir la petición SOAP y que inserta el valor del código de aplicación en los parámetros de todos los métodos de PFI invocados.

Code Block
languagexml
themeEclipse
<simple:outInterceptors>
	<ref bean="authorizeInterceptor" />
</simple:outInterceptors>
La definición al bean authotizeInterceptor que se incluye a continuación, permite indicarle el código de la aplicación, de esta manera el interceptor se encarga de establecer dicho valor en todos los parámetros de las llamadas a los servicios PFI. La clase con el interceptor de salida AuthorizeOutInterceptor se proporciona junto con el cliente de PFI.
Code Block
languagexml
themeEclipse
<bean id="authorizeInterceptor" class="es.aragon.pfi.core.util.interceptors.AuthorizeOutInterceptor">
	<property name="applicationId" value="[código aplicación llamante]"/>
</bean>

-

Capturar notificaciones sobre cambios de estado en los documentos

Las aplicaciones integradoras deben definir un servlet al que invoque PFI cuando cambie el estado de un documento, no obstante, se puede consultar directamente al repositorio una vez que haya sido notificado el cambio para garantizar el último estado real.

No debe utilizarse la consulta directa al repositorio como mecanismo de control del estado de los documentos, ya que el número de llamadas recurrentes genera sobrecarga en los entornos, causando problemas tanto al propio integrador como al resto de los usuarios.

Dicho servlet se invocará con tres parámetros mediante querystring:

...

-

Info

Para que PFI pueda invocar a dicha url, ésta debe estar asociada a la aplicación a través de la plataforma PAU, en el atributo responseUrl correspondiente a la aplicación. Para ello el integrador deberá completar primero el  1241284867 descrito previamente en este manual.

-

Servicios SignerService

Método 'findQuickSignerList'

Método que busca una lista de firmantes compuesta por -el usuario -su jefe -el jefe de su jefe -los cinco últimos firmantes en su histórico

...

titleMás detalles

Signatura

List<Signer> findQuickSignerList(SignerSearch signerSearch)

Parámetros de invocación

...

Parámetros de respuesta

...

Códigos error

...

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
SignerSearch signerSearch = new SignerSearch();
signerSearch.setSignerNif("25448659X");
List<Signer> signerList = iSignerImpl.findQuickSignerList(signerSearch);

Método 'findSignerList'

Método que busca una lista de firmantes atendiendo a unos parámetros de búsqueda

...

titleMás detalles

Signatura

List<Signer> findSignerList(SignerSearch signerSearch)

Parámetros de invocación

...

Parámetros de respuesta

...

Códigos error

...

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
SignerSearch signerSearch = new SignerSearch();
signerSearch.setOrganismCode("ORG0001");
List<Signer> signerList = iSignerImpl.findSignerList(signerSearch);

Método 'findSignerByNif'

Método que busca un firmante atendiendo a unos parámetros de búsqueda establecidos en concreto se buscará el firmante que corresponde a un Nif

...

titleMás detalles

Signatura

Signer findSignerByNif(SignerSearch signerSearch)

Parámetros de invocación

...

Parámetros de respuesta

...

Códigos error

...

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
SignerSearch signerSearch = new SignerSearch();
signerSearch.setUserNif("78965412X");
Signer signer = iSignerImpl.findSignerByNif(signerSearch);

Método 'findProposedSigner'

Método que busca un firmante propuesto para un documento atendiendo a unos criterios de búsqueda

...

titleMás detalles

Signatura

ParamProposedSigner findProposedSigner(ParamProposedSignerSearch paramProposedSignerSearch)

Parámetros de invocación

...

Parámetros de respuesta

...

Códigos error

...

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamProposedSignerSearch paramProposedSignerSearch = new ParamProposedSignerSearch();
paramProposedSignerSearch.setSignerNif("78965412X");
ParamProposedSigner proposedSigner = iSignerImpl.findProposedSigner(paramProposedSignerSearch);

Método 'findProposedSignerList'

Método que busca la lista de firmantes propuestos según los criterios establecidos en el parámetro de entrada

...

titleMás detalles

Signatura

ParamProposedSignerList findProposedSignerList(ParamProposedSignerSearch paramProposedSignerSearch)

Parámetros de invocación

...

Parámetros de respuesta

...

Códigos error

...

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamProposedSignerSearch paramProposedSignerSearch = new ParamProposedSignerSearch();
paramProposedSignerSearch.setSignerNif("78965412X");
ParamProposedSignerList proposedSigner = iSignerImpl.findProposedSignerList(paramProposedSignerSearch);

Método 'saveProposedSigner'

Método que guarda en base de datos un firmante propuesto correspondiente a un documento

...

titleMás detalles

Signatura

ParamProposedSigner saveProposedSigner(ParamProposedSigner paramProposedSigner, Document document)

Parámetros de invocación

...

Parámetros de respuesta

...

Códigos error

...

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamProposedSignerSearch paramProposedSignerSearch = new ParamProposedSignerSearch();
paramProposedSignerSearch.setSignerNif("78965412X");
ParamProposedSigner proposedSigner = iSignerImpl.findProposedSigner(paramProposedSignerSearch);

DocumentSearch documentSearch = new DocumentSearch();
documentSearch.setCsv("CSV6F70H2A66T1E01PFI");
Document document = iDocumentImpl.findDocument(documentSearch);

ParamProposedSigner result = iSignerImpl.saveProposedSigner(paramProposedSigner, document);

Método 'deleteProposedSigner'

Método que borra un firmante propuesto de un documento y reordena el resto de firmantes

...

titleMás detalles

Signatura

void deleteProposedSigner(ParamProposedSigner paramProposedSigner, Long documentId)

Parámetros de invocación

...

Parámetros de respuesta

...

Códigos error

...

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamProposedSignerSearch paramProposedSignerSearch = new ParamProposedSignerSearch();
paramProposedSignerSearch.setSignerNif("78965412X");
ParamProposedSigner proposedSigner = iSignerImpl.findProposedSigner(paramProposedSignerSearch);

DocumentSearch documentSearch = new DocumentSearch();
documentSearch.setCsv("CSV6F70H2A66T1E01PFI");
Document document = iDocumentImpl.findDocument(documentSearch);

iSignerImpl.deleteProposedSigner(paramProposedSigner, document.getId());

Servicios DocumentService

Método 'findDocument'

Método que busca un documento utilizando los criterios de búsqueda establecidos como parámetro de entrada

...

titleMás detalles

Signatura

Document findDocument(DocumentSearch documentSearch)

Parámetros de invocación

...

Parámetros de respuesta

...

Códigos error

...

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
DocumentSearch documentSearch = new DocumentSearch();
documentSearch.setCsv("CSV6F70H2A66T1E01PFI");
Document document = iDocumentImpl.findDocument(documentSearch);

Método 'findDocumentList'

Método que busca una lista de documentos utilizando los criterios de búsqueda establecidos como parámetro de entrada

...

titleMás detalles

Signatura

List<Document> findDocumentList(DocumentSearch documentSearch)

Parámetros de invocación

...

Parámetros de respuesta

...

Códigos error

...

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
DocumentSearch documentSearch = new DocumentSearch();
documentSearch.setState(2);
List<Document> documentList = iDocumentImpl.findDocumentList(documentSearch);

Método 'findDocumentTray'

Método que permite la búsqueda de un listado de documentos para las bandejas a partir del objeto ParamTraySearch

...

titleMás detalles

Signatura

ResultTrayList findDocumentTray(ParamTraySearch paramTraySearch)

Parámetros de invocación

...

Parámetros de respuesta

...

Códigos error

...

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamTraySearch paramTraySearch = new ParamTraySearch();
paramTraySearch.setDraft(true);
ResultTrayList resultTrayList = iDocumentImpl.findDocumentTray(paramTraySearch);

Método 'findDocumentTrayVisibility'

Método que permite la búsqueda de un listado de documentos para las bandejas a partir del objeto ParamTraySearch incluyendo información de visibilidad

...

titleMás detalles

Signatura

ResultTrayListVisibility findDocumentTrayVisibility(ParamTraySearch paramTraySearch)

Parámetros de invocación

...

Parámetros de respuesta

...

Códigos error

...

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamTraySearch paramTraySearch = new ParamTraySearch();
paramTraySearch.setDraft(true);
ResultTrayListVisibility resultTrayListVisibility = iDocumentImpl.findDocumentTrayVisibility(paramTraySearch);

Método 'findDocumentFolderList'

Método que busca un listado de bloques o carpetas a partir del objeto de búsqueda del documento

...

titleMás detalles

Signatura

List<ParamFolder> findDocumentFolderList(DocumentSearch document)

Parámetros de invocación

...

Parámetros de respuesta

...

Códigos error

...

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
DocumentMetadataSearch documentMetadataSearch = new DocumentMetadataSearch();


Método 'signDocument'

Método para firmar un documento

...

titleMás detalles

Signatura

signDocument(ParamSignDocument paramSignDocument)

Parámetros de invocación

...

Parámetros de respuesta

...

Códigos error

...

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamSignDocument paramSignDocument = new ParamSignDocument();
paramSignDocument.setCsv("CSV6F70H2A66T1E01PFI");
iDocumentImpl.signDocument(paramSignDocument);

Método 'saveDocument'

Método para guardar los datos de un documento

...

titleMás detalles

Signatura

Document saveDocument(Document document)

Parámetros de invocación

...

Parámetros de respuesta

...

Códigos error

...

Code Block
languagejava
themeEclipse
titleEjemplo de invocación
collapsetrue
	System.out.println("- PRUEBA 1.1: GUARDAR UN DOCUMENTO Pendiente de firma CON CSV");
		Document document = createNewDocument(Integer.parseInt(EstadoPFI.PENDIENTE_DE_FIRMA), null);
		document.setSaveFile(true);
		try {
			System.out.println("Guardar el documento");
			System.out.println("CSV: " + document.getCsv());
			document = documentServiceWS.saveDocument(document);

			System.out.println("Documento guardado");
		} catch (InternalCoreException e) {
			System.out.println("Error al guardar el documento con csv " + document.getCsv());
			System.out.println("Error: " + e.getMsg());

		}
	public es.aragon.pfi.core.ws.data.Document createNewDocument(Integer state, String csv) {
		es.aragon.pfi.core.ws.data.Document document = new es.aragon.pfi.core.ws.data.Document();
		if (csv == null) {
			document.setCsv(Utils.obtenerCSV());
		} else {
			document.setCsv(csv);
		}
		ParamFile paramFile = new ParamFile();
		paramFile.setContent(new DataHandler(new FileDataSource(new File("./src/main/resources/pdf.pdf"))));
		paramFile.setFileName("test.pdf");
		paramFile.setFileSize(new Long(1024));
		paramFile.setFileGenerated(new DataHandler(new FileDataSource(new File("./src/main/resources/pdf.pdf"))));
		paramFile.setFileGeneratedDate(new Date());
		document.setFile(paramFile);
		document.setFolder("testFolder");
		document.setPriority(Integer.parseInt(PFICoreConstants.PRIORITY_MEDIUM));
		document.setRejected(PFICoreConstants.DOCUMENT_NOREJECTED);
		document.setSignType(1);
		// XXX: contemplar la creación de un propose_signer con la posición
		// document.setSignaturePosition(PFICoreConstants.SIGNATURE_POS_NOSIGN);
		document.setState(state);
		document.setMetadataCache(createMetadataCache());
		return document;
	}

	public static Map<ParamMetadataId, ParamMetadata> createMetadataCache() {
		Map<ParamMetadataId, ParamMetadata> metadataCache = new HashMap<ParamMetadataId, ParamMetadata>();
		// Se crea el firmante propuesto
		ParamMetadata paramMetadata = new ParamMetadata();
		paramMetadata.setEntity(PFICoreConstants.SIGNER_ENTITY);
		paramMetadata.setMetadataName("agente_desc_nombre");
		paramMetadata.setMetadataValue("LUCIA CASPE - CADUCADO PRUEBAS AUTOMATIZADAS");
		ParamMetadataId paramMetadataId = new ParamMetadataId();
		paramMetadataId.setMetadataName(paramMetadata.getMetadataName());
		paramMetadataId.setEntity(paramMetadata.getEntity());
		metadataCache.put(paramMetadataId, paramMetadata);
		paramMetadata = new ParamMetadata();
		paramMetadata.setEntity(PFICoreConstants.SIGNER_ENTITY);
		paramMetadata.setMetadataName("agente_ident_identificacion");
		paramMetadata.setMetadataValue("96666666N");
		paramMetadataId = new ParamMetadataId();
		paramMetadataId.setMetadataName(paramMetadata.getMetadataName());
		paramMetadataId.setEntity(paramMetadata.getEntity());
		metadataCache.put(paramMetadataId, paramMetadata);
		// Se crea el preparador
		paramMetadata = new ParamMetadata();
		paramMetadata.setEntity(PFICoreConstants.ISSUER_ENTITY);
		paramMetadata.setMetadataName("agente_desc_nombre");
		paramMetadata.setMetadataValue("LUCIA CASPE - CADUCADO PRUEBAS AUTOMATIZADAS");
		paramMetadataId = new ParamMetadataId();
		paramMetadataId.setMetadataName(paramMetadata.getMetadataName());
		paramMetadataId.setEntity(paramMetadata.getEntity());
		metadataCache.put(paramMetadataId, paramMetadata);
		paramMetadata = new ParamMetadata();
		paramMetadata.setEntity(PFICoreConstants.SIGNER_ENTITY);
		paramMetadata.setMetadataName("agente_ident_identificacion");
		paramMetadata.setMetadataValue("96666666N");
		paramMetadataId = new ParamMetadataId();
		paramMetadataId.setMetadataName(paramMetadata.getMetadataName());
		paramMetadataId.setEntity(paramMetadata.getEntity());
		metadataCache.put(paramMetadataId, paramMetadata);
		// Se crea la fecha de captura
		paramMetadata = new ParamMetadata();
		paramMetadata.setEntity(PFICoreConstants.DOCUMENT_ENTITY);
		paramMetadata.setMetadataName("dea_ident_fecha_captura");
		paramMetadata.setMetadataValue(Utils.fechaISO86012004(new Date()));
		paramMetadataId = new ParamMetadataId();
		paramMetadataId.setMetadataName(paramMetadata.getMetadataName());
		paramMetadataId.setEntity(paramMetadata.getEntity());
		metadataCache.put(paramMetadataId, paramMetadata);
		// Se crea la descripción
		paramMetadata = new ParamMetadata();
		paramMetadata.setEntity(PFICoreConstants.DOCUMENT_ENTITY);
		paramMetadata.setMetadataName("dea_desc_descripcion");
		paramMetadata.setMetadataValue("Documento de test");
		paramMetadataId = new ParamMetadataId();
		paramMetadataId.setMetadataName(paramMetadata.getMetadataName());
		paramMetadataId.setEntity(paramMetadata.getEntity());
		metadataCache.put(paramMetadataId, paramMetadata);
		// Se crea el procedimiento
		paramMetadata = new ParamMetadata();
		paramMetadata.setEntity(PFICoreConstants.DOCUMENT_ENTITY);
		paramMetadata.setMetadataName("dea_cont_nom_procedimiento");
		paramMetadata.setMetadataValue("AYUDA A LOS CONTRATOS AGRARIOS");
		paramMetadataId = new ParamMetadataId();
		paramMetadataId.setMetadataName(paramMetadata.getMetadataName());
		paramMetadataId.setEntity(paramMetadata.getEntity());
		metadataCache.put(paramMetadataId, paramMetadata);
		paramMetadata = new ParamMetadata();
		paramMetadata.setEntity(PFICoreConstants.DOCUMENT_ENTITY);
		paramMetadata.setMetadataName("dea_cont_codprocedimiento");
		paramMetadata.setMetadataValue("404");
		paramMetadataId = new ParamMetadataId();
		paramMetadataId.setMetadataName(paramMetadata.getMetadataName());
		paramMetadataId.setEntity(paramMetadata.getEntity());
		metadataCache.put(paramMetadataId, paramMetadata);
		// Se crea el tipo de documento
		paramMetadata = new ParamMetadata();
		paramMetadata.setEntity(PFICoreConstants.DOCUMENT_ENTITY);
		paramMetadata.setMetadataName("dea_desc_tipo_documento");
		paramMetadata.setMetadataValue("ACUERDO");
		paramMetadataId = new ParamMetadataId();
		paramMetadataId.setMetadataName(paramMetadata.getMetadataName());
		paramMetadataId.setEntity(paramMetadata.getEntity());
		metadataCache.put(paramMetadataId, paramMetadata);
		// Se crea el estado y el origen
		paramMetadata = new ParamMetadata();
		paramMetadata.setEntity(PFICoreConstants.DOCUMENT_ENTITY);
		paramMetadata.setMetadataName("dea_desc_estado");
		paramMetadata.setMetadataValue("0");
		paramMetadataId = new ParamMetadataId();
		paramMetadataId.setMetadataName(paramMetadata.getMetadataName());
		paramMetadataId.setEntity(paramMetadata.getEntity());
		metadataCache.put(paramMetadataId, paramMetadata);
		paramMetadata = new ParamMetadata();
		paramMetadata.setEntity(PFICoreConstants.DOCUMENT_ENTITY);
		paramMetadata.setMetadataName("dea_ident_origen");
		paramMetadata.setMetadataValue("1");
		paramMetadataId = new ParamMetadataId();
		paramMetadataId.setMetadataName(paramMetadata.getMetadataName());
		paramMetadataId.setEntity(paramMetadata.getEntity());
		metadataCache.put(paramMetadataId, paramMetadata);
		return metadataCache;
	}

Método 'findMetadataValue'

Método para guardar los datos de un documento

...

titleMás detalles

Signatura

...

<property name="applicationId" value="[código aplicación llamante]"/>
</bean>



-

Capturar notificaciones sobre cambios de estado en los documentos

...

Las aplicaciones integradoras deben definir un servlet al que invoque PFI cuando cambie el estado de un documento, no obstante, se puede consultar directamente al repositorio una vez que haya sido notificado el cambio para garantizar el último estado real.

No debe utilizarse la consulta directa al repositorio como mecanismo de control del estado de los documentos, ya que el número de llamadas recurrentes genera sobrecarga en los entornos, causando problemas tanto al propio integrador como al resto de los usuarios.


Dicho servlet se invocará con tres parámetros mediante querystring:

ParámetroDescripción
idAppPFI
CSVIdentificador del documento que ha sufrido un cambio de estado
estadoEstado en que se ha quedado el documento, borrador(1) u original(0)

-


Info

Para que PFI pueda invocar a dicha url, ésta debe estar asociada a la aplicación a través de la plataforma PAU, en el atributo responseUrl correspondiente a la aplicación. Para ello el integrador deberá completar primero el  1241284867 descrito previamente en este manual.

-


Servicios SignerService

...

Método 'findQuickSignerList'

Método que busca una lista de firmantes compuesta por -el usuario -su jefe -el jefe de su jefe -los cinco últimos firmantes en su histórico

Expand
titleMás detalles

Signatura

List<Signer> findQuickSignerList(SignerSearch signerSearch)

Parámetros de invocación

NombreTipoDescripción
signerSearch1241284867Parámetros de búsqueda (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
signerListList<1241284867>Lista de firmantes encontrados según los criterios de búsqueda indicados

Códigos error

CódigoDescripción
SIGNERSERVICEIMPL_FINDQUICKSIGNERLISTError genérico durante el servicio findQuickSignerList
ORGANISMLIST_XXError durante la consulta de los datos en SIU (XX indica el código de error en SIU)

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
SignerSearch signerSearch = new SignerSearch();
signerSearch.setSignerNif("25448659X");
List<Signer> signerList = iSignerImpl.findQuickSignerList(signerSearch);


Método 'findSignerList'

Método que busca una lista de firmantes atendiendo a unos parámetros de búsqueda

Expand
titleMás detalles

Signatura

List<Signer> findSignerList(SignerSearch signerSearch)

Parámetros de invocación

NombreTipoDescripción
signerSearch1241284867Parámetros de búsqueda (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
signerListList<1241284867>Lista de firmantes encontrados según los criterios de búsqueda indicados

Códigos error

CódigoDescripción
SIGNERSERVICEIMPL_FINDSIGNERLISTError genérico durante el servicio findSignerList
GET_ORGANISM_HISTORICAL_INFORMATION_XXError durante la consulta de los datos en SIU (XX indica el código de error en SIU)

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
SignerSearch signerSearch = new SignerSearch();
signerSearch.setOrganismCode("ORG0001");
List<Signer> signerList = iSignerImpl.findSignerList(signerSearch);


Método 'findSignerByNif'

Método que busca un firmante atendiendo a unos parámetros de búsqueda establecidos en concreto se buscará el firmante que corresponde a un Nif

Expand
titleMás detalles

Signatura

Signer findSignerByNif(SignerSearch signerSearch)

Parámetros de invocación

NombreTipoDescripción
signerSearch1241284867Parámetros de búsqueda (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
signer1241284867Firmante cuyo nif coincida con el proporcionado en el parámetro de búsqueda

Códigos error

CódigoDescripción
SIGNERSERVICEIMPL_FINDSIGNERBYNIFError genérico durante el servicio findSignerByNif
GET_USER_INFORMATION_XXError durante la consulta de los datos en SIU (XX indica el código de error en SIU)

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
SignerSearch signerSearch = new SignerSearch();
signerSearch.setUserNif("78965412X");
Signer signer = iSignerImpl.findSignerByNif(signerSearch);


Método 'findProposedSigner'

Método que busca un firmante propuesto para un documento atendiendo a unos criterios de búsqueda

Expand
titleMás detalles

Signatura

ParamProposedSigner findProposedSigner(ParamProposedSignerSearch paramProposedSignerSearch)

Parámetros de invocación

NombreTipoDescripción
paramProposedSignerSearch1241284867Parámetros de búsqueda (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
proposedSigner1241284867Firmante propuesto encontrado según los criterios de búsqueda indicados

Códigos error

CódigoDescripción
SIGNERSERVICEIMPL_FINDPROPOSEDSIGNERError genérico durante el servicio findProposedSigner

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamProposedSignerSearch paramProposedSignerSearch = new ParamProposedSignerSearch();
paramProposedSignerSearch.setSignerNif("78965412X");
ParamProposedSigner proposedSigner = iSignerImpl.findProposedSigner(paramProposedSignerSearch);


Método 'findProposedSignerList'

Método que busca la lista de firmantes propuestos según los criterios establecidos en el parámetro de entrada

Expand
titleMás detalles

Signatura

ParamProposedSignerList findProposedSignerList(ParamProposedSignerSearch paramProposedSignerSearch)

Parámetros de invocación

NombreTipoDescripción
paramProposedSignerSearch1241284867Parámetros de búsqueda (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
proposedSignerListParamProposedSignerListObjeto que encapsula la lista de firmantes propuestos encontrados y el tamaño de dicha lista

Códigos error

CódigoDescripción
SIGNERSERVICEIMPL_FINDPROPOSEDSIGNERLISTSIGNERSERVICEIMPL_FINDPROPOSEDSIGNERLIST

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamProposedSignerSearch paramProposedSignerSearch = new ParamProposedSignerSearch();
paramProposedSignerSearch.setSignerNif("78965412X");
ParamProposedSignerList proposedSigner = iSignerImpl.findProposedSignerList(paramProposedSignerSearch);


Servicios DocumentService

...

Método 'findDocument'

Método que busca un documento utilizando los criterios de búsqueda establecidos como parámetro de entrada

Expand
titleMás detalles

Signatura

Document findDocument(DocumentSearch documentSearch)

Parámetros de invocación

NombreTipoDescripción
documentSearch1241284867Parámetros de búsqueda (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
document1241284867Documento encontrado según el criterio de búsqueda proporcionada

Códigos error

CódigoDescripción
DOCUMENTSERVICEIMPL_FINDDOCUMENT_02Error genérico durante el servicio findDocument

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
DocumentSearch documentSearch = new DocumentSearch();
documentSearch.setCsv("CSV6F70H2A66T1E01PFI");
Document document = iDocumentImpl.findDocument(documentSearch);


Método 'findDocumentList'

Método que busca una lista de documentos utilizando los criterios de búsqueda establecidos como parámetro de entrada

Expand
titleMás detalles

Signatura

List<Document> findDocumentList(DocumentSearch documentSearch)

Parámetros de invocación

NombreTipoDescripción
paramMetadatadocumentSearch1241284867Parámetros de entrada búsqueda (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
valueStringEl valor de metadato encontradodocumentListList<1241284867>Lista de documentos encontrados según los parámetros de búsqueda indicados

Códigos error

FINDMETADATAVALUE
CódigoDescripción
DOCUMENTSERVICEIMPL_FINDDOCUMENTLIST_01Error genérico durante el servicio findDocumentList
DOCUMENTSERVICEIMPL_FINDDOCUMENTLIST_02Error genérico durante el servicio findMetadataValuefindDocumentList

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamMetadataDocumentSearch paramMetadatadocumentSearch = new ParamMetadataDocumentSearch();
paramMetadatadocumentSearch.setMetadataName("metatada-name"setState(2);
StringList<Document> valuedocumentList = iDocumentImpl.findMetadataValuefindDocumentList(paramMetadatadocumentSearch);


Método '

...

findDocumentTray'

Método para obtener el estado del documentoque permite la búsqueda de un listado de documentos para las bandejas a partir del objeto ParamTraySearch

Expand
titleMás detalles

Signatura

Integer getDocumentState(ParamGetDocumentState paramGetDocumentStateResultTrayList findDocumentTray(ParamTraySearch paramTraySearch)

Parámetros de invocación

NombreTipoDescripción
paramGetDocumentStateparamTraySearch1241284867Parámetros de entrada búsqueda (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
stateresultTrayListIntegerResultTrayList

Numero de estado correspondiente en porta-firmas:

6 →  En paralelo

4 →  Anulado

3 →  Firma Programada

2 →  Firmado

1 →  Pendiente de firma

0 → Borrador

Lista de documentos para la bandeja que cumplen los criterios de búsqueda

Códigos error

GETDOCUMENTSTATE getDocumentState
CódigoDescripción
DOCUMENTSERVICEIMPL_FINDDOCUMENTTRAYError genérico durante el servicio findDocumentTray
FIND_DOCUMENT_LISTError inesperado al buscar un documentoDOCUMENTMANAGERIMPL_FINDDOCUMENTError buscando documentolos documentos en bbdd

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamGetDocumentStateParamTraySearch paramGetDocumentStateparamTraySearch = new ParamGetDocumentStateParamTraySearch();
paramGetDocumentStateparamTraySearch.setCsvsetDraft("CSVP55RYQS7R9AF01PFI"true);
IntegerResultTrayList documentStateresultTrayList = IDocumentServiceiDocumentImpl.getDocumentStatefindDocumentTray(paramGetDocumentStateparamTraySearch);


Método '

...

findDocumentTrayVisibility'

Método para cambiar el estado de un documentoque permite la búsqueda de un listado de documentos para las bandejas a partir del objeto ParamTraySearch incluyendo información de visibilidad

Expand
titleMás detalles

Signatura

void setDocumentState(ParamSetDocumentState paramSetDocumentStateResultTrayListVisibility findDocumentTrayVisibility(ParamTraySearch paramTraySearch)

Parámetros de invocación

NombreTipoDescripción
paramSetDocumentStateparamTraySearch1241284867Parámetros de entrada búsqueda (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
resultTrayListVisibilityResultTrayListVisibilityLista de documentos para la bandeja que cumplen los criterios de búsqueda con información de visibilidad

Códigos error

SIGNDOCUMENT_03DOCUMENTSERVICEIMPL_SETDOCUMENTSTATE metodo setDocumentState
CódigoDescripción
DOCUMENTSERVICEIMPL_No se puede actualizar el contenido porque ya está en usoFINDDOCUMENTTRAYError genérico durante el servicio findDocumentTrayVisibility
DOCUMENTMANAGERIMPLPAUINTEGRATION_FINDDOCUMENTLISTPROCEDURELISTBYUSERError inesperado en el sistema de autentificación. Se ha producido el siguiente error al buscar una la lista de procedimientos del usuario desde PAU
FIND_DOCUMENT_LISTError al buscar los documentos en bbdd

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamSetDocumentStateParamTraySearch paramSetDocumentStateparamTraySearch = new ParamSetDocumentStateParamTraySearch();
paramSetDocumentStateparamTraySearch.setCsvsetDraft("CSVP55RYQS7R9AF01PFI"true);
paramSetDocumentState.setState(0);
IDocumentService.setDocumentState(paramGetDocumentStateResultTrayListVisibility resultTrayListVisibility = iDocumentImpl.findDocumentTrayVisibility(paramTraySearch);


Método '

...

findDocumentFolderList'

Método para obtener la operación asociada al que busca un listado de bloques o carpetas a partir del objeto de búsqueda del documento

Expand
titleMás detalles

Signatura

ResultGetOperation getOperation(ParamGetOperation paramGetOperationList<ParamFolder> findDocumentFolderList(DocumentSearch document)

Parámetros de invocación

NombreTipoDescripción
paramGetOperationdocumentParamGetOperation1241284867Parámetros de entrada búsqueda (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
resultGetOperationparamFolderResultGetOperationObjeto que encapsula el resultado de la operaciónList<ParamFolder>Error inesperado al buscar los diferentes folder a los que pertenecen los documentos

Códigos error

GETOPERATION getOperation
CódigoDescripción
DOCUMENTSERVICEIMPL_FINDDOCUMENTFOLDERLISTError genérico durante el servicio findDocumentFolderList
SCDEINTEGRATION_GETSTATUSError al comprobar el estado de la operacion
LOAD_OPERATIONError buscando operación. El usuario no tiene permisos para ver la operación
FIND_OPERATIONError buscando operación
NOT_EXIST_DOCUMENT

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamGetOperation paramGetOperation = new ParamGetOperation();
paramGetOperation.setDocumentId(1L);
ResultGetOperation resultGetOperation = IDocumentService.getOperation(paramGetOperation);

Servicios AdviceService

Método 'sendAdvice'

...

DocumentMetadataSearch documentMetadataSearch = new DocumentMetadataSearch();



Método 'getDocumentState'

Método para obtener el estado del documento

Expand
titleMás detalles

Signatura

void sendAdvice(Integer noteType, String csv, String text, String userAdviserInteger getDocumentState(ParamGetDocumentState paramGetDocumentState)

Parámetros de invocación

NIF de usuario que ha generado el aviso
NombreTipoDescripción
noteTypeIntegerDefine el tipo de nota para identificar qué cambio ha sufrido el documento
csvStringCódigo seguro de verificación del documento que genera el aviso
textStringContenido de aviso
userAdviserStringDescripción
paramGetDocumentState1241284867Parámetros de entrada (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
stateInteger

Numero de estado correspondiente en porta-firmas:

6 →  En paralelo

4 →  Anulado

3 →  Firma Programada

2 →  Firmado

1 →  Pendiente de firma

0 → Borrador

Códigos error

CódigoDescripción

ADVICESERVICEIMPLDOCUMENTSERVICEIMPL_SENDADVICEGETDOCUMENTSTATE

Error genérico durante el servicio sendAdvicegetDocumentState
DOCUMENTMANAGERIMPLFIND_FINDDOCUMENTDOCUMENTError inesperado al buscar el un documento
DOCUMENTMANAGERIMPL_FINDDOCUMENTError buscando documento

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
String userNif = "12345678X";
DocumentSearch documentSearchParamGetDocumentState paramGetDocumentState = new DocumentSearchParamGetDocumentState();
documentSearchparamGetDocumentState.setCsv("CSV6F70H2A66T1E01PFICSVP55RYQS7R9AF01PFI");
DocumentInteger documentdocumentState = iDocumentImplIDocumentService.findDocumentgetDocumentState(documentSearchparamGetDocumentState);

IAdviceService.sendAdvice(PFICoreConstants.NOTE_TYPE_PROPOSEDSIGNER, document.getCsv(), null, userNif);


Método '

...

getOperation'

Método que manda un correo electrónico de manera inmediata mediante sga para informar de algún cambio en un para obtener la operación asociada al documento

Expand
titleMás detalles

Signatura

void sendMail(String fiscalAnagram, String asunto, String mensajeResultGetOperation getOperation(ParamGetOperation paramGetOperation)

Parámetros de invocación

Contenido de mensaje que se enviará
NombreTipoDescripción
fiscalAnagramStringIdentificación fiscal
asuntoStringAsunto de mensaje que se enviará
mensajeStringDescripción
paramGetOperationParamGetOperationParámetros de entrada (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
resultGetOperationResultGetOperation

Objeto que encapsula el resultado de la operación

Códigos error

CódigoDescripción

ADVICESERVICEIMPLDOCUMENTSERVICEIMPL_SENDMAILGETOPERATION

Error genérico durante el servicio sendMailgetOperation
SENDADVICESCDEINTEGRATION_ADVICEMANAGERGETSTATUSError al generar el aviso por correocomprobar el estado de la operacion
LOAD_OPERATIONError buscando operación. El usuario no tiene permisos para ver la operación
FIND_OPERATIONError buscando operación

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
String userNif = "12345678X";
String message = "...";

IAdviceService.sendAdvice(userNif, "Operacion finalizada", messageParamGetOperation paramGetOperation = new ParamGetOperation();
paramGetOperation.setDocumentId(1L);
ResultGetOperation resultGetOperation = IDocumentService.getOperation(paramGetOperation);


Servicios DocumentIntegrationService

...

Expand
titleMás detalles

Signatura

ResultSendDocument sendDocumentumDocument(ParamSendDocument paramSendDocument)

Parámetros de invocación

NombreTipoDescripción
paramSendDocument1241284867Parámetros de entrada (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
resultSendDocument1241284867

Objeto que encapsula el resultado de la operación, proporcionado información en caso de error

Códigos error

CódigoDescripción

DOCUMENTINTEGRATIONMANAGERIMPL_SENDDOCUMENTUMDOCUMENT

Error inesperado al crear un documento en la tabla de PFI_DOCUMENT
DOCUMENTMANAGERIMPL_FINDDOCUMENTError inesperado al buscar un documento
LOAD_DOCUMENTError cargando documentos
SIUINTEGRATION_SENDPROPOSEDSIGNERS
Error en el sistema de identificación. El firmante propuesto debe estar dado de alta en el sistema de identificación de usuarios (SIU)

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamSendDocument paramSendDocument = new ParamSendDocument();
paramSendDocument.setCsv("CSVDA6FLBW3PNAX01PFI");
paramSendDocument.setApplicationId("PFI");
paramSendDocument.setUserNif("00000000T");
ResultSendDocument resultSendDocument = iDocumentIntegrationImpl.sendDocumentumDocument(paramSendDocument);


...

Expand
titleMás detalles

Signatura

ResultUpdateQuorumAndLimitDate updateQuorumAndLimitDateDocument (ParamUpdateQuorumAndLimitDate paramUpdateQuorumAndDate)

Parámetros de invocación

NombreTipoDescripción
paramUpdateQuorumAndDate1241284867Parámetros de entrada (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
resultUpdateQuorum1241284867

Objeto que encapsula el resultado de la operación, proporcionado información en caso de error

Códigos error

CódigoDescripción

QUORUMTASK_DOCUMENTNONEXISTING

El documento con el CSV especificado no existe en la base de datos de PFI
QUORUMTASK_QUORUMWRONGEl valor de quorum indicado es incorrecto. Debe ser mayor que 0 y menor o igual que el número de firmantes propuestos del documento
QUORUMTASK_DATEWRONGLa fecha límite de firma del documento ha expirado
QUORUMTASK_NOMULTIFIRMAEl documento no es multifirma
QUORUMTASK_SIGNEDEl documento ya ha sido firmado por alguno de los firmantes

Ejemplos de invocación

Code Block
languagejava
firstline1
titleEjemplo de invocación
linenumberstrue
ParamUpdateQuorumAndLimitDate paramUpdateQuorumAndDate = new ParamUpdateQuorumAndLimitDate();
paramUpdateQuorumAndDate.setCsv("CSVP55RYQS7R9AF01PFI");
paramUpdateQuorumAndDate.setQuorum(2);
//queremos de fecha límite por ejemplo el día de hoy más una semana
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
Integer incFecha = 7;
cal.add(Calendar.DATE, incFecha);
paramCheckQuorumAndDate.setDate(cal.getTime());
paramCheckQuorumAndDate.setQuorumOnly(false);

ResultUpdateQuorumAndLimitDate resultCheckQuorumAndDate = iDocumentIntegrationImpl.updateQuorumAndLimitDateDocument(paramUpdateQuorumAndDate);



Suscripción a eventos

...

PFI se integra con SGA para el envío de eventos. Para que una aplicación pueda recibir los eventos de PFI, es necesario que esté dada de alta en SGA y que publique un servicio web para la recepción de los eventos. En el manual de SGA se explica cómo publicar el servicio web para poder recibir los eventos.

PFI envía eventos a través de los siguientes métodos:

  • expiredDocument → Método que informa los documentos que han quedado expirados por no haber sido firmados antes de la fecha límite configurada. En los datos del evento llega el código CSV del documento y su estado. Los estados a recibir son los siguientes:
    • Estado 0 (BORRADOR ) → Un documento queda expirado en estado 0 (BORRADOR) cuando no tiene ninguna firma realizada y no ha sido firmado antes de la fecha límite configurada
    • Estado 2 (FIRMADO) → Un documento queda expirado en estado 2 (FIRMADO) cuando tiene todas las firmas necesarias realizadas pero por algún motivo ha quedado en el estado erróneo y no se ha cumplido la fecha límite configurada

Ejemplo de datos del evento que recibiría la aplicación destino:

...

La aplicación destino que desee recibir los eventos debe estar suscrita en SGA al método expiredDocument de PFI. Además, en PAU deberá tener permiso sobre el método expiredDocument de PFI.


  • sendEvent → Método que informa sobre los cambios de estado de los documentos de PFI. Para poder recibir estos eventos de cambios de estado, los documentos deben tener asignado el alias de la aplicación receptora en el metadato dea_ident_codigo_aplicacion. De lo contrario, no se recibirán los eventos. El evento se compone de clave y valor. La clave es el CSV del documento y el valor es el estado del documento. Los cambios de estado que se notifican son los siguientes:
    • Estado 3 (Firmando asíncronamente) → Estado al que se pasan los documentos al inicio del proceso de firma para indicar que se está realizando la firma del documento.
    • Estado 6 (Firma paralela) → Se alcanza este estado cuando un documento tiene varios firmantes propuestos y alguno de ellos ya ha firmado pero todavía no se cumple el quorum.
    • Estado 2 (Firmado) → Documento firmado.
    • Estado 0 (Borrador) → Se recibe este evento cuando se rechaza un documento pendiente de firma.
    • Estado 9 (Anulado) → Se recibe este evento cuando se anula un documento.

Ejemplo de datos del evento que recibiría la aplicación destino:

...

Objeto  
Anchor
ParamProposedSigner
ParamProposedSigner
'ParamProposedSigner'

NombreTipoDescripción
proposedSignerIdLongId del firmante propuesto
signerNifStringNif del firmante propuesto
signerNameStringNombre del firmante propuesto
signerDateFromStringFecha de selección del firmante
signerOrderStringOrden de firma del firmante propuesto
signaturePositionStringTipo de posición de los pies de firma
positionStringCoordenadas donde se ha colocado el pie de firma del firmante propuesto
delegationTextStringTexto de delegación del firmante propuesto
signedStringIndica si el firmante propuesto ha firmando (1) o no (0)
signerOrgCodeStringCódigo de organismo del firmante propuesto
signerOrganismStringNombre de organismo del firmante propuesto
signerRoleStringCargo del firmante propuesto
signerStatusStringCondición del firmante
revisedStringIndica si el firmate propuesto ha sido revisado o no. Valores: S o N
deleteSignBooleanIndica si se ha de borrar la firma al actualizar el firmante propuesto

...

NombreTipoDescripción
csvStringCódigo seguro de verificación del documento

applicationId

StringAplicación que ejecuta el método
userNifStringNif de usuario

...

NombreTipoDescripción
csvStringCódigo seguro de verificación del documento
stateIntegerEstado actual del documento
modifyStateIntegerEstado al que cambiará el documento
modifyDateDateFecha del cambio de estado del documento

Objeto  
Anchor
ParamUpdateQuorumAndLimitDate
ParamUpdateQuorumAndLimitDate
'ParamUpdateQuorumAndLimitDate'

...

Objeto  
Anchor
ParamSendDocument
ParamSendDocument
'ParamSendDocument'

NombreTipoDescripción
applicationIdStringAplicación que ejecuta el método

userNif

StringNif del usuario
csvStringCódigo seguro de verificación del documento

...