Versions Compared

Key

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

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

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

ÍNDICE DEL CONTENIDO

Table of Contents

Descripción funcional del servicio

...

El Servicio de Creación de Documentos Electrónicos (SCDE) está concebido para proporcionar varias herramientas relacionadas con la creación de documentos a partir de plantillas pdf y la firma de dichos documentos y, por otro lado con la gestión masiva de documentos y la firma de estos.

...

  • Crear documentos y, si es requerido, preparar un documento de autorización con el CSV de todos los documentos creados

  • Enviar la firma de un documento de autorización para que se realice la firma de los documentos creados según el punto anterior

  • Firmar documentos mediante el proceso de firma con sello de órgano

  • Consultar los valores rellenados en los campos de un fichero PDF.

  • Consultar el estado de una operación.

  • Cancelar una operación y anular los documentos asociados a ésta.

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 SCDE. 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
<bean id="authorizeInterceptor" class="es.aragon.pfi.core.util.interceptors.AuthorizeOutInterceptor">
  <property name="applicationId" value="[código aplicación llamante]"/>
</bean>

 

Ejemplo de configuración de la librería con maven

...

Si la aplicación a integrarse es gestionada con maven se deberá instalar la dependencia en el fichero pom.xml como tipo jar, según se muestra en el siguiente ejemplo:

Code Block
<dependency>
  <groupId>es.aragon.scde</groupId>
  <artifactId>scde_client</artifactId>
  <version>2.0</version>
  <type>jar</type>
  <scope>compile</scope>
</dependency>

Servicios

...

A partir de la versión 2.0 de SCDE se han desarrollado servicios que incorporan funcionalidades a algunos ya existentes. Se recomienda la integración con los nuevos, en lugar de los anteriores. En el siguiente punto se indica cuáles son

Servicios públicos

SCDE tiene un único servicio público ICertificateService que ofrece los siguientes métodos:

  • cancelOperation: cancelación de operaciones realizadas a través de SCDE.

  • createCertificate: creación de documentos certificados firmados con sello de órgano (obsoleto, se recomienda el uso de createCertificate1).

  • createCertificate1: creación de documentos certificados firmados con sello de órgano (evolución del createCertificate).

  • getStatus: control del proceso de creación de los documentos.

  • sendDocAuth: envío de un documento de autorización firmado (obsoleto, se recomienda el uso de sendDocAuth1).

  • sendDocAuth1: envío de un documento de autorización firmado (evolución del sendDocAuth).

  • sendDocAuthByCSV (obsoleto)

  • getDocByCSV

  • signDocs: firma de documentos creados por otras aplicaciones (obsoleto, se recomienda el uso de signDocs1).

  • signDocs1: firma de documentos creados por otras aplicaciones (evolución del signDocs)

  • getDcmi: consulta los datos de los campos de un documento PDF.

  • cancelOperation: cancela una operación.

  • signDocsWithoutDocAuth: firma de documentos con sello de órgano sin documento de autorización.

  • signDocsWithExternalDocAuth: firma de documentos con sello de órgano a partir del CSV del documento de autorización.

La dirección para poder acceder al servicio es: http://scde_core/services/certificate_service


ServiciosPrivados

En el servicio público ICertificateService existen también dos servicios privados que son llamados desde la propia aplicación, en su módulo ADMIN:

  • listCertificateOperations ¿PÚBLICO?

  • downloadCertificateDocument

Servicios CertificateService

Antes de empezar a describir cada servicio, cabe destacar una serie de elementos comunes a los mismos.

Elementos comunes

Códigos de estado

Los códigos indicativos de los diferentes estados en los que puede estar la aplicación son:

Código

Descripción

CREATING_DOCS

Creando documentos.

WAITING_DOC_AUT

Se han creado y guardado en Documentum los documentos solicitados en el método createCertificate, y se está esperando recibir la firma del documento de autorización mediante el método sendDocAuth.

SIGNING_DOCS

Firmando documentos y archivando en Documentum

END_OPERATION

La operación de firma ha sido realizada con éxito.

OPERATION_TIMEOUT

La operación ha excedido el tiempo previsto para ser realizada.

ERROR_GENERAL

Se ha producido un error general no especificado.

ERROR_ID_OPERATION

Se ha enviado un identificador de operación no válido.

ERROR_CREATING_DOCS

Se ha producido un error al crear documentos.

ERROR_DOC_AUT

Se ha producido un error al firmar el documento de autorización.

ERROR_SIGN_DOCS

Error al firmar y/o almacenar los documentos que debían ser firmados.

CANCELLING_OPERATION

La operación está siendo cancelada y los documentos relacionados están siendo anulados.

OPERATION_CANCELED

Se ha terminado de cancelar una operación.

ParamBase

En las llamadas a los distintos servicios forma parte fundamental el ParamBase ya que se utiliza como contenedor de algunos de los valores clave en la autorización necesaria para utilizar los servicios proporcionados por el CORE y en la autorización para la consulta o modificación de los distintos estados de la aplicación Por ello todos los servicios son llamados con un parámetro que extiende de un ParamBase o incluye dentro del prototipo dicho parámetro.

...

Salvo que se indique lo contrario en el campo applicationId deberá ir el identificador de aplicación que quiera utilizar los servicios y en el campo nif el identificador fiscal del empleado público que realiza la petición. Las particularidades de los parámetros y de los tipos de resultados se especificarán al describir los servicios web con sus correspondientes métodos.

ResultGetStatus

Todos los métodos del servicio (excepto getMetadata) devuelven un objeto de clase ResultGetStatus, que contiene los siguientes atributos:

Nombre

Tipo

Descripción

idOperation

String

Código de operación

statusCode

String

Código del estado de la operación

statusDescription

String

Descripción del estado de la operación

docAuthCsv

String

CSV del documento de autorización

docResumeCsv

String

CSV del documento resumen

docCancelCsv

String

CSV del documento de cancelación

signedCsvList

String[]

Lista de CSVs de documentos firmados

signedBeforeCsvList

String[]

Lista de CSVs de documentos firmados en una petición anterior

