Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

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

ÍNDICE DEL CONTENIDO




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.

IDocumentIntegrationService
<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.

<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.

<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:

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)

-

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  4.- Servicios de PFI#Procedimiento de alta descrito previamente en este manual.

-

Servicios DocumentService


Servicios AdviceService


Método 'sendAdvice'

Método que manda un aviso utilizando el sistema de cola de sga para informar de algún cambio en un documento

 Más detalles

Signatura

void sendAdvice(Integer noteType, String csv, String text, String userAdviser)

Parámetros de invocación

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
userAdviserStringNIF de usuario que ha generado el aviso

Parámetros de respuesta

NombreTipoDescripción



Códigos error

CódigoDescripción

ADVICESERVICEIMPL_SENDADVICE

Error genérico durante el servicio sendAdvice
DOCUMENTMANAGERIMPL_FINDDOCUMENTError inesperado al buscar el documento

Ejemplos de invocación

Ejemplo de invocación
String userNif = "12345678X";
DocumentSearch documentSearch = new DocumentSearch();
documentSearch.setCsv("CSV6F70H2A66T1E01PFI");
Document document = iDocumentImpl.findDocument(documentSearch);

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

Método 'sendMail'

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

 Más detalles

Signatura

void sendMail(String fiscalAnagram, String asunto, String mensaje)

Parámetros de invocación

NombreTipoDescripción
fiscalAnagramStringIdentificación fiscal
asuntoStringAsunto de mensaje que se enviará
mensajeStringContenido de mensaje que se enviará

Parámetros de respuesta

NombreTipoDescripción



Códigos error

CódigoDescripción

ADVICESERVICEIMPL_SENDMAIL

Error genérico durante el servicio sendMail
SENDADVICE_ADVICEMANAGERError al generar el aviso por correo

Ejemplos de invocación

Ejemplo de invocación
String userNif = "12345678X";
String message = "...";

IAdviceService.sendAdvice(userNif, "Operacion finalizada", message);

Servicios DocumentIntegrationService


Método 'sendDocumentumDocument'

Cuando una aplicación que integra Porta-firmas almacena un documento en Documentum y desea que quede guardado en Porta-firmas, invoca este servicio para que posteriormente Porta-firmas pueda hacer uso de dicho documento.

 Más detalles

Signatura

ResultSendDocument sendDocumentumDocument(ParamSendDocument paramSendDocument)

Parámetros de invocación

NombreTipoDescripción
paramSendDocument4.- Servicios de PFI#ParamSendDocumentParámetros de entrada (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
resultSendDocument4.- Servicios de PFI#ResultSendDocument

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

Ejemplo de invocación
ParamSendDocument paramSendDocument = new ParamSendDocument();
paramSendDocument.setCsv("CSVDA6FLBW3PNAX01PFI");
paramSendDocument.setApplicationId("PFI");
paramSendDocument.setUserNif("00000000T");
ResultSendDocument resultSendDocument = iDocumentIntegrationImpl.sendDocumentumDocument(paramSendDocument);

Método 'updateQuorumAndLimitDateDocument'

Método que actualiza el número mínimo de firmantes que deben firmar un documento y fecha límite de firma en los documentos con más de un firmante

 Más detalles

Signatura

ResultUpdateQuorumAndLimitDate updateQuorumAndLimitDateDocument (ParamUpdateQuorumAndLimitDate paramUpdateQuorumAndDate)

Parámetros de invocación

NombreTipoDescripción
paramUpdateQuorumAndDate4.- Servicios de PFI#ParamUpdateQuorumAndLimitDateParámetros de entrada (ver detalle de campos en el apartado de objetos comunes)

Parámetros de respuesta

NombreTipoDescripción
resultUpdateQuorum4.- Servicios de PFI#ResultUpdateQuorumAndLimitDate

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

Ejemplo de invocación
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:

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

Anexos


Objectos Comunes

Objeto   'SignerSearch'

NombreTipoDescripción
auditorNifStringNif del auditor a buscar
signerNifStringNif del firmante para el que se quieren buscar auditores
fiscalAnagramStringNif del usuario identificado en la aplicación
organismCodeStringCódigo de organismo del firmante
nameStringNombre del firmante
surname1StringPrimer apellido de firmante
surname2StringSegundo apellido de firmante
emailStringE-mail del firmante
roleCodeStringCódigo del rol del usuario
userOrganismCodeStringCódigo de organismo de usuario
prepararOtrasRamasbooleanIndica si el usuario tiene acceso a ramas diferentes a la suya
fromIndexintÍndice a partir del que se quieren obtener los auditores
toIndexintÍndice hasta el que se permite devolver auditores
maxResultsintMáximo número de auditores que se devuelven
sortColumnStringIndica la ordenación de los resultados
ascendingBooleanIndica si la ordenación de los resultados es ascendente o descendente
activeBooleanIndica si han de ser activos los firmantes encontrados o no

Objeto   'Signer'

NombreTipoDescripción
nameLongNombre del firmante
surname1StringPrimer apellido del firmante
surname2StringSegundo apellido del firmante
nifStringNif del firmante
fiscalAnagramStringAnagrama fiscal del auditor
organismStringOrganismos en los que firma
roleStringNombre del rol del firmante
roleCodeStringCódigo del rol del firmante
organismCodeStringNombre del organismo en el que firma

Objeto   'ParamProposedSignerSearch'

NombreTipoDescripción
signerNifStringNif del firmante propuesto
signerNameStringNombre del firmante propuesto
signerDateToDateIndica el inicio del periodo para cotejar la fecha de firma
signerDateFromDateIndica el final del periodo para cotejar la fecha de firma
signaturePositionIntegerTipo de posición de los pies de firma
signerOrderIntegerOrden de firma del firmante propuesto
positionStringCoordenadas donde se ha colocado el pie de firma del firmante propuesto
delegationTextStringTexto de delegación del firmante propuesto
signedIntegerIndica si el firmante propuesto ha firmando (1) o no (0)
signerOrgCodeStringCódigo de organismo del firmante propuesto
documentDocumentDocumento para el el cual se buscarán los firmantes propuestos
signerStatusStringCondición del firmante
fromIndexintÍndice a partir del que se quieren obtener los auditores
toIndexintÍndice hasta el que se permite devolver auditores
maxResultsintMáximo número de auditores que se devuelven
sortColumnStringIndica la ordenación de los resultados
ascendingBooleanIndica si la ordenación de los resultados es ascendente o descendente

Objeto   '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

Objeto   'DocumentMetadata'

NombreTipoDescripción

signerName

StringSi se mostrará el documento (S), o no (N)
signerSurnameStringApellidos del firmante
signerNifStringNif del firmante
auditorNameStringNombre de auditor
auditorSurnameStringApellidos de auditor
auditorNifStringNif de auditor
descriptionStringDescripción del metadato
documentTypeStringTipo de documento
procedureStringNombre de procedimiento
metadataNameStringNombre del metadato
metadataValueStringValor del metadato

Objeto   'DocumentMetadataSearch'

NombreTipoDescripción
documentMetadataIdLongId del registro en el historial

signerName

StringSi se mostrará el documento (S), o no (N)
signerSurnameStringApellidos del firmante
signerNifStringNif del firmante
auditorNameStringNombre de auditor
auditorSurnameStringApellidos de auditor
auditorNifStringNif de auditor
descriptionStringDescripción de metadato
documentTypeStringTipo de documento
procedureStringNombre del procedimiento
metadataNameStringNombre del metadato
metadataValueStringValor del metadato

Objeto   'DocumentSearch'

NombreTipoDescripción
documentIdLongId del documento a buscar

documentIds

List<Long>Lista de ids a buscar
csvStringCódigo seguro de verificación del documento
lookUpDocumentumDataBooleanBuscar datos en documentum
lookUpStampSignedBoolean
lookUpLetDocumentStampBoolean
lookUpProposedSignersBooleanBuscar firmantes propuestos
lookUpFileStringBuscar fichero
stateIntegerEstado del documento
csvAuthorizedStringCódigo seguro de verificación autorizado
isDetailBooleanIndica si es detalle
modifiedStateBooleanSi el documento ha cambiado de estado
esDocAnulacionStringSi es un documento de anulación
csvAnulacionStringCSV del documento de anulación asociado
csvSustitucionStringCSV del documento de sustitución asociado

Objeto   'ParamTraySearch'

NombreTipoDescripción
metadataIdLongId del documento a buscar

metadataName

StringLista de ids a buscar
issuerNameStringCódigo seguro de verificación del documento
signerNameStringBuscar datos en documentum
signerNifStringNif del firmante
issuerNifStringBuscar firmantes propuestos
recipientStringBuscar fichero
descriptionStringEstado del documento
documentTypeStringCódigo seguro de verificación autorizado
documentCopyOriginalStringIndica si es detalle
folderStringSi el documento ha cambiado de estado
stateIntegerSi es un documento de anulación
preparationDateFromDateCSV del documento de anulación asociado
preparationDateToDateCSV del documento de sustitución asociado
procedureStringNombre del procedimiento
signedBooleanDocumento firmado o no firmado
draftBooleanIndica si el documento es un borrador
pendingSignatureBooleanIndica si el documento esta pendiente de firma
auditorBooleanEs auditor
generalAuditorBooleanEs auditor general
fromIndexintÍndice a partir del que se quieren obtener los documentos
toIndexintÍndice hasta el que se permite devolver los documentos coincidentes
maxResultsintCantidad de documentos máxima que se devolverá
sortColumnStringIndica la ordenación de los resultados
ascendingBoolean

Indica si la ordenación de los resultados es ascendente o descendente

Objeto   'Document'

