Archiv

TechInfo

Schnittstelle für Customized Features

By Dirk Bergles

Es ergab sich in einem laufenden Projekt das das Löschen von Dokumenten unterbunden werden mußte. Es sollten Custom Dokumente nur noch per Aktion gelöscht werden können.
Um dies zu erreichen muß natürlich in das Datanbank Script " QueryDoumentDelete" eingegriffen werden.

Um aber eine derart wichtige und elementare Bestandteile des Systems nicht vom Designrefresh auszuschließen, gibt es nun eine leichter zu handhanbende Schnittstelle.
Eine Library "CUS_Features"
Auch diese Schnittstelle verhindert leider nicht das ggf. Designelemente manuell upgedated werden müssen.
Das Aussehen der Library CUS_Features wird vorgegeben. Das bedeutet die Funktionen dort werden vom CMS und den jeweiligen Releases vorgebgen.

Wie diese Funktionen gefüllt werden ist dann je nach Kundenprojekt individuell änderbar.
Es werden in bestimmten Bereichen, zum Beispiel beim Prüfen, ob Dokumente gelöscht werden dürfen, zusätzlich Funktionen aufgerufen, welche sich in dieser Library befinden.

Das bedeutet nach einem Update kann es gut möglich sein das diese Library um Funktionen erweitert werden muß. Ist diese Library aber in Kundenprojekten geändert, so müssen diese Funktionen manuell kopiert werden.
Wir werden dies in den Update Instructions deutlich hervorheben und beschreiben.

Konkretes Beispiel:
Seit Version 7.60 4 muß die Library existieren.
Sie ist in VCM_Functions eingebunden. Dort in der Funktion verifiyDeletionIntegrity() wird nun die Funktion allowCUSDeletion() aus CUS_Features aufgerufen.
Der Aufbau ist vorgegeben
Ein Parameter NotesDocument
Ein Rückgabewert Boolean, wenn true, dann darf gelöscht werden.

Die Funktion wird so ausgeliefert:
Function allowCUSDeletion(doc As NotesDocument) As Boolean
allowCUSDeletion = True
End Function

...und kann an das Kundenprojekt angepasst werden.

Über Verbesserungsvorschläge, wie ein manueller Eingriff ins Design bei einem Update umgangen werden kann, wäre ich sehr dankbar.
Etwa eine Lösung die, durch welches Konstrukt auch immer, erlaub das kundenspezifische Erweiterungen bestehen bleiben und dennoch neue Schnittstellen, also weitere Funktionen, im Code ermöglichen.
Vielleicht gibt es ja tonnenweise sionnvolle Kompiler Direktiven, die alle undokumentiert sind....

Einen Kommentar erstellen