この章の内容は次のとおりです。
様々なタイプのIdoc Scriptの変数と関数を使用して、Content Serverをカスタマイズすることができます。
いくつかのIdoc Script動的変数は条件付きであり、if
、while
、elseif
またはloop
などの条件文の中でのみ使用できます。これらの変数には、次の特徴が備わっています。
#active
キーワード接頭辞を受け入れません。したがって、変数が見つからない場合は、エラー・レポートがデバッグ出力に印刷されます。Idoc Scriptの関数と変数では、これらの条件動的変数について説明しています。
動的変数は、変数が出現するたびに評価されます。変数が見つかるたびに、値がコードから再評価されます。(対照的に、値変数はサービス・コールの最初に1回評価され、その値はサービス・コール全体を通して使用されます。「値変数」を参照してください。)動的変数は通常、文字列または整数などの値を返します。
Idoc Scriptの関数と変数では、この動的変数について説明しています。
Webサーバーの変数は、サーバーがゲートウェイ・プログラムを実行するときに設定されるCGI環境変数です。情報リクエストに関するデータをサーバーからクライアントへ渡すために、サーバーはコマンドライン引数と環境変数を使用します。これらの環境変数は、情報をログ・ファイルに出力するために使用したり、Idoc Script文の中で、または評価の一環として使用したりすることができます。
たとえば、このIdoc Script文は、リモート・ホスト・アドレスが特定の文字列と一致するかどうかを評価します。
<$if strEquals("207.0.0.1",REMOTE_HOST)$>
このHTMLとIdoc Scriptのマークアップによって、Webサーバー環境情報のリストがページに表示されます。
<P>HTTP_INTERNETUSER=<$HTTP_INTERNETUSER$></P> <P>REMOTE_HOST=<$REMOTE_HOST$></P> <P>SCRIPT_NAME=<$SCRIPT_NAME$></P>
Idoc Scriptの関数と変数では、これらのWebサーバー変数について説明しています。
Idoc Scriptには、多数のビルトイン・グローバル関数があります。関数は、文字列の比較、操作ルーチン、日付フォーマット化、ResultSetの操作といったアクションを実行します。いくつかの関数は、計算または比較の結果などの結果も返します。
関数名の後に情報をカッコで閉じることによって、情報が関数に渡されます。関数に渡される情報のピースをパラメータといいます。関数には、パラメータをとらないもの、パラメータを1つとるもの、複数のパラメータをとるものがあります。関数のなかには、その使用方法によってパラメータ数が異なるものもあります。
ビルトイン・グローバル関数の他に、カスタム・クラスを含む新規のグローバル関数を、Javaコードを使用して定義できます。詳細は、『コンテンツ・サーバーのコンポーネントのスタート・ガイド』および「カスタム・コンポーネントの作成」を参照してください。
Idoc Scriptの関数と変数では、これらのIdoc Scriptのビルトイン・グローバル変数について説明しています。
ページ変数は、特定のページ属性または機能を有効にするために、特定のWebページで設定されます。ページ変数は、設定されたページのみに適用されます。
この項には次のトピックが含まれます:
ページの表示に影響するページ変数は通常、ページの最上部の近くに設定されます。ページ表示変数は読取り専用変数として使用します。これらの変数の値を設定または変更することにより、通常はページでのメタデータの表示方法が変更されます。多くの場合、これは望ましい影響ではありません。
リストされた変数名が別のドキュメントを参照する場合は、その変数がWebページ用にIdoc ScriptまたはURLに設定できることを意味しています。
Idoc Scriptの関数と変数では、これらのページ表示変数について説明しています。
フィールド表示変数は、次のタイプにグループ化できます。
次の変数は、メタデータ・フィールドに関する情報を定義します。メタデータ・フィールドごとに、変数の値がロードされたり、計算されたりします。
Idoc Scriptの関数と変数では、これらのフィールド情報変数について説明しています。
例
リソース・ファイルIdcHomeDir
/resources/core/std_page.htm
にあるstd_prepare_metafield_include
インクルードは、現在のメタデータ・フィールドの表示を準備するために、多数のフィールド情報変数をローカル・データからロードします。
<@dynamichtml std_prepare_metafield_include@> <!--Prepare for presenting field--> <$fieldName=dName, fieldCaption=dCaption, fieldDefault=dDefaultValue$> <$fieldType=dType, fieldIsOptionList=dIsOptionList, fieldOptionListType=dOptionListType$> <@end@>
よく使用されるページ変数がいくつか存在し、これらはメタデータ・フィールドの表示に影響します。これらの変数は、それぞれの現在の使用法に応じて、ページの場所ごとに異なる構文を使用して設定できます。
注意:
構成マネージャ・アプレットのプロファイル・エンジンおよびルール・エンジンには、これと同じ機能がコード数を少なくして組み込まれています。
次のフォーマットを使用して、特殊なフィールド表示変数を設定できます。
variable=value
フォーマットを使用して設定されます。たとえば、isHidden=1
です。このフォーマットは通常、現在のメタデータ・フィールドがループ済のコードにより生成されるページ上の場所に、そのフィールドを表示するために使用します。myMetadata:isHidden
となります。このフォーマットは通常、特定のメタデータ・フィールドのグローバル表示を設定するために、ページの最上部に使用します。共通フィールド表示変数をテンプレート・ページの最上部に設定する場合は、<HEAD>
タグの前に置いてください。この変数を<HEAD></HEAD>
セクションの中または後に置くと、意図したようにフィールドが表示されます(または、非表示になります)が、ヘッダーにあるJavaScript検証コードは評価されても、…はオブジェクトではないため、チェックイン・ページを表示しようとするとエラーがスローされます。
Idoc Scriptの関数および変数
Idoc Scriptの関数と変数では、これらの共通フィールド表示変数について説明しています。n
メタデータ・フィールドを表示するための代替方法
これらの共通フィールド表示変数のみで必要なフレキシビリティが得られない場合には、フィールド変数を、かわりに使用するリソース・インクルード(たとえば、myField:include=customInclude
)の名前に設定して、メタデータ・フィールドの実装全体を置き換えることができます。
標準実装は変数defaultFieldInclude
により参照されます。この変数の値は、フィールドがチェックイン/更新ページ、問合せページまたは情報ページのいずれに生成されるかによって異なります。さらに、表示されるフィールドのタイプによっても大きく異なります。標準のフィールド・インクルードがオーバーライドされた場合、新しい実装では、JavaScript検証とアップロード・アプレットも含めて、様々なページの問題点をすべて考慮する必要があります。
このアプローチは、最後の手段としてのみ使用してください。既存の機能を拡張し、ローカル変数にカスタム機能を持たせることを優先してください。
このようにinclude
タグを使用して特殊なメタデータ・フィールドのカスタムHTMLコードを挿入する場合は、ページの</HEAD>
タグの後にインクルード文を置く必要があります。</HEAD>
タグの前に置いた場合、システムはカスタムHTMLコードをヘッダーに挿入し、JavaScriptとして読み取ろうとします。
メタデータ・フィールドの表示に影響するその他の変数が多数存在しています。通常、これらの変数は、現在生成中のフィールドと、関連する列の共通フィールド表示変数の値に応じてメタデータ・フィールドの表示を定義する際に使用します。
Idoc Scriptの関数と変数では、これらその他のフィールド表示変数について説明しています。n
例
この例では、IdcHomeDir
/resources/core/templates/std_page.htm
リソース・ファイルにあるcompute_std_field_overrides
インクルードが、現在生成中のフィールドが非表示か、参考用か、排他的かまたは再配置されたものかどうかを判別する方法を示しています。このコードは、ページ上で各メタデータ・フィールドの生成中にループされます。
<@dynamichtml compute_std_field_overrides@> <$isCustomHidden = getValue("#active", fieldName & ":isHidden")$> <$if isHidden or isCustomHidden$> <$isFieldHidden = 1$> <$else$> <$isFieldHidden = ""$> <$endif$> <$isCustomInfo = getValue("#active", fieldName & ":isInfoOnly")$> <$if isInfo or isCustomInfo or isFieldHidden or isInfoOnly$> <$isFieldInfoOnly = 1$> <$else$> <$isFieldInfoOnly = ""$> <$endif$> <$isCustomExcluded = getValue("#active", fieldName & ":isExcluded")$> <$isCustomRelocated = getValue("#active", fieldName & ":isRelocated")$> <$if isCustomExcluded or (isCustomRelocated and not isRelocated) or isExcluded or (isFieldHidden and not isFormSubmit)$> <$isFieldExcluded = 1$> <$endif$> <@end@>
読取り専用変数は、現在のテンプレート、現在ログインしているユーザーまたはその他の現在の設定に関する情報を収集するために使用します。これらの変数は読取り専用であり、値を割り当てることはできません。
テンプレート読取り専用変数により、テンプレートのアイデンティティに基づいてテンプレートに条件付きコンテンツを作成できます。これらの事前定義の変数を使用すると、すべてのテンプレートのクラス、ファイル・パス、名前またはタイプをコンテンツ・サーバーのWebページに表示できます。これは、Webサイトの開発には特に役立ちます。
Idoc Scriptの関数と変数では、これらのテンプレートに関連する読取り専用変数について説明しています。
例
この例では、テンプレートの内部名は、コンテンツ・サーバーのすべてのWebページの左サイドバーにある「管理リンク」の下に表示されます。この変更を遂行するために、事前定義されたTemplateName
変数が、「管理リンク」を定義するpne_nav_admin_links
インクルードに追加されています。
次に、内部テンプレート名をWebページに表示するためのTemplateName
事前定義変数の使用例を示します。
<$if IsSubAdmin$> <tr> <td> <a href="<$HttpCgiPath$>?IdcService=GET_ADMIN_PAGE&Action= GetTemplatePage&Page=ADMIN_LINKS" OnMouseOver="imgAct('admin')" OnMouseOut="imgInact('admin')"> <img src="<$HttpImagesRoot$> <$button_admin_grey_ish_image$>" width="<$navImageWidth$>" height="<$navImageHeight$>" name="admin" border="0" alt="<$lc("wwProductAdministration", ProductID)$>"></a> </td> <td> <a class=pneHeader href="<$HttpCgiPath$>?IdcService=GET_ADMIN_ PAGE&Action=GetTemplatePage&Page=ADMIN_LINKS" OnMouseOver="imgAct('admin')" OnMouseOut="imgInact('admin')"> <$lc("wwAdministration")$></a> </td> </tr> <tr> <td colspan=2><font color=#FFFFFF style="Arial" size="-1"><$TemplateName$></font></td> </tr> <$endif$>
ユーザー関連の読取り専用変数を使用すると、現在のユーザーに関する情報を収集できます。
Idoc Scriptの関数と変数では、これらのユーザーに関連する読取り専用変数について説明しています。
Idoc Scriptの関数と変数に説明するコンテンツ関連の読取り専用変数、SourceIDを使用して、現在の動的サーバー・ページのコンテンツIDを取得できます。
この変数は、ref:dID
と同じ値を返します。
Idoc Scriptの関数と変数に説明する読取り専用変数、SafeDirは、内部フラグとしてのみ設定されています。これは取得可能ですが、直接設定することはできません。
設定可能変数は、スクリプトの中に設定したり、CGI文字列の中で使用することができます。たとえば、変数IsPageDebugをサービス・コールのパラメータとして使用すると、デバッグ・トレース表示をページに表示できます。これらの変数の1つを設定すると、ページのコンテンツを変更できます。
Idoc Scriptの関数と変数では、これらの設定可能変数について説明しています。
Idoc Scriptには、特にワークフローに使用される事前定義の関数と変数が組み込まfれています。
コンテンツ・サーバーへのワークフローの実装方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Contentのマネージメント』のワークフローの管理に関する項を参照してください。
次の各項目では、ワークフローにおけるIdoc Scriptの使用を要約しています。
ワークフロー・ジャンプは、特定のステップ・イベント(入力、更新または終了)に定義されているIdoc Scriptの評価を通して開始されます。
リビジョンはステップからステップへ移動するため、リビジョンの状態に関する情報をワークフローに保持するコンパニオン・ファイルが作成されます。関数wfGet()およびwfSet()を使用すると、必要に応じてデータをコンパニオン・ファイルにコード化することができます。ユーザー定義オプションとともに、リビジョンが移動してきたステップの履歴、最後のエントリ時間、リビジョンが特定のワークフロー・ステップに入った回数も保持されます。
リビジョンがステップからステップに移動するにつれて、グローバルな状態情報が保持されていきます。
ローカライズ状態情報はステップに格納され、リビジョンがそのステップにいるときに使用可能になります。
コンパニオン・ファイルでは、キーを使用してワークフロー状態情報を追跡します。キーの構文は、次のとおりです。
step_name@workflow_name.variable=value
たとえば、次のキーは、MarketingというワークフローのEditorステップに対してエントリ・カウント変数と最後のエントリ変数の値を定義します。
Editor@Marketing.entryCount=1 Editor@Marketing.lastEntryTs={ts '2002-05-28 16:57:00'}
すべてのワークフロー評価は、データベース・トランザクションの内側で行われます。そのため、検出された深刻なエラーまたは中止によってデータベースまたはコンパニオン・ファイルのいずれかが変更されることはありません。また、どのIdoc Scriptワークフロー関数でも、処理にほとんど時間がかかりません。したがって、外部プロセスをトリガーするには、別個のスレッドで実行するようにIdoc Script関数を作成する必要があります。
注意:
Idoc Scriptまたはカスタム・コンポーネントを使用してワークフロー情報をローカル・データにロードしている場合は、データ汚染のリスクがあることに留意してください。現在のリビジョンとは異なるリビジョンの情報をロードしている場合、これは特に重要です。
ワークフロー関数は、ワークフローに関連するアクションを実行したり、結果を返したりします。
Idoc Scriptの関数と変数では、これらのワークフロー関数について説明しています。
値変数はサービス・コールの最初に1回評価され、その値はサービス・コール全体を通して使用されます。その後、変数は新規サービス・コールごとに再評価されます。対照的に、動的変数は、変数が出現するたびに評価されます。たとえば、値変数isNew
は、チェックインの実行時にコンテンツ・アイテムが新規か、またはリビジョンかどうかを評価します。その評価は、チェックイン・サービスのコール全体にわたって使用されます。
Idoc Scriptの関数と変数では、これらの値変数について説明しています。
Oracle WebCenter Contentの各種機能によってIdoc Scriptの変数と関数が使用できます。Idoc Scriptの関数と変数では、Idoc Scriptの変数と関数について説明しています。
WebCenter Contentのconfig.cfg
ファイル、intradoc.cfg
ファイルおよびその他の.cfg
ファイルで使用可能なシステム構成変数の詳細は、『Oracle Fusion Middleware Oracle WebCenter Content構成リファレンス』の構成変数に関する項を参照してください。
これらのOracle WebCenter Contentの各種機能によって、Idoc Scriptの変数と関数が使用できます。
Idoc Scriptの関数と変数に説明する次のIdoc Script変数は、バッチ・ローダー・ユーティリティに関連しています。
バッチ・ローダー・ユーティリティに関連するその他のIdoc Script構成変数の詳細は、『Oracle Fusion Middleware Oracle WebCenter Content構成リファレンス』のバッチ・ローダーに関する項を参照してください。
次のIdoc Scriptの変数および関数は、コンテンツ・アイテムに関連しています。
次のIdoc Scriptの変数および関数は、コンテンツ・サーバー・システムに関連しています。
これらの変換製品は、いくつかのIdoc Script変数で使用できます。
次のIdoc Scriptの変数および関数は、デバッグに関連しています。
デバッグに関連するその他のIdoc Script構成変数の詳細は、『Oracle Fusion Middleware Oracle WebCenter Content構成リファレンス』のデバッグに関する項を参照してください。
次のIdoc Scriptの変数および関数は、ディレクトリとファイル・パスに関連しています。
次のIdoc Scriptの関数は、dynamicdata
表に関連しています。
次のIdoc Scriptの変数および関数は、コンテンツ・サーバーのWebページでのメタデータ・フィールドの表示に関連しています。
次のIdoc Scriptの変数および関数は、コンテンツ・サーバーのWebページの表示に関連しています。
次のIdoc Scriptの変数および関数は、ResultSetに関連しています。
次のIdoc Scriptの関数は、スキーマに関連しています。
スキーマは、スキーマの各部分間の関係に影響する可能性のある変更が生じたときには必ず、再公開されます。これらの設定は公開要因に関連しています。
次のIdoc Scriptの変数および関数は、検索に関連しています。
次のIdoc Scriptの変数および関数は、内部セキュリティに関連しています。
次のIdoc Scriptの変数および関数は、文字列に関連しています。
次のIdoc Scriptの変数および関数は、ユーザーに関連しています。
次のIdoc Scriptの変数は、Webサーバーに関連しています。
Web サーバー・フィルタ・プラグインにも関連があります。
次のIdoc Scriptの関数は、ワークフローに関連しています。