Es werden alle Annotationen vom Dokument in ein Datenobjekt geschrieben.

Formatspezifischen Daten (Benutzer, Berechtigung, usw.) können anhand der FNISAnnotationWriterSettings-Klasse gesetzt werden.

Codebeispiel:

FNISAnnotationWriter writer = new FNISAnnotationWriter();
DefaultWriterControls controls = new DefaultWriterControls();
controls.getSettings(FNISAnnotationWriterSettings.class)
		.setAnnotationProfile(profile);
writer.write(<<Document-Instanz>>, <<Outputstream>>, controls);

Nach dem Speichern der Annotationen im FileNet IS Archiv sollte das Dokument mit Annotationen erneut geladen werden um den aktuellen Annotationstand aus dem Archiv zu erhalten. Damit man die Dokumentdaten nicht erneut aus dem Archiv holen muss, besteht die Möglichkeit den Datenstrom aus den entsprechenden Seiten zu holen:

final Document document = <Jadice Document-Instanz>

final TreeMap<Integer, InputStream> streamMap = new TreeMap<Integer, InputStream>();

for (final Page page : document.getPages()) {
  final PageSegmentSource source = page.getPageSegment(DocumentLayer.DEFAULT).getSource();
  // Stream-Index
  final int streamIndex = source.getStreamIndex();
  // Document-Stream
  final InputStream stream = source.getStream();
  streamMap.put(streamIndex, stream);
}

// alle Seiten entfernen
document.getPages().clear();

final DefaultReaderControls controls = new DefaultReaderControls();

// Für Tiff-Dokumente ohne Auflösungsdefinition muss eine Auflösung von 100 DPI
// verwendet werden
controls.getSettings(TIFFReaderSettings.class).setInvalidResolutionHandling(InvalidResolutionHandling.USE_DEFAULT);
controls.getSettings(TIFFReaderSettings.class).setDefaultResolution(new Resolution(100));
		
final URL profileUrl = FNISAnnotationReader.class
		.getResource("/filenet-is-annotation-profile.xml");
final AnnotationProfile profile = AnnotationProfile
		.load(profileUrl);
controls.getSettings(FNISAnnotationReaderSettings.class)
		.setAnnotationProfile(profile);

// Dokument neu laden
final Reader reader = new Reader();
// ReaderControls setzen
reader.setReaderControls(controls);
reader.setDocument(document);
reader.setFormat(null);

// Dokumentdaten neu laden
for (final Integer streamIndex : streamMap.keySet()) {
  final InputStream stream = streamMap.get(streamIndex);
  reader.read(stream);
}

// Annos neu laden
reader.setFormat(new FNISAnnotationFormat());
final DefaultReaderControls controls = new DefaultReaderControls();
controls.getSettings(FNISAnnotationReaderSettings.class).setAnnotationProfile(AnnotationProfile.getDefaultProfile());
reader.setReaderControls(controls);
reader.read(<<Anno-Daten>>);

reader.complete();
[jadice document platform Version 5.4.2.13: Dokumentation für Entwickler. Veröffentlicht: 2020-04-08]
loading table of contents...