OKB-000099 | Lizenzprüfung bei AddOns

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.