Utilización de métodos CAL en scripts de enganche de Rational ClearQuest

En esta sección se muestra cómo incluir métodos CAL (ClearCase Automation Library) en los scripts de enganche para personalizar el comportamiento de la integración de Rational ClearQuest con UCM.

Este ejemplo es una versión modificada del script UCM_CQActBeforeChact de Visual Basic, que implementa la política Realizar acción de ClearQuest antes de cambiar actividad. Cuando se establece esta política, la integración ejecuta el script cuando un desarrollador inicia una operación de Finalizar actividad, desde la GUI o entrando el mandato cleartool chactivity -cqact.

El script modificado utiliza métodos CAL para determinar si el desarrollador trabaja en un proyecto de corriente de datos única, o bien, en un proyecto de varias corrientes de datos. Si el desarrollador trabaja en un proyecto de una sola corriente de datos, el script permite la operación de Finalizar actividad. Si no es así, el script devuelve un mensaje de error y cancela la operación de Finalizar actividad.

VBScript

REM Inicio de Global Script UCM_CQActBeforeChact

Function UCM_CQActBeforeChact (entity_type, entity_id, project_info, stream_info)

' Éste es el script que implementa la política "Realizar acción antes de

' cambiar actividad". Cuando se instala inicialmente, invoca un 

' script por omisión. Si los usuarios desean personalizar esta política, deben

' editar el script para utilizar el código, en lugar de invocar al script

' por omisión. El códigos de script por omisión se puede utilizar como ejemplo.

'

' ENTRADA:

' - tipo_entidad: nombre del tipo de entidad en la que se va a ejecutar 
'                la acción (por ejemplo, "defect")
' - id_entidad: id (por ejemplo, "SAMPL0000001") de la entidad en la que
'              se va a ejecutar la acción

' SALIDA:

' - Si la acción se ejecuta satisfactoriamente, debe devolver una

' serie vacía

' - Si la acción no se ejecuta satisfactoriamente, debe devolver un

' valor String que se visualice como un mensaje de error.

' Sólo se debe permitir el cambio de actividad si la actividad se encuentra en
' un proyecto de corriente de datos única

proj_model = "DEFAULT"

' Obtener el contexto de sesión del enganche

Set session = GetSession()

' Obtener la entidad

Set entity = session.GetEntity(entity_type, entity_id)

' Obtener el valor de campo ucm_vob_object de la entidad. Este valor es una
' serie

' que incluye el ID de objeto del proyecto de UCM y el UUID de PVOB. 

ucm_vob_object = entity.GetFieldValue("ucm_vob_object").GetValue()

Dim pvob_uuid

' Eliminar el ID de objeto del proyecto de la serie y devolver el UUID

' de PVOB.

pvob_uuid = Right(ucm_vob_object, 40)

' Inicializar el objeto COM ClearCase.Application

' Crear un objeto de aplicación de ClearCase. Debe existir un objeto de aplicación de

' ClearCase para poder utilizar métodos de CAL. En los pasos siguientes del script

' se utilizan métodos CAL.

On Error Resume Next

Set CC = CreateObject("ClearCase.Application")

If Err.Number <> 0 Then

MsgBox "ClearCase.Application Error 1:" & Err.Description

End if

On Error Resume Next

' Utilizando el UUID de PVOB, obtener el objeto PVOB de ClearCase de la actividad.

Set PVOB = CC.ProjectVOB(pvob_uuid)

If Err.Number <> 0 Then

MsgBox "ClearCase.Application Error 2:" & Err.Description

End if

On Error Resume Next

' Crear el objeto de actividad de ClearCase (CCActivity) basado en el PVOB y

' el ID de entidad (equivale al nombre de actividad de UCM).

Set Act = PVOB.Activity(entity_id)

If Err.Number <> 0 Then

MsgBox "ClearCase.Application Error 3:" & Err.Description

End if

On Error Resume Next

' Devolver la corriente de datos en la que se ha creado la actividad.

set stream = Act.Stream

If Err.Number <> 0 Then

MsgBox "ClearCase.Application Error 4:" & Err.Description

End if

On Error Resume Next

' Devolver el proyecto que contiene la corriente de datos.

set project = stream.Project

If Err.Number <> 0 Then

MsgBox "ClearCase.Application Error 5:" & Err.Description

End if

On Error Resume Next

' Devolver el modelo del proyecto.

proj_model = project.Model

If Err.Number <> 0 Then

MsgBox "ClearCase.Application Error 6:" & Err.Description

End if

' Probar el valor del modelo del proyecto.

' model = SIMPLE: proyecto de corriente de datos única

' Si es SIMPLE, lo que significa una sola corriente de datos, el script devuelve una 

' serie vacía y el desarrollador puede completar la operación de 

' Finalizar actividad.

' model = DEFAULT: proyecto jerárquico

' Si es DEFAULT, lo que significa varias corrientes de datos, el script devuelve un 

' mensaje de error y cancela la operación de Finalizar actividad.

If proj_model = "SIMPLE" Then

' modelo de corriente de datos única, permite cambiar act

UCM_CQActBeforeChact = ""

Else

' proyecto jerárquico, anomalía

UCM_CQActBeforeChact = "Must be in a single stream project."

End if   

End Function

REM Fin de Global Script UCM_CQActBeforeChact 


Comentarios