Поле без базы данных в форме 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.

Другие вопросы по тегам