вторник, 4 октября 2016 г.

Особенности использования WriteBack

1. При изменении файла xml с SQL скриптами - BI не нужно перегружать для Windows системы. Достаточно перезагрузить метаданные
2. Обязательно должны быть заполнены блоки insert и update. Почему оно иногда берет одно - иногда другое, непонятно
3. Если в SQL указаны номера колонок, а не их имена, то имена должны соответствовать номерам в представлении таблица, а не закладке - критерии.
4. Если нужно указывать названия колонок, то их надо указать в xml отчета в параметре ID и использовать в скриптах: @{имя}. Если по номеру колонки: то @1.
5. В скриптах можно запускать блоки процедур!
6. Права на WriteBack можно давать и на уровне привелегий web-каталога. По умолчанию - они заблокированы
Пример XML:

 <?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="WriteBackCoef">
         <XML>
            <writeBack connectionPool="Budget Planning WriteBack">
              <update>UPDATE BUDGET.D_KOEF_VALUE SET KOEF_VALUE = @3 WHERE KOEF_SAP_CODE =  @1 </update>
            </writeBack>
         </XML>
      </WebMessage>
      <WebMessage name="WriteBackFact">
         <XML>
            <writeBack connectionPool="Budget Planning WriteBack">
          <insert>UPDATE BUDGET.F_FACT_VALUE_MANUAL SET
        MONTH_01 = @{c2},
        MONTH_02 = @{c3},
        MONTH_03 = @{c4}, 
        MONTH_04 = @{c5},
        MONTH_05 = @{c6},
        MONTH_06 = @{c7},
        MONTH_07 = @{c8},
        MONTH_08 = @{c9},
        MONTH_09 = @{c10},
        MONTH_10 = @{c11},
        MONTH_11 = @{c12},
        MONTH_12 = @{c13}
        WHERE ID='@{c1}'</insert>
              <update>UPDATE BUDGET.F_FACT_VALUE_MANUAL SET
        MONTH_01 = @{c2},
        MONTH_02 = @{c3},
        MONTH_03 = @{c4}, 
        MONTH_04 = @{c5},
        MONTH_05 = @{c6},
        MONTH_06 = @{c7},
        MONTH_07 = @{c8},
        MONTH_08 = @{c9},
        MONTH_09 = @{c10},
        MONTH_10 = @{c11},
        MONTH_11 = @{c12},
        MONTH_12 = @{c13}
        WHERE ID='@{c1}'</update>
            </writeBack>
         </XML>
      </WebMessage>
<WebMessage name="AddBudgetPeriod">
         <XML>
            <writeBack connectionPool="Budget Planning WriteBack">
          <insert>declare
 v_result varchar2(500);
begin
  azeri_utils.create_new_budget_period(@2, 'AUTO', 'Добавить',  v_result);
commit;
 end;</insert>
              <update>declare
 v_result varchar2(500);
begin
  azeri_utils.create_new_budget_period(@2, 'AUTO', 'Добавить',  v_result);
commit;
 end;</update>
            </writeBack>
         </XML>
      </WebMessage>
<WebMessage name="DeleteBudgetPeriod">
         <XML>
            <writeBack connectionPool="Budget Planning WriteBack">
          <insert>declare
 v_result varchar2(500);
begin
  azeri_utils.create_new_budget_period(@2, 'AUTO', 'Удалить',  v_result);
commit;
 end;</insert>
              <update>declare
 v_result varchar2(500);
begin
  azeri_utils.create_new_budget_period(@2, 'AUTO', 'Удалить',  v_result);
commit;
 end;</update>
            </writeBack>
         </XML>
      </WebMessage>
  <WebMessage name="ChangeStatus">
         <XML>
            <writeBack connectionPool="Budget Planning WriteBack">
          <insert>declare
 v_result varchar2(500);
begin
  azeri_utils.update_status(@1, '@2', '@4', 'AUTO',  v_result);
 end;</insert>
              <update>declare
 v_result varchar2(500);
begin
  azeri_utils.update_status(@1, '@2', '@4', 'AUTO',  v_result);
 end;</update>
            </writeBack>
         </XML>
      </WebMessage>
   </WebMessageTable>
</WebMessageTables>

Комментариев нет:

Отправить комментарий