Lavorare con le Liste

 

La gestione delle Liste merita una discussione ampia e il più completa possibile. In questo perimetro trattiamo:

 

  • Tipi di Liste
  • Definizione di una Lista
  • Item e SubItem di una Lista
  • Come sono registrate in Quality Center (tab ALL_LISTS)
  • Associazione lista ad un campo - Project Entities
  • Associazione lista ad un campo - Script Editor
  • Aggiunta e Rimozione Item da una Lista

 

______________________________________________________________________________

 

1. Tipi di Liste

 

In Quality Center sono previsti 2 tipi di Liste:

  • UserLists
  • Liste di Dati

 

La UsersList in realtà è un tipo di dato che può essere associato ad un Campo. In questo caso Quality Center, automaticamente, definirà il campo come Lista di Utenti del Progetto.

 

Le Liste di Dati sono i normali elenchi di valori.

 

 

2. Definizione di una Lista

 

La definizione di una Lista all'interno di un progetto può essere effettuata in 2 modi:

  • tramite il link Project Lists (standard e consigliata) in Customization
  • in fase di creazione nuovo campo di tipo Lista (LookupList e non UserList)

 

La creazione della lista da Project Lists è la modalità più logica e standard per tale compito:

 

 

 

 

E' possibile però anche creare una nuova lista in fase di creazione di un nuovo campo di tipo LookupList. Non è propriamente la cosa più pulita ma è possibile comunque farlo.

 

 

3. Item e SubItem di una Lista

 

Come si può notare dalla figura sopra la lista che si sta creando si chiama PROVA_MAX e contiene gli Item Item1, Item2, Item3 che sono pari livello e sotto Item2 è stato creato un SubItem Item2_1.

 

Può essere scelto uno qualsiasi di questi valori in fase di selezione dell'elemento dalla lista.

 

 

4. Come sono registrate in Quality Center (tab ALL_LISTS)

 

Le liste sono salvate nella tabella ALL_LISTS e ogni elemento è rappresentato da un path logico (secondo la nomenclatura interna di QC -ad esempio: AAAABAAABAAC). Nella tabella è presente anche l'indicazione dell'ID del padre.

 

Per la lista della figura sopra il record contenente il nome della lista PROVA_MAX avrà un ID suo (ad esempio 6) e come Father_ID avrà 0. Invece gli oggetti della lista Item1/2/3 avranno dei loro ID (ad esempio 7,8,9) e come Father_ID avranno tutti 6. L'oggetto Item2_1 invece avrà un suo ID (ad esempio 10) e come Father_ID avrà 8 (che rappresenta l'Item2).

 

I campi principali della tabella sono:

  •  AL_ITEM_ID: id dell'oggetto nella tabella
  • AL_FATHER_ID: id del Padre nella gerarchia
  • AL_DESCRIPTION: nome dell'oggetto
  • AL_ABSOLUTE_PATH: percorso con nomenclatura QC (triplette Alfabetiche come indicato sopra)

 

 

5. Associazione Lista ad un campo - Project Entities

 

Le liste da sole non servono a molto se non associate ad una campo. E' possibile quindi associare una lista, esistente o da creare, ad un campo che sia di tipo LookupList dal link Project Entities:

 

 

 

In questo caso è necessario impostare una nuova Label per ST_USER_03, il tipo di dato deve essere una Lookup List ed è necessario scegliere una lista tra quelle esistenti nella combo selezionata oppure, tramite il tasto "New List", è possibile crearne una nuova e associarla quindi al campo.

 

 

6. Associazione Lista ad un campo - Script Editor

 

E' possibile anche associare dinamicamente una lista ad un campo tramite la scrittura di istruzioni all'interno dello Script Editor. Vediamo come.

 

Supponiamo di avere un oggetto (Requisito, Test, Defect, ecc..) che ha un campo di tipo Lookup List, che può  essere alimentato da 3 liste differenti a seconda di qualche logica interna. Ovviamente le 3 liste devono esistere e quindi essere preventivamente definite.

 

 

Sia Obj un qualsiasi oggetto e DBField un campo del tipo Lookup List definito come campo utente RQ/BG/TS_USER_01.

Supponiamo che le 3 liste abbiano questi nomi: Lista1, Lista2, Lista3

In base al valore di strVar, se = 1 allora deve essere impostata la Lista1 e così via.

 

Il codice sarà qualcosa del tipo:

 

Select Case strVar

          Case 1: Obj_Fields.Field("DBField").List = Lists("Lista1")

          Case 2: Obj_Fields.Field("DBField").List = Lists("Lista2")

          Case 3: Obj_Fields.Field("DBField").List = Lists("Lista3")

End Select

 

 

 

7. Aggiunta e Rimozione Item da una Lista

 

E' possibile rimuovere e aggiungere elementi di una lista da Project Lists in Customization oppure tramite Codice. In questo secondo caso i passi da eseguire sono i seguenti:

  • Reperire l'oggetto Lista riferito alla lista da lavorare
  • Accedere all'elemento Root (questa azione è la più importante)
  • Aggiungere/Rimuovere Elementi indicando il nome dell'oggetto.

 

1. Reperire l'oggetto Lista:

set MyList = TDConnection.Customization.Lists.List("NomeLista")

 

2. Accedere all'elemento Root che mi permette di lavorare la lista

set theRoot = MyList.RootNode

 

3. Aggiunta Elementi

theRoot.AddChild "ItemX"  (per la rimozione usare il metodo .RemoveChild)

theRoot.AddChild "ItemY"

 

TDConnection.Customization.Commit

 

set theRoot = Nothing

set MyList = Nothing

 

___________________________________________________________________________