FileNet P8 Annotationen werden jeweils in einem eigenen Datenobjekt (XML-Format) zusammengefasst und werden einem FileNet P8 Dokument, dass aus mehreren Dokumentdatenströmen zusammengesetzt werden kann, im Archiv zugeordnet.
Beim Ladevorgang müssen Dokumente und Annotationen mit derselben Reader
Instanz
geladen werden, damit die Annotationen korrekt auf den entsprechenden Seiten
positioniert werden.
Codebeispiel:
final DefaultReaderControls controls = new DefaultReaderControls(); // AnnotationCustomizer-Implementation, wird hier fürs setzen der Berechtigung benutzt final AnnotationCustomizer annotationCustomizer = new AnnotationCustomizer() { @Override public void customize(Annotation a) { // a.getPermissions().getPermissions() // .add(IndividualAnnotationPermission.DENY.CHANGE); // a.getPermissions().getPermissions() // .add(IndividualAnnotationPermission.DENY.REMOVE); // a.getPermissions().getPermissions() // .add(IndividualAnnotationPermission.DENY.SHOW); } }; controls.getSettings(FNP8AnnotationReaderSettings.class) .getAnnotationCustomizers().add(annotationCustomizer); final URL profileUrl = FNP8AnnotationReader.class .getResource("/filenet-p8-annotation-profile.xml"); final AnnotationProfile profile = AnnotationProfile .load(profileUrl); controls.getSettings(FNP8AnnotationReaderSettings.class) .setAnnotationProfile(profile); // 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)); Reader reader = new Reader(); // ReaderControls setzen reader.setReaderControls(controls); // Format auf <null> setzen, d.h. das Dokument-Format wird automatisch ermittelt reader.setFormat(null); for (InputStream is : docStreams) { reader.read(is); } // FileNet P8 Annotation-Format setzen reader.setFormat(new FNP8AnnotationFormat()); for (InputStream is : annoStreams) { reader.read(is); } reader.complete();
Die Annotationsobjekte können auch zusammengefasst werden, damit der Ladevorgang mit nur einem Read-Aufruf erfolgen kann:
Reader reader = new Reader(); FNP8AnnotationInput input = new FNP8AnnotationInput(); // Vorgang für jedes Annotationsobjekt (1-n) durchführen input.add(<<Annotation-Inputstream>>); // Alle Annotationsobjekte in ein XML-Objekt schreiben ByteArrayOutputStream os = new ByteArrayOutputStream(); input.write(os); // FileNet P8 Annotation-Format setzen reader.setFormat(new FNP8AnnotationFormat()); // Annotationen mit einem Read-Aufruf laden reader.read(new ByteArrayInputStream(os.toByteArray()));