Развертывание функции обратной записи

Обратная запись позволяет пользователям обновлять данные из анализов.

Темы:

О функции обратной записи для администраторов

Функция обратной записи позволяет пользователям обновлять данные непосредственно с информационных панелей и анализов.

Пользователи с разрешением Записать обратно в базу данных видят в анализах поля обратной записи как редактируемые поля. Введенные значения сохраняются в базе данных. Пользователи без разрешения Записать обратно в базу данных видят поля обратной записи как поля, доступные только для чтения.

Если пользователь вводит значение в редактируемое поле и нажимает кнопку "Обратная запись", приложение выполняет SQL-команду insert или update, определенную в шаблоне обратной записи. Если команда выполнена успешно, анализ обновляется с учетом нового значения. Если при чтении шаблона или выполнении SQL-команды произошла ошибка, отображается сообщение об ошибке.

Команда insert выполняется, когда запись еще не существует и пользователь вводит новые данные в таблицу. В этом случае пользователь ввел запись таблицы, значение которой изначально было неопределенным (null). Команда update выполняется, когда пользователь изменяет существующие данные. Чтобы отобразить запись, которая еще не существует в физической таблице, можно создать другую аналогичную таблицу. Используйте такую похожую таблицу для отображения формальных записей, которые пользователь может изменить.

Примечание.:

При создании шаблонов обратной записи необходимо указывать команду insert и команду update, даже если обе они не используются. Например, если выполняется только insert, необходимо включить пустую инструкцию update<update></update>, как в этом XML-коде:

Здесь приведен образец файла обратной записи XML, который содержит две команды insert и две пустых инструкции update. Подробнее о том, как создавать и структурировать файлы обратной записи XML, см. в разделе "Создание файлов шаблонов обратной записи".
<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="oracle.bi.presentation/writebackschemas/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>
         </writeBack>
      </XML>
   </WebMessage>
<WebMessage name="SetForecastUseID">
      <XML>
         <writeBack connectionPool="Supplier">
            <insert>INSERT INTO regiontypeforecast VALUES(@{c83ebf607f3cb8320},@{cb7e2046a0fba2204},'@{c5a93e65d31f10e0}','@{c5a93e65d31f10e0}',@{c7322jkl93ev92cd8})</insert>
            <update></update>
         </writeBack>
      </XML>
   </WebMessage>
</WebMessageTable>
</WebMessageTables>

Включение обратной записи в анализах и информационных панелях

