自動生成されるルール

出荷時デフォルト mapping_rules 設定には、INCLUDE_AUTO_RULES ディレクティブがデフォルトで含まれています。このディレクティブは、アクティブなタイプ定義から自動的に生成されるマッピング・ルールを、現在実行されているクライアントのタイプに応じて含めます。

例えば、Windows クライアントで .doc および .dot サフィックスに一致する 2 つのパターンを含んだ msword タイプを定義することができます。Windows クライアントで自動生成されるルールでは、INCLUDE_AUTO_RULES ディレクティブが指定されている場所に、以下の 2 つのルールが含められます。

WHEN %name =~ '.*¥¥.[Dd][Oo][Cc]$' SET type TO 'msword'

WHEN %name =~ '.*¥¥.[Dd][Oo][Tt]$' SET type TO 'msword'

自動生成されるルールを使用することの利点は、タイプ・ベースのルールが、対応するタイプ定義で定義される点にあります。また、タイプ定義をデータベースからエクスポートして別のデータベースにインポートした場合には、対応する移行ルールも同様にインポートされます。これは、DCM を使用していて、データベース間でタイプ定義を複製する場合に特に便利です。

移行ルールの順序は、マッピング・ルールの設定またはファイルによって完全に制御されます。INCLUDE_AUTO_RULES ディレクティブを削除して、移行ルール・ファイルですべてのルールを明示的に定義することができます。また、ファイル内でこのディレクティブの位置を移動して、自動生成されたルールが含められる場所を変更することもできます。

自動生成されるルールは、以下のプロセスを使用して生成されます。
  1. 事前に定義された ascii タイプおよび binary タイプのルールが最初に生成されます。
  2. ascii または binary をスーパータイプとして使用する各タイプが処理されて、タイプの継承ツリーが上から下、左から右へとトラバースされます。親スーパータイプの後に、その子であるより具体的なタイプでルールが生成されます。例えば、タイプ定義 javaccjava のサブタイプであり、javaascii のサブタイプである場合、これらの 3 つのタイプのマッピング・ルールは、asciijava、javacc の順に生成されます。
  3. タイプ一致リストのファイルに含まれているコメント以外の各エントリーによって、以下の形式のルールが生成されます。

    WHEN %name =~ regular_expression SET TYPE TO 'type'

  4. IgnoreTRUE に設定されているタイプごとに、以下の形式のルールが生成されます。

    WHEN %name =~ regular_expression IGNORE

INCLUDE_AUTO_RULES ディレクティブによって含められた自動生成ルールを表示するには、ccm show -mar コマンドを使用します。


フィードバック