noSignedCsvList

String[]

Lista de CSVs de documentos no firmados

extraInfo

FieldType[]

Información extra

docCancelCsv

String

CSV del documento autorizando la cancelación

Excepciones

Todos los métodos están configurados para lanzar excepciones de clase ScdeCoreException, que tiene los siguientes atributos:

Nombre

Tipo

Descripción

Code

Long

Código que describe el tipo de error

Msg

String

Mensaje asociado al tipo de error indicado en el código

ExtraInfo

String

Posible información extra que se haya considerado oportuno indicar para localizar la causa del error

Añadir códigos de error

Método ‘createCertificate’ (obsoleto)

Se recomienda la integración con el método createCertificate1. Método del servicio que permite crear documentos certificados y firmarlos con el sello de órgano enviado, y también permite solicitar que se cree un documento certificado de autorización de los documentos anteriormente creados. Los documentos a crear pueden ser enviados agrupados, y se les puede añadir metadatos simples, tanto a nivel individual, como comunes al grupo en el que se hallen incluidos, además de incluir los datos de cada documento para rellenar la plantilla seleccionada. Los metadatos enviados deberán estar incluidos en los metadatos asociados a un documento electrónico cuando se almacena en el sistema de gestión documental corporativo del Gobierno de Aragón.

...

Signatura

ResultGetStatus createCertificate(ParamCreateCertificate paramCreateCertificate) throws ScdeCoreException;

Parámetros de invocación

Los parámetros de entrada al servicio se encapsulan en un objeto ParamCreateCertificate, que extiende ParamBase y tiene los siguientes atributos:

TABLA

Parámetros de respuesta

Los datos de salida del servicio se encapsulan en el objeto ResultGetStatus

Códigos error

Las excepciones del servicio son de tipo ScdeCoreException.

Ejemplos de invocación

En este ejemplo vamos a utilizar el servicio enviando los datos de 2 documentos agrupados en dos grupos, con unos metadatos comunes para los dos grupos, la plantilla utilizada tiene 3 campos para el nombre y los dos apellidos. En los tres primeros documentos enviaremos metadatos individuales. Le indicaremos que es necesario generar el documento de autorización.

  1. Encapsulamos los datos del usuario firmante de los documentos. Generamos los datos a rellenar en la plantilla elegida y metadatos especiales que queramos enviar para cada documento o grupo de ellos.

Code Block
User user = new User();
user.setName("Álvaro");
user.setSurname1("Savater");
user.setSurname2("Mora");
user.setNif("12345678A");
user.setOrganismCode("Aragonesa de Servicios Telemáticos");
user.setPosition("Jefe de Servicio");

2.1. Datos documento 1

Code Block
FieldType ft;
FieldType[] ftdoc1 = new FieldType[3];
ft = new FieldType("NOMBRE", "Pedro");
ftsdoc1[0] = ft;
ft = new FieldType("APELLIDO1", "Delgado");
ftdoc1[1] = ft;
ft = new FieldType("APELLIDO2", "Ruiz");

2.2. Metadatos documento 1

Code Block
FieldType mft;
FieldType[] mftdoc1 = new FieldType[2];
mft = new FieldType("dea_desc_descripcion","Diploma del IAAP");
mftdoc1[0] = mft;

2.3. Datos documento 2

Code Block
FieldType ft;
FieldType[] ftdoc2 = new FieldType[3];
ft = new FieldType("NOMBRE", "Antonio");
ftdoc2[0] = ft;
ft = new FieldType("APELLIDO1", "Fernández");
ftdoc2[1] = ft;
ft = new FieldType("APELLIDO2", "Hernández");
ftdoc2[2] = ft;

2.4. Metadatos documento 2

Code Block
FieldType mft;
FieldType[] mftdoc2 = new FieldType[2];
mft = new FieldType("dea_desc_descripcion","Diploma del IAAP");
mftdoc2[0] = mft;

2.5. Metadatos comunes

Code Block
FieldType cmft;
FieldType[] comunmfts = new FieldType[2];
cmft = new FieldType("dea_desc_descripcion", "Diploma del IAAP");
comunmfts[0] = cmft;

2.6. Encapsulamos los documentos

Code Block
CertificateItem certificateDoc1 = new CertificateItem();
CertificateItem certificateDoc2 = new CertificateItem();
certificateDoc1.setData(ftdoc1);
certificateDoc1.setMetadata(mftdoc1);
certificateDoc2.setData(ftdoc2);
certificateDoc2.setMetadata(mftdoc2);

3.1. Agrupamos los documentos y añadimos los metadatos especiales comunes en cada grupo

Code Block
CertificateGroup certificateGroupA = new CertificateGroup();
CertificateGroup certificateGroupB = new CertificateGroup();
CertificateItem[] certificateItemsA = new CertificateItem[1];
CertificateItem[] certificateItemsB = new CertificateItem[1];
certificateItemsA[0] = certificateDoc1;
certificateItemsB[0] = certificateDoc2;
certificateGroupA.setCertificateItems(certificateItemsA);
certificateGroupA.setCommonMetadata(comunmfts);
certificateGroupB.setCertificateItems(certificateItemsB);
certificateGroupB.setCommonMetadata(comunmfts);

3.2. Agrupamos en un array los grupos creados en el punto anterior

Code Block
CertificateGroup[] certificateGroups = new CertificateGroup[2];
certificateGroups[0] = certificateGroupA;
certificateGroups[1] = certificateGroupB;
  1. Cargamos la plantilla empleada

Code Block
CertificateTemplate certificateTemplate = new CertificateTemplate();
File file = new File("NombrePlantilla.pdf");
DataHandler dataHandler = new DataHandler(new FileDataSource(file));
byte[] template = IOUtils.toByteArray(dataHandler.getInputStream());
certificateTemplate.setTemplateData(template);

Si por el contrario usamos una plantilla existente en documentum (se indica el CSV):

Code Block
certificateTemplate.setTemplateCsv("CSV1234567890ABCSCDE");
  1. Se encapsulan los datos de la firma.

