Implementar Write-back

O write-back permite que os utilizadores atualizem dados das análises.

Tópicos:

Acerca de Write-back para Administradores

O write-back permite que os utilizadores atualizem os seus dados diretamente nos dashboards e análises.

Os utilizadores com o privilégio Write-Back na Base de Dados veem os campos de write-back como campos editáveis nas análises. Os valores introduzidos são gravados na base de dados. Os utilizadores sem o privilégio Write-Back na Base de Dados veem os campos de write-back como campos só de leitura.

Se um utilizador escrever um valor num campo editável e clicar no botão de write-back, a aplicação executa o comando de SQL insert ou update definido num modelo de write-back. Se o comando for bem-sucedido, a análise é atualizada com o novo valor. Se ocorrer um erro ao ler o modelo ou ao executar o comando de SQL, é apresentada uma mensagem de erro.

O comando insert é executado quando um registo ainda não existir e o utilizador introduzir novos dados na tabela. Neste caso, o utilizador escreveu um registo de tabela cujo valor original era nulo. O comando update é executado quando um utilizador modificar os dados existentes. Para apresentar um registo que ainda não existe na tabela física, pode criar outra tabela semelhante. Utilize esta tabela semelhante para apresentar os registos de repositório de valores que um utilizador pode modificar.

Nota:

Quando criar modelos de write-back, deve incluir um comando insert e um comando update, mesmo que ambos não sejam utilizados. Por exemplo, se estiver apenas a executar um comando insert, deve incluir uma instrução update vazia <update></update>, como neste código de XML:

Segue-se um exemplo de ficheiro XML de write-back que contém dois comandos insert e duas instruções update vazias. Para obter mais informações sobre como criar e estruturar ficheiros XML de write-back, consulte Criar Ficheiros de Modelos 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 nas Análises e Dashboards

Os administradores podem permitir que os utilizadores editem os dados em análises e dashboards.

  1. Configure o seu modelo semântico.

    Nota:

    Siga estes passos se utilizar o Model Administration Tool para desenvolver modelos semânticos. Se utiliza o Modelador Semântico, consulte

    Ativar Write Back nas Colunas .

    1. No Model Administration Tool, abra o seu modelo semântico (ficheiro .rpd).
    2. Na camada Física, faça duplo clique na tabela física que contém a coluna para a qual pretende ativar o write-back.
    3. No separador Geral da caixa de diálogo Tabela Física, certifique-se de que Passível de Colocação na Cache não está selecionado. Anular a seleção desta opção garante que os utilizadores do Presentation Services podem ver as atualizações imediatamente.
    4. Na camada Modelo de Negócio e Correspondência, faça duplo clique na coluna lógica correspondente.
    5. Na caixa de diálogo Coluna Lógica, selecione Passível de Escrita, em seguida, clique em OK.
    6. Na camada Apresentação, faça duplo clique na coluna que corresponde à coluna lógica para a qual ativou o write-back.
    7. Na caixa de diálogo Coluna de Apresentação, clique em Permissões.
    8. Selecione a permissão Ler/Escrever para os utilizadores adequados e perfis de grupo da aplicação.
    9. Grave as alterações.
  2. Crie um documento XML com o seu modelo (ou modelos) de write-back. Consulte Criar Ficheiros de Modelos de Write-Back.

    O seu documento XML pode conter vários 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>
    Nota: Deve incluir um elemento <insert> e um elemento <update>, mesmo que nenhum dos dois seja utilizado. Por exemplo, se estiver apenas a efetuar uma insert, deve incluir uma instrução update vazia <update></update>.
  3. Copie o documento XML com os seus modelos de write-back para a área de transferência.
  4. Aplique o seu modelo de write-back no Oracle Analytics:
    1. Clique em Consola e, em seguida, clique em Definições do Sistema.
    2. Em Modelo XML de Write-Back, cole o modelo de write-back que copiou no Passo 3.
  5. Conceda permissões para utilizar o código de write-back:
    1. Navegue até à Página Principal Clássica, em seguida, clique em Administração.
    2. Em Segurança, clique em Gerir Privilégios e navegue até Write Back.
    3. Conceda o privilégio Write-Back na Base de Dados ao Utilizador Autenticado.
    4. Conceda o privilégio Gerir Write-Back ao Administrador do Serviço de BI.
  6. Para ativar o write-back nas colunas:
    1. No editor de análises, apresente as Propriedades da Coluna referentes à coluna onde pretende ativar o write-back.
    2. Na caixa de diálogo Propriedades da Coluna, clique no separador Write Back.
      Se a coluna tiver sido ativada para atualização no modelo semântico, a caixa Ativar Write Back está disponível.
    3. Selecione a opção Ativar Write Back.
    4. Especifique o valor de outras opções se pretender altera o valor por omissão.
    5. Grave as alterações.
    A coluna é ativada para efetuar write-back em qualquer análise que inclua esta coluna.
  7. Para ativar o write-back nas visualizações de tabela:
    1. No editor de análises, abra a visualização de tabela para edição.
    2. Clique em Propriedades da Visualização.
    3. Na caixa de diálogo Propriedades da Tabela, clique no separador Write Back.
    4. Selecione a opção Ativar Write Back.
    5. Selecione a caixa Nome do Modelo, especifique o valor de "WebMessage name=" no modelo de write-back que especificou no Passo 2.
      Por exemplo, o Nome do Modelo para o modelo de exemplo no Passo 2 é 'SetQuotaUseID'.
    6. Grave as alterações.

