ユーザー定義プロパティー (UDP) とは、メッセージ・フロー・エディターによって設計時に初期値を変更したり、ブローカー・アーカイブ・エディターによってデプロイメント時に初期値をオーバーライドしたりできるユーザー定義の定数のことです。 UDP は ESQL または Java プログラム内で使用できます。 たとえば ESQL では、DECLARE ステートメントを使用して、プログラムに対して UDP を定義します。 UDP には宣言時に初期値を付与できますが、コードは実行時に値を変更できません。
UDP の宣言時にそれに初期値を付与すると、その値がデフォルトになります。 しかし、メッセージ・フロー・エディターによって設計時に指定された値や、BAR エディターによってデプロイメント時に指定された値は (長さゼロのストリングであっても)、初期宣言値をオーバーライドします。
メッセージ・フロー中のすべての UDP に、UDP の宣言時に付与された値か、メッセージ・フロー・エディターまたは BAR エディターによって指定された値がなければなりません。ない場合は、デプロイメント時にエラーが発生します。 実行時に、UDP を宣言した後で、後続のプログラム・ステートメントによってその値を照会できますが、変更することはできません。
UDP の利点は、デプロイメント時に操作員が値を変更できることです。例えば、UDP を使用して構成データを保持している場合は、デプロイメント時にノード・レベルでコードに変更を加えずに特定のマシン、タスク、または環境用にメッセージ・フローを構成できることになります。例えばデータ・ソースからのプラグイン (データベースなど) から構成データにアクセスしたり、構成データを環境ツリーにコピーしたりする必要はありません。
UDP を使用すると、構成データの設定が容易になり、通常の定数と全く同じように使用できます。 ユーザー作成プラグインに対する外部呼び出しや環境ツリーの構文解析は関係しないので、プログラム・コードの作成と保守が容易になり、パフォーマンスも向上します。 また、ツリーからデータを読み取る際の構文解析のコストも除かれます。ユーザー定義プロパティーの値はデプロイメント時に変数に転写されるので、高速アクセスできるようになります。
モジュールまたはスキーマの中でのみ、UDP を宣言することができます。
メッセージ・フロー・エディターを使用してユーザー定義プロパティーの値を変更する場合は、UDP の値はフロー・レベルで設定され、そのフローに含まれるすべての適格なノードで同じ値になります。("適格なノード" とは、UDP をサポートしており、アプリケーションに対して UDP を宣言している宣言の有効範囲内にあるノードのことです。) 例えば、メッセージ・フロー・エディターを使用して、"myFlow" というメッセージ・フロー中の "mySchema" というスキーマで宣言されている "timezone" というユーザー・プロパティーの値を変更する場合、myFlow 中のすべてのノードのうち UDP をサポートしていて mySchema の範囲内のものに対して実行時に UDP を使用できます。