検索ルールの新規作成

<< 目次を表示 >>

ページ位置:  Enterprise Architectの操作 > モデル内の検索 >

検索ルールの新規作成

独自の検索を定義したい場合は、定義エディタ・SQLエディタ・アドイン検索のいずれかを使用します。これらの選択は検索ルールの新規作成ダイアログから行うことができます。定義した検索ルールは、プロジェクトではなく、使用中のマシンに保存されます。

 

 

利用手順:

リボン

  • ホーム > 探索 > 検索 > モデル内の検索 :
  • モデル > 要素 > 操作 > モデル内の検索 :

キーボード

  • Crtl+F  :
  • Ctrl+Alt+A  :

 

 

項目

説明

名前

名前を入力します。

定義エディタ

独自の検索条件を、Enterprise Architectが提供する条件を組み合わせて作成できます。

SQLエディタ

SQL文を入力することで、自由な検索条件を指定できます。なお、SQL文は、エディタボタンを押すと表示される検索ルール定義領域にある「SQL」のタブに直接入力して実行できます。

下記「SQLエディタ」をご覧ください。

アドイン検索

アドイン名とメソッド名(例:MyAddin.RunThisMethod)を指定します。

検索を実行するとこのアドインが呼ばれ、アドイン内で独自の結果を作成・返却できます。

詳細は「アドインによる検索」のページをご覧下さい。

アドインの名前とメソッド

アドイン名とメソッド名(例:MyAddin.RunThisMethod)を指定します。

検索を実行するとこのアドインが呼ばれ、アドイン内で独自の結果を作成・返却できます。

詳細は「アドインによる検索」のページをご覧下さい。

OK

このボタンを押すと、設定内容を保存してダイアログを閉じます。

 

選択した内容によって、以下のような動作になります。

  • アドイン検索の場合には、追加の設定はありません。
  • 定義エディタの場合には、検索ルールエディタが開き、実際の検索条件を指定します。
  • SQLエディタの場合には、検索ルールエディタが開きますが、テキストエディタの状態になっています。検索内容を示すSQLを入力します。

 

なお、SQLタブでは、入力したSQL文を実行し、その結果を確認できます。特に、SQLエディタを選択した場合に、期待した結果が得られるかどうかの確認に有用です。

SQLタブの内容は、他の検索ルールやEnterprise Architect内の操作とは連動しません。

キャンセル

このボタンを押すと、内容を保存せずにダイアログを閉じます。

 

 

SQLエディタ

 

検索ルールエディタタブが自由に編集できるエディタに変わり、検索の条件を自由に指定できます。SQLのSELECT文が利用できます。このエディタはEnterprise Architectの共通コードエディタであり、オートコンプリート機能が利用できます。オートコンプリートリストを表示するには、[Ctrl+スペース]キーを押します。

 

例えば、単純に指定した名前の要素を検索するためには、以下のようなSQLになります。

 

SELECT * FROM t_object WHERE NAME='<検索単語>'

 

 

なお、「SQL」タブを利用することで、検索ルールを定義することなくSQL文を実行し、結果を検索結果一覧に表示できます。検索ルールとして定義する必要のないSQL実行に便利です。

 

Enterprise Architectでは、WHERE節の中で#xxx#という形式の独自のタグを利用できます。このタグは、実行する人や環境が異なる状況に対応するために利用します。

 

利用可能なタグは次の通りです。大文字小文字が一致する必要があります。

タグ

説明

#Author#

オプションダイアログの「作者」の情報を示します。例えば、現在作業をしている人の情報をWHERE節に含めることができます。'で囲うなど、文字列としての扱いになるようにしてください。

#Branch#

