Saltar al contenido principal
Para implementar un escenario de procesamiento de varios documentos, cree las siguientes funciones: CreateNewBatch AddDocumentToBatch RunBatchProcessing WaitFirstVerificationOrProcessedForMultiFileInvoice FetchingCapturedData MultiDocumentBatchIsProcessed

CreateNewBatch

La función CreateNewBatch crea un nuevo lote y devuelve su identificador. No hay parámetros de entrada para esta función. Tipo del parámetro de salida: int (identificador del lote). Excepciones lanzadas: Exception. Código fuente de Java:
// Creación del cliente de API de FlexiCapture Web Services. 
// Proporcione aquí la dirección del Servidor de aplicaciones de FlexiCapture, el nombre del tenant, el nombre de usuario y la contraseña. 
try (TenantClient tenantClient = new TenantClient(new URI(baseUri), tenantName, userName, password)) {
  // Obtención de la API del proyecto de FlexiCapture. Proporcione aquí el nombre del proyecto.
  try(ProjectApi projApi = tenantClient.getProjects().getProjectApi(multiFileProjectName)) {
    // Creación del batch y el documento de FlexiCapture.
    Batch batch = new Batch();
    Document doc = new Document();
    // Incorporación del batch al proyecto de FlexiCapture.
    return projApi.getBatches().add(batch);
  }
} catch(Exception ex){
  // Encadenamiento de mensajes de error. 
Throwable cause = ex.getCause();
String message = ex.getMessage();
while (cause != null) {
message += " " + cause.getMessage();
cause = cause.getCause();
}
// Lanzamiento del mensaje encadenado.
throw new Exception(message);
}

AddDocumentToBatch

La función AddDocumentToBatch añade un documento a un lote. Parámetros de entrada:
NameTipo de JavaDescription
batchIdintIdentificador del lote
fileNameStringNombre del archivo
base64ContentStringContenido del archivo en formato Base64
No hay parámetros de salida para esta función. Excepciones lanzadas: Exception. Código fuente de Java:
// Creación del cliente de API de FlexiCapture Web Services. 
// Proporcione aquí la dirección del Servidor de aplicaciones de FlexiCapture, el nombre del tenant, el nombre de usuario y la contraseña. 
try (TenantClient tenantClient = new TenantClient(new URI(baseUri), tenantName, userName, password)) {
  // Obtención de la API del proyecto de FlexiCapture. Proporcione aquí el nombre del proyecto.
  try(ProjectApi projApi = tenantClient.getProjects().getProjectApi(multiFileProjectName)) {
    // Creación del documento de FlexiCapture.
    Document doc = new Document();
    // Obtención de la API de batch de FlexiCapture. Proporcione aquí el identificador del batch.
    BatchApi batchApi = projApi.getBatches().getBatchApi(batchId);
    // Creación de la instancia del archivo. 
    File file = new File(fileName, Base64.getDecoder().decode(base64Content.replace("\n", "").replace("\r", "")));
    // Adición del documento al batch de FlexiCapture.
    // El archivo es el contenido del documento.
    batchApi.getDocuments().add(doc, file);
  }
} catch(Exception ex){
  // Encadenamiento de mensajes de error. 
Throwable cause = ex.getCause();
String message = ex.getMessage();
while (cause != null) {
message += " " + cause.getMessage();
cause = cause.getCause();
}
// Lanzamiento del mensaje encadenado.
throw new Exception(message);
}

RunBatchProcessing

La función RunBatchProcessing inicializa el procesamiento por lotes. Parámetros de entrada:
NombreTipo de JavaDescripción
batchIdintIdentificador del lote
No hay parámetros de salida para esta función. Excepciones generadas: Exception. Código fuente en Java:
// Creación del cliente de API de FlexiCapture Web Services. 
// Proporcione aquí la dirección del Servidor de aplicaciones de FlexiCapture, el nombre del tenant, el nombre de usuario y la contraseña. 
try (TenantClient tenantClient = new TenantClient(new URI(baseUri), tenantName, userName, password)) {
  // Obtención de la API del proyecto de FlexiCapture. Proporcione aquí el nombre del proyecto.
  try(ProjectApi projApi = tenantClient.getProjects().getProjectApi(multiFileProjectName)) {
    // Obtención de la API del batch de FlexiCapture. Proporcione aquí el identificador del batch.
    BatchApi batchApi = projApi.getBatches().getBatchApi(batchId);
    // Ejecución del batch de FlexiCapture para su procesamiento.
    batchApi.start();
  }
} catch(Exception ex){
  // Encadenamiento de mensajes de error. 
Throwable cause = ex.getCause();
String message = ex.getMessage();
while (cause != null) {
message += " " + cause.getMessage();
cause = cause.getCause();
}
// Lanzar el mensaje encadenado.
throw new Exception(message);
}

WaitFirstVerificationOrProcessedForMultiFileInvoice

