> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Erstellen von Funktionen zur Verarbeitung und Verifizierung mehrerer Dokumente

> Erstellen Sie die Pega-Bibliotheksfunktionen für die Erfassung mehrerer Dokumente: CreateNewBatch, AddDocumentToBatch, RunBatchProcessing und FetchingCapturedData.

Um ein Szenario für die Verarbeitung mehrerer Dokumente zu implementieren, erstellen Sie die folgenden Funktionen:

[CreateNewBatch](#createnewbatch)

[AddDocumentToBatch](#adddocumenttobatch)

[RunBatchProcessing](#runbatchprocessing)

[WaitFirstVerificationOrProcessedForMultiFileInvoice](#waitfirstverificationorprocessedformultifileinvoice)

[FetchingCapturedData](#fetchingcaptureddata)

[MultiDocumentBatchIsProcessed](#multidocumentbatchisprocessed)

## <a id="createnewbatch" />CreateNewBatch

Die Funktion *CreateNewBatch* erstellt einen neuen Batch und gibt dessen Bezeichner zurück.

Für diese Funktion gibt es keine Eingabeparameter.

**Typ des Ausgabeparameters**: *int* (Batch-Bezeichner).

**Ausgelöste Ausnahmen**: Exception.

**Java-Quellcode**:

```
// FlexiCapture Web Services API-Client erstellen. 
// Bitte hier die Adresse des FlexiCapture Application Servers, den Tenant-Namen, den Benutzernamen und das Kennwort angeben. 
try (TenantClient tenantClient = new TenantClient(new URI(baseUri), tenantName, userName, password)) {
  // FlexiCapture-Projekt-API abrufen. Bitte hier einen Projektnamen angeben.
  try(ProjectApi projApi = tenantClient.getProjects().getProjectApi(multiFileProjectName)) {
    // FlexiCapture-Batch und -Dokument erstellen.
    Batch batch = new Batch();
    Document doc = new Document();
    // Batch zum FlexiCapture-Projekt hinzufügen.
    return projApi.getBatches().add(batch);
  }
} catch(Exception ex){
  // Fehlermeldungen verketten. 
Throwable cause = ex.getCause();
String message = ex.getMessage();
while (cause != null) {
message += " " + cause.getMessage();
cause = cause.getCause();
}
// Verkettete Meldung auslösen.
throw new Exception(message);
}
```

## <a id="adddocumenttobatch" />AddDocumentToBatch

Die Funktion *AddDocumentToBatch* fügt einem Batch ein Dokument hinzu.

**Eingabeparameter**:

| **Name**      | **Java-Typ** | **Beschreibung**                  |
| ------------- | ------------ | --------------------------------- |
| batchId       | int          | Batch-Bezeichner                  |
| fileName      | String       | Name der Datei                    |
| base64Content | String       | Inhalt der Datei im Base64-Format |

Für diese Funktion gibt es keine Ausgabeparameter.

**Ausgelöste Ausnahmen**: Exception.

**Java-Quellcode**:

```
// FlexiCapture Web Services API-Client erstellen. 
// Bitte FlexiCapture Application Server-Adresse, Tenant-Namen, Benutzernamen und Kennwort angeben. 
try (TenantClient tenantClient = new TenantClient(new URI(baseUri), tenantName, userName, password)) {
  // FlexiCapture-Projekt-API abrufen. Bitte einen Projektnamen angeben.
  try(ProjectApi projApi = tenantClient.getProjects().getProjectApi(multiFileProjectName)) {
    // FlexiCapture-Dokument erstellen.
    Document doc = new Document();
    // FlexiCapture-Batch-API abrufen. Bitte einen Batch-Bezeichner angeben.
    BatchApi batchApi = projApi.getBatches().getBatchApi(batchId);
    // Dateiinstanz erstellen. 
    File file = new File(fileName, Base64.getDecoder().decode(base64Content.replace("\n", "").replace("\r", "")));
    // Dokument zum FlexiCapture-Batch hinzufügen.
    // Datei ist der Dokumentinhalt.
    batchApi.getDocuments().add(doc, file);
  }
} catch(Exception ex){
  // Fehlermeldungen verketten. 
Throwable cause = ex.getCause();
String message = ex.getMessage();
while (cause != null) {
message += " " + cause.getMessage();
cause = cause.getCause();
}
// Verkettete Meldung auslösen.
throw new Exception(message);
}
```

## <a id="runbatchprocessing" />RunBatchProcessing

Die Funktion *RunBatchProcessing* initialisiert die Batch-Verarbeitung.

**Eingabeparameter**:

| **Name** | **Java-Typ** | **Beschreibung** |
| -------- | ------------ | ---------------- |
| batchId  | int          | Batch-Bezeichner |

Für diese Funktion gibt es keine Ausgabeparameter.

**Ausgelöste Ausnahmen**: Exception.

**Java-Quellcode**:

```
// FlexiCapture Web Services API-Client erstellen. 
// Bitte FlexiCapture Application Server-Adresse, Tenant-Namen, Benutzernamen und Kennwort angeben. 
try (TenantClient tenantClient = new TenantClient(new URI(baseUri), tenantName, userName, password)) {
  // FlexiCapture-Projekt-API abrufen. Bitte einen Projektnamen angeben.
  try(ProjectApi projApi = tenantClient.getProjects().getProjectApi(multiFileProjectName)) {
    // FlexiCapture-Batch-API abrufen. Bitte einen Batch-Bezeichner angeben.
    BatchApi batchApi = projApi.getBatches().getBatchApi(batchId);
    // FlexiCapture-Batch zur Verarbeitung ausführen.
    batchApi.start();
  }
} catch(Exception ex){
  // Fehlermeldungen verketten. 
Throwable cause = ex.getCause();
String message = ex.getMessage();
while (cause != null) {
message += " " + cause.getMessage();
cause = cause.getCause();
}
// Verkettete Meldung auslösen.
throw new Exception(message);
}
```

## <a id="waitfirstverificationorprocessedformultifileinvoice" />WaitFirstVerificationOrProcessedForMultiFileInvoice

Die Funktion *WaitFirstVerificationOrProcessedForMultiFileInvoice* gibt eine Verifizierungs-URL zurück. Wenn das Dokument die Verifizierungsstufe noch nicht erreicht hat, wird eine leere Zeichenfolge zurückgegeben.

**Eingabeparameter**:

| **Name** | **Java-Typ** | **Beschreibung** |
| -------- | ------------ | ---------------- |
| batchId  | int          | Batch-Bezeichner |

**Typ des Ausgabeparameters**: *String* (Verifizierungs-URL).

**Ausgelöste Ausnahmen**: Exception.

**Java-Quellcode**:

```
// FlexiCapture Web Services API-Client erstellen. 
// Bitte geben Sie hier die Adresse des FlexiCapture Application Servers, den Tenant-Namen, den Benutzernamen und das Kennwort an. 
try (TenantClient tenantClient = new TenantClient(new URI(baseUri), tenantName, userName, password)) {
  // FlexiCapture-Projekt-API abrufen. Bitte geben Sie hier einen Projektnamen an.
  try(ProjectApi projApi = tenantClient.getProjects().getProjectApi(multiFileProjectName)) {
    // FlexiCapture-Batch-API abrufen. Bitte geben Sie hier einen Batch-Bezeichner an.
    BatchApi batchApi = projApi.getBatches().getBatchApi(batchId);
    // Warten, bis der Batch auf der Verifizierungsstufe angehalten wird, und FlexiCapture-Dokument abrufen.
    Document doc = batchApi.getDocuments().waitFirstVerificationOrProcessed();
    // Prüfen, ob die Batch-Stufe Verifizierung ist.
    if (doc.getStageType() == ProcessingStageType.Verification) {
      // Ersten Verifizierungs-URL-String für den FlexiCapture-Batch zurückgeben.
      return batchApi.getVerificationUrls(WebPageMode.Mini).get(0).toString();
    } 
    //Leeren String zurückgeben, wenn der Batch ohne Verifizierungsstufe verarbeitet wurde.
    return "";
  }
}catch(Exception ex){
  // Fehlermeldungen verketten. 
Throwable cause = ex.getCause();
String message = ex.getMessage();
while (cause != null) {
message += " " + cause.getMessage();
cause = cause.getCause();
}
// Verkettete Meldung auslösen.
throw new Exception(message);
}
```

## <a id="fetchingcaptureddata" />FetchingCapturedData

Die Funktion *FetchingCapturedData* gibt eine Liste von Ausgabefeldern im JSON-Format zurück.

**Eingabeparameter**:

| **Name**     | **Java-Typ** | **Beschreibung**             |
| ------------ | ------------ | ---------------------------- |
| batchId      | int          | Batch-Bezeichner             |
| templateName | String       | Name der Document Definition |

**Typ des Ausgabeparameters**: *String* (Dokumentfelder im JSON-Format).

**Ausgelöste Ausnahmen**: Exception.

**Java-Quellcode**:

```
// FlexiCapture Web Services API-Client erstellen. 
// Bitte FlexiCapture Application Server-Adresse, Tenant-Namen, Benutzernamen und Kennwort angeben. 
try (TenantClient tenantClient = new TenantClient(new URI(baseUri), tenantName, userName, password)) {
  // FlexiCapture-Projekt-API abrufen. Bitte einen Projektnamen angeben.
  try(ProjectApi projApi = tenantClient.getProjects().getProjectApi(multiFileProjectName)) {
    // FlexiCapture-Batch-API abrufen. Bitte einen Batch-Bezeichner angeben.
    BatchApi batchApi = projApi.getBatches().getBatchApi(batchId);
    // Alle Dokumente aus dem FlexiCapture-Batch abrufen.
    List<Document> documents = batchApi.getDocuments().getAll();
    for(Document document:
       documents){
      // Dokumentvorlagenname prüfen.
      if(document.getTemplateName().equals(templateName)){
        // FlexiCapture-Dokument-API abrufen. Bitte einen Dokument-Bezeichner angeben.
        DocumentApi docApi = batchApi.getDocuments().getDocumentApi(document.getId());
        // Erfasste Felder als JSON-String zurückgeben.
        return docApi.getExportedFields();
      }
    }
    //Leeren JSON-String zurückgeben, wenn der Dokumentvorlagenname nicht gefunden wurde.
    return "{}";
  }
}catch(Exception ex){
  // Fehlermeldungen verketten. 
Throwable cause = ex.getCause();
String message = ex.getMessage();
while (cause != null) {
message += " " + cause.getMessage();
cause = cause.getCause();
}
// Verkettete Meldung auslösen.
throw new Exception(message);
}
```

## <a id="multidocumentbatchisprocessed" />MultiDocumentBatchIsProcessed

Die Funktion *MultiDocumentBatchIsProcessed* gibt einen Wert zurück, der angibt, ob der Batch bereits verarbeitet wurde.

**Eingabeparameter**:

| **Name** | **Java-Typ** | **Beschreibung** |
| -------- | ------------ | ---------------- |
| batchId  | int          | Batch-Bezeichner |

**Typ des Ausgabeparameters**: *boolean* (*true*, wenn das Dokument die Stufe *Processed* erreicht hat, andernfalls *false*).

**Ausgelöste Ausnahmen**: Exception.

**Java-Quellcode**:

```
// FlexiCapture Web Services API-Client erstellen. 
// Bitte FlexiCapture Application Server-Adresse, Tenant-Namen, Benutzernamen und Kennwort angeben. 
try (TenantClient tenantClient = new TenantClient(new URI(baseUri), tenantName, userName, password)) {
  // FlexiCapture-Projekt-API abrufen. Bitte einen Projektnamen angeben.
  try(ProjectApi projApi = tenantClient.getProjects().getProjectApi(multiFileProjectName)) {
    // FlexiCapture-Batch-API abrufen. Bitte einen Batch-Bezeichner angeben.
    BatchApi batchApi = projApi.getBatches().getBatchApi(batchId);
    // Warten, bis der Batch in der Verifizierungs- oder Verarbeitungsstufe angehalten wird, und das FlexiCapture-Dokument abrufen.
    Document doc = batchApi.getDocuments().waitFirstVerificationOrProcessed();
    // Prüfen, ob die Batch-Stufe Processed ist.
    return doc.getStageType() == ProcessingStageType.Processed;    
  }
}catch(Exception ex){
  // Fehlermeldungen verketten. 
Throwable cause = ex.getCause();
String message = ex.getMessage();
while (cause != null) {
message += " " + cause.getMessage();
cause = cause.getCause();
}
// Verkettete Meldung auslösen.
throw new Exception(message);
}
```
