[Notes/Domino] 設計解析講座: アイテムの種類
アイテムは様々な種類があり、それぞれ格納形式が異なっています。したがって、アイテムの種類により、データの取得方法を変更する必要があります。ここではまずどんなアイテムがあるかについて説明してみます。
アイテムの種類
以下にアイテムの種類を列挙します。ドキュメントに無いものもあったりする(※)ので、管理人も全ては把握していませんが、まあ以下をおさえておけば問題ないでしょう。設計解析上重要なものは太字にしてみました。
(※ 例えば、空き時間情報の DetailsList アイテム(=30)はドキュメントに載っていないですし、プロパティでも「???」と表示されます。)
番号 | 種類名 | 説明 |
---|---|---|
0 | 無効または使えません | 無効なアイテムです。 |
1 | リッチテキスト | 複合ドキュメント(Compound Document)といわれる形式でデータが格納されます。さまざまなアイテムで使用されています。 |
2 | 索引照合の指定 | ビューの $Collation(および $CollationN ) アイテムのことです。ソートの情報が格納されます。 |
3 | 添付オブジェクト | $FILE アイテムのことです。このアイテムは添付ファイルがある場所(アドレス)の情報やファイルの情報などを格納しているだけで、添付ファイルの実体は別のところに格納されています。 |
4 | 返答の参考リスト | $REF アイテムのことです。リスト個数(常に1?)とUNIVERSALID 構造体だけの単純な形式です。 |
5 | ビュー 表の形式 | ビューの $ViewFormat アイテムのことです。ビュー・列の設計情報のほとんどが格納されています。昔から継ぎ足し継ぎ足しで拡張されてきたので、構造体の連番がエラいことになっています(^^; |
6 | アイコン | アイコンノートのアイコン(IconBitmapアイテム)のことです。 |
7 | 文書リンクの参考リスト | $Links アイテムのことです。$REF アイテムと構造がよく似ていて、リスト個数と、1つまたは複数の NOTELINK が連なっています。 |
8 | 暗号の署名 | $Signature アイテムのことです。電子署名データが格納されます。 |
9 | 暗号シール | $Seal アイテムのことです(キーが1つの場合)。 |
10 | 暗号データ | $SealData アイテムのことです。暗号化されたデータが格納されます。 |
11 | 暗号シールリスト | $Seal アイテムのことです(キーが複数の場合)。 |
12 | ワードハイライト | $Highlights_フィールド名 アイテムのことです。全文検索を実行して、検索語句がハイライトされた状態の文書に存在します。 |
13 | ワークシートデータ | Chronicle の製品でのみ使用されているアイテムらしいです。詳細は不明……。 |
14 | 任意のデータ | NotesItem.SetValueCustomDataBytes などによってセットされたアイテムです。 |
15 | エージェント検索 | エージェントの $AssistQuery アイテムのことです。検索条件が格納されます。リッチテキストと同じく複合ドキュメント形式です。 |
16 | エージェントアクション | エージェントの $AssistAction アイテムのことです。エージェントのプログラム本体(シンプルアクション、式、LotusScript など)が格納されます。ただし、LotusScript で 64KB を超える場合は、$AssistHScript のほうにテキストで格納されます。 Java の場合は、本体は $FILE のほうに格納されます。 リッチテキストと同じく複合ドキュメント形式です。 |
17 | エージェント情報 | エージェントの $AssistInfo アイテムのことです。トリガ、スケジューリングの情報などが格納されています。中身は ODS_ASSISTSTRUCT 構造体のみです。 |
18 | ナビゲータのデータセット | ナビゲータの $ViewMapDataset アイテムのことです。 リッチテキストと同じく複合ドキュメント形式です。 |
19 | ナビゲータのレイアウト | ナビゲータの $ViewMapLayout、$NavImagemap アイテムのことです。 リッチテキストと同じく複合ドキュメント形式です。 |
20 | エージェント LotusScript | LotusScript のコンパイル後のバイトコード(?)が格納されています。 エージェントの $AssistAction_Ex(64KB を超える場合は、$AssistHScript_O のほうにテキストで格納される)、スクリプトライブラリの $ScriptLib_O などなど、多くのアイテムがあります。 LotusScript が記述できるところであれば、たいていの場合この種類のアイテムが存在します(たまに無い場合もあります)。 このアイテムのデータは解析しても意味がありません。 |
21 | HTMLデータ | このアイテムは正直よくわかりません……。 リッチテキストをHTMLで作成するテクニックで使用されますが、それ以外で使用されているのを見たことがありません(涙 |
22 | 空き時間リスト | 空き時間情報の EventList、EventListExt アイテムで使用されています。 |
24 | カレンダー形式 | カレンダービューの $CalendarFormat アイテムのことです。文字通り、カレンダーに関する情報が格納されています。 |
25 | MIME パート | HTMLメールの Body アイテムがこの形式になります。API では、NSFMimePart~ で始まる関数でデータを取得・操作できます。(でも管理人はやったことがない……) |
26 | アウトラインリスト | アウトラインの $SiteMapList アイテムのことです。アウトラインの情報が格納されています。格納形式に関する情報は、いまだに公開されていません。 |
768 | 数値 | (説明省略) |
769 | 数値リスト | (説明省略) |
1024 | 時刻/日付 | (説明省略) |
1025 | 時刻/日付リスト | (説明省略) |
1280 | 文字 | (説明省略) |
1281 | 文字リスト | (説明省略) |
1282 | RFC822 Text | HTMLメールで多く見られる形式です。RFC822ITEMDESC 構造体の後にLMBCSのデータ、ヘッダ、デリミタ、RFC2047 でエンコードされた値が続きます。 |
1536 | 式 | @関数式のコードが格納されます。 |
このうち最も重要なものは、言うまでもなくリッチテキストです。フォームの本体部分やアクションボタンなど、重要な部品はリッチテキスト形式で格納されていることが多いので、この連載でもリッチテキストを重点的に取り上げたいと思います。
よくわからないアイテムは、「HTMLデータ」と「アウトラインリスト」です。前者はどこで使われているかわからないだけで構造は単なる文字列なのですが、後者は仕様自体が公開されていないため、にんともかんとも、という感じです。しかし、管理人は独自にダンプ結果を解析し、だいたいのところはわかるようになりましたので、これも以降の連載で取り上げる予定です。
(おまけ)HTMLでリッチテキストを作成するワザ
「HTMLデータ」形式は、HTMLでリッチテキストを作成(と言うとちょっと語弊がありますが)するワザで使用されています。以下のリンク先には、HTMLで本文を作成したメールを送信するサンプルが記載されています。
RE: How can I create a link Hotspot through Lotusscript?
(※HTMLに日本語が含まれる場合、「memLen = Len(html)」の部分は「memLen = LenBP(html)」に変える必要があると思います。また、64KBを超える場合は、64KB以内の複数のアイテムに分割する必要があります。)
普通にHTMLのテキストを「HTMLデータ」のアイテムとして作成しているだけなので、実際にリッチテキストに変換されるのは文書を開いたときです。パススルーHTMLに近い感じですかね。
なにげに便利そうではありますが、管理人はこのワザをまだ業務で使ったことはありません。だれか人柱になってみませんか?(^^;
コメント
コメントはありません
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。