Ein Schemadesigner kann Aktionen für Benutzer ausblenden, die keine Berechtigung haben, diese Aktionen auszuführen.
Aktionen in einem Schema können in ClearQuest auch dann angezeigt werden, wenn ein Benutzer nicht die Berechtigung zum Ausführen aller Aktionen hat. Ein Schemadesigner kann Aktionen ausblenden, die durch einen Hook für Aktionszugriffssteuerung gesteuert werden. Für einen Benutzer ausgeblendete Aktionen werden in den Menüs 'Modifizieren', 'Status ändern' oder 'Dienstprogramme' im ClearQuest-Client nicht angezeigt. Ob eine Aktion ausgeblendet wird, wird durch den in
Zugriffssteuerung angegebenen Wert bestimmt.
- Wenn für die Zugriffssteuerung Alle Benutzer festgelegt ist, wird die Aktion nicht ausgeblendet, weil alle Benutzer auf die Aktion zugreifen dürfen.
- Wenn für die Zugriffssteuerung Benutzergruppen festgelegt ist, wird die Aktion den Benutzern angezeigt, die zu den angegebenen Gruppen gehören.
- Wenn für die Zugriffssteuerung SCRIPTS festgelegt ist, wird die Aktion für den Benutzer ausgeblendet oder nicht. Das ist von dem Wert der Schemaeigenschaft HIDE_ACTIONS abhängig. Das Standardverhalten ist das Anzeigen der Aktion.
Aktionen bei Zugriffssteuerung SCRIPTS ausblenden: Schemaeigenschaft HIDE_ACTIONS
Zunächst muss das Schema aktiviert werden, damit Aktionen ausgeblendet werden können. Führen Sie den Befehl packageutil aus, um für die Schemaeigenschaft HIDE_ACTIONS den Wert 1 anzugeben. Die Schemaeigenschaft HIDE_ACTIONS wird für die jüngste Version des Schemas angegeben. Der Befehl hat das folgende Format:
packageutil setproperty –dbset <Datenbankgruppe> <Benutzer> <Kennwort> <Schema>
HIDE_ACTIONS 1
Um die Möglichkeit zum Ausblenden von Aktionen zu inaktivieren, geben Sie für die Schemaeigenschaft
HIDE_ACTIONS 0 an.
Anmerkung: Die Anzeigeleistung für Datensatzformulare kann durch die Angabe des Werts 1 für die Sitzungsvariable HIDE_ACTIONS beeinträchtigt werden. Zugriffssteuerungshooks für alle Aktionen für den Datensatz werden ausgeführt, um festzustellen, ob die Aktion dem Benutzer angezeigt werden soll. Wenn das Schema sehr viele Aktionen aufweist oder wenn das Script des Zugriffssteuerungshooks langsam arbeitet, kann das Laden eines Datensatzformulars für den Benutzer länger dauern.
Sitzungsvariable ratl_GetLegalAction
Wenn für die Schemaeigenschaft
HIDE_ACTIONS der Wert 1 (Aktionen ausblenden) und für
Zugriffssteuerung der Wert
SCRIPTS angegeben wird, kann der Zugriffssteuerungshook aufgerufen werden, um festzustellen, ob der Aktionsname in den Menüs des ClearQuest-Clients für den Benutzer ausgeblendet werden soll, oder um zu überprüfen, ob der Benutzer eine Berechtigung zum Ausführen der Aktion besitzt. Der Schemadesigner kann den Hook dahingehend anpassen, dass der Wert der Sitzungsvariablen
ratl_GetLegalAction überprüft wird. Dieser Wert zeigt an, warum der Hook aufgerufen wird.
- Wenn der Wert von ratl_GetLegalAction dem Anzeigename des aktuellen Datensatzes entspricht, wird der Hook aufgerufen, um festzustellen, ob die Aktion ausgeblendet werden soll. Der Hook gibt den Wert 0 zurück, wenn der Aktionsname ausgeblendet werden soll. Der Hook gibt den Wert 1 zurück, wenn der Aktionsname angezeigt werden soll.
- Wenn der Wert von ratl_GetLegalAction dem Anzeigename des aktuellen Datensatzes nicht entspricht, wird der Hook aufgerufen, um festzustellen, ob der Benutzer eine Berechtigung zum Ausführen dieser Aktion besitzt. Die Aktion wurde ausgewählt und wird ausgeführt, wenn der Zugriffssteuerungshook den Wert 1 zurückgibt. Auch wenn der Aktionsname für diesen Benutzer in den Menüs des ClearQuest-Clients ausgeblendet war, kann die Aktion durch einen verschachtelten Hook oder ein externes Script aufgerufen werden. Der ClearQuest-Client zeigt eine allgemeine Fehlernachricht an, dass diese Aktion nicht zulässig ist, wenn der Aktionszugriffssteuerungshook 0 zurückgibt. Der Hook kann auch eine ausführlichere Fehlernachricht anzeigen, indem Informationen an eine Perl-Funktion die() oder eine VBScript-Methode Err.Raise() übergeben werden. Die Nachricht könnte Informationen zu einer nicht erfüllten Vorbedingung enthalten oder Informationen darüber, warum der Benutzer keine Berechtigung zum Ausführen der Aktion hat.
Beispiel
Das folgende Perl-Beispiel zeigt, wie der Hook angepasst wird, um eine Entscheidung über das Ausblenden oder Anzeigen der Aktion zu fällen. Sie können diesen Zugriffssteuerungshooktyp auch mit VBScript schreiben.
# Start Benutzercode
# $result auf 1 setzen, wenn der Benutzer die Berechtigung
# zum Ausführen dieser Aktion hat, andernfalls 0 angeben.
$result = 0;
if ($session->IsUserSuperUser()) {
# Ein Superuser kann diese Aktion immer ausführen.
$result = 1;
}
else {
my $GLA = $session->GetNameValue("ratl_GetLegalAction");
my $myName = $entity->GetDisplayName();
if ($GLA eq $myName) {
# Dieser Hook wurde für das Ausblenden der Aktion aufgerufen.
# Geben Sie 0 an (das Kommentarzeichen in der folgenden Zeile
# entfernen), um die Aktion auszublenden.
# $result = 0
# Anschließend löschen Sie die Zeile $result = 1 unten
# oder setzen Sie sie auf Kommentar.
# Belassen Sie die Zeile, damit die Aktion immer angezeigt
# wird und der Benutzer eine ausführliche Nachricht erhält,
# wenn er versucht, die Aktion auszuführen.
$result = 1;
}
else {
my $user = $session->GetUserLoginName();
my $owner = $entity->GetFieldStringValue("Owner");
if ($user ne $owner) {
die "Nur der Eigner kann diese Aktion ausführen.";
}
$result = 1;
}
}
# End User Code
Schalten Sie den YouTube-Kanal von IBM® Rational Support ein, um weitere Informationen zum Ausblenden von Aktionen zu erhalten.