高度な変更

この記事には、以下のトピックが含まれています。
casm173
この記事には、以下のトピックが含まれています。
Web Screen Painter 以外のツールを使用して HTMPL を変更する場合や、非常に複雑なカスタマイズが必要な場合には、Web ページの変更に関するさまざまな要素を認識する必要があります。 ただし、まず WSP での CA SDM Web ページの変更を行ってから、他の方法を試すことを強くお勧めします。 WSP は、必要な変更のほとんどを実行できる機能を備えています。また、更新をサイトの mods ディレクトリに配置したり、発行済みファイルをすべてのサーバに配布したりするなどのハウスキーピング処理も自動的に行います。
Webエンジンとキャッシュ
CA SDM Web サーバの構造を理解していると、Web ページを変更する際に役立ちます。 Webインターフェースでは、TomcatなどのJ2EEサーブレット コンテナ、またはApacheやMicrosoft Internet Information Server(IIS)などの標準HTTPサーバのいずれかを使用します。 ユーザが CA SDM Webページをリクエストすると、HTTPサーバは、提供されたプログラム pdmweb.exe を呼び出します。
pdmweb.exe が起動し、Web エンジンという CA SDM デーモン(または Windows サービス)との接続を設定します。 Webエンジンがユーザのリクエストを解釈します。 ほとんどのリクエストの場合、Webエンジンはテンプレート(HTMPL)ファイルを参照し、標準HTMLに変換する必要があります。 一般的な変換プロセスでは、Web エンジンは CA SDM サーバと通信してデータベースの読み取りや更新を行い、生成される HTML にデータベース情報を挿入する必要があります。 完成した HTML は pdmweb.exe に送信され、次に pdmweb.exe がこの HTML をユーザのブラウザに返します。
最大限のパフォーマンスを発揮するために、通常、各 HTMPL ファイルは一度だけ読み取られます。 Webエンジンは、ファイルを解析してHTMLへの変換方法を決定した後で、解析したファイルをキャッシュに保存します。これにより、次に同じファイルがリクエストされたときの処理時間が大幅に短縮されます。 キャッシュは実稼動環境では有益ですが、開発環境では不便です。これは、Web エンジンがリサイクルされるか、pdm_webcache ユーティリティが使用されるまで、HTMPL ファイルへの変更が有効にならないからです。 開発環境では、環境設定ファイルのプロパティ SuppressHtmplCache を指定してこの動作を排除できます。 ただし、実稼動環境で HTMPL キャッシュを無効にすると、Web エンジンの全体的なパフォーマンスに多大な影響を及ぼすため、これはお勧めできません。
pdmweb.exeから送信されるWebページは、HTMPLファイルを読み取り、読み取ったファイルからHTMLを生成することにより生成されます。 HTML テンプレート ファイルには、サフィックス .htmpl が付いています。 これらのテンプレート ファイルに変更を加えることで、CA SDM Web ページを変更できます。
pdm_webcacheユーティリティ
WebエンジンのキャッシュからHTMPLフォーム(1つまたは複数)を削除するには、pdm_webcacheユーティリティを使用します。 そうすることで、次回使用されるときにはそのフォームがディスクからフェッチされるため、フォームに加えた変更が有効になります。
pdm_webcache [-f form-name] [-g form-group] [-i interface] [-p process] [-v]
  • -f
    form-name
    キャッシュから削除するフォーム名(detail_cr.htmpl など)を指定します。 「%」(または「*」)をワイルドカード文字として使用し、複数のフォームを選択することもできます。 以下に指定の例を示します。
    -f detail%
    すべての詳細フォームを選択します。
    この引数はオプションです。 この引数を省略すると、キャッシュ内のすべてのフォームが選択されます。
  • -g
    form-group
    キャッシュから削除するフォーム グループ名(Analystなど)を指定します。 「%」(または「*」)をワイルドカード文字として使用し、複数のフォーム グループを選択することもできます
    以下に指定の例を示します。
    -g Anal%
    「Anal」で始まるフォーム グループをすべて選択します。
    この引数はオプションです。 この引数を省略すると、キャッシュ内のすべてのフォーム グループが選択されます。
  • -i
    interface
    キャッシュから削除するWebインターフェースの名前(analyst、customer、employeeなど)を指定します。 「%」(または「*」)をワイルドカード文字として使用できます。 以下に指定の例を示します。
    -i a%
    アナリスト用インターフェース(analyst)が選択されます。
    この引数はオプションです。 この引数を省略すると、キャッシュ内のすべてのインターフェースが選択されます。
  • -p
    process
    キャッシュを変更するWebエンジン プロセス名(web:localなど)を指定します。
    この引数はオプションです。 この引数を省略すると、すべてのWebエンジンが選択されます。
  • -v
    詳細出力を指定します。 この引数をが指定されている場合、pdm_webcacheは、キャッシュから削除されたすべてのフォームのフル ネームを以下の形式で表示します。
    interface
    :
    form-group
    :
    form-name
    この引数はオプションです。 この引数を省略すると、pdm_webcacheは、各Webエンジンのキャッシュから削除されたフォームの数のみを報告します。
