2005/05/05

DominoデータにアクセスするDXL

developerWorksに、新しい記事が公開されていました。今回のテーマは、DXLについてで、DominoのデータにDXLでアクセスしようというものです。特に目新しい内容ではないのですが、興味深いエリアでもあるのでちょっと眺めてみます。

A custom DXL framework for accessing Notes/Domino data

DXL(Domino XML)というのは、Domino DTDと呼ばれる、Dominoの構造を記述したフォーマットに従って、Dominoのデータ(文書情報)や設計をXML形式で記述したもののことです。スキーマ言語はDTDを使ってますが、Domino 7からは、XML Schemaも提供されるそうです。
DXL 自体は文書情報などDominoデータをXMLで表現しただけのものですが、開発者のアイディア次第で活用方法はいくらでもあると思います。ここで は、一例として、DIIOPでもプログラムアクセスは出来るけれど通常はFirewall超えが出来ない・・・なんということが書いてあります。(つま り、XMLの利点の一つはテキストフォーマットであることであり、HTTP上で扱える。さらには、HTTPならFirewallが超えられる、という、は やりのWebサービス的な考え方、に行き着く・・・。他にも用途は多いと思うのですが、代表例ならこれということでしょう)

「Viewの データをXMLで取得してプログラム処理させる」というのは、最近ではわりと一般的になってきました。?ReadViewEntriesとい うURLコマンド一発でXMLデータを取得出来るということもあり、Domino開発者側はビューだけ作っておけば、あとはデータを利用する側の開発者 (サーブレットなど)がXML APIを使って頑張ればよいですから。なお、DXLのようにデータ構造が決まっているというのは最低条件として非常に重要だと思いますが、 ReadViewEntriesのように、XML取得のための標準インタフェース(特にHTTPメソッドとして)があるというのも重要だと思います。

この記事では、文書単位でDXLアクセスする場合のフレームワーク(ちょっと大袈裟な言い方ですが)を考えています。
文書単位でのDXLアクセスといえば次が想定されます。
  • 選択文書(UNID)に対するDXLベースの情報更新
  • DXLフォーマットのデータを新規文書として生成する
  • 選択文書(UNID)のDXL情報を表示する

これに対して、DXLUpdateDoc/DXLCreateDoc/DXLViewDocという3つのエージェントをURLコマンドとしてインタフェースにする方法(つまりエージェントのソース)が紹介されています。
こ のエージェントは、Query_StringというCGI変数で引数(UNID)を受け取り、必要な処理を実施しています。Domino 6では、DXLに関するLotusScriptのクラスが実装されたので、これらのエージェントは全部LotusScriptで、しかもかなりシンプルに 実現されています。ソースの詳細は記事本文を見て下さい。

DXLによる文書操作がどの程度必要なのかはわかりませんが、ともあれ文書操作 に関するURLベースでの標準インタフェースを持つということは、SOAや Webサービスなどがキーワードになっている近年、非常に重要だと思います。今回の例ではエージェントで実現していますが、各DBにエージェントを配置 し、リクエストをエージェントで処理するのは、サーバーパフォーマンスも気になりますし、コードの配置の点でも最適かどうか微妙です。この点を追求すれ ば、サーブレットなどを使って他に選択肢が全くないわけではないですが、現状の製品機能ではいずれにせよ一長一短であったりして、今回の記事がやはり最適 解だと思います。ですが、この程度の機能くらい、ReadViewEntriesと同様、Domino URLコマンドとして実装して欲しいと思います。(引数がUNIDだけでよいかどうかには議論があり、GetDocumentByKeyと同じものは欲し いです)

0 件のコメント: