Utilización de CtCmd para UCM y Rational ClearQuest

Perl

# Inicio de Global Script UCU_CQActBeforeChact



sub UCU_CQActBeforeChact {
# el módulo Perl inglés se necesita para utilizar la variable OSNAME

use English;

if ( $OSNAME =~ /Win/i ) {

    # Vía de acceso UNC para la compilación de CtCmd.pm para Windows

    unshift ( @INC, "//otterpop/c/Progra\~1/Perl/site/lib/ClearCase" );

} 

else {

    # Vía de acceso NFS para la compilación de CtCmd.pm para Solaris

    # si se van a utilizar otras plataformas, este bloque también debe comprobar el 

    # sistema Unix y la plataforma Linux y establecer la vía de acceso de inclusión
    # según corresponda.

    unshift ( @INC, 
"/net/qsun176/usr1/rational/common/lib/perl5/site_perl/5.6.1/sun4-solaris-mu
lti/ClearCase" );

}

    require ("CtCmd.pm");

    my ($result);

    my ($param) = @_;

    # ---

    # SQUID invoca este enganche de registro para invocar la política "Realizar acción

    # de ClearQuest antes de cambiar actividad". Si la actividad no está en un proyecto

    # de corriente de datos única, o bien, no está en una corriente de datos de 

    # integración del proyecto, la actividad de cambio de UCM debe dar error.

    #

    # ENTRADA:

    #  - El parámetro debe ser una serie con este formato:

    #     "tipo-entidad|id-entidad|info_proyecto|info_corrienteDatos"
    # (las barras verticales 
son delimitadores)

    #    que representa el vínculo de entidad a SUM_Project que se ha

    #    entregado, y si la entidad es válida o no

    # SALIDA:

    #  - Si la entidad es válida, devuelve una serie vacía

    #  - Si la entidad no es válida, devuelve una serie

    #    que se muestra como un mensaje de error.

    # ---

    # Analizar la serie de parámetro, pero ignorar
    # project_info y stream_info 
en este ejemplo

    my $entity_type;

    my $entity_id;

    my $project_info;

    my $stream_info;

    ($entity_type, $entity_id, $project_info, $stream_info) = split ('\|', 
$param);

    # Crea instancia CtCmd

    my $inst_cc = ClearCase::CtCmd->new();

    # obtener corriente de datos padre y tipo de corriente de datos

    my $status;

    my $stream;

    my $istream;

    my $str_type;

    my $project;

    # obtener el nombre de corriente de datos de entity_id

    ($status, $stream) = 
$inst_cc->exec("des","-fmt","%[stream]p",$entity_id);

    # obtener el nombre del proyecto de la corriente de datos

    ($status, $project) = $inst_cc->exec("des","-fmt","%[project]p",$stream);

    # obtener el nombre de la corriente de datos de integración del proyecto

    ($status, $istream) = $inst_cc->exec("des","-fmt","%[istream]p", 
$project);

    # obtener tipo de proyecto padre (nota: fmt de modelo está dividido
    # en MCK, devuelve 
serie en blanco)

    my $proj_type;

    ($status, $proj_type) = 
$inst_cc->exec("des","-fmt","%[model]p",$project);

    # averiguar si el proyecto es una corriente de datos única o la
    # corriente de datos padre 

    # una corriente de datos de integración

    # NOTA: si proj_type es SIMPLE, la corriente de datos siempre
    # debe ser una 
corriente de datos de integración

    if ( ($proj_type !~ "SIMPLE") && ($stream !~ $istream) ) {

        $result = "Unable to change activity";

    }

    else {

        $result = "";

    }

    return $result;

}

# Fin de Global Script UCU_CQActBeforeChact 


Comentarios