поле, не относящееся к базе данных, в форме открытого запроса
-
03-07-2019 - |
Вопрос
Есть ли способ использовать поля формы, которые не соответствуют полю базы данных, для временной обработки?
То есть.Я хочу добавить:
- временные поля элемент1, элемент2
- поле базы данных сумма
- кнопка с крючком для записи, которая устанавливает сумма = элемент1 + элемент2
Решение
Насколько я знаю, это просто невозможно с помощью ClearQuest.Я пытался сделать что-то подобное, и наш консультант IBM сказал мне, что единственный способ - это создать поле базы данных для всех переменных.
Другие советы
На самом деле вы не можете прикреплять данные к полям формы - это представления базовых данных, а не то, с чем скрипты взаимодействуют напрямую.
Добавление временных данных к самой базовой записи (сущности) также кажется маловероятным.Возможно, можно злоупотреблять perl API и динамически присоединять данные к объектам entity, но я лично не стал бы это пробовать, тогда вы можете потерять свои данные по прихоти CQ ;-)
Однако это не означает, что невозможно иметь временные данные.Мне кажется, лучшим способом является использование объекта session, который явно предназначен для этой цели.
Из файла справки:
IBM Rational ClearQuest поддерживает использование переменных для всей сессии для хранения информации.После создания общесессионных переменных вы можете получить к ним доступ через текущий объект Session с помощью функций или подпрограмм, включая перехваты, которые имеют доступ к объекту Session.Когда текущий сеанс завершается, все переменные , связанные с этим объектом сеанса , удаляются.Сеанс завершается, когда пользователь выходит из системы или последняя ссылка на объект сеанса перестает существовать.
Есть некоторая полезная документация по этому вопросу в file:///C:/Program%20Files/Rational/ClearQuest/doc/help/cq_api/c_session_vars.htm (Разумеется, предполагается установка по умолчанию на компьютере с Windows.)
Переводя приведенный там пример кода в то, что вам кажется нужным, сначала вы сохраняете данные, которые вы рассчитали внутри объекта сеанса:
$session->SetNameValue("item1", $value1);
$session->SetNameValue("item2", $value2);
Затем в вашем вычислительном хоке вы извлекаете сохраненные значения и устанавливаете значение этого поля итогов следующим образом:
my $item1 = GetNameValue("item1");
my $item2 = GetNameValue("item2");
my $sum = $item1 + $item2;
$entity->SetFieldValue("some_totals_record", $sum);
Регулируйте, конечно, по вкусу ;-)
Разработчики схем ClearQuest часто включают "временные" поля в свои типы записей.Они делают это, чтобы выполнять операции с перехватами для генерации другого значения.
Например, для полей Notes существует "временное" поле Notes_entry, в которое пользователь вводит самую последнюю заметку, и когда запись сохраняется, значение добавляется в поле Notes_Log.При следующем редактировании записи поле Notes_entry очищается, чтобы пользователь мог ввести новое Notes_entry.