La función WaitFirstVerificationOrProcessedForMultiFileInvoice devuelve una URL de verificación. Si el documento no ha llegado a la fase de verificación, devuelve una cadena vacía. Parámetros de entrada:
NameTipo de JavaDescripción
batchIdintIdentificador del lote
Tipo del parámetro de salida: String (URL de verificación). Excepciones generadas: Exception. Código fuente Java:
// Creación del cliente de API de FlexiCapture Web Services. 
// Proporcione aquí la dirección del Servidor de aplicaciones de FlexiCapture, el nombre del tenant, el nombre de usuario y la contraseña. 
try (TenantClient tenantClient = new TenantClient(new URI(baseUri), tenantName, userName, password)) {
  // Obtención de la API del proyecto de FlexiCapture. Proporcione aquí el nombre del proyecto.
  try(ProjectApi projApi = tenantClient.getProjects().getProjectApi(multiFileProjectName)) {
    // Obtención de la API del lote de FlexiCapture. Proporcione aquí el identificador del lote.
    BatchApi batchApi = projApi.getBatches().getBatchApi(batchId);
    // Espera a que el lote se detenga en la etapa de verificación y obtiene el documento de FlexiCapture.
    Document doc = batchApi.getDocuments().waitFirstVerificationOrProcessed();
    // Comprueba si la etapa del lote es Verification.
    if (doc.getStageType() == ProcessingStageType.Verification) {
      // Devuelve la primera cadena de URL de verificación para el lote de FlexiCapture.
      return batchApi.getVerificationUrls(WebPageMode.Mini).get(0).toString();
    } 
    //Devuelve una cadena vacía si el lote se procesó sin etapa de verificación.
    return "";
  }
}catch(Exception ex){
  // Encadenamiento de mensajes de error. 
Throwable cause = ex.getCause();
String message = ex.getMessage();
while (cause != null) {
message += " " + cause.getMessage();
cause = cause.getCause();
}
// Lanza el mensaje encadenado.
throw new Exception(message);
}

FetchingCapturedData

La función FetchingCapturedData devuelve una lista de campos de salida en formato JSON. Parámetros de entrada:
NameTipo de JavaDescription
batchIdintIdentificador del lote
templateNameStringNombre de la Definición de Document
Tipo del parámetro de salida: String (campos del documento en formato JSON). Excepciones lanzadas: Exception. Código fuente en Java:
// Creación del cliente de API de FlexiCapture Web Services. 
// Proporcione aquí la dirección del Servidor de aplicaciones de FlexiCapture, el nombre del tenant, el nombre de usuario y la contraseña. 
try (TenantClient tenantClient = new TenantClient(new URI(baseUri), tenantName, userName, password)) {
  // Obtención de la API del proyecto de FlexiCapture. Proporcione aquí el nombre del proyecto.
  try(ProjectApi projApi = tenantClient.getProjects().getProjectApi(multiFileProjectName)) {
    // Obtención de la API del lote de FlexiCapture. Proporcione aquí el identificador del lote.
    BatchApi batchApi = projApi.getBatches().getBatchApi(batchId);
    // Obtención de todos los documentos del lote de FlexiCapture.
    List<Document> documents = batchApi.getDocuments().getAll();
    for(Document document:
       documents){
      // Comprobación del nombre de la plantilla del documento.
      if(document.getTemplateName().equals(templateName)){
        // Obtención de la API del documento de FlexiCapture. Proporcione aquí el identificador del documento.
        DocumentApi docApi = batchApi.getDocuments().getDocumentApi(document.getId());
        // Retorno de los campos capturados como cadena JSON.
        return docApi.getExportedFields();
      }
    }
    //Retorno de cadena JSON vacía si no se encuentra el nombre de la plantilla del documento.
    return "{}";
  }
}catch(Exception ex){
  // Encadenamiento de mensajes de error. 
Throwable cause = ex.getCause();
String message = ex.getMessage();
while (cause != null) {
message += " " + cause.getMessage();
cause = cause.getCause();
}
// Lanzamiento del mensaje encadenado.
throw new Exception(message);
}

MultiDocumentBatchIsProcessed

La función MultiDocumentBatchIsProcessed devuelve un valor que especifica si el lote se ha procesado o no. Parámetros de entrada:
NameTipo de JavaDescription
batchIdintIdentificador del lote
Tipo del parámetro de salida: boolean (true si el documento está en la etapa Processed y false en caso contrario). Excepciones generadas: Exception. Código fuente de Java:
// Creación del cliente de API de FlexiCapture Web Services. 
// Proporcione aquí la dirección del Servidor de aplicaciones de FlexiCapture, el nombre del tenant, el nombre de usuario y la contraseña. 
try (TenantClient tenantClient = new TenantClient(new URI(baseUri), tenantName, userName, password)) {
  // Obtención de la API del proyecto de FlexiCapture. Proporcione aquí el nombre del proyecto.
  try(ProjectApi projApi = tenantClient.getProjects().getProjectApi(multiFileProjectName)) {
    // Obtención de la API del lote de FlexiCapture. Proporcione aquí el identificador del lote.
    BatchApi batchApi = projApi.getBatches().getBatchApi(batchId);
    // Espera a que el lote se detenga en la etapa de verificación o procesamiento y obtiene el documento de FlexiCapture.
    Document doc = batchApi.getDocuments().waitFirstVerificationOrProcessed();
    // Comprueba si la etapa del lote es Procesado.
    return doc.getStageType() == ProcessingStageType.Processed;    
  }
}catch(Exception ex){
  // Encadenamiento de mensajes de error. 
Throwable cause = ex.getCause();
String message = ex.getMessage();
while (cause != null) {
message += " " + cause.getMessage();
cause = cause.getCause();
}
// Lanza el mensaje encadenado.
throw new Exception(message);
}