Code Block
String invokingApp = "nombreAplicacion";
String certificateAlias = "aliasCertificado";
String signAlias = "aliasOperacionfirma";
AsfAppData asfAppData = new AsfAppData(invokingApp, certificateAlias, signAlias);
--Indicamos que es necesario crear documento de autorización y el id de la aplicación.
Boolean generateDocAut= true;
String applicationID = "codigoAplicacion";
--Indicamos aclName y folderId de Documentum si fuera necesario.
String aclName = "dga_acl_paega_web";
String folderId = "1111111111";

--Encapsulamos los datos del agente de Organismo Productor necesarios
String agente_ident_tipo_identif = "S";
String agente_ident_identificacion = "org900002";
String agente_desc_nombre = "Aragón servicios telemáticos";
Agente agenteOrganismoProductor = new Agente();
agenteOrganismoProductor.setAgente_ident_tipo_identif(agente_ident_tipo_identif);
agenteOrganismoProductor.setAgente_ident_identificacion(“agente_ident_identificacion”);
agenteOrganismoProductor.setAgente_desc_nombre(“agente_desc_nombre”);

--Encapsulamos en el parámetro de entrada al servicio y lo utilizamos.
ParamCreateCertificate paramCreateCertificate = new ParamCreateCertificate();
paramCreateCertificate.setCertificateGroups(certificateGroups);
paramCreateCertificate.setNif(“12345678A”);
paramCreateCertificate.setApplicationId(applicationID);
paramCreateCertificate.setCertificateTemplate(certificateTemplate);
paramCreateCertificate.setAsfAppData(asfAppData);
paramCreateCertificate.setCertificateSigner(user);
paramCreateCertificate.setGenerateDocAut(generateDocAut);
ResultGetStatus result = certificateService.createCertificate(paramCreateCertificate);
  1. Recibimos el resultado

Code Block
LOG.debug("CreateCertificate - ID_OPERATION: "+ result.getIdOperation());
LOG.debug("CreateCertificate - STATUS_CODE: "+ result.getStatusCode());
LOG.debug("CreateCertificate - STATUS_DESCRIPTION: "+ result.getStatusDescription());

--Capturamos si se ha recibido una excepción tipo ScdeCoreException.
} catch (ScdeCoreException sce) {
LOG.error("ScdeCoreException", sce);
LOG.error("EXCEPCION código: " + sce.getCode());
LOG.error("EXCEPCION mensaje: " + sce.getMsg());
LOG.error("EXCEPCION traza: " + sce.getExtraInfo());
}

Si todo ha ido correcto, el valor de STATUS_CODE será CREATING_DOCS.

Método ‘createCertificate1’

Ofrece la misma funcionalidad que el createCertificate, y además, permite informar el agente aportador y el organismo productor para cada uno de los documentos a firmar. También permite que el documento de resumen de la operación se firme con el sello de órgano informado (en lugar del que tiene configurado SCDE por defecto). Se recomienda su uso en lugar del createCertificate.

Signatura

ResultGetStatus createCertificate1(ParamCreateCertificate1 paramCreateCertificate1) throws ScdeCoreException;

Parámetros de invocación

Los parámetros de entrada al servicio se encapsulan en un objeto ParamCreateCertificate1, que extiende ParamBase y tiene los siguientes atributos:

TABLA

Parámetros de respuesta

Los datos de salida del servicio se encapsulan en el objeto ResultGetStatus

Códigos error

Las excepciones del servicio son de tipo ScdeCoreException.

Ejemplos de invocación

En este ejemplo vamos a utilizar el servicio enviando los datos de 2 documentos agrupados en dos grupos, con unos metadatos comunes para los dos grupos, la plantilla utilizada tiene 3 campos para el nombre y los dos apellidos. En los tres primeros documentos enviaremos metadatos individuales. Le indicaremos que es necesario generar el documento de autorización.

  1. Encapsulamos los datos del usuario firmante de los documentos. Generamos los datos a rellenar en la plantilla elegida y metadatos especiales que queramos enviar para cada documento o grupo de ellos.

Code Block
User user = new User();
user.setName("Álvaro");
user.setSurname1("Savater");
user.setSurname2("Mora");
user.setNif("12345678A");
user.setOrganismCode("Aragonesa de Servicios Telemáticos");
user.setPosition("Jefe de Servicio");

2.1. Datos documento 1

Code Block
FieldType ft;
FieldType[] ftdoc1 = new FieldType[3];
ft = new FieldType("NOMBRE", "Pedro");
ftsdoc1[0] = ft;
ft = new FieldType("APELLIDO1", "Delgado");
ftdoc1[1] = ft;
ft = new FieldType("APELLIDO2", "Ruiz");

2.2. Metadatos documento 1

Code Block
FieldType mft;
FieldType[] mftdoc1 = new FieldType[2];
mft = new FieldType("dea_desc_descripcion","Diploma del IAAP");
mftdoc1[0] = mft;

2.3. Datos documento 2

Code Block
FieldType ft;
FieldType[] ftdoc2 = new FieldType[3];
ft = new FieldType("NOMBRE", "Antonio");
ftdoc2[0] = ft;
ft = new FieldType("APELLIDO1", "Fernández");
ftdoc2[1] = ft;
ft = new FieldType("APELLIDO2", "Hernández");
ftdoc2[2] = ft;

2.4. Metadatos documento 2

Code Block
FieldType mft;
FieldType[] mftdoc2 = new FieldType[2];
mft = new FieldType("dea_desc_descripcion","Diploma del IAAP");
mftdoc2[0] = mft;

2.5. Metadatos comunes

Code Block
FieldType cmft;
FieldType[] comunmfts = new FieldType[2];
cmft = new FieldType("dea_desc_descripcion", "Diploma del IAAP");
comunmfts[0] = cmft;

2.6. Encapsulamos los documentos

Code Block
CertificateItem certificateDoc1 = new CertificateItem();
CertificateItem certificateDoc2 = new CertificateItem();
certificateDoc1.setData(ftdoc1);
certificateDoc1.setMetadata(mftdoc1);
certificateDoc2.setData(ftdoc2);
certificateDoc2.setMetadata(mftdoc2);

3.1. Agrupamos los documentos y añadimos los metadatos especiales comunes en cada grupo

Code Block
CertificateGroup certificateGroupA = new CertificateGroup();
CertificateGroup certificateGroupB = new CertificateGroup();
CertificateItem[] certificateItemsA = new CertificateItem[1];
CertificateItem[] certificateItemsB = new CertificateItem[1];
certificateItemsA[0] = certificateDoc1;
certificateItemsB[0] = certificateDoc2;
certificateGroupA.setCertificateItems(certificateItemsA);
certificateGroupA.setCommonMetadata(comunmfts);
certificateGroupB.setCertificateItems(certificateItemsB);
certificateGroupB.setCommonMetadata(comunmfts);

3.2. Agrupamos en un array los grupos creados en el punto anterior

Code Block
CertificateGroup[] certificateGroups = new CertificateGroup[2];
certificateGroups[0] = certificateGroupA;
certificateGroups[1] = certificateGroupB;
  1. Cargamos la plantilla empleada

Code Block
CertificateTemplate certificateTemplate = new CertificateTemplate();
File file = new File("NombrePlantilla.pdf");
DataHandler dataHandler = new DataHandler(new FileDataSource(file));
byte[] template = IOUtils.toByteArray(dataHandler.getInputStream());
certificateTemplate.setTemplateData(template);

Si por el contrario usamos una plantilla existente en documentum (se indica el CSV):

Code Block
certificateTemplate.setTemplateCsv("CSV1234567890ABCSCDE");
  1. Se encapsulan los datos de la firma.

Code Block
String invokingApp = "nombreAplicacion";
String certificateAlias = "aliasCertificado";
String signAlias = "aliasOperacionfirma";
AsfAppData asfAppData = new AsfAppData(invokingApp, certificateAlias, signAlias);
--Indicamos que es necesario crear documento de autorización y el id de la aplicación.
Boolean generateDocAut= true;
String applicationID = "codigoAplicacion";
--Indicamos aclName y folderId de Documentum si fuera necesario.
String aclName = "dga_acl_paega_web";
String folderId = "1111111111";

--Encapsulamos los datos del agente de Organismo Productor necesarios
String agente_ident_tipo_identif = "S";
String agente_ident_identificacion = "org900002";
String agente_desc_nombre = "Aragón servicios telemáticos";
Agente agenteOrganismoProductor = new Agente();
agenteOrganismoProductor.setAgente_ident_tipo_identif(agente_ident_tipo_identif);
agenteOrganismoProductor.setAgente_ident_identificacion(“agente_ident_identificacion”);
agenteOrganismoProductor.setAgente_desc_nombre(“agente_desc_nombre”);

--Encapsulamos en el parámetro de entrada al servicio y lo utilizamos.
ParamCreateCertificate paramCreateCertificate = new ParamCreateCertificate();
paramCreateCertificate.setCertificateGroups(certificateGroups);
paramCreateCertificate.setNif(“12345678A”);
paramCreateCertificate.setApplicationId(applicationID);
paramCreateCertificate.setCertificateTemplate(certificateTemplate);
paramCreateCertificate.setAsfAppData(asfAppData);
paramCreateCertificate.setCertificateSigner(user);
paramCreateCertificate.setGenerateDocAut(generateDocAut);
ResultGetStatus result = certificateService.createCertificate(paramCreateCertificate);
  1. Recibimos el resultado

Code Block
LOG.debug("CreateCertificate - ID_OPERATION: "+ result.getIdOperation());
LOG.debug("CreateCertificate - STATUS_CODE: "+ result.getStatusCode());
LOG.debug("CreateCertificate - STATUS_DESCRIPTION: "+ result.getStatusDescription());

--Capturamos si se ha recibido una excepción tipo ScdeCoreException.
} catch (ScdeCoreException sce) {
LOG.error("ScdeCoreException", sce);
LOG.error("EXCEPCION código: " + sce.getCode());
LOG.error("EXCEPCION mensaje: " + sce.getMsg());
LOG.error("EXCEPCION traza: " + sce.getExtraInfo());
}

Si todo ha ido correcto, el valor de STATUS_CODE será CREATING_DOCS.

Método ‘getStatus’

Método del servicio que permite consultar el estado de ejecución de una petición creada con los métodos createCertificate, signDocs, sendDocAuth o cancelOperation. Devuelve el estado de la operación o una excepción si ha fallado.

Signatura

ResultGetStatus getStatus(ParamGetStatus paramGetStatus) throws ScdeCoreException;

Parámetros de invocación

El parámetro de entrada al servicio es de tipo ParamGetStatus que extiende ParamBase. Su único atributo es un String con el código de la operación a consultar.

Parámetros de respuesta

Los datos de salida del servicio se encapsulan en el objeto ResultGetStatus

Códigos error

Las excepciones del servicio son de tipo ScdeCoreException.

Ejemplos de invocación

  1. Introducimos el id de operación a consultar, el id de la aplicación, el NIF e invocamos el servicio:

Code Block
String applicationID = "codigoAplicacion";
String ID_OPERATION = "402884e830da61190130da62f6970001";
ParamGetStatus paramGetStatus = new ParamGetStatus();
paramGetStatus.setApplicationId(applicationID);
paramGetStatus.setNif(“12345678A”);
paramGetStatus.setIdOperation(ID_OPERATION);
ResultGetStatus result = certificateService.getStatus(paramGetStatus);
  1. Recibimos el resultado

