Twitter4JとDroolsでなんかリアルタイムな感じのものをやります。といってもこのデモは私が作ったわけではなく、Drools開発者のEdson Tirelliが作ったものです。
Twitter4JはyusukeyさんによるTwitterのオープンソースJavaライブラリです ( http://twitter4j.org/ja/index.html )。 Twitter4JおよびTwitterのAPIについてはこちらを ( http://www.amazon.co.jp/dp/477414732X )。
Droolsはオープンソースのルールエンジンプロジェクトです ( http://www.jboss.org/drools )。今回のデモではTwitter4Jを使ってDroolsに対してTweetを流し込み、各ルールに基づいて処理されるところを見ていきます。
droolsjbpm-contributed-experimentsというリポジトリにサンプルなどがあります。
https://github.com/droolsjbpm/droolsjbpm-contributed-experiments
こんな感じでビルド。
git clone git://github.com/droolsjbpm/droolsjbpm-contributed-experiments.git cd droolsjbpm-contributed-experiments/twittercbr mvn clean install
実行はIDEでやります。
ここでは Eclipse + M2Eclipse plugin でMavenプロジェクトをimport。あと、JBossToolsも入れておくとDroolsのエディタがついているのでおすすめ。
まずTwitter APIの認証が必要です。
dev.twitter.com に登録し、アクセストークンを入手してください。自分のアカウントのアクセストークンが使えればよいです。以下の情報が参考になると思います。
http://twitter4j.org/ja/configuration.html
http://d.hatena.ne.jp/pon0927/20100717/1279374217
src/main/resources/twitter4j.properties を編集して以下を埋めます。
oauth.consumerKey= oauth.consumerSecret= oauth.accessToken= oauth.accessTokenSecret=
さあ実行します。TwitterCBRクラスのmainメソッドで走らせます。引数に twitterRules1.drl のように適用するルール定義ファイルを指定しますが、
final KnowledgeBase kbase = createKnowledgeBase( "twitterRules1.drl" );
のようにベタ書きにしてもいいです。
実行すると、どーっと出てきますね。twitterRules1.drlはTwitterのストリームAPIから垂れ流しです。
[6:18:05 PM JST] @meadow_black - ох как я не хочу выходить на улицу))) [6:18:05 PM JST] @Latonyaalf - Sferra Brothers Bennett 70 x 108 Rect Tablecloth - Ecru: Pure Italian linen is exquisitely finished with row upo... http://t.co/kHFRtlTu [6:18:05 PM JST] @victor_pelli - @justinbieber answer me please! [6:18:05 PM JST] @HaroldChittum - Nokia E63 DirectSync - Complete Essentials Kit (High Current Output) (European outlet plug, ClearTouch Crystal):... http://t.co/FK1qiLe6 [6:18:05 PM JST] @climahonduras - #Amapala, Min:22C Max:31C Condición:Partly Cloudy Más tarde:Despejado #Honduras [6:18:05 PM JST] @tm2t - 火の精気のせい水の精(笑) RT @ymstmskn: まだ六時前ですけどw RT @tm2t: とりあえず http://t.co/qb5FxMdS
その2ではデモの実装を見ていきます。