Администраторы могут разрешить пользователям редактировать данные в анализах и на информационных панелях.

  1. Настройка семантической модели.

    Примечание.:

    Выполните эти шаги, если для разработки семантических моделей используется инструмент администрирования моделей. Если вы используете средство семантического моделирования, см.

    Включение функции "Обратная запись в столбцах" .

    1. В инструменте администрирования моделей откройте семантическую модель (файл .rpd).
    2. На физическом уровне дважды щелкните по физической таблице, содержащей столбец, для которого требуется включить обратную запись.
    3. Убедитесь, что на вкладке Общие диалогового окна "Физическая таблица" не установлен флажок Кэшируемый. Если этот флажок снят, пользователи Presentation Services могут видеть обновления немедленно.
    4. В слое "Бизнес-модель и сопоставление" дважды щелкните по соответствующему логическому столбцу.
    5. В диалоговом окне "Логический столбец" выберите Записываемый, затем нажмите ОК.
    6. В слое "Презентация" дважды щелкните по столбцу, соответствующему логическому столбцу, для которого включена отложенная запись.
    7. В диалоговом окне "Столбец презентаций" нажмите Разрешения.
    8. Выберите разрешение Чтение/запись для соответствующих пользователей и ролей приложений.
    9. Сохраните изменения.
  2. Создание XML-документа с шаблоном (или шаблонами) обратной записи. См. раздел "Создание файлов шаблонов обратной записи".

    XML-документ может содержать несколько шаблонов. В этом примере показан XML-документ, содержащий два шаблона (SetQuotaUseID и SetForecastUseID).

    <?xml version="1.0" encoding="utf-8" ?>
    <WebMessageTables xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="oracle.bi.presentation/writebackschemas/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>
    <WebMessage name="SetForecastUseID">
          <XML>
             <writeBack connectionPool="Supplier">
                <insert>INSERT INTO regiontypeforecast VALUES(@{c83ebf607f3cb8320},@{cb7e2046a0fba2204},'@{c5a93e65d31f10e01}','@{c5a93e65d31f10e0}',@{c7322jkl93ev92cd8})</insert>
                <update>UPDATE regiontypeforecast SET Dollars=@{c7322jkl93ev92cd8} WHERE YR=@{c83ebf607f3cb8320} AND Quarter=@{cb7e2046a0fba2204} AND Region='@{c5a93e65d31f10e01}' AND ItemType='@{c5a93e65d31f10e0}'</update>
             </writeBack>
          </XML>
       </WebMessage>
    </WebMessageTable>
    </WebMessageTables>
    Примечание. Необходимо включить элементы <insert> и <update>, даже если они оба не используются. Например, если выполняется только insert, необходимо включить пустую инструкцию update <update></update>.
  3. Скопируйте документ XML, содержащий шаблоны обратной записи, в буфер обмена.
  4. Примените шаблон обратной записи в Oracle Analytics:
    1. Нажмите Консоль, затем Расширенные настройки системы.
    2. В разделе XML файл шаблона обратной записи вставьте шаблон обратной записи, скопированный в шаге 3.
  5. Предоставьте разрешения на использование кода обратной записи:
    1. Перейдите на классическую главную страницу и нажмите Администрирование.
    2. В разделе Безопасность нажмите Управление полномочиями и перейдите к элементу Обратная запись.
    3. Предоставьте аутентифицированному пользователю разрешение Записать обратно в базу данных.
    4. Предоставьте администратору сервиса BI разрешение Управление обратной записью.
  6. Чтобы включить обратную запись в столбцах, выполните указанные ниже действия.
    1. В редакторе анализа отобразите свойства столбца, для которого необходимо включить обратную запись.
    2. В диалоговом окне "Свойства столбца" перейдите на вкладку Обратная запись.
      Если для столбца разрешена обратная запись в семантической модели, тогда доступно поле Разрешить обратную запись.
    3. Выберите команду Разрешить обратную запись.
    4. Чтобы изменить значение по умолчанию, укажите значение других параметров.
    5. Сохраните изменения.
    Для столбца разрешена обратная запись в любом анализе, содержащем этот столбец.
  7. Чтобы включить обратную запись в табличных представлениях, выполните указанные ниже действия.
    1. В редакторе анализа откройте табличное представление для редактирования.
    2. Нажмите Просмотр свойств.
    3. В диалоговом окне "Свойства таблицы" перейдите на вкладку Обратная запись.
    4. Выберите команду Разрешить обратную запись.
    5. Выберите поле Имя шаблона, укажите значение "WebMessage name=" в шаблоне обратной записи, указанном в ходе выполнения шага 2.
      Например, в поле Имя шаблона для примера шаблона в ходе выполнения шага 2 задано значение "SetQuotaUseID".
    6. Сохраните изменения.

Ограничения обратной записи

Пользователи могут выполнять обратную запись данных в любой источник данных, который позволяет выполнять запросы SQ из Oracle Analytics.

