XML の生成にエージェントを使用する

XML の生成にエージェントを使用する最大の利点の 1 つはその柔軟性です。エージェントは、スケジュールや、イベント、URL コマンドへの対応に従って実行できるからです。このような柔軟性は、自動化された XML アプリケーションの作成に欠かせません。例えば、書店の Web サイトには、顧客が月刊のニュースレターに記事を投稿できるデータベースがあります。編集と承認のワークフロー処理があり、記事はシステムに送られて最終的に承認されます。エージェントが一時間ごとに実行され、発行の準備の整った記事を収集して XML に変換します。次にエージェントがそれらの記事を静的な XML 文書として他のデータベースに配置します。そのデータベースから購読者が記事を入手します。

ROI Books アプリケーションには createXML と呼ばれるエージェントがあり、ビューの各文書に XML を生成し、ブラウザまたはサーバーからの要求に基づいて送信します。このエージェントの出力を確認するには、Microsoft Internet Explorer 5 で ROI Books アプリケーションを開いて [XML Agent] リンクをクリックするか、OpenAgent URL コマンドを使用してエージェントを実行します。

   http://host/roiBooks.nsf/createXML?OpenAgent

Image of XML agent

エージェントを作成して、出力結果を印刷するだけでなく、XML の出力結果を文字列変数に格納し、LS:DO や DECS コネクタ API を使用して静的な XML 文書や他のデータベースシステムに書き込みをすることもできます。

例: XML エージェント

次の例は、XML という名前のビューから各文書を取り出し、その内容から XML を作成し、出力を印刷する LotusScript® エージェントです。

   Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim view As NotesView

Set db = s.currentDatabase
Set view = db.GetView( "XML" )
Set doc = view.GetFirstDocument

Print "Content-type: text/xml"
   'Prevents Domino from sending default headers.
Print "<BOOKCATALOG>"
   'BOOKCATALOG is the root element of the XML document.
   

While Not ( doc Is Nothing )
   'Loop as long as there are document objects available.
      Print  "<BOOK>"
      'Send the parent element for each book document.
   Print "<bookTitle>"+doc.bookTitle(0)+"</bookTitle>"
   Print "<bookAuthor>"+doc.bookAuthor(0)+"</bookAuthor>"
   Print "<bookPrice>"+doc.bookDiscountPrice(0)+"</bookPrice>"
   Print "<bookCategory>"+doc.bookCategory(0)+"</bookCategory>"
   Print "</BOOK>"
      'Close the book element tag.
   Set doc = view.GetNextDocument( doc )
      'Get the next document in the view.
Wend
Print "</BOOKCATALOG>"
   'Closes the root element.