O SAXES é uma ferramenta que permite realizar conversões de dados sofisticadas entre diversos formatos de dados. Dentre os formatos suportados, encontram-se bancos de dados, documentos XML, arquivos texto (por exemplo, CSV) e páginas HTML.
Aplicações que necessitem manipulação de dados, como por exemplo, projetos de migração ou integração, podem utilizar o SAXES como componente central de todo processamento.
1.2. Que tipos de conversões de dados são suportadas?
Para quase todos os formatos suportados pode-se utilizar conversões bi-direcionais. A única exceção envolve páginas HTML, que somente podem ser usadas como saída de um processo de conversão, nunca como entrada. A lista completa dos processos de conversão implementados está descrita a seguir:
• Base de dados -> Base de dados
• Base de dados -> XML
• Base de dados -> TXT,CSV
• Base de dados -> HTML
• XML -> Base de dados
• XML -> XML
• XML -> TXT,CSV
• XML -> HTML
• TXT,CSV -> Base de dados
• TXT,CSV -> XML
• TXT,CSV -> TXT,CSV
• TXT,CSV -> HTML
1.3. Como eu posso criar um projeto de conversão?
Um projeto de conversão consiste em um esquema de origem, um esquema de destino e mapeamentos entre os esquemas. Os mapeamentos indicam que elementos do esquema de origem correspondem aos elementos do esquema de destino. SAXES usa estas informações para converter dados da fonte para o destino.
1.4. Como eu posso criar mapeamentos entre dois esquemas?
Arraste o elemento de origem para o elemento de destino, para que o mapeamento entre eles seja criado. Você também pode usar a barra de ferramentas de mapeamento para este tipo de tarefa.
1.5. Como eu posso adicionar um esquema a um projeto?
O ambiente de mapeamento possui barras de ferramenta para os esquemas de origem e destino. Use estas barras para adicionar um esquema ao projeto, chamar os editores de esquema, remover o esquema do projeto, entre outras opções.
1.6. Depois da criação dos mapeamentos, como faço para converter os dados?
Você precisa utilizar a janela de conversão. Para abrir esta janela, vá até a opção de menu Conversion – Run Conversion, ou use o botão de conversão na opção na barra de ferramentas principal. Será aberta uma janela de conversão correspondente ao tipo de projeto que você está criando. Por exemplo, para projetos de conversão XML / banco de dados, a janela permitirá que você escolha o arquivo que contenha o documento XML a ser importado, enquanto que, para projetos de conversão XML / XML, além do arquivo de entrada, você deverá setar também o arquivo de saída, onde o resultado da conversão será armazenado. Outros tipos de projeto de conversão poderão possuir diferentes layouts.
1.7. Estou tentando criar projetos que extraiam informações de um arquivo de entrada para outro formato de dados. No entanto, apenas um registro de dados esta´sendo gerado na saída, independentemente do número de registros do arqivo de entrada. O que está acontecendo com os demais registros?
O mecanismo de conversão usado pelo SAXES garante que o arquivo de saída seja sempre válido de acordo com o esquema de destino. Assim, é provável que o esquema de destino esteja com problemas. Verifique se o elemento que deveria se repetir mais de uma vez no arquivo de saída, está setado com a propriedade “isRepeatable”igual a “ true”. Caso contrário, a conversão é interrompida para impedir que o arquivo de saída fique em estado inválido.
Cuidado ao setar a proprierdade “isRepeatable”. Se dois ou mais elementos consecutivos devem se repetir juntos no arquivo de saída, então o elemento repetível deverá ser o elemento pai de ambos. É importante setar esta propriedade corretamente para que o arquivo de saída utilize o formato que você espera.
1.8. Em que casos devo usar o recurso de conversão de esquemas?
A conversão de esquemas pode ser usada para converter um esquema em outro. De certa forma, este recurso se parece com a geração de esquemas guiada por wizard. A diferença é que, enquanto no wizard um esquema de destino é gerado em função do esquema de origem, no conversor de esquemas, um esquema em um dado formato é substituído por outro, de formato diferente, independentemente de ser um esqueam de origem ou destino. Ainda, caso o esquema substituído já esteja sendo mapeado com um outro esquema, pode-se optar por manter os mapeamentos após a conversão.
Este recurso é útil para aumentar o reuso em casos onde dois projetos de conversão devem diferir somente pelo formato de um dos esquemas usados. Por exemplo, em casos onde se tem um projeto de conversão XML / HTML, e seja necessário criar um projeto de conversão, cuja única diferença entre ambos, seja o formato de saída texto. Neste caso não é necessário criar um novo projeto do zero. Basta usar a opção de conversão de esquemas para transformar o esquema HTML em esquema texto.
1.9. Que tipos de mapeamentos são suportados pelo SAXES? Existem elementos que não podem ser casados ?
Como regra geral, apenas elementos atômicos podem ser mapeados. Estes, são chamados de elementos mapeáveis. Geralmente são os elementos folha da árvore dos esquemas. Os nomes dos elementos mapeáveis são pintados em vermelho para facilitar sua identificação.
Mais que uma restrição, esta é a forma que o SAXES utiliza para formar o processo de mapeamento mais transparente. Afinal, são os elementos atômicos que armazenam informações. Mapear os elementos complexos somente tornaria mais difícil a construção e o entendimento da aplicação. Por exemplo, tabelas do banco de dados não podem ser mapeadas. Ao invés disso, mapeie as colunas, que é o que realmente importa. SAXES possui um mecanismo que descobre como as tabelas devem ser usadas durante o processo de conversão.
1.10. Como eu faço para alterar um esquema usado em um projeto de conversão?
Para alterar um esquema que já está sendo usado em um projeto de conversão aberto no ambiente de mapeamento, utilize a barra de ferramentas de esquemas para chamar o editor de esquemas. Uma vez no editor, faça as modificações desejadas. Após o término, salve o esquema e utilize a opção “apply to project”. Esta opção fará com que as alterações realizadas no esquema sejam propagadas para o esquema usado no ambiente de mapeamento. Você também pode aplicar um esquema a um projeto novo ou a algum outro projeto que já esteja aberto no ambiente de mapeamento.
1.11. Porque o esquema do banco de dados possui tabelas dentro de tabelas?
A relação entre tabelas pais e tabelas filhas corresponde ao relacionamento de chave estrangeira entre tabelas. Quando você cria mapeamentos entre uma base de dados e algum outro esquema, deve-se ficar atento a estas tabelas filhas, caso você deseje que o SAXES utilize estes relacionamentos durante o processo de conversão. Por exemplo, para extrair informações de duas tabelas de uma base de dados em um formato mestre detalhe, você deve criar os mapeamentos usando a tabela mestre como a tabela pai da árvore, e a tabela detalhe como a tabela filha.
1.12. Como o recurso de inversão de mapeamentos funciona?
SAXES permite que os mapeamentos de um projeto sejam invertidos de uma maneira simples. Com um clique no mouse, você pode fazer com que os esquemas de origem e destino troquem de lugar, enquanto que os mapeamentos continuam intactos. Este recurso é excelente para casos onde é necessária a troca de dados entre dois esquemas, sendo que qualquer um deles pode atuar como o esquema de origem ou destino, dependendo da situação.
O recurso de inversão de mapeamento aumenta o reuso, já que não é necessário criar dois projetos exatamente iguais, onde apenas as posições dos esquemas mudam. Sempre que for necessário realizar a conversão no sentido inverso, basta inverter a posição dos esquemas.
1.13. Estou usando a ACTION update, mas o SAXES esta gerando comandos UPDATE sem cláusula where, ou seja, todos os registros da base estão sendo atualizados. Como posso corrigir isso ?
Se a action envolver UPDATE, deve-se informar uma ou mais colunas que devem ser usadas como filtro do UPDATE. Caso não sejam fornecidas, o comando funcionará, mas poderá atualizar registros indevidos.
1.14. Como funcionam os filtros?
Um filtro é usado para que alguns elementos não sejam convertidos com base nos seus valores.
Caso o valor de um elemento não satisfaça o filtro, este elemento não é convertido. Além deste elemento, toda a árvore que está relacionada com este elemento também não é convertida. Por exemplo, em uma estrutura mestre-detalhe, caso um elemento do registro detalhe não satisfaça algum filtro, o registro detalhe não será convertido.
A estrutura mestre relacionada à estrutura detalhe que contem o filtro também pode não ser convertida. Isso pode ocorrer em duas situações:
caso a estrutura detalhe seja obrigatória dentro da estrutura mestre.
caso a estrutura detalhe no destino que corresponde a estrutura detalhe na origem tenha freqüência obrigatória.
Nesses casos, se não existe nenhum registro detalhe que satisfaça o filtro, o registro mestre não será convertido. Essa regra é aplicada recursivamente, para todos os níveis de aninhamento que existirem.
1.15. Ao converter XML para XML, esta acontecendo de não ser possível converter todo o XML que está na origem. O XML gerado não possui todas as informações que estavam no XML de origem, e eu não setei nenhum filtro de conversão.
Ao converter XML para XML, ou qualquer outro tipo de conversão que não envolva um banco de dados, serão convertidos apenas os elementos que respeitarem as restrições de obrigatoriedade. Assim, se um elemento é obrigatório no destino, e ele não existe na origem, o ramo da árvore referente a este elemento não será convertido. É como se existisse um filtro oculto indicando que um elemento só pode ser convertido se ele existe na origem. Para maiores esclarecimento leia sobre como funcionam os filtros.
1.16. Eu preciso extrair dados do banco de dados usando uma máscara diferente. Estou setando a máscara do elemento de destino para ‘dd/mm/yyyy’. O problema é que no resultado da conversão está sendo usado o texto ‘dd/mm/yyyy’ como valor de saída, ao invés do valor de data transformado. Porque acontece isso?
Para que transformações de datas sejam realizadas, é necessário que, tanto o elemento de origem como o de destino seja do tipo DATE. No seu caso, provavelmente o tipo do elemento de destino é CHAR. Isto explicaria porque o SAXES está tratando a sua máscara como um valor qualquer, e não como uma regra de formatação.
1.17. Tenho uma coluna do tipo VAR CHAR que armazena informações de data. Como esta coluna não é do tipo DATE, é possível que eu consiga exportar dados desta coluna usando um formato de data diferente?
Sim, é possível. Assim como qualquer outro elemento mapeável, as colunas possuem as propriedades para máscara e tipo de dado. Você não precisa se preocupar com colunas que são nativamente do tipo DATE, pois estas terão uma máscara e um tipo de dado fixo. Se você armazena informações de data em algum outro tipo de coluna, como por exemplo, colunas VARCHAR, deve-se manualmente trocar o tipo da coluna para DATE usando o editor de esquemas. Também é necessário setar a máscara destas colunas para que a transformação de datas seja bem sucedida.
1.18. Como faço para converter datas em um formato diferente?
Para a conversão de datas é necessário que, tanto o elemento de origem como o de destino sejam do tipo DATE e tenham uma máscara de data definida. Caso a máscara não seja definida, presume-se que o elemento possua o formato ‘yyyy-mm-dd’.
1.19. Porque não consigo mudar a máscara de data das colunas do banco ?
As colunas do banco que são nativamente do tipo DATE usam sempre a máscara ‘yyyy-mm-dd’. Este é o padrão adotado pela API de conectividade com a base de dados JDBC para processar datas. O uso desta constante como máscara de datas garante que os valores sejam convertidos corretamente.
1.20. Existe uma forma de rodar um projeto de conversão sem precisar usar a interface gráfica?
Sim. Cada projeto de conversão fica armazenado em um arquivo SPF. É possível executar a conversão de dados que está especificada em um arquivo SPF sem precisar abrir o software SAXES. Isso pode ser feito de duas maneiras:
A primeira, envolve a biblioteca saxes.jar, que acompanha o produto. Esta biblioteca possui todos os recursos necessários para realizar a conversão de dados. Para isso, deve-se adicionar esta biblioteca no CLASSPATH de uma aplicação Java, e utilizar as classes conversoras que estão dentro de saxes.jar.
Caso você não queira utilizar esta biblioteca, é possível realizar conversões de fora do SAXES de uma segunda forma. Deve-se utilizar o arquivo executável do SAXES na linha de comando, passando alguns parâmetros como arquivo SPF, arquivo de entrada, arquivo de saída e filtros de dados. Através desta opção pode-se, facilmente, executar conversões de dentro de diversas aplicações, independentemente da linguagem de programação no qual foram desenvolvidas.
1.21. Posso customizar um projeto de conversão?
Sim, para estender um projeto de conversão é necessário estender as classes que fazem parte da biblioteca saxeslite.jar. Esta biblioteca possui pontos de extensão bem identificados, na forma de métodos. Sobrescrevendo estes métodos é possível manipular a saída que deve ser gerada.
2.1. Qual a diferença entre as versões do Saxes ?
- Com a Licença Standard GLT , o cliente paga uma mensalidade no valor de R$ 100,00, e com isso poderá fazer download das novas versões do Saxes, sem custo adicional.
- Com a Licença Standard , o cliente paga apenas o valor da licença do produto que está adquirindo. Para obter futuras versões do software, uma nova compra terá que ser efetuada