アプリケーションの設計


式フィールド
式フィールドは、購読リストにデータを設定する場合に使用されます。購読リストは、Headlines.nsf データベースと連携して機能します。購読データベースは、IBM(R) Lotus Notes(R) クライアントのホームページとして使用されます。購読データベースには、購読という機能があります。データベースの設計者は、データベースを購読に使用するかどうかを選択できます。ユーザーが ([作成] - [購読] を選択して) データベースを購読すると、関心のある文書が特定のデータベースに保存されると通知する、というサーバータスクがトリガーされます。サーバーが探す基準は、購読フォームの式フィールドに含まれています。ユーザーは購読したいデータベースの購読フォームに記入しますが、購読文書は各ユーザーのローカルクライアントにあるユーザーの購読データベース (デフォルトは headlines.nsf) に保存されます。

自分のデータベースに合わせてカスタム購読フォームを作成する場合は、IBM(R) Lotus Domino Designer(R) に組み込まれている headlines.nsf データベースまたは headlines.ntf データベースにあるデフォルトの購読フォーム ($Subscription) をひな型にすることができます。まず購読フォームをコピーして設計中のデータベースに貼り付け、カスタマイズします。購読フォームをカスタマイズする場合は、式フィールドを組み込む必要があります。$Subscription フォームの式フィールドは $HLFormula という名前で、フォームの右側にあるタブで区切られた表の 2 番目のタブに表示されます。$HLFormula フィールドは計算結果フィールドです。式フィールドを計算結果フィールドのままにする場合は、購読リストの選択式と解釈される式を書き込みます。式フィールドは、サーバーがユーザーの購読基準を検索できるように、選択式として解釈される必要があります。

式フィールドのもう 1 つのオプションは、[フィールドのプロパティ] インフォボックスの [フィールド情報] タブで [確認してから計算する] を選択することです。[確認してから計算する] オプションを選択した場合、入力した式をコンパイルしないで使用するように式フィールドをプログラムすることになります。この場合の参照フィールドは、テキスト、数値、数値リスト、日付、日付範囲、日付リストのいずれかを指定する必要があります。参照するフィールドがその他の種類の場合は、フィールド参照の対象外とみなされます。

オプションとして [確認してから計算する] が選択された式フィールドの式の例を次に示します。

Select (Names = ExampleNames) & (Numbers = ExampleNumbers) & (Categories = ExampleCategories)& (Dates = ExampleDates)

現在の文書が次のフィールドと値を持つとします。
フィールド
ExampleNames"CN=Sara Ryan/O=Acme" :"CN=Jack Town/O=Acme"
ExampleNumbers1: 2: 3
ExampleCategories"Arizona" :"Florida" :"New York"
ExampleDates[3/26/82]:[10/08/86]:[5/30/98]

式フィールドは、次のように文字列として認識されます。

Select (Names = "Sara Ryan/Acme" :"Jack Town/Acme" ) & (Numbers = 1 :2 : 3) & (Categories = "Arizona" :"Florida" :"New York") & (Dates=[3/26/82]:[10/08/86]:[5/30/98]

計算結果オプションを選択した場合は、入力した式は別の式を決定することになります。これにより、複雑な式を保存する前に、その式を最適化できます。式が評価されてから、結果式が保存されます。

結果式が無効の場合は、フィールドはタイプエラーという値で保存されます。場合によっては、ユーザーは文書を永久に終了できなくなります。成功か失敗かを区別するには、QuerySave イベントでテストを行い、式フィールドが実際に式であることを判定する必要があります。実際に式でない場合は、計算は有効な結果式にはなりません。

たとえば、計算結果式フィールドに次の式が設定されているとします。

tLitNames := "\"" + @Implode( ExampleNames; "\" : \"") + "\"";

tLitNumbers := @Implode( @Text(ExampleNumbers); " : ");

tLitCategories := "\"" + @Implode( ExampleCategories; "\" : \"") + "\"";

"Select (Names = " + tLitNames + ") & (Numbers = " + tLitNumbers + ") & (Categories = " + tLitCategories + ")"

現在の文書が次のフィールドと値を持つとします。
フィールド
ExampleNames"CN=Sara Ryan/O=Acme" :"CN=Jack Town/O=Acme"
ExampleNumbers1: 2: 3
ExampleCategories"Arizona" :"Florida" :"New York"
式は、次のようにコンパイルされます。

Select (Names = "Sara Ryan/Acme" :"Jack Town/Acme" ) & (Numbers = 1 :2 : 3) & (Categories = "Arizona" :"Florida" :"New York")

関連項目