Поле без базы данных в форме ClearQuest
Есть ли способ использовать поля формы, которые не соответствуют полю базы данных для временной обработки?
Т.е. я хочу добавить:
- временные поля item1, item2
- сумма поля базы данных
- кнопка с перехватом записи, которая устанавливает сумму = item1 + item2
3 ответа
Насколько я знаю, это просто невозможно с ClearQuest. Я пытался сделать нечто подобное, и наш консультант IBM сказал, что единственный способ - создать поле БД для всех переменных.
Вы не можете прикрепить данные к полям формы - это представления базовых данных, а не то, с чем непосредственно взаимодействуют сценарии.
Добавление временных данных в основную запись (сущность) само по себе также маловероятно. Возможно, возможно злоупотребить API-интерфейсом perl и динамически присоединять данные к объектам сущностей, но я лично не стал бы это пробовать, тогда вы можете потерять свои данные по прихоти CQ;-)
Это, однако, не означает, что невозможно иметь временные данные. Мне кажется, что лучше всего использовать объект сеанса, который явно предназначен для этой цели.
Из справочного файла:
IBM Rational ClearQuest поддерживает использование переменных сеанса для хранения информации. После создания переменных сеанса вы можете обращаться к ним через текущий объект Session с помощью функций или подпрограмм, включая ловушки, которые имеют доступ к объекту Session. Когда текущий сеанс заканчивается, все переменные, связанные с этим объектом Session, удаляются. Сеанс заканчивается, когда пользователь выходит из системы или прекращает существовать окончательная ссылка на объект Session.
Есть несколько полезных документов по этому вопросу в http://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.