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();