Limitações de Write-Back

Os utilizadores podem efetuar o write-back para qualquer origem de dados que permita a execução das consultas de SQL do Oracle Analytics .

À medida que configura o write-back, não se esqueça do seguinte:

  • As colunas numéricas devem conter apenas números. Não devem conter caracteres de formatação de dados, como cifrões ($), cardinais (#), símbolos de percentagem (%), etc.

  • As colunas de texto devem conter apenas dados de cadeia de caracteres.

  • Se um utilizador com sessão iniciada já estiver a visualizar um dashboard que contenha uma análise em que os dados foram modificados utilizando o write-back, os dados não são automaticamente renovados no dashboard. Para ver os dados atualizados, o utilizador deve renovar manualmente o dashboard.

  • Só pode utilizar o mecanismo de modelo com visualizações de tabela para dados de valor único. O mecanismo não é suportado para visualizações de tabela dinâmica ou quaisquer tipos de visualização, para dados de valores múltiplos ou para colunas pendentes com dados de valor único.

  • Todos os valores nas colunas de write-back são editáveis. Ao serem apresentados num contexto não compatível com impressão, os campos editáveis são apresentados como se utilizador tivesse o privilégio Write-Back na Base de Dados. No entanto, quando a correspondência de uma coluna lógica é feita com uma coluna física que pode ser alterada, a coluna lógica devolve valores para múltiplas intersecções de nível. Este cenário poderá causar problemas.

  • Qualquer campo numa análise pode ser indicado como um campo de write-back, mesmo que não seja derivado da tabela de write-back que criou. No entanto, não pode executar com êxito a operação de write-back se a tabela não estiver ativada para write-back. É da responsabilidade do designer de conteúdo identificar corretamente os campos.

  • Um modelo pode conter instruções de SQL diferentes de insert e update. A função de write-back transmite estas instruções para a base de dados. No entanto, a Oracle não suporta nem recomenda a utilização de quaisquer instruções diferentes de insert ou update.

  • O Oracle Analytics só executa a validação mínima da entrada de dados. Se o campo for numérico e o utilizador introduzir dados de texto, o Oracle Analytics deteta e evita o acesso dos dados inválidos à base de dados. No entanto, não deteta outras formas de entrada de dados inválidos (valores fora do intervalo, de texto misto e numéricos, etc.). Quando o utilizador clica no botão de write-back e é executada uma inserção ou atualização, os dados inválidos resultam numa mensagem de erro da base de dados. Em seguida, o utilizador pode corrigir a entrada de dados com falhas. Os designers de conteúdo incluem texto na análise de write-back para ajudar o utilizador, por exemplo, "Introduzir valores alfanuméricos mistos num campo de dados numéricos não é permitido."

  • O mecanismo de modelo não é adequado para a introdução de novos registos arbitrários. Por outras palavras, não utilize como uma ferramenta de entrada de dados.

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

  • As análises de write-back não suportam o aprofundamento de detalhes. Uma vez que o aprofundamento de detalhes modifica a estrutura da tabela, o modelo de write-back não funciona.

    Atenção:

    O mecanismo de modelo assume a entrada de dados do utilizador e escreve-o diretamente na base de dados. A segurança da base de dados física é da responsabilidade do utilizador. Para uma segurança ideal, armazene as tabelas de base de dados de write-back numa única instância de base de dados.

Criar Ficheiros de Modelos de Write-Back

Um ficheiro de modelo de write-back é um ficheiro formatado como XML que contém um ou mais modelos de write-back.

Um modelo de write-back consiste num elemento WebMessage que especifica o nome do modelo, o pool de ligações e as instruções de SQL que são necessários para inserir e atualizar registos nas tabelas de write-back e colunas que criou. Quando os designers de conteúdo ativam uma visualização de tabela para write-back, devem especificar o nome do modelo de write-back a utilizar para inserir e atualizar os registos na visualização de tabela.

Requisitos para um Modelo de Write-Back

Um modelo de write-back deve cumprir os seguintes requisitos:

  • WebMessage: Deve especificar um nome do modelo de write-back utilizando o atributo name no elemento WebMessage.

    Para o write-back funcione corretamente, ao ativar uma visualização de tabela para write-back, um designer de conteúdo deve especificar o nome do modelo de write-back a utilizar para inserir e atualizar os registos na visualização.

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

    <WebMessage name="SetQuotaUseID">
    
  • connectionPool: Para cumprir os requisitos de segurança, deve especificar o pool de ligações juntamente com os comandos de SQL para inserir e atualizar registos. Estes comandos de SQL referenciam os valores que são transmitidos no schema de write-back para gerar as instruções de SQL de modo a modificar a tabela de base de dados.

  • VALUES: Os valores de coluna podem ser referenciados por ID da coluna ou posição da coluna. A utilização da ID da coluna é preferencial.

    Coloque entre plicas os valores de cadeia de caracteres e de data. As plicas não são necessárias em valores numéricos.

    • ID de coluna - Cada ID de coluna é alfanumérico e gerado aleatoriamente. Pode encontrar IDs de coluna na definição de XML da análise disponível no separador Avançadas do editor de análises. Por exemplo, valores de ID de coluna como: @{c5f6e60e1d6eb1098}, @{c3a93e65731210ed1}, '@{c6b8735ea60ff3011}'

      Quando utiliza IDs de coluna, o write-back continua a funcionar mesmo quando a ordem das colunas muda.

      XML no separador Avançadas do editor de análises

    • Posição de coluna - As posições de coluna começa com o número 1. Por exemplo, valores de posição de coluna como: @1, @3, '@5'

      Se a ordem das colunas for alterada, o write-back deixa de funcionar e este é o motivo pelo qual as IDs de coluna são preferenciais.

  • Deve incluir tanto um elemento <insert> como um <update> no modelo. Se não pretender incluir comandos de SQL nos elementos, deve inserir um espaço em branco entre os identificadores de abertura e de fecho. Por exemplo, deve introduzir o elemento como:

    <insert> </insert>
    

    Em vez de:

    <insert></insert>
    

    Se 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 plicas. Se a base de dados não fizer Confirmações automaticamente, acrescente o nó opcional postUpdate após os nós insert e update para forçar a confirmação. Normalmente, o nó postUpdate segue este exemplo:

    <postUpdate>COMMIT</postUpdate>
    

Exemplo de Ficheiro de Modelo de Write-Back Utilizando a Sintaxe da ID da Coluna

Um ficheiro de modelo de write-back que referencia valores por ID de coluna pode ser semelhante ao seguinte 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 Ficheiro de Modelo de Write-Back Utilizando a Sintaxe da Posição da Coluna

Um ficheiro de modelo de write-back que referencia valores por posição de coluna pode ser semelhante ao seguinte 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>