HTMLテンプレートの変更方法
一般的に、HTMLテンプレートには以下の2つのタイプの変更を加えることができます。
  • ユーザに対して表示されるが、表示前にWebインターフェースによって修正されない変更。 たとえば、適切なテンプレート ファイルへの参照を追加して、会社のロゴのGIFファイルをWebインターフェース ページへ追加したり(「パス スルー」)、ページにJavaScriptを追加して入力を検証したりできます。 ユーザがHTMPLファイルに加えた変更のうちPDMタグに含まれないものは、以下に定義されているように、ユーザに返されるHTMLに未変更のまま渡されます。
  • テンプレートの置き換え可能なセクションの変更。 たとえば、リクエストの詳細ページに新規のアプリケーション データを追加できます。
テンプレートの各種エントリを使用して、以下の処理を行うことができます。
  • CA SDM からユーザに情報を表示する。
  • クエリ ページを設定する。
  • リンク タグを使用して、別の CA SDM ページへのリンクを作成する。
変更不可能なファイル
特定の HTMPL テンプレート ファイルと JavaScript ファイルには、CA SDM の多くの Web フォームで必要とされる情報が含まれています。 これらのテンプレートに含まれる情報はリリースに依存するものであり、CA SDM Web インターフェースを正常に動作させるために必要不可欠です。 したがって、これらのファイルは、新しいバージョンの CA SDM がリリースされる際に必ず置換されます。これらのファイルに加えた変更はアップグレードされません。
この制約を受けるテンプレートは以下のとおりです。
  • ahdtop.htmpl
    CA SDM Web インターフェース全体で使用されるスタイル、スクリプト、および JavaScript 変数が含まれています。 このファイルはWebインターフェースのメイン フレームセットに含まれ、セッション中は常に存在します。 すべての CA SDM フォームが、ahdtop.htmpl が含まれるウィンドウを参照する JavaScript 変数 ahdtop にアクセスできます。
  • menu_frames.htmpl
    CA SDM メイン フォームで使用する HTML フレームセットを定義します。
  • msg_cat.js
    CA SDM の JavaScript ファイル内で使用される、すべてのメッセージのテキストが含まれています。
  • reports.htmpl
    Webレポートに必要なデータが含まれています。
  • std_body.htmpl
    ほとんどのHTMPLテンプレートのBODYセクションの冒頭で使用される、標準的な情報が含まれています。
  • std_footer.htmpl
    ほとんどのHTMPLテンプレートのBODYセクションの最後で使用される、標準的な情報が含まれています。
  • std_head.htmpl
    ほとんどのHTMPLテンプレートのHEADセクションの冒頭で使用される、標準的な情報が含まれています。
  • styles.htmpl
    CA SDM Web インターフェース全体で使用される CSS スタイルが含まれています。
これらのファイルを直接変更することはできませんが、補足情報を追加することはできます。 制約を受ける xxx.htmpl ファイル(menu_frames.htmpl と reports.htmpl を除く)には、それぞれ対応する xxx_site.htmpl ファイルがあり、これらは変更が可能です。 たとえば、ahdtop_site.htmpl を変更して ahdtop.htmpl に追加情報を追加したり、msg_cat_site.js を変更して新規メッセージを追加したりできます。
制約を受ける個々のファイルに対応する xxx_site.htmpl ファイルは、メイン ファイルの後にロードされるため、これらのファイルでメイン ファイル内の JavaScript を無効化または変更することができます。 これらのファイルに不適切な変更を加えると、 Web インターフェース全体で予期しない問題が発生する原因になるため、情報の追加は細心の注意を払って行ってください。
新規HTMPLファイルのガイドライン
CA SDM Web インターフェースに、ユーザ独自の HTMPL ファイルを追加することができます。 この場合、独自の HTMPL ファイルを他の CA SDM インターフェースでも問題なく動作させるために、必ず以下のガイドラインに従ってください。
  1. ファイルの <HEAD> セクション内の任意の場所に、以下のステートメントを挿入します。 <TITLE> ステートメントがある場合は、その後に置きます。 このステートメントは、CA SDM Webインターフェースに必要な JavaScript グローバル変数を定義し、ページを CA SDM ウィンドウ マネージャに登録します。
    <PDM_INCLUDE FILE=std_head.htmpl>
  2. ファイルの <BODY> セクションに、以下の属性を挿入します。 この属性を指定すると、CA SDM ウィンドウ マネージャがユーザのページをトラッキングできるようになります。
    onUnload="deregister_window()"
  3. ファイルの <BODY> セクションの冒頭に、以下のステートメントを記述します。 「menubar=no」引数はオプションです。この引数を指定すると、CA SDM のメニュー バーが非表示になります。
    <PDM_INCLUDE FILE=std_body.htmpl [menubar=no]>
  4. ファイルの <BODY> セクションの最後に、以下のステートメントを記述します。
    <PDM_INCLUDE FILE=std_footer.htmpl>