パッケージと、そのすべての子パッケージのIDを示します。 WHERE t_object.Package_ID in (#Branch#) のように利用します。

 

例:

object.Package_ID in (#Branch#)

 

以下の3つの使い方が可能です。

  • in #Branch# - 選択されているパッケージが対象です。
  • in #Branch=GUID# あるいは #Branch=ID#  - 指定されたパッケージが対象です。
  • in #Branch=ID, ID, ID# - PackageIDを複数指定して、それぞれのパッケージおよび子パッケージを対象とできます。

#Concat value1,value2, ...#

指定した文字列を結合します。DBMSの種類に応じて適切なキーワードに置換され実行されます。

#CurrentElementGUID#

選択されている要素のGUIDです。

#CurrentElementID#

選択されている要素のID(ElementID)です。

#Datepart <field>,column#

時間に関する情報のうち、特定の項目のみを取得します。fieldに設定できるのは以下の文字列です。

  • year
  • month
  • day
  • dayofyear
  • weekday
  • week
  • dayname

#DB=<DBName>#

DBMSの種類ごとに実行する内容を変えたい場合に利用します。 <DBNAME> には以下のいずれか1つを指定します。異なる範囲を、このタグで囲みます。

  • MYSQL
  • JET
  • ACCESS2007
  • ORACLE
  • SQLSVR
  • ASA
  • POSTGRES
  • FIREBIRD

     

例:#DB=ORACLE# t_object.ModifiedDate >= (SYSDATE - INTERVAL '<検索単語>' DAY) #DB=ORACLE#

 

この記述は、#DB=<DBNAME>#のDBNAMEが現在利用しているDBMSに一致する場合のみ、同じ2つの文字列で囲まれる範囲のみを利用します。otherは、他のどの定義にも一致しない場合に適用されます。DBMSごとに特別な処理が必要な場合に利用します。以下はその一例です。

 

select *

from t_object

where

#DB=Other#t_object.modifieddate >= now() - 'Search Term'#DB=Other#

#DB=SQLSVR#t_object.modifieddate >= getdate() - 'Search Term'#DB=SQLSVR#

#DB=ORACLE#t_object.ModifiedDate >= (SYSDATE - INTERVAL 'Search Term' DAY) #DB=ORACLE#

#DB=POSTGRES#t_object.modifieddate >= CURRENT_DATE - 'Search Term'#DB=POSTGRES#

#Left <field>, <count>#

fieldに指定された文字列の左からcount文字分を返します。

#Now#

時刻を指定する場合に利用します。また、あわせてその時間からのプラスマイナスの時間(単位は日あるいは時)を指定できます。日付の形式は、接続しているDBMSリポジトリの種類に合わせて自動的に調整されます。

 

t_object.ModifiedDate >=#Now <検索単語>#

 

例:

t_object.ModifiedDate >= #Now -4d#   dは日

t_object.ModifiedDate >= #Now -5h#   hは時間

t_object.ModifiedDate >= #Now +3#

t_object.ModifiedDate >= #Now#

#Package#

モデルブラウザで選択されているパッケージのIDを示します。

t_object.Package_ID = #Package#

#Right <field>, <count>#

fieldに指定された文字列の右からcount文字分を返します。

<Search Term>

実際の検索時に検索単語として指定された文字列に置換されます。文字列のため、このタグの前後に引用符をつけ、文字列として扱うようにしなければなりません。何らかの比較がある場合、文字列としての比較が必要です。

#Substring <field>, <start>#

fieldに指定された文字列のstart文字目以降降を返します。最初の文字の位置を示す数値は1です。

#Substring <field>, <start>, <count>#

fieldに指定された文字列のstart文字目からcount文字分を返します。最初の文字の位置を示す数値は1です。

#UserName#

バージョン管理のユーザー名を示します。'で囲うなど、文字列としての扱いになるようにしてください。

例: t_package.PackageFlags LIKE '#WC#VCCFG=#WC#CheckedOutTo=#UserName##WC#'

(これはEnterprise Architectの既定のルールの1つ「自分がチェックアウトしたパッケージ」の内容です。)

#WC#

ワイルドカードを示します。データベースに依存しない形式でワイルドカードを利用したい場合に使用します。 'で囲うなど、文字列としての扱いになるようにしてください。

t_object.Name LIKE '#WC#Test#WC#'

 

注意:

SQL検索を定義している最中には、SQLタブには切り替えないようにして下さい。SQLタブは、一時的な検索を実行するためのものです。このタブでは、上記にて説明しているマクロは利用できません。

 

 

GUIDと種類

SQLでモデルの内容を検索・抽出する場合(例: ドキュメント生成機能や検索機能)では、そのSQLの結果には常に対象の項目のGUIDと種類を戻す必要があります。これにより、例えば検索結果からモデルブラウザ内の対象の項目の位置を表示するなどの機能が利用できます。具体的には、SELECT文には、以下の内容を含む必要があります。(大文字小文字も一致させる必要があります。)

 

 

CLASSGUIDとCLASSTYPEを含めることで、プロパティダイアログを開くことにできるようになったり、要素のアイコンが適切に表示されたりします。属性・操作など、要素以外の場合でも同様です。いかに、いくつかの例を示します。

 

 

対象が接続あるいはダイアグラムの場合には種類がありますので、以下の例のように対象となる種類を把握できるようにCLASSTABLEの情報を追加しなければなりません。

 

 

検索結果からドラッグ&ドロップで要素をダイアグラム内に配置できるようにするためには、以下のいずれかの情報もSELECT文に含まなければなりません。

 

 

設定が完了し保存すると、検索ルールとして呼び出し・利用することができるようになります。

 

 

SQLタブのツールバー

SQLタブでは、検索ルールとして定義せずに、一時的な内容を定義して実行できます。このツールバーからはいくつかの機能を呼び出せます。

アイコン

操作

このボタンを押すと、入力したSQLを実行します。結果は、検索結果一覧に表示されます。

このボタンを押すと、入力内容を新しい検索ルールとして保存できます。検索ルール名を入力して下さい。

検索ルール名を入力すると、検索ルールエディタタブに内容が移動され、編集を継続できます。

このボタンを押すと、入力内容を削除します。

 

注意:

検索ルールをSQLで定義する場合には、ツールバーのボタンは2つしか利用できません。そのうちの1つのボタン は、検索ルールとして定義した内容を削除するために利用します。

 

 

参照: