前回からの続きです。文書として取得したエージェント(設計要素)を DXL に変換して確認します。前回掲載したプログラムの中で、赤字の部分が今回の主題となる部分です。
Sub Initialize ・・・ Call nnc.BuildCollection() Dim dprs As NotesDOMParser If nnc.Count > 0 Then Set ndAgent = ndb.GetDocumentByID(nnc.GetFirstNoteID) Set dprs = xGetDOMParser(ndAgent) Call xSaveDXL(dprs) 'DXL の文字列を文書に保存 End If End Sub |
まず、エージェント(設計要素)の文書を NotesDOMParser に変換します。この xGetDOMParser 関数は、第 3 回 で作成した関数を流用しています。
次の xSaveDXL 関数は、NotesDOMParser から DXL を文字列で抽出し、文書に保存させる関数です。コードは次の通りです。
Function xSaveDXL(vdprs As NotesDOMParser) As Boolean Dim ndb As NotesDatabase Dim nd As NotesDocument Dim nrti As NotesRichTextItem Set ndb = xns.CurrentDatabase Set nd = ndb.CreateDocument() nd.Form = "DXL" Set nrti = nd.CreateRichTextItem("Body") Call nrti.AppendText(xGetDXL(vdprs)) xSaveDXL = nd.Save(True, False) End Function Function xGetDXL(vdprs As NotesDOMParser) As String Dim nst As NotesStream Set nst = xns.CreateStream() Call vdprs.SetOutput(nst) Call vdprs.Serialize() xGetDXL = nst.ReadText() End Function |
今後も DXL を確認する際に頻繁に利用することにりそうなので、重要な関数といえますね。
エージェントの DXL
さて、前置きが長くなりましたが、実行して結果を確認します。出力された DXL を VSCode で整形して確認します(整形については、『DXL ことはじめ:#3)DXL を見やすく整形』を参照)。
設計要素の中身が洗いざらい出力されています。エージェントのプログラムの中身や実行ログまでもが含まれています。
ポイントは次の赤枠の部分です。エージェントの実行スケジュールの詳細が出力されています。
ちなみに、LotusScript に標準搭載のクラス群の中に NotesAgent クラスがあり、Agent の設定などにアクセスできます。しかし、実行の設定に関しては、Trigger というプロパティしかなく、スケジュールエージェントであるかまでしかわからず、実行間隔までは取得できません。
DXL を使えば、実行スケジュールの詳細まで取得できます。この情報とエージェントの実行ログを比較することで、スケジュールエージェントが計画通り稼働しているか確認することも可能となります。
このように、DXL を応用すれば、LotusScript に標準搭載のクラス群を補完することができます。コーディングは少し(かなり?)面倒なのですが、これまであきらめていたことが実現できそうな可能性を感じますね。
前回 | DXL Step-by-Step | 次回 |
0 件のコメント:
コメントを投稿