Code Block
LOG.debug("ID_OPERATION: "+ result.getIdOperation());
LOG.debug("STATUS_CODE: "+ result.getStatusCode());
LOG.debug("STATUS_DESCRIPTION: "+ result.getStatusDescription())
LOG.debug("docAuthCsv: " + result.getDocAuthCsv());
LOG.debug("signedCsvList: ");
if (result.getSignedCsvList() != null && result.getSignedCsvList().length > 0) {
for (String sign : result.getSignedCsvList()) {
LOG.debug(sign);
}
}
LOG.debug("signedBeforeCsvList: ");
if (result.getSignedBeforeCsvList() != null && result.getSignedBeforeCsvList().length > 0) {
for (String sign : result.getSignedBeforeCsvList()) {
LOG.debug(sign);
}
}
LOG.debug("noSignedCsvList: ");
if (result.getNoSignedCsvList() != null && result.getNoSignedCsvList().length > 0) {
for (String noSing : result.getNoSignedCsvList()) {
LOG.debug(noSign);
}
}

Los posibles valores de STATUS_CODE devueltos por la aplicación serán: ERROR_GENERAL CREATING_DOCS, ERROR_CREATING_DOCS, WAITING_DOC_AUT SIGNING_DOCS, ERROR_DOC_AUT ERROR_SIGN_DOCS, END_OPERATION, ERROR_ID_OPERATION, OPERATION_TIMEOUT, CANCELING_OPERATION, OPERATION_CANCELED

Método ‘sendDocAuth’ (obsoleto)

Se recomienda la integración con el método sendDocAuth1. Método del servicio que permite enviar la firma del documento de autorización existente, perteneciente a una operación generada en el servicio createCertificate. Devuelve el estado de la operación o una excepción si ha fallado.

Signatura

ResultGetStatus sendDocAuth(ParamSendDocAuth paramSendDocAuth) throws ScdeCoreException;

Parámetros de invocación

El parámetro de entrada al servicio es de tipo ParamSendDocAuth que extiende ParamBase y contiene los siguientes atributos:

Parámetros de respuesta

Los datos de salida del servicio se encapsulan en el objeto ResultGetStatus

Códigos error

Las excepciones del servicio son de tipo ScdeCoreException.

Ejemplos de invocación

Para este ejemplo es necesario haber recuperado de Documentum, por medio del CSV, el documento de autorización. Una vez recuperado hay que firmarlo y elevar la firma a CAdES-A.

Encapsulamos el identificador de operación en la que se ha generado el documento de autorización, la firma del documento ya elevada a CAdES-A y el identificador de la aplicación en un objeto ParamSendDocAuth e invocamos el servicio:

Code Block
String applicationID = "codigoAplicacion";
String ID_OPERATION = "idOperacion";
String signCadesA;
ParamSendDocAuth paramSendDocAuth = new ParamSendDocAuth();
ParamSendDocAuth.setNif(“12345678A”);
paramSendDocAuth.setApplicationId(applicationID);
paramSendDocAuth.setIdOperation(ID_OPERATION);
paramSendDocAuth.setDocAuthSign(signCadesA);
ResultGetStatus resultGetStatus = certificateService.sendDocAuth(paramSendDocAuth);

Si no se produce una excepción, el valor de STATUS_CODE será SIGNING_DOCS

Método ‘sendDocAuth1’

Ofrece la misma funcionalidad que el sendDocAuth, no sólo para una operación generada en el servicio createCertificate sino también en el createCertificate1. También permite que el documento de resumen de la operación se firme con el sello de órgano informado (en lugar del que tiene configurado SCDE por defecto). Se recomienda su uso en lugar del sendDocAuth.

Signatura

ResultGetStatus sendDocAuth1(ParamSendDocAuth1 paramSendDocAuth1) throws ScdeCoreException;

Parámetros de invocación

El parámetro de entrada al servicio es de tipo ParamSendDocAuth1 que extiende ParamBase y contiene los siguientes atributos:

Parámetros de respuesta

Los datos de salida del servicio se encapsulan en el objeto ResultGetStatus

Códigos error

Las excepciones del servicio son de tipo ScdeCoreException.

Ejemplos de invocación

Para este ejemplo es necesario haber recuperado de Documentum, por medio del CSV, el documento de autorización. Una vez recuperado hay que firmarlo y elevar la firma a CAdES-A.

Encapsulamos el identificador de operación en la que se ha generado el documento de autorización, la firma del documento ya elevada a CAdES-A y el identificador de la aplicación en un objeto ParamSendDocAuth e invocamos el servicio:

Code Block
String applicationID = "codigoAplicacion";
String ID_OPERATION = "idOperacion";
String signCadesA;
ParamSendDocAuth1 paramSendDocAuth1 = new ParamSendDocAuth1();
ParamSendDocAuth1.setNif(“12345678A”);
paramSendDocAuth1.setApplicationId(applicationID);
paramSendDocAuth1.setIdOperation(ID_OPERATION);
paramSendDocAuth1.setDocAuthSign(signCadesA);
paramSendDocAuth1.setExternalCertificateAlias(“ast_cert”);
ResultGetStatus resultGetStatus = certificateService.sendDocAuth1(paramSendDocAuth1);

Si no se produce una excepción, el valor de STATUS_CODE será SIGNING_DOCS

Método ‘signDocs’ (obsoleto)

Se recomienda la integración con el método signDocs1. Método del servicio que permite firmar documentos generados por una aplicación externa. Para ello se enviará el CSV de un documento de autorización, es decir, un documento firmado y almacenado en el gestor documental del Gobierno de Aragón que tiene una relación de padre respecto a los documentos a firmar. El rol de dicha relación es REQUIERE. Es necesario introducir los parámetros que configuran el sello de órgano con el que poder firmar los documentos, así como los datos del titular de dicho sello. Junto al CSV se puede introducir también un texto que se estampará en la página y coordenadas del documento proporcionadas. Devuelve el estado de la operación o una excepción si ha fallado. Al finalizar el proceso de firma de documentos se informará mediante el servicio SGA a la dirección asociada en SIU al NIF del firmante del documento cuyo CSV se ha enviado.

Signatura

ResultGetStatus signDocs(ParamSignDocs paramSignDocs) throws ScdeCoreException:

Parámetros de invocación

El parámetro de entrada al servicio es de tipo ParamSignDocs, que extiende ParamBase. Contiene los siguientes atributos:

 

