Speichern von FileNet P8 (FNP8) Annotationen

Das Speichern der FNP8 Annotation erfolgt in mehreren Schritten:

  • Alle Annotationen vom Dokument in ein Datenobjekt schreiben (Codebsp. 1)

  • Datenobjekt erneut laden um die neu angelegten / geänderten / gelöschten Annotationen ermitteln (Codebsp. 2)

  • Neu angelegte / veränderte Annotationen ins Archiv speichern, gelöschte anhand der Annotation ID aus dem Archiv entfernen, unveränderte Annotation müssen nicht gespeichert werden (siehe FileNet P8 API).

Codebeispiel 1:

FNP8AnnotationWriter writer = new FNP8AnnotationWriter();
DefaultWriterControls controls = new DefaultWriterControls();
writer.write(<<Document-Instanz>>, <<Outputstream>>, controls);

Um an die einzelnen Annotationen zu kommen und deren Zustand zu ermitteln, muss die die FNP8AnnotationOutput-Klasse verwendet werden.

Codebeispiel 2:

FNP8AnnotationOutput output = new FNP8AnnotationOutput(<<Datenobjekt-Inputstream>>);

// Unveränderte Annotationen für alle Seiten
org.w3c.dom.Document[] annotationsUmodified = output.getUnmodifiedAnnotations();

//Veränderte Annotationen
org.w3c.dom.Document[] annotationsModified = output.getModifiedAnnotations();

//Hinzugefügte Annotationen
org.w3c.dom.Document[] annotationsAdded = output.getAddedAnnotations();

//Gelöschte Annotationen
org.w3c.dom.Document[] annotationsDeleted = output.getDeletedAnnotations();

Die einzelnen Annotationsobjekte sind nun verfügbar (in DOM-Struktur), jetzt müssen je nach Änderung / Zustand noch Anpassungen an den Attribute vorgenommen werden.

  • Erstell-/ Änderungsdatum anpassen, nur bei neu angelegten und geänderten Annotationen nötig:

    // Aktueller Zeitstempel holen
    long timestamp = System.currentTimeMillis();
    //Setzen des Erstelldatums (nur für neu angelegte Anntationen nötig)
    FNP8AnnotationXMLUtils.setEntryDate(<<Annotation>>, timestamp);
    //Setzen des Modifikationsdatums
    FNP8AnnotationXMLUtils.setModifyDate(<<Annotation>>, timestamp);
    
  • Annotation-ID (F_ID und F_ANNOTATEDID Attribute) zum Speichern / Löschen ermitteln:

    • Geänderte / gelöschte Annotationen besitzen bereits eine ID, diese kann aus der DOM-Struktur ermittelt werden:

      String id = FNP8AnnotationXMLUtils.getAnnotationID(<<Annotation>>);
      
    • Neu angelegte Annotationen besitzen noch keine ID, diese muss aus dem Archiv ermittelt und gesetzt werden:

      FNP8AnnotationXMLUtils.setAnnotationID(<<Annotation>>, <<Neue ID>>);
      

    Die oben genannten ID's dann als Referenz zum Speichern der Annotation im Archiv verwenden (siehe FileNet P8 API).

  • Der Seitenindex der Annotation muss in der Regel nicht angepasst werden.

    Wird jedoch die Dokumentstruktur verändert und ins Archiv gespeichert, muss der Annotationsseitenindex (F_PAGENUMBER und F_MULTIPAGETIFFPAGENUMBER Attribute) entsprechend angepasst werden:

    // Setzen des Seitenindex für das Attribut F_PAGENUMBER (Dokument Nummer)
    FNP8AnnotationXMLUtils.setPageNumber(<<Annotation>>, <<Index>>);
    // Setzen des Seitenindex für das Attribut F_MULTIPAGETIFFPAGENUMBER (Seitennummer innerhalb des Dokuments)
    FNP8AnnotationXMLUtils.setMultiPageTiffPageNumber(<<Annotation>>, <<Index>>);
    

Die angepasste Annotation DOM-Struktur muss jetzt noch ins XML-Format geschrieben werden und kann ins Archiv gespeichert werden.

// Annotation DOM-Struktur ins XML-Format schreiben
ByteArrayOutputStream os = new ByteArrayOutputStream();
FNP8AnnotationXMLUtils.write(os, <<Annotation>>);
// XML-Daten in Byte-Array, ins Archiv speichern
byte[] xmlAnnoData = os.toByteArray(); 

FNP8AnnotationWriterSettings Konfiguration:

  • setEncoding(String) (Default = "UTF-8")

    Encoding der XML-Annotationsdaten.

  • setUseUnicodeTextEncoding(boolean) (Default = true)

    Bei der Einstellung true werden die Textzeichen in Unicode-Schreibweise geschrieben (zum Beispiel wird "ABC" nach "004100420043" konvertiert). Bei der Einstellung false werden die Textzeichen entsprechend dem Encoding direkt geschrieben.

[jadice document platform Version 5.5.12.1: Dokumentation für Entwickler. Veröffentlicht: 2021-08-17]