Lacte ws

391 views

Published on

Parprimo LacteWS

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
391
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lacte ws

  1. 1. LacteWS - WS PARPRIMO PARA COMPARTILHAMENTO DE DADOS LACTEOS Douglas Hiura Longo douglashiura@inf.ufsc.br Rogério Bagatini1 Introdução A Parprimo disponibiliza infraestrutura de Web Service (LacteWS) para o compartilhamentodos dados dos laticínios ou cooperativas, ou seja, Através do LacteWS é possível publicar eresgatar as informações. Este tutorial está estruturado em duas partes principais, sendo, o Modelo de Dados e oWeb Service LacteWS. A pretensão deste é ser sucinto sem definição de tecnologias ou métodosde tecnologia.2 O Modelo de Dados O modelo de dados está descrito no wsdl(comentado mais a frente) e representado aquicom um diagrama. Todas as entidades que carregam os dados têm prefixo Bean, exemploBeanProdutor. Em todas as entidades há um atributo chamado uid do tipo inteiro. O uid deve serúnico para cada tipo de entidade, pode ser um valor sequencial inteiro, ainda, o uid é a chave dereferências.
  2. 2. BeanTransportadora uid Integer nome String municipio Integer (#1) cnpj Long 1 BeanColetor N uid Integer BeanCaminho nome String uid Integer 1 transportadora BeanTransportadora nome String N coletor BeanColetor BeanColeta 1 N uid Integer volume Integer BeanRota produtor BeanProdutor uid Integer compartimento Integer inicio Date temperatura Float * descarga Date N caminho BeanCaminho alizarol Integer * data Date coletas List<BeanColeta> 1 N 1 BeanProdutor uid Integer nome String municipio Integer (#1)Diagrama do modelo de dados - 1
  3. 3. 3 Descrições e restrições Sobre o diagrama acima, segue, uma pequena descrição do modelo de dados eimplicitamente cada nome e seu tipo se definem. Ademais, todos os atributos são requeridos,exceto marcados com *(temperatura e alizarol), para restrições e intervalos descreve-se:BeanTransportadora uid - nome - comprimento de 1 a 40. municipio –ver Tabela Valor – Município. cnpj – é o valor do cadastro de pessoa jurídica, não é feita validação.BeanColetor uid - nome - comprimento de 1 a 40. transportadora -BeanCaminho uid - nome - comprimento de 1 a 40. coletor -BeanProdutor uid - nome - comprimento de 1 a 40. municipio – ver Tabela Valor – Município.BeanColeta uid - volume – Volume coletado em litros
  4. 4. produtor - compartimento – Compartimento do caminhão, valores[1, 2, 3, 4]. Caso em um produtorutilizar mais de um compartimento, então fazer a quantidade requerida de beanColeta com osrespectivos volumes e compartimentos para o produtor, ou apenas um beanColeta com o primeirocompartimento utilizado e com a soma de volumes. temperatura - Opcional, valor em Grau Celsius. alizarol - Opcional, [-68,68,70,72,74,76,78,80,null]. data - Horário da coleta.BeanRota uid - inicio – Horário de inicio . descarga - Horário de descarga no laticínio. caminho - coletas - Lista de Coletas.4 Web Service LacteWS O LacteWS é o ponto onde está exposto o serviço, seu wsdl pode ser obtido emhttp://lacte.ws.parprimo.com/lacte/LacteWS?wsdl (Testes http://200.135.239.104/lacte/LacteWS?wsdl) aos desenvolvedores Java + eclipse segue um conjunto de passos:No Eclipse: File → New Java Project
  5. 5. Depois do projeto java criado, vou usar o assistente através dowsdl(http://lacte.ws.parprimo.com/lacte/LacteWS?wsdl , Testeshttp://200.135.239.104/lacte/LacteWS?wsdl) para gerar as classes e entidades.
  6. 6. Next… Finish.
  7. 7. 4.1 Exemplo como consumir o serviçopublic class Usando { public static void main(String[] args) throws RemoteException { LacteWSProxy servico = new LacteWSProxy(); String toke = "um:toke:teste:parprimo10035"; try { int uid = 1;// este pode ser um sequencial para cada tipo, mas aqui é nesteteste é apenas um."Lazy work" BeanProdutor[] produtores = new BeanProdutor[] { novoProdutor(uid++), novoProdutor(uid++) }; BeanTransportadora[] transportadores = new BeanTransportadora[] {novaTransportadora(uid++) }; BeanColetor[] coletores = new BeanColetor[] { novoColetor(uid++, transportadores[0]) }; BeanCaminho[] caminhos = new BeanCaminho[] { novoCaminho(uid++, coletores[0]) }; BeanRota[] rotas = new BeanRota[] { novaRota(uid++, caminhos[0], new BeanProdutor[] { produtores[0] }, new int[] { uid++ }), novaRota(uid++, caminhos[0], produtores, new int[] { uid++, uid++ }) }; servico.criarProdutores(toke, produtores); servico.criarTransportadores(toke, transportadores); servico.criarColetores(toke, coletores); servico.criarCaminhos(toke, caminhos); servico.criarRotas(toke, rotas); } catch (ExceptionWS e) { String[] erros = e.getErro(); for (String erro : erros) { System.out.println(erro); } }
  8. 8. }private static BeanRota novaRota(int uidRota, BeanCaminho caminho, BeanProdutor[] produtores, int[] uidColeta) { BeanRota beanRota = new BeanRota(); beanRota.setUid(uidRota); beanRota.setCaminho(caminho); Calendar data = Calendar.getInstance(); data.setTime(new Date()); beanRota.setInicio(data); beanRota.setDescarga(data); BeanColeta[] coletas = new BeanColeta[produtores.length]; for (int i = 0; i < coletas.length; i++) { coletas[i] = novaColeta(uidColeta[i], produtores[i]); } beanRota.setColetas(coletas); return beanRota;}static BeanColeta novaColeta(int uid, BeanProdutor produtor) { BeanColeta coleta2 = new BeanColeta(); coleta2.setUid(uid); Calendar data = Calendar.getInstance(); data.setTime(new Date()); coleta2.setData(data); coleta2.setVolume(157); coleta2.setProdutor(produtor); coleta2.setCompartimento(2); coleta2.setAlizarol(68); return coleta2;}private static BeanCaminho novoCaminho(int uid, BeanColetor beanColetor) { BeanCaminho caminho = new BeanCaminho(); caminho.setColetor(beanColetor); caminho.setNome("Caminho"); caminho.setUid(uid); return caminho;
  9. 9. } private static BeanColetor novoColetor(int uid, BeanTransportadora transportadora) { BeanColetor coletor = new BeanColetor(); coletor.setNome("Coletor"); coletor.setUid(uid); coletor.setTransportadora(transportadora); return coletor; } private static BeanTransportadora novaTransportadora(int uid) { BeanTransportadora transportadora = new BeanTransportadora(); transportadora.setUid(uid); transportadora.setCnpj(0000000011111111l); transportadora.setMunicipio(10001); transportadora.setNome("Teste"); return transportadora; } private static BeanProdutor novoProdutor(Integer uid) { BeanProdutor produtor = new BeanProdutor(); produtor.setMunicipio(10001); produtor.setNome("Teste"); produtor.setUid(uid); return produtor; }}5 Sobre LacteWS A Classe LacteWS é o ponto de consumo do serviço, e possui os métodos: - criarTransportadores(toke,BeanTransportadora[] transportadores) throws ExceptionWS; - criarRotas(String toke, BeanRota[] rotas) throws ExceptionWS;
  10. 10. - criarCaminhos(String toke, BeanCaminho[] caminhos) throws ExceptionWS; - criarProdutores(String toke, BeanProdutor[] produtores) throws ExceptionWS; - criarColetores(String toke, BeanColetor[] coletores) throws ExceptionWS; Esses métodos estão disponíveis para publicar os dados inerente ao desenho Lácteo noWS Parprimo. O argumento toke passado em cada um deles métodos é um identificador que aParprimo fornece aos consumidores do serviço. Todos os métodos recebem uma lista de Beans, caso todos forem validos, serãoarmazenados. Para as relações BeanTransportadora e BeanColetor deve ser informadoantecipadamente a transportadora e posteriormente o coletor. Ainda, não há limite para a lista,pois ainda não aconteceu sobrecarga em uso normal. Em caso de alguma entidade estiver comdados inválidos, nenhuma delas é guardada pela Parprimo. Para casos de erros na validação é encapsulado e retornado dentro das exceçãomensagens que podem ser recuperadas usando o método getErro() da classe ExceptionWS. A Parprimo está desenvolvendo um WS mais promiscuo desrespeitando essa hierarquia derelações, mas está ainda em testes.5.1 Sobre XSD A validação pelo XSD (http://lacte.ws.parprimo.com/lacte/LacteWS?xsd=1http://200.135.239.104/lacte/LacteWS?xsd=1) é desaconselhada, foi bem limitada, pois háalgumas divergências com outras tecnologia não java. Como o consumo deste web service é paraoutros computadores, então recomenda-se seguir Descrições e Restrições, sessão acima.6 Sobre o TokeUm toke oficial associado a um laticínio é emitido após homologado o funcionamento no servidorde testes e solicitação na Parprimo. O servidor de testes fica no endereço 200.135.239.104.Através da página (http://200.135.239.104/index.par) é possível gerar um toke para testes.
  11. 11. 7 Tabela Valor – Município0=Sem Endereço10000=Abdon Batista, Santa Catarina10005=Abelardo Luz, Santa Catarina10010=Agrolândia, Santa Catarina10015=Agronômica, Santa Catarina10020=Água Doce, Santa Catarina10025=Águas de Chapecó, Santa Catarina10030=Águas Frias, Santa Catarina10035=Águas Mornas, Santa Catarina10040=Alfredo Wagner, Santa Catarina10045=Alto Bela Vista, Santa Catarina10050=Anchieta, Santa Catarina10055=Angelina, Santa Catarina10060=Anita Garibaldi, Santa Catarina10065=Anitápolis, Santa Catarina10070=Antônio Carlos, Santa Catarina10075=Apiúna, Santa Catarina10080=Arabutã, Santa Catarina10085=Araquari, Santa Catarina10090=Araranguá, Santa Catarina10095=Armazém, Santa Catarina10100=Arroio Trinta, Santa Catarina10105=Arvoredo, Santa Catarina10110=Ascurra, Santa Catarina10115=Atalanta, Santa Catarina10120=Aurora, Santa Catarina10125=Balneário Arroio do Silva, Santa Catarina10130=Balneário Barra do Sul, Santa Catarina10135=Balneário Camboriú, Santa Catarina10140=Balneário de Piçarras, Santa Catarina10145=Balneário Gaivota, Santa Catarina10150=Bandeirante, Santa Catarina10155=Barra Bonita, Santa Catarina10160=Barra Velha, Santa Catarina10165=Bela Vista do Toldo, Santa Catarina10170=Belmonte, Santa Catarina
  12. 12. 10175=Benedito Novo, Santa Catarina10180=Biguaçu, Santa Catarina10185=Blumenau, Santa Catarina10190=Bocaina do Sul, Santa Catarina10195=Bom Jardim da Serra, Santa Catarina10200=Bom Jesus, Santa Catarina10205=Bom Jesus do Oeste, Santa Catarina10210=Bom Retiro, Santa Catarina10215=Bombinhas, Santa Catarina10220=Botuverá, Santa Catarina10225=Braço do Norte, Santa Catarina10230=Braço do Trombudo, Santa Catarina10235=Brunópolis, Santa Catarina10240=Brusque, Santa Catarina10245=Caçador, Santa Catarina10250=Caibi, Santa Catarina10255=Calmon, Santa Catarina10260=Camboriú, Santa Catarina10265=Campo Alegre, Santa Catarina10270=Campo Belo do Sul, Santa Catarina10275=Campo Erê, Santa Catarina10280=Campos Novos, Santa Catarina10285=Canelinha, Santa Catarina10290=Canoinhas, Santa Catarina10295=Capão Alto, Santa Catarina10300=Capinzal, Santa Catarina10305=Capivari de Baixo, Santa Catarina10310=Catanduvas, Santa Catarina10315=Caxambu do Sul, Santa Catarina10320=Celso Ramos, Santa Catarina10325=Cerro Negro, Santa Catarina10330=Chapadão do Lageado, Santa Catarina10335=Chapecó, Santa Catarina10340=Cocal do Sul, Santa Catarina10345=Concórdia, Santa Catarina10350=Cordilheira Alta, Santa Catarina10355=Coronel Freitas, Santa Catarina10360=Coronel Martins, Santa Catarina
  13. 13. 10365=Correia Pinto, Santa Catarina10370=Corupá, Santa Catarina10375=Criciúma, Santa Catarina10380=Cunha Porã, Santa Catarina10385=Cunhataí, Santa Catarina10390=Curitibanos, Santa Catarina10395=Descanso, Santa Catarina10400=Dionísio Cerqueira, Santa Catarina10405=Dona Emma, Santa Catarina10410=Doutor Pedrinho, Santa Catarina10415=Entre Rios, Santa Catarina10420=Ermo, Santa Catarina10425=Erval Velho, Santa Catarina10430=Faxinal dos Guedes, Santa Catarina10435=Flor do Sertão, Santa Catarina10440=Florianópolis, Santa Catarina10445=Formosa do Sul, Santa Catarina10450=Forquilhinha, Santa Catarina10455=Fraiburgo, Santa Catarina10460=Frei Rogério, Santa Catarina10465=Galvão, Santa Catarina10470=Garopaba, Santa Catarina10475=Garuva, Santa Catarina10480=Gaspar, Santa Catarina10485=Governador Celso Ramos, Santa Catarina10490=Grão-Pará, Santa Catarina10495=Gravatal, Santa Catarina10500=Guabiruba, Santa Catarina10505=Guaraciaba, Santa Catarina10510=Guaramirim, Santa Catarina10515=Guarujá do Sul, Santa Catarina10520=Guatambu, Santa Catarina10525=Herval D´Oeste, Santa Catarina10530=Ibiam, Santa Catarina10535=Ibicaré, Santa Catarina10540=Ibirama, Santa Catarina10545=Içara, Santa Catarina10550=Ilhota, Santa Catarina
  14. 14. 10555=Imaruí, Santa Catarina10560=Imbituba, Santa Catarina10565=Imbuia, Santa Catarina10570=Indaial, Santa Catarina10575=Iomerê, Santa Catarina10580=Ipira, Santa Catarina10585=Iporã do Oeste, Santa Catarina10590=Ipuaçu, Santa Catarina10595=Ipumirim, Santa Catarina10600=Iraceminha, Santa Catarina10605=Irani, Santa Catarina10610=Irati, Santa Catarina10615=Irineópolis, Santa Catarina10620=Itá, Santa Catarina10625=Itaiópolis, Santa Catarina10630=Itajaí, Santa Catarina10635=Itapema, Santa Catarina10640=Itapiranga, Santa Catarina10645=Itapoá, Santa Catarina10650=Ituporanga, Santa Catarina10655=Jaborá, Santa Catarina10660=Jacinto Machado, Santa Catarina10665=Jaguaruna, Santa Catarina10670=Jaraguá do Sul, Santa Catarina10675=Jardinópolis, Santa Catarina10680=Joaçaba, Santa Catarina10685=Joinville, Santa Catarina10690=José Boiteux, Santa Catarina10695=Jupiá, Santa Catarina10700=Lacerdópolis, Santa Catarina10705=Lages, Santa Catarina10710=Laguna, Santa Catarina10715=Lajeado Grande, Santa Catarina10720=Laurentino, Santa Catarina10725=Lauro Müller, Santa Catarina10730=Lebon Régis, Santa Catarina10735=Leoberto Leal, Santa Catarina10740=Lindóia do Sul, Santa Catarina
  15. 15. 10745=Lontras, Santa Catarina10750=Luiz Alves, Santa Catarina10755=Luzerna, Santa Catarina10760=Macieira, Santa Catarina10765=Mafra, Santa Catarina10770=Major Gercino, Santa Catarina10775=Major Vieira, Santa Catarina10780=Maracajá, Santa Catarina10785=Maravilha, Santa Catarina10790=Marema, Santa Catarina10795=Massaranduba, Santa Catarina10800=Matos Costa, Santa Catarina10805=Meleiro, Santa Catarina10810=Mirim Doce, Santa Catarina10815=Modelo, Santa Catarina10820=Mondaí, Santa Catarina10825=Monte Carlo, Santa Catarina10830=Monte Castelo, Santa Catarina10835=Morro da Fumaça, Santa Catarina10840=Morro Grande, Santa Catarina10845=Navegantes, Santa Catarina10850=Nova Erechim, Santa Catarina10855=Nova Itaberaba, Santa Catarina10860=Nova Trento, Santa Catarina10865=Nova Veneza, Santa Catarina10870=Novo Horizonte, Santa Catarina10875=Orleans, Santa Catarina10880=Otacílio Costa, Santa Catarina10885=Ouro, Santa Catarina10890=Ouro Verde, Santa Catarina10895=Paial, Santa Catarina10900=Painel, Santa Catarina10905=Palhoça, Santa Catarina10910=Palma Sola, Santa Catarina10915=Palmeira, Santa Catarina10920=Palmitos, Santa Catarina10925=Papanduva, Santa Catarina10930=Paraíso, Santa Catarina
  16. 16. 10935=Passo de Torres, Santa Catarina10940=Passos Maia, Santa Catarina10945=Paulo Lopes, Santa Catarina10950=Pedras Grandes, Santa Catarina10955=Penha, Santa Catarina10960=Peritiba, Santa Catarina10965=Petrolândia, Santa Catarina10970=Pinhalzinho, Santa Catarina10975=Pinheiro Preto, Santa Catarina10980=Piratuba, Santa Catarina10985=Planalto Alegre, Santa Catarina10990=Pomerode, Santa Catarina10995=Ponte Alta, Santa Catarina11000=Ponte Alta do Norte, Santa Catarina11005=Ponte Serrada, Santa Catarina11010=Porto Belo, Santa Catarina11015=Porto União, Santa Catarina11020=Pouso Redondo, Santa Catarina11025=Praia Grande, Santa Catarina11030=Presidente Castelo Branco, Santa Catarina11035=Presidente Getúlio, Santa Catarina11040=Presidente Nereu, Santa Catarina11045=Princesa, Santa Catarina11050=Quilombo, Santa Catarina11055=Rancho Queimado, Santa Catarina11060=Rio das Antas, Santa Catarina11065=Rio do Campo, Santa Catarina11070=Rio do Oeste, Santa Catarina11075=Rio do Sul, Santa Catarina11080=Rio dos Cedros, Santa Catarina11085=Rio Fortuna, Santa Catarina11090=Rio Negrinho, Santa Catarina11095=Rio Rufino, Santa Catarina11100=Riqueza, Santa Catarina11105=Rodeio, Santa Catarina11110=Romelândia, Santa Catarina11115=Salete, Santa Catarina11120=Saltinho, Santa Catarina
  17. 17. 11125=Salto Veloso, Santa Catarina11130=Sangão, Santa Catarina11135=Santa Cecília, Santa Catarina11140=Santa Helena, Santa Catarina11145=Santa Rosa de Lima, Santa Catarina11150=Santa Rosa do Sul, Santa Catarina11155=Santa Terezinha, Santa Catarina11160=Santa Terezinha do Progresso, Santa Catarina11165=Santiago do Sul, Santa Catarina11170=Santo Amaro da Imperatriz, Santa Catarina11175=São Bento do Sul, Santa Catarina11180=São Bernardino, Santa Catarina11185=São Bonifácio, Santa Catarina11190=São Carlos, Santa Catarina11195=São Cristóvão do Sul, Santa Catarina11200=São Domingos, Santa Catarina11205=São Francisco do Sul, Santa Catarina11210=São João Batista, Santa Catarina11215=São João do Itaperiú, Santa Catarina11220=São João do Oeste, Santa Catarina11225=São João do Sul, Santa Catarina11230=São Joaquim, Santa Catarina11235=São José, Santa Catarina11240=São José do Cedro, Santa Catarina11245=São José do Cerrito, Santa Catarina11250=São Lourenço do Oeste, Santa Catarina11255=São Ludgero, Santa Catarina11260=São Martinho, Santa Catarina11265=São Miguel da Boa Vista, Santa Catarina11270=São Miguel do Oeste, Santa Catarina11275=São Pedro de Alcântara, Santa Catarina11280=Saudades, Santa Catarina11285=Schroeder, Santa Catarina11290=Seara, Santa Catarina11295=Serra Alta, Santa Catarina11300=Siderópolis, Santa Catarina11305=Sombrio, Santa Catarina11310=Sul Brasil, Santa Catarina
  18. 18. 11315=Taió, Santa Catarina11320=Tangará, Santa Catarina11325=Tigrinhos, Santa Catarina11330=Tijucas, Santa Catarina11335=Timbé do Sul, Santa Catarina11340=Timbó, Santa Catarina11345=Timbó Grande, Santa Catarina11350=Três Barras, Santa Catarina11355=Treviso, Santa Catarina11360=Treze de Maio, Santa Catarina11365=Treze Tílias, Santa Catarina11370=Trombudo Central, Santa Catarina11375=Tubarão, Santa Catarina11380=Tunápolis, Santa Catarina11385=Turvo, Santa Catarina11390=União do Oeste, Santa Catarina11395=Urubici, Santa Catarina11400=Urupema, Santa Catarina11405=Urussanga, Santa Catarina11410=Vargeão, Santa Catarina11415=Vargem, Santa Catarina11420=Vargem Bonita, Santa Catarina11425=Vidal Ramos, Santa Catarina11430=Videira, Santa Catarina11435=Vítor Meireles, Santa Catarina11440=Witmarsum, Santa Catarina11445=Xanxerê, Santa Catarina11450=Xavantina, Santa Catarina11455=Xaxim, Santa Catarina11460=Zortéa, Santa Catarina

×