プログラムの呼び出し方法として、ページテンプレートでext:languageを指定する方法のほかに、ページ、タグ、プローブポイントのパターンに対してプログラムを割り当てておき、該当する箇所で呼び出す方法があります。これをプローブファンクションコールと呼びます。
パターンを記述したファイルは環境設定のコンフィグレーションファイルから参照されます。デモにおいては、web.xml→quickreflector.xml(環境設定ファイル)→functions.xml(プローブファンクションパターンファイル)と参照されるように設定しています。
パターンファイルの記述例を以下に示します。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE root SYSTEM "http://127.0.0.1/x"> <root> <addfunc use="true" pattern="**"> <function use="true" language="java" source="MetaCtl.java" point="post_pre_element" pattern="html/head"/> <function use="true" language="java" source="LinkCtl.java" point="pre_element" pattern="**/a"/> </addfunc> <addfunc use="true" pattern="top/sample1.html"> <function use="true" language="java" source="Sample1LinkCtl.java" point="pre_element" pattern="**/a"/> </addfunc> </root>
addfuncタグにより、ページリクエストのパターンに対してどのfunctionを割り当てるかを記述します。pattern には"**"と"*"のワイルドカードを使うことができます。"**"はパス区切り(/)文字を含みます。"*"はパス区切り文字を含みません。
functionタグはpatternとpointの記述により、ページのどのタグ位置でプログラムを呼ぶかをパターン化しています。ここでもpatternには"**"と"*"を使うことができます。
languageとsourceの指定はプログラムコールにおけるext:languageとext:targetの記述とほぼ同じです。式評価がされないことが違いです。
上記の例では、以下のことを処理しています。これにより、top/sample1.htmlの呼び出しの際に、上のaddfuncと下のaddfuncがすべて呼び出されることになります。
patternとpointによって特定された位置においてファンクションが複数存在する場合、設定ファイルにおいて先に書かれているほうから順に実行されます。上記の例ではAタグに対するpre_elementリクエストがこれに該当します。
useの値を"!true"や"false"とすると、そのタグは無効になります。
sourceに記述されたパスは、呼び出されたページパスに対する相対位置への参照として扱われます。どういうことかというと、a/test.htmlとb/test.htmlにおいてprobe.javaがコールされた場合、a/probe.javaとb/probe.javaが参照されるということです。これが不都合である場合には"/"で始まる絶対パスで記述しなければなりません。
function タグのpointに指定できる文字列とその呼び出し位置は以下のとおりです。
文字列 | ライブラリ | 呼び出し位置 | 備考 |
---|---|---|---|
pre_render | WebCore | ページ生成の開始直前 | meta[ "_ENTRYPATH_" ]、meta[ "_PAGEPATH_" ]、meta[ "_DOMPATH_" ] が参照可 |
post_render | WebCore | ページ生成の正常終了の直後 | |
on_exception | WebCore | ページ生成中に予想外のExceptionが生じた場合 | meta[ "_EXCEPTION_" ] が参照可 |
pre_comment | SilverGear | コメント<!-- ... -->の出力直前 | meta[ "_VALUE_" ] が参照/変更可。"_DOMPATH_"、"_PATHATTR_" は参照可 |
post_comment | SilverGear | コメント<!-- ... -->の出力直後 | |
pre_text | SilverGear | 文字列(テキストノード)の出力直前 | meta[ "_VALUE_" ] が参照/変更可。"_DOMPATH_"、"_PATHATTR_" は参照可 |
post_text | SilverGear | 文字列(テキストノード)の出力直後 | |
pre_element | SilverGear | 開始タグの属性の出力直前 | meta[ "_PATHATTR_" ] が参照/変更可 |
post_pre_element | SilverGear | 開始タグの属性の出力直後。 | 子要素を持たないタグの場合は発生しません。meta[ "_PATHATTR_" ] は参照可 |
pre_post_element | SilverGear | 終了タグの出力直前。 | 子要素を持たないタグの場合は発生しません。meta[ "_PATHATTR_" ] は参照可 |
post_element | SilverGear | 終了タグの出力直後 |