Los datos de estampación de cada documento se pasan como una lista de objetos StampInfo. Si un CSV no se encuentra en esta lista se firmará sin estampar ningún texto. La clase StampInfo tiene los siguientes atributos:

Nombre Tipo Descripción csv String CSV del documento. textToStamp String Texto a estampar. page int Página donde se realizará la estampación. coorInitX float Coordenada x inicial. coorInitY float Coordenada y inicial. coorEndX float Coordenada x final. coorEndY float Coordenada y final.

Así mismo es necesario aportar los datos del titular del sello de órgano en un objeto User: Nombre Tipo Descripción name String Nombre del titular. surname1 String Primer apellido del titular. surname2 String Segundo apellido del titular. nif String No utilizado en este servicio. organism String No utilizado en este servicio. organismCode String Organismo del titular. position String No utilizado en este servicio.

Parámetros de respuesta

Los datos de salida del servicio se encapsulan en el objeto ResultGetStatus

Códigos error

Las excepciones del servicio son de tipo ScdeCoreException.

Ejemplos de invocación

Este servicio necesita encapsular dentro del ParamSignDocs que extiende del ParamBase, los parámetros con el CSV del documento que autoriza, el texto y posición a incluir, y los parámetros del sello de órgano con el que se van a firmar los documentos relacionados con el CSV.

Configuramos los parámetros necesitados e invocamos el servicio:

Code Block
AsfAppData asfAppData = new AsfAppData(invokingApp,certificateAlias,signAlias);
List<StampInfo> stampInfoList = new ArrayList<StampInfo>();
StampInfo stampInfo = new StampInfo();
stampInfo.setCsv("CSV7I8AG5X3P7A41SCDE");
stampInfo.setTextToStamp("Documento firmado");
stampInfo.setCoorInitX(300);
stampInfo.setCoorInitY(300);
stampInfo.setCoorEndX(600);
stampInfo.setCoorEndY(400);
stampInfo.setPage(1);
stampInfoList.add(stampInfo);
StampInfo stampInfo2 = new StampInfo();
stampInfo2.setCsv("CSVZN52TLZ7PWA41SCDE");
stampInfo2.setTextToStamp("Documento firmado");
stampInfo2.setCoorInitX(300);
stampInfo2.setCoorInitY(300);
stampInfo2.setCoorEndX(600);
stampInfo2.setCoorEndY(400);
stampInfo2.setPage(1);
stampInfoList.add(stampInfo2);
User userCertificate = new User();
userCertificate.setName("Pedro");
userCertificate.setSurname1("Losada");
userCertificate.setSurname2("Espinosa");
userCertificate.setOrganismCode("Aragonesa de Servicios Telemáticos");
ParamSignDocs paramSignDocs = new ParamSignDocs();
paramSignDocs.setApplicationId(applicationID);
paramSignDocs.setNif("44444444A");
paramSignDocs.setIdOperation(idOperation);
paramSignDocs.setAsfAppData(asfAppData);
paramSignDocs.setCsvDocAuto(csvDocAuth);
paramSignDocs.setStampInfoList(stampInfoList);
paramSignDocs.setUserCertificate(userCertificate);
resultGetStatus = certificateService.signDocs(paramSignDocs);

Si no se produce una excepción, el valor de STATUS_CODE será SIGNING_DOCS

Método ‘signDocs1’

Ofrece la misma funcionalidad que el signDocs. También permite que el documento de resumen de la operación se firme con el sello de órgano informado (en lugar del que tiene configurado SCDE por defecto). Se recomienda su uso en lugar del signDocs.

Signatura

ResultGetStatus signDocs1(ParamSignDocs1 paramSignDocs1) throws ScdeCoreException:

Parámetros de invocación

El parámetro de entrada al servicio es de tipo ParamSignDocs1, que extiende ParamBase. Contiene los siguientes atributos:

 

Los datos de estampación de cada documento se pasan como una lista de objetos StampInfo. Si un CSV no se encuentra en esta lista se firmará sin estampar ningún texto. La clase StampInfo tiene los siguientes atributos:

Nombre Tipo Descripción csv String CSV del documento. textToStamp String Texto a estampar. page int Página donde se realizará la estampación. coorInitX float Coordenada x inicial. coorInitY float Coordenada y inicial. coorEndX float Coordenada x final. coorEndY float Coordenada y final.

Así mismo es necesario aportar los datos del titular del sello de órgano en un objeto User: Nombre Tipo Descripción name String Nombre del titular. surname1 String Primer apellido del titular. surname2 String Segundo apellido del titular. nif String No utilizado en este servicio. organism String No utilizado en este servicio. organismCode String Organismo del titular. position String No utilizado en este servicio.

Parámetros de respuesta

Los datos de salida del servicio se encapsulan en el objeto ResultGetStatus

Códigos error

Las excepciones del servicio son de tipo ScdeCoreException.

Ejemplos de invocación

Este servicio necesita encapsular dentro del ParamSignDocs1 que extiende del ParamBase, los parámetros con el CSV del documento que autoriza, el texto y posición a incluir, y los parámetros del sello de órgano con el que se van a firmar los documentos relacionados con el CSV.

Configuramos los parámetros necesitados e invocamos el servicio:

