Ejemplo de seguridad de espacio de trabajo

El ejemplo de código siguiente ilustra cómo utilizar los métodos de seguridad de espacio de trabajo (incluidos métodos de los objetos Folder, Folders, Permission y Permissions) para recuperar los permisos de seguridad de espacio de trabajo aplicados a carpetas públicas y personales. Este ejemplo proporciona una idea general de cómo se puede utilizar la API de ClearQuest para crear una política de seguridad de carpeta de espacio de trabajo y recuperar información sobre los valores actuales.

Perl

use strict;
require "CQPerlExt.pm";


################################
# Subroutines

sub get_access_description($)
{
    my ($folder) = @_;

    my $perm  = $folder->GetPermission();
    my $kind  = $perm->GetKindName();
    my $group = $perm->GetGroup($CQPerlExt::CQ_NAME_EXTEND_WHEN_NEEDED);

    return "$kind for $group";
}

sub show_subfolders($$);
sub show_subfolders($$)
{
    my ($folder, $indent) = @_;

    my $name = $folder->GetName();
    my $access = get_access_description($folder);

    my $folders = $folder->GetSubfolders();
    my $count = $folders->Count();

    print $indent . "$name: $access\n";
    for (my $i = 0; $i < $count; $i++) {
        my $folder = $folders->Item($i);
        show_subfolders($folder, $indent . "|  ");
    }
}


################################
# Main

my $session;
my $workspace;
my $PublicFolder;
my $PersonalFolder;
my $PublicFolderName;
my $PersonalFolderName;

if (scalar(@ARGV) != 4) {
    die "ERROR: insufficient arguments; need username, password, database, dbset\n";
}

my ($username, $password, $database, $dbset) = @ARGV;

$session = CQSession::Build();
$session->UserLogon($username, $password, $database, $dbset);

$workspace = $session->GetWorkSpace();

$PublicFolder = $workspace->GetPublicFolder(); 
$PublicFolderName = $workspace->GetPublicFolderName();
show_subfolders($PublicFolder, "");

$PersonalFolder = $workspace->GetPersonalFolder(); 
$PersonalFolderName = $workspace->GetPersonalFolderName();
show_subfolders($PersonalFolder, "");

$session->Unbuild();
$session = undef;

# end Main

Comentarios