Changes between Version 2 and Version 3 of WF/ExportacaodedadosdeaplicacoesLotusNotes


Ignore:
Timestamp:
08/22/07 15:35:45 (17 years ago)
Author:
viani
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WF/ExportacaodedadosdeaplicacoesLotusNotes

    v2 v3  
    1 Existem duas possibilidades de exportação de dados do Notes. Uma é utilizando Java e outra utilizando o produto !NotesSQL. Este documento descreve a alternativa Java, e é recomendado caso existam campos texto-rico nos documentos a serem exportados. 
    2   
     1= Exportação de Dados de Aplicações Lotus Notes =  
     2[[TOC(heading=Workflow,depth=1,WF/Changelog,WF/Documentacao,WF/Instalacao,WF/Links,WF/Propostas,WF/Recursos)]] 
     3 
     4Este documento descreve uma alternativa de exportação utilizando Java, e é recomendada caso existam campos texto-rico nos documentos a serem exportados.  
    35 
    46== Configuração do servidor Lotus Domino == 
    57 
    6  
    7  
    88No lado servidor, o Lotus Domino possui uma tarefa chamada Diiop (Domino Internet Inter-Orb Protocol) que deve ser configurada para aceitar conexões dos programas java e retornar os dados adequadamente.  
    99 
    10  
    11  
    12 1) Edite o arquivo Notes.ini, do servidor, e na chave "ServerTasks" acrescente a tarefa "diiop" 
     101) Edite o arquivo Notes.ini, do servidor, e na chave "!ServerTasks" acrescente a tarefa "diiop" 
    1311 
    14122) Edite o documento de configuração do servidor e na aba "Portas" "Portas da Internet" "IIOP", coloque o status da porta TCP/IP em "Ativado" 
     
    22206) Caso existam firewalls no caminho entre a estação cliente e o servidor, deve-se liberar a porta 63148 
    2321 
    24  
    25  
    2622No ambiente Celepar, o servidor Celepar2_cta_m, já está configurado adequadamente. Para facilitar as coisas, copie a base Notes para este servidor, ao invés de configurar um servidor de cliente. 
    2723 
    28  
    29  
    3024== Configuração da base Notes == 
    3125 
    32  
    33  
    3426Depois de termos quebrado a cabeça exportando dados do Notes em outras ocasiões, concluímos que a melhor coisa a fazer é criar uma visão temporária na base, com todos os dados necessários. Desta maneira fica mais fácil obter os dados via um programa java. Basta fazer um loop do primeiro registro ao útimo da base e ler o conteúdo das colunas.  
    3527 
    36  
    37  
    38281) Crie uma visão na base com o nome 'Dump'. Construa a fórmula de seleção de documentos conforme necessário. 
    3929 
    40302) Crie colunas na visão, uma para cada campo que será exportado. A primeira coluna obrigatoriamente deverá ser o ID do documento. É importante que todos os dados das colunas seja do tipo texto. Exemplo: 
    4131 
    42  
    43  
    4432Coluna 1: @Text(@!DocumentUniqueID) 
    4533 
     
    4836Coluna 3: Titulo 
    4937 
    50  
    51  
    5238Na coluna 3, 'titulo' é uma campo qualquer do documento 
    5339 
    54  
    55  
    5640[[Image(htdocs:wf/images/notes_view.png)]] 
    5741 
    58  
    59  
    6042Em seguida é necessário modificar o formulário onde está o campo texto rico, para que o programa java consiga identificar onde ele começa e termina. Toda esta gambiarra está sendo feita porque no Domino versão 5 não existe classe para tratar o conteúdo de campos texto rico. A solução encontrada foi fazer uma requisição Http ao Domino, obter o código html do documento e separar a parte correspondente ao campo texto rico. 
    6143 
    62  
    63  
    64441) Edite o documento onde o campo texto rico está 
    6545 
     
    72525) Salve o documento 
    7353 
    74  
    75  
    7654[[Image(htdocs:wf/images/notes_doc.png)]] 
    7755 
    78  
    79  
    80566) Por último, crie um usuário 'anonymous', no controle de acesso da base, com direitos de leitura, só para garantir que não haverá bloqueios de acesso quando o programa java rodar. 
    8157 
    82  
    83  
    8458== Configuração do ambiente Java == 
    8559 
    86  
    87  
    8860As configurações a seguir referem-se ao programa 'Eclipse' como ferramenta para rodar Java. Também podem ser utilizados outros compiladores, mas o 'Eclipse' seria o mais indicado, devido às suas facilidades de gerenciamento de projeto. 
    8961 
    90  
    91  
    92621) Copiar os arquivos Notes.jar e NCSO.jar para algum diretório do seu disco local 
    9363 
     
    98684) Configurar o projeto para reconhecer os arquivos Notes.jar e NCSO.jar. Para isso, clique no menu Project/Properties. Selecione 'Java Build Path' e adicione os arquivos 
    9969 
    100  
    101  
    10270[[Image(htdocs:wf/images/notes_eclipse.png)]]  
    10371 
    104  
    105  
    106725) Volte para a interface de programação e importe o arquivo exemplo de código java 
    10773 
    108746) Edite o arquivo exemplo para atender as suas necessidades. Mude o nome da classe, o ip do servidor, usuário, senha e o caminho para a base notes. Um detalhe: utilize a senha internet do usuário, e não a senha do id. 
    10975 
    110  
    111  
    11276{{{ 
    113  
    114  
    115  
    11677import java.io.*; 
    11778 
     
    12283import lotus.domino.*; 
    12384 
    124  
    125  
    12685public class detran { 
    12786 
     
    13089                try { 
    13190 
    132                                 Session s = NotesFactory.createSession("10.15.61.13","viani"," * * *"); 
     91                                Session s = NotesFactory.createSession("10.xx.xx.xx","usuario","senha"); 
    13392 
    13493                                Database db = s.getDatabase(s.getServerName(), "teste\\empregado.nsf"); 
     
    14099                                ViewEntry entrada = nav.getFirst(); 
    141100 
    142          
    143101 
    144102                                String unid; 
     
    147105 
    148106                                String titulo; 
     107                 
     108 
     109                                String linha; 
     110 
     111                                String conteudo = ""; 
     112 
     113                                boolean flag = false; 
     114 
     115                                BufferedWriter out = new BufferedWriter(new FileWriter("detrandump.txt")); 
     116 
     117         
     118 
     119                                String[] sessoes = {    "1,2,3,4,5,6,7,8,9,", 
     120 
     121                                                        "1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,", 
     122 
     123                                                        "2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,", 
     124 
     125                                                        "3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9,", 
     126 
     127                                                        "4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,", 
     128 
     129                                                        "5.1,5.2,5.3,5.4,5.5,5.6,5.7,5.8,5.9,", 
     130 
     131                                                        "6.1,6.2,6.3,6.4,6.5,6.6,6.7,6.8,6.9,", 
     132 
     133                                                        "7.1,7.2,7.3,7.4,7.5,7.6,7.7,7.8,7.9,", 
     134 
     135                                                        "8.1,8.2,8.3,8.4,8.5,8.6,8.7,8.8,8.9,", 
     136 
     137                                                        "9.1,9.2,9.3,9.4,9.5,9.6,9.7,9.8,9.9"  
     138 
     139                                }; 
    149140 
    150141                                 
    151  
    152                                 String linha; 
    153  
    154                                 String conteudo = ""; 
    155  
    156                                 boolean flag = false; 
    157  
    158                                 BufferedWriter out = new BufferedWriter(new FileWriter("detrandump.txt")); 
    159  
    160                          
    161  
    162                                 String[] sessoes = {    "1,2,3,4,5,6,7,8,9,", 
    163  
    164                                                         "1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,", 
    165  
    166                                                         "2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,", 
    167  
    168                                                         "3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9,", 
    169  
    170                                                         "4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,", 
    171  
    172                                                         "5.1,5.2,5.3,5.4,5.5,5.6,5.7,5.8,5.9,", 
    173  
    174                                                         "6.1,6.2,6.3,6.4,6.5,6.6,6.7,6.8,6.9,", 
    175  
    176                                                         "7.1,7.2,7.3,7.4,7.5,7.6,7.7,7.8,7.9,", 
    177  
    178                                                         "8.1,8.2,8.3,8.4,8.5,8.6,8.7,8.8,8.9,", 
    179  
    180                                                         "9.1,9.2,9.3,9.4,9.5,9.6,9.7,9.8,9.9"  
    181  
    182                                 }; 
    183  
    184                                  
    185  
    186142                                while(entrada != null) { 
    187143 
     
    198154                                         
    199155 
    200                                         URL notesUrl = new URL( "http://10.15.61.13/teste/empregado.nsf/0/" +  
     156                                        URL notesUrl = new URL( "http://10.xx.xx.xx/teste/empregado.nsf/0/" +  
    201157 
    202158                                                        unid + "?opendocument&expandsection=" +  
     
    220176                                        con.setDefaultUseCaches(false); 
    221177 
    222                                         BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); 
     178                                        BufferedReader in = new  
     179                                                    BufferedReader(new InputStreamReader(con.getInputStream())); 
    223180 
    224181 
     
    228185                                        linha = in.readLine(); 
    229186 
    230                                         while[wiki:WF_linha=in.readLine(] 
    231 !=null&&!flag){ 
     187                                        while (linha=in.readLine()!=null&&!flag) { 
    232188 
    233189                                                if (linha.indexOf("<!-- rtini -->") != -1) { 
     
    253209                             
    254210 
    255                                         while[wiki:WF_linha=in.readLine(] 
    256 !=null&&!flag){ 
     211                                        while (linha=in.readLine()!=null&&!flag) { 
    257212 
    258213                                                if (linha.indexOf("<!-- rtend -->") != -1) { 
     
    307262 
    308263} 
    309  
    310  
    311  
    312264}}} 
    313265 
    314  
    315  
    316266Este exemplo produzirá um arquivo texto, com uma linha para cada documento Notes, onde os campos estão separados pelo delimitador '@@@' 
    317267 
    318  
    319  
    32026831/10/2006 09:50:26@@@Rua fica bloqueada até amanhã@@@<BR><FONT SIZE=2 FACE="Verdana">A Prefeitura de Curitiba fará obras emergenciais de recuperação das galerias de águas pluviais na Rua Conselheiro Laurindo, no trecho de duas quadras entre os cruzamentos com as ruas André de Barros e Itararé, no Centro. O trabalho começou às 8 horas de ontem e deve terminar amanhã</FONT><BR><FONT SIZE=2 FACE="Verdana">Os motoristas que seguem pela Conselheiro Laurindo deverão entrar à direita na André de Barros, e só poderão retornar à Conselheiro após o cruzamento com a Rua Itararé.</FONT><BR><BR><FONT SIZE=2 FACE="Verdana">A Diretoria de Trânsito de Curitiba (Diretran) recomenda aos motoristas que, sempre que possível, procurem caminhos alternativos aos locais de obras. Além disso, é necessário planejar bem o itinerário e sair com antecedência para evitar atrasos, especialmente nos horários de pico, pois existe a possibilidade de pontos de lentidão no tráfego da região. A Rádio-Trânsito, serviço oferecido pela Prefeitura de Curitiba, com boletins em 15 emissoras de rádio da cidade, alertará os motoristas sobre os desvios durante o período de obras e bloqueio.</FONT><BR><BR><BR><FONT SIZE=2 FACE="Verdana">JORNAL DO ESTADO</FONT> 
    321269 
    322  
    323  
    32427031/10/2006 09:46:49@@@Polícia Civil fecha desmanche caseiro na Vila Esperança@@@<BR><FONT SIZE=2 FACE="Verdana">A Polícia Civil apreendeu ontem dezenas de peças de veículos nos fundos e uma residência na rua Pirapó, Vila Esperança, em Maringá. Segundo os policiais, o local era usado como um desmanche e as peças serviam para regularizar carros comprados em leilões.</FONT><BR><FONT SIZE=2 FACE="Verdana">Os investigadores da PC, informaram que vinham monitorando o local há cerca de 30 dias. Durante a operação de ontem, os policiais encontraram cerca de 50 mini-frentes de diversos veículos, várias carcaças com as numerações raspadas e metade de um Fiat Palio, também sem identificação.</FONT><BR><FONT SIZE=2 FACE="Verdana">Em outro local, na avenida Morangueira, os policiais encontraram um motor e um câmbio, que suspeitam ser do Palio. Ambos estavam com a numeração raspada. Segundo a PC, o proprietário do local comprava veículos batidos em leilões e usava as peças para montar um carro novo e com isso regularizar carros furtados.</FONT><BR><FONT SIZE=2 FACE="Verdana">O proprietário da casa, Rayner Fernando Silva, negou os crimes e afirmou na delegacia que havia comprado tudo com nota e dentro da lei. Ele disse que todas as peças estavam regularizadas e não havia cometido crime algum.</FONT><BR><FONT SIZE=2 FACE="Verdana">No entanto, os policiais informaram que o volume de peças é muito superior as notas apresentadas por Silva. </FONT><BR><BR><FONT SIZE=2 FACE="Verdana">JORNAL HOJE - </FONT><B><I><FONT SIZE=2 FACE="Verdana">Maringá</FONT></I></B> 
    325  
    326  
    327  
    328 31/10/2006 09:44:43@@@Trânsito violento deixa dois mortos no fim de semana@@@<P><FONT SIZE=2 FACE="Verdana">PONTA GROSSA – Duas pessoas morreram e uma ficou gravemente ferida em três acidente de trânsito registrados nesse final de semana em ruas e rodovia de Ponta Grossa. Um coroinha da igreja São Francisco, da Vila Borato, está entre as vítimas. As ocorrências foram atendidas pela Polícia Militar e Polícia Rodoviária Federal (PRF).</FONT><P><FONT SIZE=2 FACE="Verdana">Na madrugada de domingo o motoqueiro Ícaro Luciano Mayer, 26, perdeu a vida no cruzamento das ruas Balduíno Taques e Theodoro Rosas, na área central da cidade. A moto que ele pilotava – uma Yamaha YBR de placa ANV-4924 – ficou destruída ao se envolver numa colisão com a camioneta Ford F-250 de placas AKB-1659, dirigida por Ângelo César Alves Pinto. O rapaz sofreu afundamento de tórax. O corpo foi encaminhado ao necrotério do Instituto Médico Legal. A polícia apurar responsabilidades pela colisão.</FONT><P><FONT SIZE=2 FACE="Verdana">A Polícia Civil da cidade trabalha com a expectativa de identificar a pessoa que dirigia a Variant II de placas ABX-9209, envolvida no atropelamento de Leonardo Rodrigues, 11. O acidente aconteceu às 16 horas de domingo na Rua Alameda Nabuco de Araújo, proximidades da Costalco, no bairro de Uvaranas. O menino sofreu ferimentos em várias partes do corpo, foi socorrido pelo Siate e internado no Hospital Municipal. As lesões são graves, mas ele não corre risco de morte.</FONT><P><FONT SIZE=2 FACE="Verdana">A Variant, segundo o Corpo de Bombeiros, foi encontrada em chamas, minutos depois do acidente, nas imediações da fábrica da Sadia, na Vila Marina. Moradores da região disseram à Polícia Militar que viram o momento em que o motorista desceu do carro, retirou o aparelho de som e em seguida o incendiou com gasolina. Depois subiu na garupa de um motoqueiro e desapareceu. Através das placas do veículo a polícia identificou o nome da pessoa que consta no documento original. Ela será chamada na delegacia para prestar esclarecimentos. </FONT><P><FONT SIZE=2 FACE="Verdana">Repercutem na cidade as informações sobre a morte prematura de um menino de 11 anos numa das rodovias mais perigosas do Paraná. Alexandre Willian da Rosa voltava para casa quando foi atropelado pela Ford F-1000, de placas CEQ-1815, de Ivaiporã (PR). O acidente aconteceu por volta das 19h15 de domingo no km 178 da BR-373 – perímetro urbano da Avenida Souza Naves. O motorista do veículo, Silvano Bueno, se apresentou no Posto Caetano da 3ª Delegacia da PRF, fez o teste de alcoolemia (resultado foi negativo), prestou declarações e foi liberado. Ele responderá a processo por homicídio culposo – sem a intenção de matar. </FONT><P><FONT SIZE=2 FACE="Verdana">Alexandre era coroinha na igreja São Francisco, na Vila Borato, onde morava com os pais e dois irmãos. Ele faria a primeira comunhão no final do ano.</FONT><P><FONT SIZE=2 FACE="Verdana">DIÁRIO DOS CAMPOS</FONT>