Code Block
AsfAppData asfAppData = new AsfAppData(invokingApp,certificateAlias,signAlias);
List<StampInfo> stampInfoList = new ArrayList<StampInfo>();
StampInfo stampInfo = new StampInfo();
stampInfo.setCsv("CSV7I8AG5X3P7A41SCDE");
stampInfo.setTextToStamp("Documento firmado");
stampInfo.setCoorInitX(300);
stampInfo.setCoorInitY(300);
stampInfo.setCoorEndX(600);
stampInfo.setCoorEndY(400);
stampInfo.setPage(1);
stampInfoList.add(stampInfo);
StampInfo stampInfo2 = new StampInfo();
stampInfo2.setCsv("CSVZN52TLZ7PWA41SCDE");
stampInfo2.setTextToStamp("Documento firmado");
stampInfo2.setCoorInitX(300);
stampInfo2.setCoorInitY(300);
stampInfo2.setCoorEndX(600);
stampInfo2.setCoorEndY(400);
stampInfo2.setPage(1);
stampInfoList.add(stampInfo2);
User userCertificate = new User();
userCertificate.setName("Pedro");
userCertificate.setSurname1("Losada");
userCertificate.setSurname2("Espinosa");
userCertificate.setOrganismCode("Aragonesa de Servicios Telemáticos");
ParamSignDocs1 paramSignDocs1 = new ParamSignDocs1();
paramSignDocs1.setApplicationId(applicationID);
paramSignDocs1.setNif("44444444A");
paramSignDocs1.setIdOperation(idOperation);
paramSignDocs1.setAsfAppData(asfAppData);
paramSignDocs1.setCsvDocAuto(csvDocAuth);
paramSignDocs1.setStampInfoList(stampInfoList);
paramSignDocs1.setUserCertificate(userCertificate);
paramSignDocs1.setExternalCertificateAlias(“ast_cert”);
resultGetStatus = certificateService.signDocs1(paramSignDocs1);

Si no se produce una excepción, el valor de STATUS_CODE será SIGNING_DOCS

Método ‘getDcmi’

Método del servicio que permite consultar los datos introducidos en los campos de un documento pdf y que figuran en sus metadatos como DatosDocumentoAdministrativo. Devuelve un objeto de tipo HashMap (campo, valor) con los datos extraídos, o una excepción si ha fallado.

Signatura

ResultGetMetadata getMetadata(ParamGetDcmi paramGetDcmi) throws ScdeCoreException;

Parámetros de invocación

El parámetro de entrada al servicio es de tipo ParamGetDcmi, que extiende de ParamBase. Su único atributo es un DataHandler con el contenido del pdf a consultar.

Parámetros de respuesta

Los datos de salida del servicio se encapsulan en el objeto ResultGetMetadata, que contiene el siguiente atributo:

Códigos error

Las excepciones del servicio son de tipo ScdeCoreException.

Ejemplos de invocación

Invocamos el servicio con el DataHandler del fichero a consultar, el identificador de la aplicación origen y el NIF del usuario que invoca el servicio:

Code Block
String applicationID = "codAplicacion";
File file = new File("documento.pdf");
DataHandler dataHandler = new DataHandler(new FileDataSource(file));
ParamGetDcmi paramGetDcmi = new ParamGetDcmi();
paramGetDcmi.setDataHandlerFichero(dataHandler);
paramGetDcmi.setApplicationId(applicationID);
paramGetDcmi.setNif(“12345678A”);
ResultGetMetadata resultGetMetadata = certificateService.getDcmi(paramGetDcmi)

Método ‘cancelOperation’

Método del servicio que cancela una operación y anula los documentos asociados.

...

Signatura

ResultGetStatus cancelOperation(ParamCancelOperation paramCancelOperation) throws ScdeCoreException;

Parámetros de invocación

El parámetro de entrada al servicio es de tipo ParamCancelOperation, que extiende de ParamBase.

-

En la primera llamada al servicio, el campo docCancelSign debe ser nulo; en la segunda deberá ir poblado con la firma del documento de cancelación. La propiedad user identifica al usuario que solicita la operación y cuyos datos serán reflejados en la banda de firma que aparecerá en el documento de cancelación.

Parámetros de respuesta

Los datos de salida del servicio se encapsulan en un objeto ResultGetStatus

Códigos error

Las excepciones del servicio son de tipo ScdeCoreException.

Ejemplos de invocación

Invocamos el servicio con el ParamCancelOperation con el identificador de Operación a cancelar aplicación origen, el NIF del usuario que invoca el servicio y el user que realizará la firma.

Code Block
ParamCancelOperation paramCancelOperation = new ParamCancelOperation();
paramCancelOperation.setApplicationId("SCDE");
paramCancelOperation.setUser(user);
paramCancelOperation.setIdOperation(ID_OPERATION);
paramCancelOperation.setNif("44444444A");
ResultGetStatus result = certificateService.cancelOperation(paramCancelOperation);

Método ‘signDocsWithExternalDocAuth’

Método del servicio que permite firmar documentos generados por una aplicación externa. Para ello se enviará el CSV de los documentos a firmar y el CSV de un documento de autorización, es decir, un documento firmado y almacenado en el gestor documental del Gobierno de Aragón. La diferencia con respecto al signDocs y signDocs1 es que será SCDE quien creará la relación de padre respecto a los documentos a firmar. El rol de dicha relación es REQUIERE.

...

Signatura

ResultGetStatus signDocsWithExternalDocAuth(ParamSignDocsWithExternalDocAuth paramSignWithExternalDocAuth) throws ScdeCoreException;

Parámetros de invocación

El parámetro de entrada al servicio es de tipo ParamSignDocsWithExternalDocAuth, que extiende ParamBase. Contiene los siguientes atributos:

-

-

-

Parámetros de respuesta

Los datos de salida del servicio se encapsulan en un objeto ResultGetStatus

Códigos error

Las excepciones del servicio son de tipo ScdeCoreException.

Ejemplos de invocación

Este servicio necesita encapsular dentro del ParamSignDocsWithExternalDocAuth que extiende del ParamBase, los parámetros con el CSV del documento que autoriza, el texto y posición a incluir, y los parámetros del sello de órgano con el que se van a firmar los documentos relacionados con el CSV.

Code Block
AsfAppData asfAppData = new AsfAppData(invokingApp,certificateAlias,signAlias);
List<StampInfo> stampInfoList = new ArrayList<StampInfo>();
StampInfo stampInfo = new StampInfo();
stampInfo.setCsv("CSV7I8AG5X3P7A41SCDE");
stampInfo.setTextToStamp("Documento firmado");
stampInfo.setCoorInitX(300);
stampInfo.setCoorInitY(300);
stampInfo.setCoorEndX(600);
stampInfo.setCoorEndY(400);
stampInfo.setPage(1);
stampInfoList.add(stampInfo);
StampInfo stampInfo2 = new StampInfo();
stampInfo2.setCsv("CSVZN52TLZ7PWA41SCDE");
stampInfo2.setTextToStamp("Documento firmado");
stampInfo2.setCoorInitX(300);
stampInfo2.setCoorInitY(300);
stampInfo2.setCoorEndX(600);
stampInfo2.setCoorEndY(400);
stampInfo2.setPage(1);
stampInfoList.add(stampInfo2);
User userCertificate = new User();
userCertificate.setName("Pedro");
userCertificate.setSurname1("Losada");
userCertificate.setSurname2("Espinosa");
userCertificate.setOrganismCode("Aragonesa de Servicios Telemáticos");
ParamSignDocsWithExternalDocAuth paramSignDocsWithExternalDocAuth = new ParamSignDocsWithExternalDocAuth();
paramSignDocsWithExternalDocAuth.setApplicationId(applicationID);
paramSignDocsWithExternalDocAuth.setNif("44444444A");
paramSignDocsWithExternalDocAuth.setAsfAppData(asfAppData);
paramSignDocsWithExternalDocAuth.setCsvDocAuth(csvDocAuth);
paramSignDocsWithExternalDocAuth.setStampInfoList(stampInfoList);
paramSignDocsWithExternalDocAuth.setUserCertificate(userCertificate);
paramSignDocsWithExternalDocAuth.setCsvDocList(csvDocList);
resultGetStatus = certificateService.signDocsWithExternalDocAuth(paramSignDocsWithExternalDocAuth);

Si no se produce una excepción, el valor de STATUS_CODE será SIGNING_DOCS.

 

Método ‘signDocsWithoutDocAuth’

Método del servicio que permite firmar documentos generados por una aplicación externa. Para ello se enviará el CSV de los documentos a firmar. La diferencia con respecto al signDocs, signDocs1 y signDocsWithExternalDocAuth es que no se requiere un documento de autorización para realizar la firma de los documentos.

...

Signatura

ResultGetStatus signDocsWithoutDocAuth(ParamSignDocsWithExternalDocAuth paramSignWithExternalDocAuth) throws ScdeCoreException;

Parámetros de invocación

El parámetro de entrada al servicio es de tipo ParamSignDocsWithoutDocAuth, que extiende ParamBase. Contiene los siguientes atributos:

-

-

-

Parámetros de respuesta

Los datos de salida del servicio se encapsulan en un objeto ResultGetStatus

Códigos error

Las excepciones del servicio son de tipo ScdeCoreException.

Ejemplos de invocación

Este servicio necesita encapsular dentro del ParamSignDocsWithoutDocAuth que extiende del ParamBase, el texto y posición a incluir, y los parámetros del sello de órgano con el que se van a firmar los documentos relacionados con el CSV.

Code Block
AsfAppData asfAppData = new AsfAppData(invokingApp,certificateAlias,signAlias);
List<StampInfo> stampInfoList = new ArrayList<StampInfo>();
StampInfo stampInfo = new StampInfo();
stampInfo.setCsv("CSV7I8AG5X3P7A41SCDE");
stampInfo.setTextToStamp("Documento firmado");
stampInfo.setCoorInitX(300);
stampInfo.setCoorInitY(300);
stampInfo.setCoorEndX(600);
stampInfo.setCoorEndY(400);
stampInfo.setPage(1);
stampInfoList.add(stampInfo);
StampInfo stampInfo2 = new StampInfo();
stampInfo2.setCsv("CSVZN52TLZ7PWA41SCDE");
stampInfo2.setTextToStamp("Documento firmado");
stampInfo2.setCoorInitX(300);
stampInfo2.setCoorInitY(300);
stampInfo2.setCoorEndX(600);
stampInfo2.setCoorEndY(400);
stampInfo2.setPage(1);
stampInfoList.add(stampInfo2);
User userCertificate = new User();
userCertificate.setName("Pedro");
userCertificate.setSurname1("Losada");
userCertificate.setSurname2("Espinosa");
userCertificate.setOrganismCode("Aragonesa de Servicios Telemáticos");
ParamSignDocsWithoutDocAuth paramSignDocsWithoutDocAuth = new ParamSignDocsWithoutDocAuth ();
paramSignDocsWithoutDocAuth.setApplicationId(applicationID);
paramSignDocsWithoutDocAuth.setNif("44444444A");
paramSignDocsWithoutDocAuth.setAsfAppData(asfAppData);
paramSignDocsWithoutDocAuth.setStampInfoList(stampInfoList);
paramSignDocsWithoutDocAuth.setUserCertificate(userCertificate);
paramSignDocsWithoutDocAuth.setCsvDocList(csvDocList);
resultGetStatus = certificateService.signDocsWithoutDocAuth(paramSignDocsWithoutDocAuth);

Si no se produce una excepción, el valor de STATUS_CODE será SIGNING_DOCS.

Método ‘getDocByCSV’

Método del servicio que recupera los campos editables de un PDF alojado en Documentum a través de su CSV. Devuelve un objeto de tipo HashMap (campo, valor) con los datos extraídos, o una excepción si ha fallado.

Signatura

ResultGetDocByCSV getDocByCSV(ParamGetDocByCSV paramGetDocByCSV) throws ScdeCoreException;

Parámetros de invocación

El parámetro de entrada al servicio es de tipo ParamGetDocByCSV, que extiende de ParamBase. Su único atributo es un csv del documento a consultar

Parámetros de respuesta

Los datos de salida del servicio se encapsulan en el objeto ResultGetDocByCSV, el cual contiene un objeto Map que contiene el campo con los valores del PDF.

Códigos error

Las excepciones del servicio son de tipo ScdeCoreException.

Ejemplos de invocación

Code Block
ResultGetDocument resultGetDocument=DocumentumUtils.getDocumentByCSV(csv);

Método ‘sendDocAuthByCSV’ (obsoleto)

Envía el CSV de un documento de autorización que se debe encontrar ya firmado en CCSV, y el ID de operación correspondiente a ese documento de autorización. Continua la operación empezada con createCertificate1, firmando los documentos y terminando la operación.

...