回写模板文件是一个 XML 格式的文件,其中包含一个或多个回写模板。
回写模板由以下项组成:指定模板名称的 WebMessage 元素、连接池,以及在创建的回写表与列中插入和更新记录所需的 SQL 语句。当内容设计者启用表视图进行回写时,他们必须指定用于在表视图中插入和更新记录的回写模板的名称。
回写模板必须满足以下要求:
WebMessage:您必须使用 WebMessage 元素中的 name 属性来指定回写模板的名称。
为了使回写正常工作,在启用表视图进行回写后,内容设计者必须指定用于在视图中插入和更新记录的回写模板的名称。
以下示例显示了名为 SetQuotaUseID 的回写模板。
<WebMessage name="SetQuotaUseID">
connectionPool:为满足安全要求,您必须在指定连接池的同时指定用于插入和更新记录的 SQL 命令。这些 SQL 命令会引用回写方案中传递的值,以生成用于修改数据库表的 SQL 语句。
VALUES:列值可通过列 ID 或列位置引用。首选方式是使用列 ID。
字符串和日期值应使用单引号括起来。数字值不需要加单引号。
列 ID — 每个列 ID 都是随机生成的字母数字。您可以在分析的 XML 定义中找到列 ID;XML 定义位于分析编辑器的高级选项卡。例如 @{c5f6e60e1d6eb1098}、@{c3a93e65731210ed1}、'@{c6b8735ea60ff3011}',这些都是列 ID 值。
当使用列 ID 时,即使列的顺序发生变化,回写也能继续正常工作。

列位置 — 列位置从 1 开始编号。例如 @1、@3、'@5',这些都是列位置值。
当列的顺序发生变化时,回写无法再正常工作,这就是首选使用列 ID 的原因。
必须在模板中包含 <insert> 和 <update> 元素。如果您不想在元素中包含 SQL 命令,那么您必须在开始标记和结束标记之间插入一个空格。例如,您必须按如下方式输入元素:
<insert> </insert>
而不是:
<insert></insert>
如果您省略了空格,则会看到回写错误消息,例如“系统无法读取回写模板 'my_template'”。
如果参数的数据类型不是整数或实数,则应使用单引号将其括起来。如果数据库不自动提交,则可以在 insert 和 update 节点后添加可选的 postUpdate 节点,以强制提交。postUpdate 节点通常如以下示例所示:
<postUpdate>COMMIT</postUpdate>
使用列 ID 语法的回写模板文件示例
通过列 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(@{c5f6e60e1d6eb1098},@{c5d7e483445037d9e},'@{c3a93e65731210ed1}','@{c6b8735ea60ff3011}',@{c0432jkl53eb92cd8})</insert>
<update>UPDATE regiontypequota SET Dollars=@{c0432jkl53eb92cd8} WHERE YR=@{c5f6e60e1d6eb1098} AND Quarter=@{c5d7e483445037d9e} AND Region='@{c3a93e65731210ed1}' AND ItemType='@{c6b8735ea60ff3011}'</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>