ClearQuest 表单上的非数据库字段
-
03-07-2019 - |
题
有没有办法使用与数据库字段不对应的表单字段进行临时处理?
IE。我想补充一下:
- 临时字段 项目1, 项目2
- 数据库字段 和
- 带有设置记录钩的按钮 和 = 项目1 + 项目2
解决方案
据我所知,ClearQuest 根本不可能做到这一点。我尝试过做类似的事情,我们的 IBM 顾问告诉我,唯一的方法是为所有变量创建一个数据库字段。
其他提示
您实际上无法将数据附加到表单字段 - 这些是底层数据的表示,而不是脚本直接交互的内容。
将临时数据添加到基础记录(实体)本身听起来也不太可能。也许可以滥用 Perl API 并将数据动态附加到实体对象,但我个人不会尝试,你很可能会因为 CQ 的突发奇想而丢失数据;-)
但这并不意味着不可能拥有临时数据。在我看来,最好的方法是使用会话对象,它明确用于此目的。
来自帮助文件:
IBM Rational ClearQuest 支持 使用会话范围的变量 存储信息。创建后 会话范围的变量,您可以访问 他们通过本届会议 使用函数或子例程的对象, 包括钩子,可以访问 Session 对象。当当前 会话结束,所有变量 与该 Session 对象关联 被删除。会话在 用户注销或最终引用 到 Session 对象将不复存在。
有一些关于这个主题的有用文档 文件:///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_entry 字段,用户可以在其中键入最近的注释,保存记录时,该值将添加到 Notes_Log 字段。下次编辑记录时,Notes_entry 字段将被清除,以便用户可以键入新的 Notes_entry。