2.使い方

2.1 ファイルの構成

tagフォルダの内容を以下に示します.

ファイル 内容
agent/ エージェントスクリプトを格納するフォルダ
src/ ソースコード
tagserver.jar TAGサーバの実行プログラム
tag.ini 設定ファイル(初回起動時に生成)
_tagserver.mv.db
_tagserver.trace.db
メッセージ履歴を保存する
データベースファイル(初回起動時に生成)

2.2 TAGサーバの起動と終了

エージェントを動作させるPCではTAGサーバを起動する必要があります.

起動後にhttp://localhost:8080/tag/をWebブラウザで開くと,TAGサーバのWeb UIが開きます.localhost以外からの接続はできません.

Web UIの shutdown をクリックすると終了します.タスクトレイのTAGアイコンを右クリックしてExitを選択する方法もあります.

2.3 エージェント

TAGサーバによる起動

エージェントのプログラムはagent/フォルダ内に格納されています.

コマンドラインからの起動

エージェントはTAGサーバからではなく,コマンドラインから起動することもできます.Groovyがインストールされていて,groovyコマンドを使える必要があります.
※この機能は動作確認が不十分です

(1)エージェントを1つだけ起動する

エージェント名.groovy を次の方法で起動します.
1つのJVM上で1つのエージェントが動作します.

$ groovy エージェント名

例
$ groovy Simple        → Simple.groovyが起動する
$ groovy ODB_aomori    → ODB_aomori.groovyが起動する
$ Simple               → Simple.groovyが起動する
                          (拡張子「.groovy」がgroovy.batに関連付けられている場合)

デフォルトエンコーディング以外で記述されているエージェントを起動する場合は-cでエンコーディングを指定します.

$ groovy -c UTF8 Kanji → UTF8で記述されたKanji.groovyが起動する

(2)複数のエージェントを同時に起動する

1つのJVM上で複数のエージェントを動作させるためには,
エージェント名1.groovy,エージェント名2.groovy, ...,エージェント名n.groovy, および起動用スクリプトファイルを作成し,次の方法で起動します.

$ groovy 起動用スクリプトファイル

起動用スクリプトファイルには次を記述しておきます.指定された全てのエージェントが1つのJVM上で動作します.引数には,エージェント名(クラス名)を1つ以上指定します.

TAG.start(エージェント名1, エージェント名2, ...,エージェント名n)

例
TAG.start(Searcher, ODB_aomori, ODB_iwate, ODB_akita)

クラス名の代わりにインスタンスを指定することもできます.名前を少しずつ変えたエージェントを多数起動するに便利です.

TAG.start(Searcher, new Simple("s1"), new Simple("s2"))

ただし,Simple.groovy内に次のコンストラクタを追加する必要がある:
Simple(String name) { super(name) }

TAG.start(..)のみを記述したスクリプトを用意する代わりに,複数ある「エージェント名.groovy」ファイルの中の1つにTAG.start(..)メソッドを書いておいてもOKです.例えば,

  1. ODB_aomori.groovy, ODB_iwate.groovy, ODB_akita.groovyを作成します.
  2. Searcher.groovyの代わりにSearcher0.groovyを作成します.このファイル内には,「エージェントSearcherのクラス定義」と「TAG.start(...)」の2つを書いておきます.つまり,
    • class Searcher extends TAG { void loop(Map msg) { ... } } というクラス定義の後に,
    • TAG.start(Searcher, ODB_aomori, ODB_iwate, ODB_akita)という文を書きます.
  3. 次のように起動します.
    $ groovy Searcher0
    

ファイル名はSearcher.groovyではなくSearcher0.groovyなど異なるものにします.同じものにするとエラーが出ます.TAG.start()を記述するのはファイル末尾でいいです.

文字コード

Groovyファイルをシステムのデフォルトエンコーディングで保存していない場合,実行時にエラーが出ます. コマンドラインに次のように入力することでデフォルトエンコーディングを確認できます

groovy -e "println System.properties.get('file.encoding')"

Windowsの場合,MS932と表示されます.GroovyファイルはSJISで保存してください.
OS XやUbuntu Linuxの場合,UTF-8と表示されます.GroovyファイルはUTF-8で保存して下さい.
その他のOSの場合,上記の実行結果に従い保存して下さい.
システムの標準的?なテキストエディタで保存すると,そのシステムのデフォルトエンコーディングになると思います.
GroovyConsoleもデフォルトエンコーディングで保存するようです.

デフォルトエンコーディング以外で保存されたGroovyファイルを実行することも可能です. 例えばWindows上でSimple.groovyをUTF-8で保存し,それを実行するには次のようにします.

groovy -c UTF8 Simple.groovy

GroovyファイルをUTF-8形式で保存する際にWindowsの「メモ帳」を使った場合,そのGroovyファイルを実行するとエラーがでます. メモ帳で保存したUTF-8にはBOMが付くことが原因のようです.

UTF-8には,BOMの付かない"UTF-8N"と,BOM付きの"UTF-8"があります.
BOMはファイル先頭3バイトに書き込まれます.
BOMが付いたファイルは,groovy -c UTF8 ***.groovyで実行できません.
UTF-8Nで保存できるテキストエディタを使ってください (XYZZYなど).

2.4 Web UI

Webブラウザでhttp://localhost:8080/tag/を開くとWebUIが表示されます.localhost以外からの接続はできません.Web UIは4つのペインで構成されます.

WebUI

(1)エージェントペイン

現在動作中のエージェントの一覧と,エージェントを操作するボタンが表示されます.

(2)エディタペイン

プログラムを編集できます.保存するにはエージェントペインのSave&restartボタンで行います.

(3)ログペイン

TAGサーバとエージェントプログラムからの標準出力・標準エラー出力を表示します.エージェントプログラム内でprintlnした内容が表示されます.

(4)メッセージペイン

メッセージに関する操作を行います.

2.B データベース操作

java -cp tagserver.jar org.h2.tools.Console
jdbc:h2:g:/jdk8/workspace/TAGserver/_tagserverにつなげる