2023/11/09

DXL Step-by-Step:#11)イメージリソースの DXL の注意点

DXL 活用の調査・検証で、実現できたことや発見したことご紹介する『DXL Step-by-Step』シリーズの第 11 回です。

DXL は知らないことばかりなので、整理しておきたい情報が多く連投状態となっております。他の連載などはおいおい進めますので、もう少々お待ちください。


さて、前回は、イメージリソース(設計要素)を 新規作成する方法を紹介しました。この処理で生成される DXL は次のようになります。

出来上がりを見るとシンプルでわかりやすいのですが、いくつか制約など注意点がありますので整理しておきます。


タグの順序

DXL をインポートするときタグの順序が正しくないと、保存(Import)時にエラーが発生します。今回の3つのタグを使用して実験を繰り返した結果、条件は次の通りでした。

  • <png> タグは先頭であること
  • フィールド <item> タグはその次(画像データの後)
  • フィールドは銃所が入れ替わってもかまわない


エラーが発生した場合、次のような画一的なメッセージが表示されます。

これでは、エラーの原因はわかりませんよね。

今回ぐらい単純な DXL ならトライ&エラーで原因調査することも可能ですが、複雑な場合はそうもいきません。せめてエラーの発生したタグぐらい表示してほしいですね。


フィールドの作成

今回は $FileSize と $MimeType の2つのフィールドを作成しました。この2つは作成しなくても、イメージリソースの作成は成功しました。また、フォームに呼び出すなど、利用も問題ないようでした。どうやらこれらフィールドは必須ではないようです。

ただ、$FileSize を作成しない場合、設計の一覧でファイルサイズが表示されなくなりました。実害はないようですが、表示された方が安心ですよね。

また、$MimeType フィールドは、ファイル形式を表している唯一のフィールドに見えたのであった方が良いと判断し、作成することとしました。


重複チェックはされない

そして最後に重要な点です。

DXL から設計要素を作成する場合、名称による重複チェックは行われません。例えば今回のエージェントを複数回実行すると次のように同名のイメージリソースが複数作成されます。まるで、設計要素の競合が発生したような状態ですね。

これは、保存(Import)の際、DesignImportOption プロパティに DXLIMPORTOPTION_CREATE を指定していたので、毎回新規作成したのだと思います。なかなか素直ですね。

実用時には、新規作成なのか更新なのかを判定して、DesignImportOption プロパティをコントロールする必要があるということですね。


まとめ

今回のような制限事項は、イメージリソースに限らずあるようです。エラーが発生して初めて気が付くことになりますので、トライ&エラーの連続となります。これが DXL 開発の難点ですね...

前回 DXL Step-by-Step 次回

0 件のコメント:

コメントを投稿