続きでちょっとDSLに
前日のdrl部分を
package org.drools.examples expander helloWorld.dsl import org.drools.examples.HelloWorld.Message; rule "Hello World" when meets someone morning then insatsu morning; end rule "GoodBye" no-loop true when meets someone night then insatsu night; end
と、あとはdsl(helloWorld.dslにして
#place your comments here - this is just a description for your own purposes. [when]meets someone morning=m : Message( status == Message.HELLO, message : message ) [when]meets someone night=m : Message( status == Message.GOODBYE, message : message ) [then]insatsu morning=m.setMessage( "Goodbye cruel world" );System.out.println( message ); [then]insatsu night=System.out.println( message );
って感じで同じ結果ができる。
これだけだと、コードの記述場所が変わっただけで、リソースも増えて、あんまJavaと変わんないし、何もいいことないように見えますが、きっとhogehoge曲線みたいな感じで一定の規模(人、システム)や複雑度(もともとはAIからRuleはきているし)を超えると効果がでてくるように感じます。変更のしやすさとかも。現在は日本語での記述ではNGでしたがうまくRuleを定義できれば、読みやすい、ユーザーフレンドりーなものができるのではと思っている。
※でも僕の想像してたDSLとは、ちょっと違った感がある。