ClearQuestフォームの非データベースフィールド
-
03-07-2019 - |
質問
一時的な処理にデータベースフィールドに対応しないフォームフィールドを使用する方法はありますか?
つまり追加したい:
- 一時フィールド item1 、 item2
- データベースフィールド sum
- 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を入力できます。