Nombre
Tipo
Descripción
applicationIdStringAplicación que ejecuta el método
userNifStringNif del usuario
documentIdLongId del documento.
csvStringCsv generado por CCSV para el documento.
stateInteger

Estado del documento en el sistema. Puede tomar los siguientes valores:

0:borrador, 1: pendiente de firma, 2: firmado, 3: firmando asíncrona-mente, 4: eliminado

rejectedStringIndica que el documento ha sido rechazado “S” o que no ha sido rechazado “N”. Por defecto “N”.
folderStringIdentificador de la carpeta a la que pertenece un documento.
priorityInteger

Prioridad del documento, por defecto 1:

0: baja

1: media

2:alta

csvAutorizedStringCsv de un documento de autorización.
operationIdStringId del proceso de firma que se realiza.
operationStateStringEstado en el que se ha quedado el proceso de firma.
signTypeIntegerTipo de firma del documento.
limitDateDateFecha límite para la firma del documento.
prepateDateInitDateFecha de inicio de la preparación del documento.
prepareDateEndDateFecha de fin de la preparación del documento.
creatorNifStringNif del creador del documento.
quorumIntegerMínimo de firmas requeridas para pasar a firmar un documento.
quorumOnlyBooleanIndica, en el caso de multifirma, si se admiten más firmas que las mínimas requeridas (quorum).
csvDocCancelStringCSV del documento de cancelación de la operación.
hashDocumentStringIndica el hash del documento.
preloadedImageBase64byte[]Array de bytes que contiene la imagen en base64 del documento.
esDocAnulacionStringIndica si el documento es de anulación “S”.
obligatorioExpedienteStringIndica si el documento es obligatorio para el expediente, en caso de que lo haya, al que va asociado.
asoaciadoAExpedienteBooleanIndica si el documento está asociado a algún expediente.
metadataCacheMap<ParamMetadataId,
ParamMetadata>
Metadatos obtenidos de la tabla PFI_METADATA
metadatasMap<ParamMetadataId,
ParamMetadata>
Mapa con los metadatos del documento ordenados
proposedSignersMap<String,
ParamProposedSigner>
Mapa con todos los firmantes propuestos.
documentumMetadataMap<String, String>Mapa con los metadatos que se obtienen de documentum.
metadatosDocumentoList<ParamMetadata>Lista de los metadatos para los JSP’s
fileParamFileArchivo asociado al documento.
oidStringNúmero de operación de firma que se realiza
letStampIntegerResultado de la llamada al letDocumentStamp.
showDocumentStringIndica si se ha de mostrar el documento.
saveFileBooleanIndica si se tiene que guardar el fichero.
signResultStringResultado de la firma del documento.
hasSummaryDocumentBooleanIndica si el documento tiene un sumario.
modifyStateIntegerEstado al que se ha modificado un documento.
modifyDateDateFecha en la que se ha modificado un documento.

Objeto   'ParamSignDocument'

NombreTipoDescripción
csvLongCSV del documento

nif

StringNif del firmante
proposedSignerLongIdentificador del firmante propuesto
allSignedBoolean
isAuthorizationBooleanIndica si es un documento de autorización
numberOfSignersIntegerIndica la cantidad de firmantes
simpleSignBooleanIndica si es una firma simple
restoreDocumentBooleanSi se restaurará el documento

Objeto   'ParamGetDocumentState'

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

applicationId

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

Objeto   'ParamSetDocumentState'

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   'ParamUpdateQuorumAndLimitDate'

NombreTipoDescripción
csvStringCSV del documento

quorum

IntegerCantidad de firmas necesarias para firmar un documento
quorumOnlyBooleanIndica, en el caso de multifirma, si se admiten más firmas que las mínimas requeridas (quorum).
dateDateFecha limite para firmar 

Objeto   'ResultUpdateQuorumAndLimitDate'

NombreTipoDescripción
errorCodeStringCódigo de error del servicio

returnCode

StringIndica si la llamada ha finalizado correctamente (OK) o en error (ERROR)
errorMessageStringDescripción del mensaje de error

Objeto   'ParamSendDocument'

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

userNif

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

Objeto   'ResultSendDocument'

NombreTipoDescripción
returnCodeStringIndica si la llamada ha finalizado correctamente (OK) o en error (ERROR)

errorCode

StringCódigo de error del servicio
errorMessageStringMensaje de error del servicio
exception StringExcepción producida durante el proceso

Objeto   'ParamGetOperation'

NombreTipoDescripción
documentIdLongIdentificador único del documento

userNif

StringNif del usuario que ejecuta el servicio web
applicationIdStringId de la aplicación que ejecuta al servicio web

Objeto   'ResultGetOperation'

NombreTipoDescripción
operationIdLongIdentificador único de la operación

operationState

StringEstado actual de la operación
csvAutorizedString
csvDocCancelString
documentListList<Document>Documentos asociados a la operación consultada

-

  • No labels