アプリケーションの設計
セキュリティLotus Notes ユーザーと Web ユーザーでは、セキュリティモデルが異なります。データベースへの [管理者] および [設計者] のアクセス権は Lotus Notes Client ユーザーは使用できますが、Web ユーザーは使用できません。したがって、ユーザーがタスクを実行するために [管理者] および [設計者] のアクセス権を必要とする LotusScript のアクションまたはエージェントは含められません。 ユーザー認証には、Web ブラウザから利用できるアプリケーションの計画がさらに必要です。多くの Web アプリケーションでは、匿名ユーザーのアクセス権がいくつかのレベルで用意されています。よりレベルの高いアクセス権の場合は、Web ユーザーと Domino ディレクトリ内の名前が一致する必要があります。Web ユーザーは一般的に省略形の名前を使用してアプリケーションにログインするため、Lotus Notes の正式なユーザー名を返して正しく認証するには、@UserName コマンドを使う必要があります。
フォーム多くの場合、Lotus Notes Client アプリケーションと Web アプリケーションの両方で同じフォームを使用できます。フォーム上の設計要素の場合は、非表示式を使用してわずかな機能の違いを修正できます。ときには、Lotus Notes Client アプリケーションと Web ブラウザで異なるサブフォームを表示したい場合があります。この例では、次の式により、@BrowserInfo にあるブラウザの種類を判別する CGI 変数を使用して、ブラウザ固有のコードを含む NS または IE という名前の計算結果のサブフォームのどちらかが呼び出されます。 @If(@BrowserInfo("BrowserType")="Netscape";"NS";"IE")
各サブフォームには独自の JavaScript(TM) ヘッダーがあるため、計算結果のサブフォームを使用して JavaScript(TM) やその他のデータ型をフォームに選択的に組み込むことができます。
サブフォームは、すべてメインフォームと同時に開きます。ページを開いたあとの計算結果に基づいて、計算結果のサブフォームを表示することはできません。
フォームは、複数のクライアントの混在環境でも柔軟に対応できます。複数のクライアントをサポートするために設計したプログラムを使用して、Lotus Notes Client からアクセスされた場合に一連のコマンドを実行し、Web クライアントからアクセスされた場合には別のコマンドを実行するフォームイベントをプログラミングできます。Lotus Notes Client と Web クライアントでまったく異なるフォームを個別に設計するほうが簡単な場合もあります。この場合は、2 つのフォームに同じ別名を割り当てて、適切な状況でフォームが正しく表示されるように、1 つを Lotus Notes Client から非表示にし、もう 1 つを Web クライアントから非表示にします。
フィールドLotus Notes アプリケーションでサポートされているフィールドの種類が、すべて Web アプリケーションでもサポートされているとは限りません。たとえば、ユーザーがリストにない値を選択して入力できる、複数値のキーワードフィールドが Web ではサポートされていません。その代わりに、Web アプリケーションでは 2 つのフィールドを使います。1 つのフィールドでリストの新しい選択肢を受け入れ、もう 1 つのフィールドでリストを構築、表示します。ユーザーが Lotus Notes Client と Web のどちらからでもアプリケーションにアクセスできる場合、同じ値がすべてのユーザーに対して表示されるよう、フィールドの値を同期する必要があります。 Lotus Notes で機能するフィールド式と Web で機能するフィールド式の 2 つを使用して問題を解決できる場合は、両方の式をフォームに含め、[フィールドのプロパティ] インフォボックスから [Notes から非表示にする/Web ブラウザから非表示にする] を選択してどちらかの式を表示します。
Lotus Notes Client とブラウザの両方で同じフォームを使用する場合は、設計要素のプロパティにある「Notes から非表示にする/Web ブラウザから非表示にする」属性が役立ちます。ただし、「非表示」はクライアントごとに異なる意味を持つ場合があるので注意が必要です。Lotus Notes では、非表示フィールドは文書内にあり、スクリプトの計算に使用できます。一方、Web ブラウザでは非表示となるフィールドは、ページがブラウザに渡される前に IBM(R) Lotus Domino(R) によって文書からも削除されます。フィールドの内容は JavaScript(TM) では使用できません。
ヒント:ブラウザでフィールドを非表示にして、なお JavaScript でその内容を使用する場合は、[Notes から非表示にする/Web ブラウザから非表示にする] オプションを使用せず、フィールドの [HTML Body Attributes] オブジェクトは「type=hidden」にしないようにします。次の項目を確認します。
<input type="hidden" name="fieldname" value="fieldcontents">
この方法で処理する名前と値は、保護されていません。ユーザーがブラウザの「ページのソースを表示する」機能をクリックすると、これらはすべて表示されます。
また、NULL は HTML で表現できないので、パスワードフィールド、$UpdatedBy、$HTMLHead などのフィールド、およびユーザーのパブリックキーを含む NULL 文字のあるオブジェクトが、ブラウザにこのような方法で渡されるとは限りません。
アクションWeb ブラウザのユーザーには Lotus Notes のメニューコマンドに対するアクセス権がないので、Web アプリケーションではアクションがさらに重要な役割を果たします。たとえば、文書の作成、編集モードへの切り替え、ビューの切り替え、または文書の転送などのタスクには、アクションを指定する必要があります。したがって、多くの場合 Lotus Notes Client ユーザーからは非表示の Web アプリケーション用アクションバーを、独自に設計する必要があります。 ヒント データベースのボタンを Web で使用できるようにするには、[データベースのプロパティ] インフォボックスの [Web アクセス: ページ生成時に JavaScript(TM) を使用] チェックボックスをオンにします。このプロパティが設定されていないと、Lotus Domino では文書中の最初のボタンだけしか認識されません。デフォルトでは、このボタンは文書を閉じたり保存したりするための [送信] ボタンとして扱われます。
ビュー初めにページにビューを埋め込まないと、Web アプリケーションで Notes ビューを表示した場合に表示属性の一部が失われます。ページに複数のビューを埋め込むと、洗練されたレイアウトを実現できます。Web アプリケーション向けに、埋め込んだビューに統一したスタイルのプロパティを適用するビューのテンプレートの指定もできます。 詳しくは、「Web アプリケーションでビューを表示する」を参照してください。
ナビゲーションナビゲーションのアウトラインを使用すると、Lotus Notes Client と Web ブラウザの両方のユーザーに対して構造を統一できます。アウトラインにより、ユーザーはビュー、ページ、または URL を開くことができます。アウトラインをページに埋め込むと、Web ブラウザのユーザーの表示プロパティをすべて維持できます。 ナビゲーションツールとして、イメージマップも考えられます。
詳しくは、「アウトライン、ナビゲータ、イメージマップ」を参照してください。
エージェントエージェントを使ってプログラミングすると、アプリケーションの処理能力がすべて提供されます。エージェントの使用は、Lotus Notes Client と Web ブラウザのアプリケーション開発において違いが最も顕著な部分です。コードの多くは共有できますが、Web と Lotus Notes Client に対してそれぞれ異なるエージェントの書き込みが必要な場合があります。Web アプリケーション用のプログラム可能なサーバーイベントには、主に WebQueryOpen と WebQuerySave があります。パフォーマンスの問題を避けるには、これらのイベントを使用して主要なタスクを実行し、バックグラウンドエージェントを使用してより複雑な処理を実行します。@Command([ToolsRunMacro]) または @URLOpen 式を使用して、Web からエージェントを実行できます。 デフォルトでは、Web エージェントは、エージェントの作成者 (エージェントを保存した人) の認証で実行されます。Web ユーザーの認証の下でエージェントを実行するには、[エージェントのプロパティ] インフォボックスを開き、[設計] タブをクリックし、[Web アクセス] セクションの [Web ユーザーで実行] オプションを選択します。Web ユーザーがこのプロパティの設定でエージェントを実行しようとすると、Lotus Domino によりユーザー名とパスワードが要求され、呼び出し者のデータベース ACL での権限がチェックされるので、このオプションを選択するとセキュリティが強化されます。
Lotus Notes Client では、多くのフォーム、フィールド、ボタンイベントを JavaScript または LotusScript (またはより確実な方法として@関数) で記述できます。アプリケーションでのスクリプトイベントの使い方によっては、JavaScript を使用してエージェントを記述すると、同じフォームを Lotus Notes Client と Web クライアントで使用できる場合もあります。ただし、その機能には違いがあります。Lotus Notes Client では JavaScript は現在開いているフォームのデータにのみアクセスできますが、LotusScript のフロントエンドまたはバックエンドにある Lotus Domino オブジェクトにはアクセスできません。Lotus Notes Client での実行用に LotusScript を、ブラウザ用に JavaScript を記述して、非表示オプションまたは個別のフォームを使用して直接プログラムを実行すると、アプリケーションの動作には一番効果的です。
@関数や@コマンドの多くは、ブラウザでは動作しません。主に次の 3 つのカテゴリに該当する場合、@関数は動作しません。
このリストの完全版については、「Web でサポートされていない Lotus Domino の@関数」を参照してください。
Web アプリケーションのダイアログボックスを置き換えるWeb 上にないヘルプのダイアログボックスやエラーメッセージを置き換えるフォームを、アプリケーション用に設計する必要があります。特に、アプリケーションを使用するための認証が必要な場合には、$$ReturnAuthenticationFailure フォームを作成してユーザーに認証が失敗したことを通知し、アプリケーションで認証を必要としない場所に移動するためのリンクを表示する必要があります。 フォームを作成し、$$ReturnAuthenticationFailure という名前を付けて保存します。このフォームをパブリックアクセスで使用できるようにするには、次の 2 つを実行します。まずパブリック文書を読み出すために、アクセス制御リストでデフォルト権限を作成する必要があります。
次に、フォームのセキュリティプロパティを設定して、[フォームのプロパティ] インフォボックスの [セキュリティ] タブで [パブリックアクセスユーザーの利用を許可する] を選択して、パブリックユーザーがフォームを使用できるようにします。
ブラウザユーザー用カスタマイズエラーメッセージの作成で使用できるフォームの予約名は、$$ReturnAuthenticationFailure、$$ReturnAuthorizationFailure、$$ReturnDocumentDeleted、$$ReturnGeneralError の 4 つです。
これらのフィールドおよびその使い方について詳しくは、「カスタマイズしたエラーメッセージを表示する」を参照してください。
マルチプラットフォームのプログラミングこれで、Lotus Notes Client と Web ブラウザに対して、Lotus Domino Designer で同じイベントをプログラミングできます。実行するプラットフォームのイベント (ボタンの Click イベントなど) のコードを最適化できます。Lotus Notes Client でアプリケーションを実行する場合は、Lotus Notes Client のプラットフォームが必要なコードを実行します。ブラウザでアプリケーションを実行する場合は、Web プラットフォームが必要なコードを実行します。これらのプラットフォームイベントは、フォーム、ページ、サブフォーム、フィールド、ボタン、アクション、ホットスポットの選択されたイベントで利用できます。
ブラウザの違いに応じて計画を立てるユーザーが種類またはバージョンの異なるブラウザを使用して Web アプリケーションにアクセスする場合は、アプリケーションをテストして、それぞれのブラウザに対してカスタマイズする必要があります。ブラウザの種類に応じてコードが必要な場合は、@BrowserInfo を使用して実行中のブラウザの種類やバージョンを特定できます。 @BrowserInfo について詳しくは、「@BrowserInfo」を参照してください。
関連項目