MAGIC V10解析(9)
MAGICフォーラム2007
みなさん、お元気ですか?
さて、一昨日は、MAGICフォーラムに参加して参りました。
多くの方が参加し大盛況で、本当に何よりでした。プレゼンは楽しかったですし、ブラクラじゃないリッチクライアントはちょっと驚きで、やはりMAGICやるしかないかな・・・(どういう意味だ?)、なんて思った次第です。w
MAGICビジネスの発展を祈るばかりです。
そうそう、お会いした方の何人かに、「ブログを見てるよ」と言って頂きましてとても嬉しかったです。有難うございます。m(__)m
さて、MSJの技術の人たちとちょっと立ち話になりまして(立食パーティだったので、当然ながら、立って話すしかなかったんですが・・・w)、そのときにMAGICのリポジトリソースの話になったんです。
「そんなことはなかんべぇ・・・」と言われてしまったのですが、この場をお借りして(借りるまでも無く私のサイトですねw)、私の言いたかったことを説明させて頂きたいと思います。
データソースインデックスのセグメントとカラムの関連について
ところで先日ベータ公開させて頂きましたリポジトリ解析ツールは無事動きましたでしょうか?
実は公開したあと気付いたんですが、第三者が作成したコンポーネントを使っているようなアプリケーションでは多少問題が発生します。というのは、コンポーネントを使っているアプリケーションの場合、そのコンポーネントのソースを探しに行くんですが、そのとき情報の取得に失敗してエラーが出てしまうようです。近いうちにまた修正版を出したいと思います。
そのリポジトリ解析ツールで、私が定義したとあるプロジェクトのデータソースの情報を見てみたいと思います。
下の図が、データソースのカラムを表示している画面です。

解析ツールは、通常見ることのできないカラムのid(下のソースの赤枠部分)を表示してくれます。
この例は、カラム表示順に対して、「4」,「3」,「2」,「5」と変則的な順番になっていますが、これはカラムを削除したり順番を入替えたりした痕跡です。(おそらく試行錯誤をしたんですね!)

さて、今度は、インデックスの一覧です。
インデックスにも「id」などの通常見れない番号があるんです。(idがあるものについては、たいていの場合、コメントなども入れられるようになっているようです。)

この例では3つのインデックスが作成してあります。
画面下に表示されるテーブルは、一番目のインデックスのセグメントを表示しています。
ここで注目して欲しいのは、カラム番号として「1」と「2」を指していることです。
ソースファイルを見ると、下図の赤い囲みの数値になります。
このカラムを指す番号は、最初カラムに付けられた「id」を指すものと予想したのですが、どうやらそうではなくて、いわゆる「カラム情報のXML上の出現順の番号」を指しています。
(上の例では「id」が「1」となるカラムは存在していないことから、「id」を指すものでなさそうなことは推測できますね。)
さて、これが原因で問題になるケースがあるのでしょうか?
実は次のような手順でXMLタイプのデータを定義した場合に、インデックスで指定したカラムがズレてしまう・・・という現象が起きます。
- XMLタイプのデータソースを定義

- スキーマ情報を「定義取得」
- インデックスを任意のカラムに対して定義

- スキーマを変更し、インデックスを指定したセグメントカラムに該当する属性の前に、新しい属性を追加

- 変更したスキーマ情報を「定義取得」で再取得
- インデックスのカラム位置が新しいカラムに付け変わる

ということで、XMLスキーマの定義を変えた場合は、インデックスで指定したカラムがズレることがありますので、ご注意下さい。
私は、これに気付かずにプログラムを実行した途端に誤動作(インデックスが重複している等のエラーが発生)したことがありました。
まぁ、それ以外のケースで問題になることはなさそうなので、これはこれでなんとか我慢できるかな?とは思っていますが・・・。
ついでなので、今までXMLタイプのデータを扱ってみて、ちょっと不満に思う点を記述しておきます。
<XMLタイプデータを扱う際の不満点>
- 定義取得の再取得が上手く動作しないことがある
スキーマを変更したときに、「定義取得」を再度行うのですが、追加したノードや属性が追加されないことがあります。そんなときは、しょうがないので最初からやり直すのですが、プログラムと関連している場合は修正が大変です。 - 除去したカラムが再度追加される
ビューから削除したノードや属性が、「定義取得」の再読込で全て追加されてしまいます。
カラムが多い場合は大変で、ひとつひとつ再度操作しなければなりません。
再読込の際に表示される「関連するビューの検索と再読込」のチェックを外しても結果は同じなんですが、こういう動作は仕様でしょうか?
ちなみに、これらの操作の度に、カラムのidが増えてしまいまして、あるデータはカラムidが1000を超えてしまっているものがあります。
もしMSJの方でこの書込みを見る機会がありましたら、ご検討を宜しくお願い致します。
(プライオリティ的には、リッチクライアントのリリースを最優先にして頂いて構いませんので・・・w)
MAGIC Decrypter for V10
Size
6.3 kB
-
File type
text/html
MAGIC V10解析(1)
Size
8339
-
File type
text/html
MAGIC V10解析(2)
Size
8904
-
File type
text/html
MAGIC V10解析(3)
Size
9714
-
File type
text/html
MAGIC V10解析(4)
Size
9882
-
File type
text/html
MAGIC V10解析(5)
Size
10443
-
File type
text/html
MAGIC V10解析(6)
Size
9739
-
File type
text/html
MAGIC V10解析(7)
Size
12563
-
File type
text/html
- Category(s)
- dbMAGIC
