有没有办法使用与数据库字段不对应的表单字段进行临时处理?
即我想补充:
- 临时字段item1 , item2
- 数据库字段总和
- 带有设置sum = item1 + item2的记录挂钩的按钮
有没有办法使用与数据库字段不对应的表单字段进行临时处理?
即我想补充:
据我所知,ClearQuest 根本不可能。我尝试做类似的事情,我们的 IBM 顾问告诉我,唯一的方法是为所有变量创建一个 DB 字段。
您不能真正将数据附加到表单字段 - 这些是基础数据的表示,而不是脚本直接与之交互的东西。
将临时数据添加到基础记录(实体)本身听起来也不太可能。也许可以滥用 perl API 并将数据动态附加到实体对象,但我个人不会尝试,那么你很可能会在 CQ 的一时兴起时丢失数据 ;-)
然而,这并不意味着不可能有临时数据。在我看来,最好的方法是使用明确用于此目的的会话对象。
从帮助文件:
IBM Rational ClearQuest 支持使用会话范围的变量来存储信息。创建会话范围的变量后,您可以使用可以访问 Session 对象的函数或子例程(包括挂钩)通过当前 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。