In manchen Sachverhalten kann es vorkommen und sinnvoll erscheinen, dass Annotationen nur eingeschränkt durch den Benutzer angelegt, gelöscht oder anderweitig verändert werden dürfen. Zu diesem Zweck bietet die jadice documentplatform ein Berechtigungskonzept.
Bestimmte Berechtigungen können auf ein einzelnes Annotationsobjekt angewendet werden. Ebenso ist es möglich globale Berechtigungen über die komplette Dokument-Instanz zu setzen.
Annotations spezifische Berechtigungen werden mit der Klasse
IndividualAnnotationPermission
definiert:
-
Berechtigung Ändern
Erlauben: IndividualAnnotationPermission.ALLOW.CHANGE
Verweigern: IndividualAnnotationPermission.DENY.CHANGE
Betrifft Änderungen via GUI-Komponenten aller Eigenschaften der Annotation (z.B. Grösse, Position).
-
Berechtigung Löschen
Erlauben: IndividualAnnotationPermission.ALLOW.REMOVE
Verweigern: IndividualAnnotationPermission.DENY.REMOVE
Betrifft Löschenfunktionalität via GUI-Komponenten.
-
Berechtigung Anzeigen
Erlauben: IndividualAnnotationPermission.ALLOW.SHOW
Verweigern: IndividualAnnotationPermission.DENY.SHOW
Wenn die Berechtigung verweigert wird, dann ist die Annotation im Viewer-Fenster nicht sichtbar.
-
Berechtigung Schreiben
Erlauben: IndividualAnnotationPermission.ALLOW.WRITE
Verweigern: IndividualAnnotationPermission.DENY.WRITE
Wenn die Berechtigung verweigert wird, kann die Annotation nicht gespeichert werden.
Setzen einer Berechtigung via API:
Annotation a = <<Annotation-Instanz>>
// Setzen der Berechtigung 'Änderung verweigern'
a.getPermissions().getPermissions()
.add(IndividualAnnotationPermission.DENY.CHANGE);
Als Standardeinstellung sind alle Berechtigungen erlaubt.
Beim Laden kann bereits eine Berechtigungsvergabe an die einzelnen
Annotationsobjekte vorgenommen werden, hierzu wird eine Implementation des
Interface AnnotationCustomizer
benötigt, die beim Ladevorgang den
entsprechenden Annotation-ReaderSettings gesetzt wird.
final DefaultReaderControls controls = new DefaultReaderControls(); // AnnotationCustomizer-Implementation, wird fürs setzen der Berechtigung benutzt final AnnotationCustomizer annotationCustomizer = new AnnotationCustomizer() { @Override public void customize(Annotation a) { // Hier gewünschte Berechtigungen setzen // a.getPermissions().getPermissions() // .add(IndividualAnnotationPermission.DENY.CHANGE); // a.getPermissions().getPermissions() // .add(IndividualAnnotationPermission.DENY.REMOVE); // a.getPermissions().getPermissions() // .add(IndividualAnnotationPermission.DENY.SHOW); } }; // Implementation den ReaderSettings übergeben (hier z.B. für FileNet P8), // die Controls dann fürs Laden benutzen controls.getSettings(FNP8AnnotationReaderSettings.class) .getAnnotationCustomizers().add(annotationCustomizer);
Es existiert noch ein weiteres Berechtigungkonzept, welches das Anlegen,
Verändern, Löschen von Annotationen via GUI-Komponenten steuert, diese
Berechtigungen müssen an der jadice Document
Instanz registriert werden und
werden mit der Klasse DocumentAnnotationPermission
abgebildet.
Die Dokument gebundene Berechtigungen haben Vorrang gegenüber den Annotationsberechtigungen
-
Berechtigung Ändern
Erlauben: DocumentAnnotationPermission.ALLOW.CHANGE
Verweigern: DocumentAnnotationPermission.DENY.CHANGE
Änderungen von Annotationen via GUI-Komponenten werden verweigert.
-
Berechtigung Löschen
Erlauben: IndividualAnnotationPermission.ALLOW.REMOVE
Verweigern: IndividualAnnotationPermission.DENY.REMOVE
Löschen von Annotationen via GUI-Komponenten ist nicht möglich.
-
Berechtigung Anlegen
Erlauben: IndividualAnnotationPermission.ALLOW.ADD
Verweigern: IndividualAnnotationPermission.DENY.ADD
Annotationen via GUI-Komponenten können nicht angelegt werden.
Setzen der Berechtigung an einer Dokumentinstanz:
Document document = <<Document-Instanz>>
// Berechtigung setzen, Anlegen von Annotationen nicht möglich
document.getPermissions().getPermissions().add(DocumentAnnotationPermission.DENY.ADD);