Implantar Write-back

Write-back permite que os usuários atualizem dados em análises.

Tópicos:

Sobre Write-back para Administradores

Write-back permite que os usuários atualizem seus dados diretamente em painéis de controle e análises.

Os usuários com o privilégio Fazer Write Back no Banco de Dados veem os campos de write-back como editáveis nas análises. Os valores que eles digitam são salvos no banco de dados. Os usuários sem o privilégio Fazer Write Back no Banco de Dados veem os campos de write-back como somente para leitura.

Se um usuário digitar um valor em um campo editável e clicar no botão de write-back, o aplicativo executará o comando SQL insert ou update definido em um modelo de write-back. Se o comando for bem-sucedido, a análise será atualizada com o novo valor. Se houver um erro de leitura do modelo ou de execução do comando SQL, uma mensagem de erro será exibida.

O comando insert é executado quando um registro não existe ainda e o usuário insere novos dados na tabela. Nesse caso, o usuário digitou um registro na tabela cujo valor original era nulo. O comando update é executado quando um usuário modifica dados existentes. Para exibir um registro que não existe ainda na tabela física, você pode criar outra tabela semelhante. Use essa tabela semelhante para exibir registros de placeholder que um usuário pode modificar.

Nota:

Ao criar modelos de write-back, inclua os comandos insert e update, mesmo que nenhum dos dois seja usado. Por exemplo, se você estiver executando apenas um comando insert, inclua uma instrução update vazia <update></update>, como neste código XML:

Veja uma amostra de arquivo XML de write-back que contém dois comandos insert e duas instruções update vazias. Para saber mais sobre como criar e estruturar arquivos XML de write-back, consulte Criar Arquivos de Modelo de Write-Back.
<?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>

Ativar Write-back em Análises e Painéis de Controle