ユーザ定義の状態情報を追加する方法
多くの顧客が、CA SDM Web ページに自身の状態情報を埋め込むこと、および CA SDM によってユーザ セッションに出力するすべての後続ページにその状態情報が渡されることを希望しています。 この情報は、HTMPLファイル内に条件ステートメントを記述して呼び出すことができます。
ユーザ セッションの状態情報は、リンクまたはフォーム内に特別な属性USER_STATEを設定することによって取得できます。 状態情報が CA SDM の Web エンジンにサブミットされると、ユーザに対して表示されるすべてのページで HTMPL 変数 USER_STATE が使用可能になり、USER_STATE に最後にサブミットされた値が設定されます。
以下の例は、販売員向けのページなど、ユーザ サイトの別の場所から CA SDM へのエントリを設定する方法を示します。
  • ハイパーリンクを使用します。
    <a href="/CAisd/pdmweb.exe?USER_STATE=Sales">Service Desk</a>
  • 非表示フィールドのあるフォームを使用します。
    <form action="http://yourhost.com/CAisd/pdmweb.exe"> <input type=hidden name=USER_STATE value=Sales>
    Service Desk用のボタンをクリックします。
    <input type=submit> </form>
その後、状態情報に基づいて HTMPL フォームを変更できます。
<PDM_IF "$USER_STATE" == "Sales">
販売顧客のカスタム情報
<PDM_ELIF "$USER_STATE" == "Engineering">
技術者のカスタム情報
<PDM_ELSE>
その他のユーザの情報
</PDM_IF>
テンプレートからリクエストを直接作成する方法
URL を使用して、テンプレートからリクエストを作成することができます。
http://machinename/CAisd/pdmweb.exe?FACTORY=cr+OP=CREATE NEW+PERSID=cr:3106+use_template=1
cr:3106はテンプレートの固定IDです。
HTTPサーバで使用するディレクトリ
CA SDM のインストールの初期設定では、HTTP サーバに対して以下の 2 つの仮想ディレクトリが定義されます。
  • CAisd 仮想ディレクトリは、CA SDM インストール ディレクトリ内の以下のディレクトリを直接指定します。
    1. Windows:
      installation-directory
      \bopcfg\www\wwwroot
    2. UNIX: $NX_ROOT/bopcfg/www/wwwroot
  • CAisd/sitemods 仮想ディレクトリは、CA SDM インストール ディレクトリ内の以下のディレクトリを直接指定します。
    1. Windows:
      installation-directory
      \site\mods\www\wwwroot
    2. UNIX: $NX_ROOT/site/mods/www/wwwroot
これらの仮想ディレクトリには、以下のサブディレクトリがあります。
サブディレクトリ
保存内容
css
スタイル シート
help
Webインターフェースのヘルプ
html
HTMLファイル
img
グラフィック ファイル
scripts
JavaScript
sitemods
サイト定義の変更
css、html、img、または scripts ディレクトリ内にあるファイルのバージョンを作成する場合、/CAisd 内のファイルは更新しないことを強くお勧めします。 この場合、/CAisd/sitemods内の適切なサブディレクトリにファイルを格納してください。 たとえば、/CAisd/css 内にあるスタイル シートを変更する場合は、変更したバージョンのファイルを /CAisd/sitemods/css に格納します。 ファイルがsitemodsのサブディレクトリ内にある場合、WebエンジンはHTMPLファイルを解析する際に、$CAisdで始まるファイル名を自動的に変更して、sitemodsをポイントさせます。
/CAisd/sitemodsディレクトリを使用することには、以下のメリットがあります。
  • 変更した配布ファイルのレコードを保持できます。
  • 疑問や問題がある場合は、元のバージョンに簡単にアクセスできます。
  • CA SDM のインストールでは /CAisd/sitemods ディレクトリに何も格納されないため、メンテナンスや新規リリースのインストール プロセスが簡略化されます。
/CAisd/sitemods/help サブディレクトリはありません。 ヘルプ データはHTMPLテンプレートではなく標準のHTMLファイルに保存されるため、Webエンジンはファイル参照を動的に変更することはできません。 ヘルプを変更する必要がある場合は、/CAisd/help に変更を加える必要があります。
HTMLサブディレクトリには、Webエンジンでの処理が不要な、頻繁に使用されるファイルがいくつか含まれています。これらをブラウザにキャッシュすると、パフォーマンスを向上させることができます。 これらのファイルのバージョンを作成する場合は、ファイル内に他の変更済みファイルへの参照が含まれていないかどうかを十分に確認してください。 Webエンジンによる処理は行われないため、必要に応じて、手動で参照をsitemodsに挿入する必要があります。
PDF 添付ファイルのダウンロード
Adobe Acrobat リリース 7.0 または 8.0 へのアップグレード後、PDF 添付ファイルをダウンロードして CA SDM で表示しようとすると、PDF ファイルが正しく表示されないか、空のウィンドウが表示される場合があります。 CA SDM で以下の手順を実行することで、PDF ファイルを正しく表示できます。
  1. $NX_ROOT\bopcfg\www\CATALINA_BASE\webapps\CAisd\WEB-INF\web.xml で、
    forceDecompressOnDownload
    パラメータを YES に設定します。
    Linux では、$NX_ROOT は /opt/CAisd です
  2. CA SDM サービスを再起動します。