前回 はXEAD Driver の外観をお知らせしましたので、今回は実際に触ってみましょう。まだダウンロードされていない方は、Java1.6 と合わせてインストールしてください。
※4/20に公開されたXEAD Editor V1R0M02に基づいて訂正しました
1.Editor起動
HELPにも書いてありますが、XEAD Driverは新規作成の機能がありません。どうするかというと、同梱されている「skeleton」フォルダ全体をどこかにコピーしてそれに仕様を追加する事で作成します。VistaおよびWindows7の方はProgramFIlesの下にはコピーしないで下さい。UAC(User Account Control)が邪魔をして上手く更新出来なくなります。
新規作成が出来ない理由は、XEADのシステム管理テーブル(セッションやユーザなど)がないとメニューすら動かないためです。skeleton.xeafをダブルクリックすればEditorが開きます。その前にStartDatabase.batを起動しましょう。デスクトップにショートカットがあるはずです。DataBaseを起動せずにEditorを起動するといくつかの制約が出ますので、慣れるまではノーマルに起動しましょう。
2.最低限決める事
システムを入力する前に、各種のIDを決めておく必要があります。XEAD DriverではIDを変更する事が出来ません。IDを変えるためには削除→追加するしかありません。入力に必要なIDは次の4種類だけです。ただ、本格的な業務を作るためにはDOA(三要素分析法)で設計した後に入力します。XEAD Driverで試行錯誤出来る範囲はそれほど大きくありませんので注意して下さい。
(1)サブシステムID
skeletonには、A:組織マスター管理 と Z:システム管理 の2つのサブシステムが最初からあります。桁数制限は無制限のようですが、将来は制限される可能性があるでしょう。 桁数制限は10桁です。ここでは、単に「B」としましょう。
(2)テーブルID
制限は、20桁までです。サブシステム「B」に属するテーブル(T)ですので、BT010から連番を振る事にしましょう。ただし、テーブルが所属するサブシステムは後で簡単に変更出来ますので、サブシステムIDで修飾することが正しいかは微妙です。このテーブルIDは実際のデータベースのテーブル名になります。
(3)フィールドID
データベースのフィールドIDです。DB(Derby)の制約上128桁までです。制限は40桁までです。
(4)機能IDと機能タイプ
画面やバッチプログラムのIDです。これも制限桁数は無制限のようです10桁です。画面(Display)という意味で、BD010から番号を付けましょう。機能タイプはマスタメンテ系ならテーブルごとに次の2つを定義すれば簡単に作れます。
・XF100 明細一括表示 ・・一覧から対象を選びXF200「機能を起動」します
・XF200 単票表示保守 ・・1レコードを更新、追加します
3.では実際に作ってみましょう
ここでは極めて簡単な業務として、商品マスタをメンテナンスする画面を作ってみましょう。なお、ID項目は全て小文字から大文字に自動変換されます。ほとんどのデータベースもそうなっていますから違和感はないでしょう。
登録は、「サブシステム」→「テーブル」→「機能(画面)」→「メニュー」の順に行います。
テーブルは次の商品マスタひとつだけとします。
BT010 商品コード、商品名、 商品単価、 税区分
<SYOCD> (SYONM) (SYOTANKA) (SYOZEIKBN)
画面IDは、BD010(XF100)、BD020(XF200)とします。
(1)サブシステム「B」の追加
画面の①~⑥の順に操作すると追加されます
(2)テーブル「BT010」の追加
同じく画面①~③をクリックして追加します。ID:BT010 テーブル名:商品マスタ
(3)フィールドの追加
データベースの項目(フィールド)を追加します。同じように画面①~③でフィールド定義の新規追加ダイヤログボックスから入力します。
(4)フィールド属性の登録
登録したフィールドIDをクリックすると、下段で属性が登録出来ます。
属性 規定値 説明
--------------------------------------------------------------------
・物理フィールド Yes 物理項目か導出項目かのチェック
・データタイプ CHAR DBフィールドのタイプ。18種類
・桁数 5 フィールドの文字数。バイト数ではない
・フィールド名 入力値 フィールド名は変更可能
・NULL可 No NOT NULL属性を付けるか
・拡張データタイプ なし 漢字や半角カナ、郵便番号など。
<特殊な拡張データタイプ>
自動採番ID:採番テーブルのIDとして登録する。自動採番フィールド
区分ID :ユーザ定義区分テーブルのIDとして登録する
リスト値 :固定値を「;」で区切って登録する
--------------------------------------------------------------------
次の通り入力しましょう
商品コード・・・規定値のまま
商品名 ・・・桁数:20、拡張データタイプ:漢字
商品単価 ・・・データタイプ:DECMAL、少数桁:1
商品税区分・・・桁数:2、拡張データタイプ リスト値「外税;内税」
(5)キーの設定
KEYタブをクリックし、下の空いた空間を右クリックしてPKEYを指定します。
一次識別の追加ダイヤログボックスが出ますので、「SYOCD」と入力します
(6)モジュールチェック
これの意味合いが一番分かりにくい部分でしょう。右上の「モジュールチェック」ボタンを押して「モジュール作成」から「実行」を押すと、自動的にデータベースにテーブルが張られます。画面にはCreate table文が表示されます。
---------------------------------------------------------
*定義にもとづいてテーブルモジュールが作成されました。
< Data Descriptions >
Create table BT010 (
SYOCD CHAR(5) not_null Comment '商品コード',
SYONM CHAR(20) not_null Comment '商品名',
SYOTANKA DECIMAL(5,1) Default 0.0 not_null Comment '商品単価',
SYOZEIKBN CHAR(2) not_null Comment '商品税区分',
Constraint BT010_PK Primary key (SYOCD)
)
---------------------------------------------------------
テーブル定義を変更すると、DBに登録されているテーブル定義と自動的にチェックします。動機がずれると左側のツリーに表示されているDBアイコンの影が薄くなります。そこでモジュールチェックを行うとALTER TABLEで定義を変更しようとします。ALTER TABLEで変更出来ないような修正を行った場合は、一旦削除してから再登録します。
(7)機能「BD010」の登録
左のツリーの「機能一覧」をクリックし、右側のペイン(枠)を右クリックして追加します。
・機能ID:BD010
・機能タイプ:XF100 明細一括表示
・機能名:商品マスタ一覧
・一時テーブル:BT010
他は規定値のままでOKを押します。
(8)機能「BD010」属性の登録
ここでは、2点だけを登録します。
1)右上ペインの「明細選択時」を ●機能を起動「BD020」(画面③)
2)検索条件タブに「商品名」を追加(画面⑤)
(9)機能BD020の登録
同様にBD020を追加します。
・機能ID:BD020
・機能タイプ:XF200 単票表示保守
・機能名:商品マスタ保守
・一時テーブル:BT010
これでOKを押します
(10)メニューにBD010を登録します
最後のステップです。操作としては、ここが一番分かりにくいと思います。
1)左側のツリーで、「BD010 商品マスタ一覧」が見えるようにします
2)ツリーの「メニュー一覧」「20 ナントカ管理メニュー」をクリックします
3)「BD010 商品マスタ一覧」の文字を右下のペインにドラッグ&ドロップします
これで商品マスタメンテナンスは出来上がりました。F9を押して起動してください。
4.便利機能
(1)簡易レコードメンテナンス
Editorのツリーから「BT010 商品マスタ」をクリックし、右側ペインの「データ」タブの一覧ボタンを押すと登録したレコードを表示する事が出来ます。この画面で簡単な追加/更新/削除も可能です。
(2)セッション状況
システムを起動し、「システム管理メニュー」から、「セッション状況の一覧」を選ぶと発行したすべてのSQL構文を見る事が出来ます。SQLエラーが発生した時にはデバッグのために使います。
(3)排他制御
システムは、同時に2つ以上起動する事が出来ます。両方で同じレコードを更新しようとすると、後ろ側の更新がエラーになります。
テーブル定義の、「排他制御」を「*Default」のままで登録しました。その場合、自動的に「UPDCOUNTER」というフィールドがデータベースの項目として登録されます。それをレコードバージョン番号として扱います。更新しようとした時に再度読み込み、レコードバージョン番号が先に保持しておいた値と異なる時にこのエラーとなります。
このフィールドはシステム制御のためにありますので、上記3-(6)モジュールチェックのCreate Table文では隠されている事に注意して下さい。
(4)SQLコンソール
メニューの「ツール」「SQLコンソール」を開くと、SQLステートメントやシステム組込プロシージャが実行できます。
ためしに「select * from bt010」と入力してF9を押すと次の通り、物理的に登録されている項目がすべて表示されます。上記(3)の「UPCOUNTER」も表示されます。
------------------------
> SELECT * FROM BT010
No.,SYOCD,SYONM,SYOTANKA,SYOZEIKBN,UPDCOUNTER
1,00001,商品1,10.5,外税,2
2,00002,商品2,5.0,内税,4
------------------------
5.XEAD Modeler
最初にコピーしたskeletonフォルダの中には、skeleton.xeafだけでなく、skeleton.xeadも一緒に入っています。
これは、スケルトンの仕様書です。開くためにはXEAD Modeler をインストールしてください。XEAD Driverで試行錯誤が出来る範囲はそれほど大きくありません。XEAD Modelerで設計した後にDriver(Editor)で入力する事を想定されています。データモデルはModelerでしか確認出来ません。最後にskeletonの「組織データ管理」のデータモデルを見てみましょう。
部門テーブルと従業員テーブルから従業員所属部門テーブルが作られています。従業員テーブルから従業員所属部門テーブルへの線が1:Nになっているのは、1人が複数部門に所属する事を想定しています。一般の会社なら人事評価などの関係で主務と兼務を明確にするのですが、このモデルではそこまで考慮されていません。販売管理の世界では必要がないためです。
少しややこしいのは、部門テーブルと部門階層テーブルの関係です。同じテーブルの間に線が2本引かれています。これは次の2つの関係がある事を示しています。
(1)部門テーブルを親、部門階層テーブルを子とする親子関係
(2)部門階層テーブルの上位部門IDから部門テーブルに参照関係
つまり、次のようなツリー構造の組織を意識されています。
001 営業事業部 002 東京営業部 003 東京第一営業部
004 東京第二営業部
005 大阪営業部
<部門階層テーブル>
部門ID 発行年月 上位部門ID
002、 YM、 001
003、 YM、 002
004、 YM、 002
005、 YM、 001
なお、YMは発行年月です。月の初めが1日とは限りませんので、ZT010_システム変数のLAST_DAYに月度最終日を持っています。正確には「YM-1月のLAST_DAY+1日」から有効になるというロジックになります。
-----------------------
さて、どうだったでしょうか。簡単な画面だとは言え、データベース定義まで含めても10分もあれば動いてしまいます。こんなツールをオープンソースで公開してもらえるなんて、頭が下がる想いです。