Write-back permite que os usuários atualizem dados em análises.
Tópicos:
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:
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>
Os administradores podem permitir que os usuários editem dados em análises e painéis de controle.
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.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.
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.
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>