При настройке обратной записи помните о следующих ограничениях:

  • Числовые столбцы должны содержать только числа. Они не должны содержать никаких символов форматирования данных, таких как знаки доллара ($), знаки фунта или хэша (#), знаки процента (%) и т. д.

  • Текстовые столбцы должны содержать только строковые данные.

  • Если пользователь, вошедший в систему, уже просматривает инфопанель с анализом, в котором данные изменены с помощью обратной записи, данные не будут автоматически обновляться на инфопанели. Чтобы увидеть обновленные данные, пользователь должен вручную обновить инфопанель.

  • Механизм шаблонов можно использовать только с табличными представлениями и только для данных с одним значением. Механизм шаблонов не поддерживается для представлений сводных таблиц или любых других типов представлений, для данных с несколькими значениями или для раскрывающихся столбцов с данными с одним значением.

  • Все значения в столбцах обратной записи можно редактировать. При отображении в контексте не для печати редактируемые поля отображаются так, как будто у пользователя есть разрешение Записать обратно в базу данных. Однако когда логический столбец сопоставляется с физическим столбцом, который может изменяться, логический столбец возвращает значения для нескольких пересечений уровней. Этот сценарий может вызвать проблемы.

  • Любое поле в анализе можно пометить как поле обратной записи, даже если оно не является производным от созданной таблицы обратной записи. Однако невозможно выполнить операцию обратной записи, если в таблице не разрешена обратная запись. Ответственность за правильную маркировку полей лежит на разработчике контента.

  • Шаблон может содержать инструкции SQL, отличные от insert и update. Функция обратной записи передает эти инструкции в базу данных. Однако Oracle не поддерживает и не рекомендует использовать инструкции, отличные от insert или update.

  • Oracle Analytics выполняет только минимальную проверку введенных данных. Если пользователь вводит текстовые данные в числовое поле, Oracle Analytics обнаруживает это и предотвращает попадание недопустимых данных в базу данных. Однако другие формы ввода некорректных данных (значения вне диапазона, смешанные текстовые и числовые значения и т. д.) не обнаруживаются. Когда пользователь нажимает на кнопку обратной записи и запускает вставку или обновление, недопустимые данные приводят к появлению сообщения об ошибке в базе данных. Затем пользователь может исправить ошибочный ввод. Разработчики контента могут включить текст в анализ обратной записи, чтобы помочь пользователю, например, "Ввод смешанных буквенно-цифровых значений в числовое поле данных не допускается".

  • Механизм шаблонов не подходит для ввода произвольных новых записей. Не стоит его использовать в качестве инструмента для ввода данных.

  • При создании таблицы обратной записи убедитесь, что хотя бы в один столбец не включена возможность обратной записи, но включены значения, которые уникальны для каждой строки и не являются неопределенными.

  • Анализ обратной записи не поддерживает детализацию. Поскольку детализация изменяет структуру таблицы, шаблон обратной записи не работает.

    Внимание.:

    Механизм шаблонов принимает пользовательский ввод и записывает его непосредственно в базу данных. За безопасность физической базы данных отвечает пользователь. Для обеспечения оптимальной безопасности храните таблицы базы данных с обратной записью в уникальном экземпляре базы данных.

Создание файлов шаблонов обратной записи

Файл шаблона обратной записи – это файл в формате XML, содержащий один или несколько шаблонов обратной записи.

Шаблон обратной записи состоит из элемента WebMessage, в котором указывается имя шаблона, пул подключений и операторы SQL, необходимые для вставки и обновления записей в созданных таблицах и столбцах обратной записи. Когда разработчики контента включают табличное представление для обратной записи, они должны указать имя шаблона обратной записи, который будет использоваться для вставки и обновления записей в табличном представлении.

Требования к шаблону обратной записи

Шаблон обратной записи должен соответствовать следующим требованиям:

  • WebMessage: необходимо указать имя шаблона обратной записи с помощью атрибута name в элементе WebMessage.

    Чтобы обратная запись работала правильно, при включении ее в табличное представление разработчик контента должен указать имя шаблона обратной записи, который будет использоваться для вставки и обновления записей в представлении.

    В примере показан шаблон обратной записи под именем SetQuotaUseID.

    <WebMessage name="SetQuotaUseID">
    
  • connectionPool: для соответствия требованиям безопасности необходимо указать пул подключений, а также команды SQL для вставки и обновления записей. Эти команды SQL ссылаются на значения, которые передаются в схеме обратной записи, чтобы сгенерировать инструкции SQL для изменения таблицы базы данных.

  • VALUES: на значения столбцов можно ссылаться по идентификатору столбца или по позиции столбца. Предпочтительнее использовать идентификатор столбца.

    Заключите значения строк и дат в одинарные кавычки. Одинарные кавычки не требуются для числовых значений.

    • Идентификатор столбца – идентификатор каждого столбца является буквенно-цифровым и генерируется случайным образом. Идентификаторы столбцов можно найти в определении XML анализа, которое доступно на вкладке Дополнительно редактора анализа. Например, значения идентификаторов столбцов могут быть следующими: @{c5f6e60e1d6eb1098}, @{c3a93e65731210ed1}, '@{c6b8735ea60ff3011}'

      Если используется идентификатор столбца, обратная запись продолжает работать даже при изменении порядка столбцов.

      XML на вкладке "Дополнительно" редактора анализа

    • Положение столбца – нумерация положения столбцов начинается с 1. Например, значения положения столбцов могут быть следующими: @1, @3, '@5'

      Если порядок столбцов меняется, обратная запись больше не работает, и это причина, по которой идентификаторы столбцов предпочтительнее.

  • Необходимо включить в шаблон оба элемента: <insert> и <update>. Если не требуется включать команды SQL в элементы, то между открывающим и закрывающим тегами нужно вставить пробел. Например, необходимо ввести такой элемент:

    <insert> </insert>
    

    А не такой:

    <insert></insert>
    

    Если опустить пробел, появится сообщение об ошибке обратной записи, например "Система не может прочитать шаблон обратной записи 'my_template'".

  • Если тип данных параметра не является целым или вещественным числом, заключите его в одинарные кавычки. Если база данных не выполняет завершения транзакций автоматически, добавьте необязательный узел postUpdate после узлов insert и update, чтобы принудительно выполнить завершение транзакции. Узел postUpdate обычно следует этому примеру:

    <postUpdate>COMMIT</postUpdate>
    

Пример обратной записи файла шаблона с использованием синтаксиса идентификатора столбца

Файл шаблона обратной записи, ссылающийся на значения по идентификатору столбца, может выглядеть так:

<?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>