2017-03-31 5 views
0

ユーザが高度なフィルタを書くことを可能にするスクリプトが見つかりました。このスクリプトは現在のフィルタを各ビューからロードできますが、Filteringダイアログボックスにあるすべてのフィルタをロードすることはできません。文字列としてだけであっても(私はこれらの文字列を解析してFilterクラスオブジェクトに戻すツールを持っているので)、すべての現在の高度なフィルタを抽出できるようにしたいと思います。誰かがその情報を取得するためのDXL関数を知っている場合、またはフィルタ文字列が格納されている場所を知っていれば分かります。 注:Rationalフォーラムでこれを追うことはありません。すべての高度なフィルタを保存するDXLスクリプト

答えて

0

これは私のハック方法です。基本的に、いくつかのセットアップラインと運用ラインがあり、途中にはフィルタ定義とコンビナトリアルがたくさんあります。これは、定義されたフィルタを現在のビューの一部として保存します。

// copypaste next block into DXL edit window 
string viewName = "My_View" 
filtering off 
// individual items first 
Filter head = attribute "_ObjectType" == "Heading" 
Filter req = attribute "_ObjectType" == "requirement" 
Filter inrev = attribute "_ReqStatus" == "In Review" 
Filter ApprListBob = includes(attribute "_ApprovalList","BobJones") 
Filter ApprListMary = includes(attribute "_ApprovalList","MaryContrary") 
// now combine as desired. examples shown 
// Filter ftwo = ((head && !freq) || inrev) 

Filter foofilt = (head) || (req && inrev) //) && ApprListBob 
set foofilt 
filtering on 
// now write 
addFilter( foofilt) 
set(foofilt) 
refresh current  // module... 
save view viewName //last arg is viewname 
// end of copypaste block 
DXL構文に新しい人のために

& &ためのAND || OR ! for NOT

属性が1つの値しか取れない場合は、attribute "atname" == "value" フォームを使用します。複数の値(チェックリストなど)を使用できる場合は、includes(attribute "atname", "value")フォームを使用してください。

+0

これはあなた自身の質問に対する答えであることに私は同意しません。 IMHOそれはビューの束であなたのモジュールを汚染するUIなしで非常に不便な回避策です。 @KaiK。 –

+0

まず第一に、それは**汚染されていない**ビューの束 - それは**既存の**ビュー名を使用します。次に、それは回避策ですが、組み込みのGUIを使用して複雑なフィルタを再構築する必要はありません。 DXLベースのGUIを使用してフィルタ全体をテキストとして書くことができれば、私はあなたを責めません---しかし、それが可能かどうかはわかりません。 –

+0

私のお話はちょっとだったとにかく私はあなたの質問に「どのように組み込みのフィルタダイアログからフィルタ定義を取得するか」という答えには分かりません。もちろん、フィルタを保存することは可能です私はあなたのアプローチが(再)フィルタダイアログを(再)コーディングよりもずっと簡単で速いことに同意するが、それは可能であると確信している。 –

0

あなたの問題を解決する既存のAPIがあるとは思われません。 1つのアプローチは、フィルタダイアログをコード化し、余分な機能を追加することです。例えば。高度なフィルタリストをディスクに保存し、必要な場所から再利用することができます。

+0

それについては、私は恐れる。私は同様のアプローチを取った:各原子フィルタのDXLベースの定義を書き、その後、コンビナトリアルを書いて、全体の混乱を "Edit DXL"ウィンドウに貼り付けて実行する。 kludgeの私の答えを見てください。 –

関連する問題