campo non di database nel modulo ClearQuest
-
03-07-2019 - |
Domanda
Esiste un modo per utilizzare i campi modulo che non corrispondono al campo del database per le elaborazioni temporanee?
vale a dire. Voglio aggiungere:
- campi temporanei item1 , item2
- campo database sum Pulsante
- con hook record che imposta sum = item1 + item2
Soluzione
Per quanto ne so, semplicemente non è possibile con ClearQuest. Ho provato a fare qualcosa di simile e mi è stato detto dal nostro consulente IBM che l'unico modo è creare un campo DB per tutte le variabili.
Altri suggerimenti
In realtà non è possibile allegare dati ai campi del modulo: sono rappresentazioni dei dati sottostanti, non qualcosa con cui gli script interagiscono direttamente.
Anche l'aggiunta di dati temporanei al record (entità) sottostante sembra improbabile. Forse è possibile abusare dell'API perl e allegare dinamicamente i dati agli oggetti entità, ma personalmente non lo proverei, potresti perdere i tuoi dati per capriccio di CQ allora ;-)
Ciò non significa tuttavia che sia impossibile disporre di dati temporanei. Il modo migliore mi sembra di utilizzare l'oggetto sessione, che è esplicitamente destinato a tale scopo.
Dal file della guida:
IBM Rational ClearQuest supporta il uso di variabili a livello di sessione per memorizzazione delle informazioni. Dopo aver creato variabili di sessione, è possibile accedere attraverso l'attuale sessione oggetto che utilizza funzioni o subroutine, compresi ganci, che hanno accesso a l'oggetto Session. Quando la corrente la sessione termina, tutte le variabili associato a quell'oggetto Session sono cancellati. La sessione termina quando il l'utente si disconnette o il riferimento finale all'oggetto Session cessa di esistere.
C'è della documentazione utile su questo argomento in file: /// C: /Program%20Files/Rational/ClearQuest/doc/help/cq_api/c_session_vars.htm (Presumendo un'installazione predefinita su una macchina Windows, ovviamente.)
Traducendo l'esempio di codice lì dentro in quello che sembri desiderare, prima memorizzi i dati che hai calcolato all'interno dell'oggetto sessione:
$session->SetNameValue("item1", $value1);
$session->SetNameValue("item2", $value2);
Quindi, nel tuo hook di calcolo, recuperi i valori memorizzati e imposta il valore del campo dei totali in questo modo:
my $item1 = GetNameValue("item1");
my $item2 = GetNameValue("item2");
my $sum = $item1 + $item2;
$entity->SetFieldValue("some_totals_record", $sum);
Adeguati al gusto ovviamente ;-)
I progettisti di schemi ClearQuest spesso includono campi 'temporanei' nei loro tipi di record. Lo fanno in modo da eseguire operazioni sugli hook per generare un altro valore.
Ad esempio, per i campi Notes, esiste un campo Notes_entry 'temporaneo' in cui l'utente digita la nota più recente e quando il record viene salvato, il valore viene aggiunto al campo Notes_Log. Alla successiva modifica del record, il campo Notes_entry viene cancellato in modo che l'utente possa digitare un nuovo Notes_entry.