opossum のコンセプト

会計画面(メインウィンドウ)操作はキーボードで、かつシンプルに

GUI を採用してはいますが、会計処理は迅速に行われるべきです。よって 会計画面の操作はキーボードで行えるようにしています。

売上げ/在庫管理は Out of 眼中

売上の統計・在庫管理については、特にopossum 上では扱いません。 データベースから統計を抽出するには、CGI なり、ODBC 経由で Excel に 読み込むなり、別のアプローチを取ってください。この辺りになってく ると、業種や経営方針がモロに絡んでくるので、汎用的なものを作る のは難しいですし、作ろうと思えば、そんなに難しいものでもありません。

posmaster.rb の役割

posmaster.rb は次のことを受け持ちます。 通信は 1 本の TCP ソケットに "\n"(空行) で終了する XML を流すことで 行われます。つまり、posmaster.rb との双方向の通信を するために、 opossum 側で port を開けません。これは、NAT な F/W 内部 の opossum からも グローバルアドレスを bind している posmaster.rb と相互 通信するためです。(下図参照)

また、通信内容に XML を使ってはいますが、実装は独自のもので、SOAP とは違います。(というか、SOAP をよく理解していない...。 ^^;)

そもそも、なんでこんなややこしい構成にしているかというと、 もちろん支店があった場合を考えているのです。A 店では 200 円だった商品が B 店では 250 円だった、なんて事態は避けたいですよね。
#実際はよくあることなんです、これが...(--;;;。

まあ、売上げデータも posmaster.rb に渡して一元管理する、という ことも考えられるわけですが、今のところ通信は暗号化されていません ので、ちと問題があります。盗聴されることなんてまずないでしょうけどね。 Ruby の SSL モジュールはあるので、これを利用して全通信を暗号化する ことも(今後 ^^;)やる予定です。

文字コード

内部文字コードは EUC で統一しています。が、上記 posmaster.rb の通信 内容の XML は UTF-8 を使用しています。だってそれが REXML の仕様 なんだもん、しようがないじゃないですか。(^^;