ライトバック・テンプレート・ファイルの作成

ライトバック・テンプレート・ファイルは、1つ以上のライトバック・テンプレートを含むXML形式のファイルです。

ライトバック・テンプレートは、テンプレートの名前を指定するWebMessage要素、接続プール、および作成したライトバック表と列のレコードの挿入と更新に必要なSQL文で構成されます。コンテンツ・デザイナがライトバックに対して表ビューを有効にした場合、コンテンツ・デザイナは、表ビューでのレコードの挿入および更新に使用するライトバック・テンプレートの名前を指定する必要があります。

複数のライトバック・テンプレート・ファイルを作成できます。複数のライトバック・テンプレートを1つのテンプレート・ファイルに含め、それぞれのテンプレートを特定の分析で使用するフィールド用にカスタマイズできます。ただし、1つのファイルには1つのテンプレートのみを含めることをベスト・プラクティスとしてお薦めします。

コンソールで設定することもできます。コンソールでの詳細システム設定の構成分析、ダッシュボードおよびピクセル対応レポートのオプションを参照してください。

  1. XMLファイルを作成します。custommessagesフォルダにあるすべてのXMLファイルがシステムに読み取られるため、ライトバック・テンプレート・ファイルには任意の名前を付けることができます。
  2. 「ライトバック・テンプレートの要件」に指定された要件と「例: ライトバック・テンプレート・ファイル」に示した例に従って適切な要素を追加します。
  3. ライトバック・テンプレート・ファイルは、管理者が静的ファイルとカスタマ・メッセージ用に構成した、次の場所にあるmsgdbディレクトリに保存します。

    SDD/components/OBIPS/custommessages

    SDDは、DOMAIN_HOME/bidataなどのシングルトン・データ・ディレクトリです。

    言語固有のユーザー・インタフェースに影響するXMLメッセージはローカライズする必要がありますが、ライトバック・テンプレートの構成に使用するXMLファイルは、言語に依存しないため、通常翻訳しません。

    まれに、ライトバック・テンプレート・ファイルを言語固有にする必要がある場合があります(たとえば、l_es(スペイン語)ロケールを使用してログインするユーザーと、l_fr(フランス語)ロケールを使用してログインするユーザーが、異なるSQLコマンドを使用する場合など)。その場合は、ライトバック・テンプレート・ファイルを適切な言語ディレクトリに配置します。

ライトバック・テンプレートの要件

ライトバック・テンプレートでは、次の要件を満たす必要があります。

  • ライトバック・テンプレートの名前は、WebMessage要素のname属性を使用して指定する必要があります。

    ライトバックを正しく機能させるには、ライトバックに対して表ビューを有効にする際に、ビューでのレコードの挿入および更新に使用するライトバック・テンプレートの名前をコンテンツ・デザイナが指定する必要があります。

    次の例では、SetQuotaUseIDというライトバック・テンプレートを指定しています。

    <WebMessage name="SetQuotaUseID">
    
  • セキュリティ要件を満たすために、レコードの挿入と更新を実行するSQLコマンドとともに接続プールを指定する必要があります。これらのSQLコマンドでは、ライトバック・スキーマで渡され、データベース表を変更するためのSQL文を生成する値が参照されます。値は列位置(@1や@3など)または列ID(@{c1234abc}や@{c687dfg}など)によって参照できます。列位置の開始番号は1です。列IDの使用が優先されます。各列IDはランダムに生成された英数字であり、分析エディタの「詳細設定」タブにある分析のXML定義に表示されます。

  • <insert>要素と<update>要素の両方をテンプレートに含める必要があります。これらの要素内にSQLコマンドを挿入しない場合は、開始タグと終了タグの間に空白を挿入する必要があります。たとえば、次のように要素を入力する必要があります。

    <insert> </insert>
    

    次は不適切な例です

    <insert></insert>
    

    空白を省略すると、「システムがライトバック・テンプレート'my_template'を読み取ることができません。」のようなライトバック・エラー・メッセージが表示されます。

  • パラメータのデータ型が整数または実数でない場合は、一重引用符で値を囲みます。データベースがコミットを自動的に実行しない場合は、insertノードとupdateノードの後にオプションのpostUpdateノードを追加してコミットを強制的に実行します。一般的なpostUpdateノードの例を次に示します。

    <postUpdate>COMMIT</postUpdate>
    

例20-1 例: ライトバック・テンプレート・ファイル

列IDで値を参照するライトバック・テンプレート・ファイルは次のようなものです。

<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
   <WebMessage name="SetQuotaUseID">
      <XML>
         <writeBack connectionPool="Supplier">
            <insert>INSERT INTO regiontypequota VALUES(@{c0},@{c1},'@{c2}','@{c3}',@{c4})</insert>
            <update>UPDATE regiontypequota SET Dollars=@{c4} WHERE YR=@{c0} AND Quarter=@{c1} AND Region='@{c2}' AND ItemType='@{c3}'</update>
         </writeBack>
      </XML>
   </WebMessage>
</WebMessageTable>
</WebMessageTables>

列位置で値を参照するライトバック・テンプレート・ファイルは次のようなものです。

<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
   <WebMessage name="SetQuota">
      <XML>
         <writeBack connectionPool="Supplier">
            <insert>INSERT INTO regiontypequota VALUES(@1,@2,'@3','@4',@5)</insert>
            <update>UPDATE regiontypequota SET Dollars=@5 WHERE YR=@1 AND Quarter=@2 AND Region='@3' AND ItemType='@4'</update>
         </writeBack>
      </XML>
   </WebMessage>
</WebMessageTable>
</WebMessageTables>