Laden von FileNet P8 (FNP8) Annotationen

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()));
[jadice document platform Version 5.5.12.1: Dokumentation für Entwickler. Veröffentlicht: 2021-08-17]