makotan _at_ gmail dot com

Tool

XPDLのToolタブによくOgnlInvokerって出てくるやつ・・・実は自由に拡張できるよ〜
XPDLのPackageのApplicationsにOgnlInvokerを追加して
ActivityにToolsがあるとIdでOgnlInvokerを選んで、ExtendedAttributesを追加してNameにognl、valueに式を入れるとOGNLが叩けます。
ってなってる部分は全く固定してなくてognlを他の言語に切り替えたり、そもそもOgnlInvokerじゃないものを設定できたりする。
んと・・・たとえば・・・メールとか?あっ既にあるし・・・Ognlで書けないもの・・・何だろなぁ〜


まずは、ognl以外を使いたいとき。
OgnlScript.diconを開いてそこをみて真似る。
ちなみに、なでじゃこの依存関係を切りたいときはOgnlScript.diconから削ると依存関係切っても大丈夫(w


次はOgnlInvoker以外を追加したいとき。というかOgnlInvokerの仕組み
OgnlInvokerの本体は実はfreemarkerで出力されるソースコードそのもの。それをコンパイルして必要に応じてUtilなどを呼び出すことで実現。
ということで、BuriScriptComponentImplをみれば判るとおり、コンポーネントとしてはScriptを実行するためのコードを文字列として書き出してるだけです。あとはscriptFactoryっていうぶりが内部的に使ってるコンポーネントを叩いて実行してるだけ。
BuritoolTypeっていう所になんて名前で設定したのか、extendedAttributeの中身とか全部来てるのであとは普通に必要なソースコードを書き出せばOK


それとあんまり言わないafter機能って言うのがぶりにはあって、これは好きなところで書いたtoolsの設定をそのプロセスの処理が全部終わって状態の保存が終わった後に遅延させて実行する機能。
状態の保存に依存した処理とかをしたいときに使えば良いかなと思ったんだけど、そんなコードはぶりを呼び出した次の行にでも書いた方が楽なんだよね〜(^^;