A continuación se detallan los pasos que se han de realizar para la creación de un documento:
1.- Inicializar un documento
Es necesario iniciar el documento que posteriormente se mandara almacenar a CCSV, a continuación se detallan los pasos:
Document document = new Document();
document.setCsv(csvdoc); // donde csvdoc contiene un CSV válido
document.setApplicationCode(applicationCode);
document.setApplicationName(applicationName); // no es obligatorio
document.setType(DocumentumConstants.TipoDocumental.DEA);
document.setName("Nombre Ejemplo");
document.setExtension("pdf");
document.setFormat(DocumentumConstants.Formato.PDF_A);
ParamInitializeDocumentMetadata paramInitializeDocumentMetadata = new ParamInitializeDocumentMetadata();
paramInitializeDocumentMetadata.setDocument(document);
paramInitializeDocumentMetadata.setDocumentType(DocumentumConstants.TipoDocumento.ACTA);
ResultInitializeDocumentMetadata resul = ccsvClient.initializeDocumentMetadata(paramInitializeDocumentMetadata);
if(resul.getReturnCode().equals(ReturnCode.ERROR)){
// tratar el error
}else{
document = resul.getDocument();
Línea 02, asigna el Código Seguro de Verificación (CSV) este código debe generarse previamente con la última versión de la librería de generación de CSVs que se encuentra en el apartado Versiones y descargas de cliente CCSV de este manual, la siguiente llamada creará un código CSV:
ICSVGenerator generator = new CSVGenerator();
generator.generateCSV(codigo_aplicacion, a); // a =”00” si el codigo_aplicacion es de 3 caracteres y “0” si es de 4
IMPORTANTE: El código de aplicación (codigo_aplicacion) debe ser el mismo que el utilizado para invocar a los métodos de CCSV (applicationCode)
Líneas 03 y 04, asocian el código y nombre de aplicación que se han definido previamente en CCSV para el control de acceso al servicio web.
Línea 05, el tipo documental indicado en la propiedad type del document ha de ser dga_paega_doc_dea cuyo valor está definido en la constante que se indica en el código (DocumentumConstants.TipoDocumental.DEA)
Línea 11, el tipo de documento (no confundir con tipo documental). Este puede tomar una serie de valores predeterminados. En el caso de querer un tipo de documento EXPEDIENTE, este se dará de alta mediante el método openAdministrativeFile del WS AdministrativeFileService ya que desde createDocument no está permitido. De igual modo si se requiere un documento de tipo INDICE_EXPEDIENTE este ha de ser generado a partir de un Expediente mediante el método regenerateAdministrativeFileIndex del WS AdministrativeFileService. Para conocer el listado de tipos de documentos actualmente activos debe consultarse el método getDocumentTypeList().
No vamos a meter en la propiedad content del document el contenido del fichero, ya que no se necesita para inicializar los metadatos.
2.- Rellenar metadatos
Partimos del resultado de inicializar del apartado anterior.
Línea 02 , si al inicializar hemos pasado el document con la propiedad csv con valor, ya tendrá valor este metadato y no será necesaria esta línea.
Línea 07, los metadatos de tipo fecha tendrán que seguir el formato: "yyyy-MM-dd'T'HH:mm:ss".
Línea 09, existen 3 casos posibles:
Si no informamos de ningún “firmante propuesto” lo dejaremos como BORRADOR DocumentumConstants.Estado.BORRADOR
Si informamos de algún “firmante propuesto” para que el documento sea firmado desde PFI el estado será PENDIENTE_DE_FIRMA constante: DocumentumConstants.Estado.PENDIENTE_DE_FIRMA
Si vamos a adjuntar la firma lo dejaremos como ORIGINAL o COPIA constantes: DocumentumConstants.Estado.ORIGINAL o DocumentumConstants.Estado.COPIA
Línea 11, El hash “SHA1” del documento lo calculamos:
Por defecto el metadato: DocumentumConstants.NombreMetadatos.PAEGA_VERIFICACION_ALGORITMO se inicializa con el valor de SHA-1, si se usa otro algoritmo habrá que modificar también ese metadato
Línea 14, recorremos las relaciones para dar valor a los metadatos no inicializados de éstas.
3.A- Archivar documento con firma
Se inicializa el documento tal como se indica en el apartado 1.- Inicializar un documento. Seguidamente rellenaremos los metadatos como se indica en el apartado 2.-Rellenar metadatos, teniendo en cuenta que el metadato estado puede ser original o copia al crearse el documento a la vez que la firma.
Ejemplo de creación de documento con una firma en cades A detached
Línea 03 , tendremos que indicar el formato de la firma.
Línea 04 , como estamos creando el documento tendremos que indicar true.
Línea 05 , si estuviésemos creando una firma attached esta propiedad tendría que ser true.
Línea 06 , tendremos que indicar el subformato de la firma. En el caso de firmas Xades y Cades el subformato mínimo será T .
Línea 07 , indicamos firma en dataHandler, en el caso de firma attached este parámetro iría vacío, ya que la firma iría junto al documento dentro de la propiedad content del document.
Este método puede elevar la firma y almacenarla elevada. Cuando queramos elevar la firma bastará con informar la propiedad finalFormat con el subformato deseado. El valor por defecto es 0 que es no elevarla.
En el caso de que el proceso de firma falle en algún momento ya sea por error de firma, porque no coincida la firma con el documento firmado, o porque los metadatos del documento no son correctos; no es necesario hacer rollback ya que el documento no se llegará a crear ni como firmado ni como borrador.
3.B.- Archivar documento y posteriormente su firma
Se inicializa el documento tal como se indica en el apartado 1.- Inicializar un documento. Seguidamente rellenaremos los metadatos como se indica en el apartado 2.-Rellenar metadatos teniendo en cuenta que el metadato estado no puede ser original o copia al no crearse a la vez que la firma. Y será después de crear la firma cuando le cambiemos el estado con el método changeState.
En primer lugar creamos el documento
Cuando ya esté creado el documento se le ha de aportar la firma:
Línea 4 , tendremos que indicar el formato de la firma.
Línea 5 , como no estamos creando el documento no es necesaria esta línea al ser el valor false por defecto.
Línea 6 , si estuviésemos creando una firma attached esta propiedad tendría que ser true, en cuyo caso no tendríamos que generar firma ni hacer el set de la firma (línea 13).
Línea 7 , tendremos que indicar el subformato de la firma. En el caso de firmas Xades y Cades el subformato mínimo será T .
Modificamos el estado del documento
CU_002: Creación de un expediente
Para abrir un Expediente primero lo inicializaremos, seguidamente crearemos su relación con rol “aportador” y por último abriremos el expediente:
1.- Inicializar Expediente
Líneas 3 y 4, se indican el código y nombre de aplicación que se han definido previamente en CCSV para el control de acceso al servicio web.
Línea 14, el objeto que devuelve tendrá todos los metadatos inicializados necesarios para crear el expediente excepto la relación de aportador. El Gestor de Expedientes ya le ha generado un CSV y se lo ha asignado.
2.- Rellenar metadatos obligatorios y agentes
En principio como hemos inicializado el expediente ya tenemos todos los metadatos obligatorios excepto la relación aportador:
3.- Abrir Expediente
Para abrir un expediente lo óptimo es crear previamente un documento con su firma (CU_001 de este manual). Una vez creado llamaremos al openAdministrativeFile. No se puede abrir un expediente con un documento que no tenga el estado como original o copia.
CU_003: Añadir documentos a un expediente
Añadir un documento
Añadir un documento a un expediente
Añadir varios documentos
Añade varios documentos a la vez a un expediente
CU_004: Anular un documento
Anular un documento
Para anular un documento se debe cambiar el estado del documento a “A” a través del método changeState
CU_005: Sustituir un documento anulado
Sustituir un documento
Para sustituir un documento se debe cambiar el estado del documento que se va a anular a “A” a través del método changeState y después se debe crear la relación SUSTITUYE entre el documento anulado y el documento que lo sustituye:
Obtener el CSV del documento sustituto
Para obtener el CSV del documento que sustituye a un documento anulado, podemos hacerlo a través del método getSubstituteDocument:
CU_006: Eliminar un documento de un expediente
Eliminar un documento de un expediente
Para eliminar un documento (sacarlo del expediente) se debe hacer a través del método deleteDocumentFromAdminFile:
CU_007: Regenerar el índice de un expediente
(Opcional) Marcar el expediente como pendiente
Para regenerar el índice del expediente es necesario que el expediente este marcado como pendiente de regenerar, esta operación se realiza de forma automática cuando realizamos un cambio sobre el expediente, por lo tanto no es obligatorio realizar esta llamada, si se desea regenerar el índice de un expediente aunque no este como pendiente de regenerar debemos llamar al método markAdministrativeFileIndexToRegenerate:
Regenerar el índice del expediente
Para regenerar el índice del expediente debemos llamar al método regenerateAdministrativeFileIndex: