続きでちょっと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とは、ちょっと違った感がある。