Os administradores podem permitir que os usuários editem dados em análises e painéis de controle.

  1. Configurar seu modelo semântico.

    Nota:

    Siga estas etapas se você usar o Model Administration Tool para desenvolver modelos semânticos. Se você usar o Semantic Modeler, consulte

    Ativar Write Back em Colunas .

    1. No Model Administration Tool, abra seu modelo semântico (arquivo .rpd).
    2. Na camada Física, clique duas vezes na tabela física que contém a coluna que deverá ter o write-back ativado.
    3. Na guia Geral da caixa de diálogo Tabela Física, certifique-se de que a opção Armazenável no Cache não esteja marcada. Se essa opção ficar desmarcada, os usuários do Presentation Services poderão ver atualizações imediatamente.
    4. Na camada Modelo de Negócios e Mapeamento, clique duas vezes na coluna lógica correspondente.
    5. Na caixa de diálogo Coluna Lógica, selecione Gravável e clique em OK.
    6. Na camada Apresentação, clique duas vezes na coluna que corresponde à coluna lógica que deverá ter o write-back ativado.
    7. Na caixa de diálogo Coluna de Apresentação, clique em Permissões.
    8. Selecione a permissão Leitura/Gravação para os usuários e as atribuições de aplicativo apropriados.
    9. Salve suas alterações.
  2. Crie um documento XML com seu modelo (ou modelos) de write-back. Consulte Criar Arquivos de Modelo de Write-Back.

    Seu documento XML pode conter diversos modelos. Este exemplo mostra um documento XML que contém dois modelos (SetQuotaUseID e 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>
    Observação: Inclua os elementos <insert> e <update>, mesmo que nenhum dos dois seja usado. Por exemplo, se você estiver executando apenas insert, deverá incluir a instrução update vazia <update></update>.
  3. Copie para a área de transferência o documento XML que contém seus modelos de write-back.
  4. Aplicar seu modelo de write-back no Oracle Analytics:
    1. Clique em Console e depois clique em Definições Avançadas do Sistema.
    2. Em XML do Modelo de Writeback, cole o modelo de write-back que você copiou na Etapa 3.
  5. Conceder permissões para usar o código de write-back:
    1. Navegue até Classic home e clique em Administração.
    2. Em Segurança, clique em Gerenciar Privilégios e navegue até Write Back.
    3. Conceda a permissão Fazer Write Back no Banco de Dados ao Usuário Autenticado.
    4. Conceda a permissão Gerenciar Write Back ao Administrador de Serviços do BI.
  6. Para ativar write-back em colunas:
    1. No editor de análise, exiba as Propriedades da Coluna na qual deseja ativar o write-back.
    2. Na caixa de diálogo Propriedades da Coluna, clique na guia Write Back.
      Se a coluna tiver sido ativada para write-back no modelo semântico, a caixa Ativar Write-Back estará disponível.
    3. Selecione a opção Ativar Write Back.
    4. Especifique o valor de outras opções se quiser alterar o padrão.
    5. Salve suas alterações.
    A coluna é ativada para write-back em qualquer análise que inclua essa coluna.
  7. Para ativar write-back em views de tabela:
    1. No editor de análise, abra a view de tabela para edição.
    2. Clique em Exibir Propriedades.
    3. Na caixa de diálogo Propriedades da Tabela, clique na guia Write Back.
    4. Selecione a opção Ativar Write Back.
    5. Marque a caixa Nome do Modelo, especifique o valor de "Nome da WebMessage=" no modelo de write-back que você especificou na Etapa 2.
      Por exemplo, o Nome do Modelo para o exemplo de modelo da Etapa 2 é 'SetQuotaUseID'.
    6. Salve suas alterações.

Limitações de Write-Back

Os usuários podem fazer write-back em qualquer origem de dados que permita a execução de consultas SQL no Oracle Analytics.

Enquanto configura o write-back, tenha em mente as seguintes limitações:

  • As colunas numéricas devem conter apenas números. Elas não devem ter caracteres de formatação de dados, como os sinais de cifrão ($), numérico (#), de porcentagem (%) etc.

  • As colunas de texto devem conter apenas dados de string.

  • Se um usuário conectado já estiver exibindo um painel de controle que contenha uma análise na qual os dados foram modificados usando write-back, os dados não serão atualizados automaticamente no painel de controle. Para ver os dados atualizados, o usuário tem que atualizar manualmente o painel de controle.

  • Você só pode usar o mecanismo de modelo com views de tabela e apenas para dados com valor único. Não há suporte para o mecanismo de modelo em views de tabela dinâmica nem em qualquer outro tipo de view, dados com diversos valores ou colunas drop-down com dados de valor único.

  • Todos os valores nas colunas de write-back são editáveis. Quando exibidos em contexto sem versão para impressão, os campos editáveis são exibidos como se o usuário tivesse o privilégio Fazer Write Back no Banco de Dados. No entanto, quando uma coluna lógica é mapeada para uma coluna física que pode mudar, a coluna lógica retorna valores para diversas interseções de nível. Esse cenário pode causar problemas.

  • Qualquer campo de uma análise pode ser sinalizado como campo de write-back, mesmo que não seja derivado da tabela de write-back que você criou. No entanto, não será possível executar com sucesso a operação de write-back se a tabela não tiver o write-back ativado. A responsabilidade de marcar corretamente os campos é do designer de conteúdo.

  • Um modelo pode conter instruções SQL diferentes de insert e update. A função de write-back transmite essas instruções ao banco de dados. No entanto, a Oracle não oferece suporte nem recomenda o uso de qualquer instrução que não seja insert ou update.

  • O Oracle Analytics só executa validação mínima de entrada de dados. Se o campo for numérico e o usuário digitar dados de texto, o Oracle Analytics detectará e impedirá que dados inválidos entrem no banco de dados. Porém, ele não detecta outras formas de entrada de dados inválidos (valores fora da faixa, texto misto e numérico etc.). Quando o usuário clica no botão de write-back e uma inserção ou atualização é executada, dados inválidos resultam em uma mensagem de erro do banco de dados. O usuário então pode corrigir a entrada com falha. Os designers de conteúdo podem incluir texto na análise de write-back para auxiliar o usuário, por exemplo, "Não é permitido digitar valores alfanuméricos mistos em um campo de dados numéricos".

  • O mecanismo de modelo não é adequado para digitar registros arbitrários novos. Em outras palavras, não o utilize como ferramenta de entrada de dados.

  • Ao criar uma tabela para write-back, certifique-se de que pelo menos uma coluna não inclua o recurso de write-back, mas inclua valores que sejam exclusivos de cada linha e não sejam nulos.

  • As análises de write-back não aceitam drill-down. Como o drill-down modifica a estrutura da tabela, o modelo de write-back não funciona.

    Cuidado:

    O mecanismo de modelo pega a entrada do usuário e a grava diretamente no banco de dados. A segurança do banco de dados físico é sua responsabilidade. Para maior segurança, armazene as tabelas de banco de dados de write-back em uma instância de banco de dados exclusiva.

Criar Arquivos de Modelo de Write-Back

Um arquivo de modelo de write-back tem formato XML e contém um ou mais modelos de write-back.

Um modelo de write-back consiste em um elemento WebMessage que especifica o nome do modelo, o pool de conexão e os elementos SQL que são necessários para inserir e atualizar registros nas tabelas e colunas de write-back que você criou. Quando os designers de conteúdo ativam uma view de tabela para write back, eles devem especificar o nome do modelo de write-back a ser usado para inserir e atualizar os registros na view de tabela.

Requisitos para um Modelo de Write-Back

Um modelo de write-back deve atender aos seguintes requisitos:

  • WebMessage: Você deve especificar um nome para o modelo de write-back usando o atributo name no elemento WebMessage.

    Para que o write-back funcione corretamente, ao ativar uma view de tabela para write-back, um designer de conteúdo deve especificar o nome do modelo de write-back a ser usado para inserir e atualizar os registros na view.

    Este exemplo mostra um modelo de write-back chamado SetQuotaUseID.

    <WebMessage name="SetQuotaUseID">
    
  • connectionPool: Para atender aos requisitos de segurança, especifique o pool de conexão com os comandos SQL para inserir e atualizar registros. Esses comandos SQL referenciam os valores que são transmitidos ao esquema de write-back para gerar as instruções SQL a fim de modificar a tabela do banco de dados.

  • VALUES: Valores de coluna podem ser referenciados por ID da coluna ou posição da coluna. O uso preferencial é ID da coluna.

    Coloque entre aspas simples a string e os valores de data. É obrigatório colocar entre aspas simples os valores numéricos.

    • ID da coluna - Cada ID é alfanumérico e gerado aleatoriamente. Você encontra os IDs de coluna na definição de XML da análise que está disponível na guia Avançado do editor de análise. Por exemplo, valores de ID de coluna como: @{c5f6e60e1d6eb1098}, @{c3a93e65731210ed1}, '@{c6b8735ea60ff3011}'

      Ao usar IDs de coluna, o write-back continua funcionando mesmo quando a ordem das colunas é alterada.

      XML na guia Avançado do editor de análise

    • Posição da coluna - As posições iniciam a numeração com 1. Por exemplo, valores de posição de coluna como: @1, @3, '@5'

      Se a ordem das colunas for alterada, o write-back não funcionará mais e esse é o motivo pelo qual a preferência é pelos IDs de coluna.

  • Inclua os elementos <insert> e <update> no modelo. Se você não quiser incluir comandos SQL nos elementos, insira um espaço em branco entre as tags de abertura e fechamento. Por exemplo, digite o elemento como:

    <insert> </insert>
    

    Em vez de:

    <insert></insert>
    

    Se você omitir o espaço em branco, verá uma mensagem de erro de write-back, como "O sistema não pode ler o Modelo de Write Back 'my_template'".

  • Se o tipo de dados de um parâmetro não for um número inteiro ou real, coloque-o entre aspas simples. Se o banco de dados não fizer Commits automaticamente, adicione o nó postUpdate opcional após os nós insert e update para forçar o commit. O nó postUpdate em geral segue este exemplo:

    <postUpdate>COMMIT</postUpdate>
    

Exemplo de Arquivo de Modelo de Write-Back Usando Sintaxe de ID da Coluna

Um arquivo de modelo de write-back que faz referência a valores pelo ID da coluna pode ser semelhante a este exemplo:

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

Exemplo de Arquivo de Modelo de Write-Back Usando Sintaxe de Posição da Coluna

Um arquivo de modelo de write-back que faz referência a valores pela posição da coluna pode ser semelhante a este exemplo:

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