Betrifft: ab orgAnice Pi
Frage:
Wie programmiert man die Prüfung von AddOn-Lizenzen?
Antwort:
Der orgAnice Database Server bietet die Auflistung .Licenses an, die alle in der Datenbank eingetragenen Lizenzen beinhaltet
Sie müssen die Auflistung durchgehen und nach „Ihrer“ Lizenz suchen, indem Sie die Eigenschaft .Name abfragen
Wenn Sie die Lizenz gefunden haben, dann führen Sie die Methode .Login aus.
Der Aufruf der Methode zeigt keine Wirkung, wenn das Login erfolgreich war. Wenn es nicht erfolgreich war, kann es dafür mehrere Gründe geben, die als Fehler signalisiert werden. Sie müssen also den von der .Login-Methode ausgelösten Fehler abfragen, auswerten und dem Benutzer mitteilen. Die Fehler können die folgenden sein:
ORGDB_E_INACTIVEUSER
: Der aktuelle Benutzer ist kein aktiver Benutzer dieser AddOn-Lizenz.
ORGDB_E_LICENSEEXPIRED
: Die AddOn-Lizenz ist abgelaufen.
ORGDB_E_WRONGSERIALNUMBER
: Die Seriennummer der AddOn-Lizenz stimmt nicht mit der Seriennummer der Hauptlizenz überein. Das kann passieren, wenn die Hauptlizenz nach dem Eintragen der AddOn-Lizenz ausgetauscht wurde.
ORGDB_E_INVALIDLICENSEVERSION
: Die Version der AddOn-Lizenz stimmt nicht mit der Version der Hauptlizenz überein. Das kann nach dem Update auf eine neue Version von orgAnice (z.B. von orgAnice 4.0 auf 5.0) passieren, wenn eine neue Hauptlizenz, aber noch keine neue AddOn-Lizenz eingetragen wurde.
Eine Beispielprozedur, die die Prüfung der AddOn-Lizenz vornimmt:
Private Function CheckLogin() As Boolean
' Prüft, ob die Anmeldung an der AddOn-Lizenz gelingt
Dim lic As OrgDbServer31.License
Dim sMsgText As String
Const csAddOnLicense As String = "OSEVN"
' Annahme: Login gelingt nicht
CheckLogin = False
' Ist die AddOn-Lizenz überhaupt vorhanden?
On Error Resume Next
Set lic = Database.Licenses(csAddOnLicense)
If lic Is Nothing Then
sMsgText = " ist nicht vorhanden!“"
Else
' Lizenz ist vorhanden - Ist der Benutzer freigeschaltet?
lic.Login
Select Case Err.Number
Case 0
‚ Keine Fehler – alles klar!
CheckLogin = True
Case ORGDB_E_WRONGSERIALNUMBER
sMsgText = " besitzt die falsche Seriennummer!"
Case ORGDB_E_INVALIDLICENSEVERSION
sMsgText = " stimmt in der Version nicht mit der Datenbanklizenz überein!"
Case ORGDB_E_INACTIVEUSER
sMsgText = " ist für Sie nicht freigeschaltet!"
Case ORGDB_E_LICENSEEXPIRED
sMsgText = " ist am " & CStr(lic.ValidUntil) & " abgelaufen!"
Case Else
sMsgText = " liefert den Fehler 0x" & Hex(Err.Number) & " beim Anmelden!"
End Select
End If
On Error GoTo ErrHandler
' Fehlermeldung anzeigen (falls notwendig)
If sMsgText <> "" Then
sMsgText = "Die AddOn-Lizenz " & csAddOnLicense & sMsgText & vbNewLine & "Bitte wenden Sie sich an Ihren Datenbank-Administrator."
MsgBox sMsgText, vbCritical
End If
Exit Function
ErrHandler:
gErrors.DisplayError csErrSource & ".CheckLogin"
End Function
Des Weiteren sollten Sie, um das Testen des AddOn für potenzielle Kunden zu erleichtern, sicherstellen, dass:
1.) Bei einer Demo-Lizenz der Hauptlizenz die volle Funktionalität des AddOns gegeben ist, unabhängig davon, ob eine AddOn-Lizenz vorhanden ist, oder nicht. Ob es eine Demo-Lizenz der Hauptlizenz ist, prüfen Sie über Database.Licenses(0).Type = ORGDB_LICENSE_TEST
2.) Bei einer nicht Demo-Lizenz der Hauptlizenz und KEINER AddOn-Lizenz eine eingeschränkte Funktionalität des AddOns gegeben ist. Hier müssen Sie entscheiden, was bei Ihrem AddOn sinnvoll ist – bei dem Projekt-Manager lassen sich z.B. maximal 10 Projekt anlegen, beim Kalender kann nur die aktuelle Woche anzeigen werden. Es muss also eine Einschränkung sein, die einerseits ein vollständiges Ausprobieren aller Funktionalitäten ermöglicht, andererseits aber das sinnvolle Arbeiten unterbindet.