Spring Integration. Saiba como desenhar uma solução completa utilizando padrões EAI com o Spring Integration
|
|
- Luna Silveira Álvares
- 8 Há anos
- Visualizações:
Transcrição
1 capa_ Aplicando padrões EAI com Spring Integration Saiba como desenhar uma solução completa utilizando padrões EAI com o Spring Integration Giuliano Bem Hur Firmino giulianofirmino@yahoo.com.br especialista em Engenharia de Software pelo Instituto da Computação da Unicamp e certificado pela Sun (SCJP). Atua na área de desenvolvimento de softwares há 12 anos. Com a plataforma JAVA nos ambientes Web, Mobile e Enterprise. Aplicações raramente vivem isoladas, normalmente são desenvolvidas para se comunicar com outras aplicações, banco de dados, sistemas de mensagem, sistemas legados e até mesmo com redes sociais. Como lidar com os desafios que essas integrações oferecem? EAI propõe uma forma abstrata e prática de lidar com esses desafios, através de padrões. E o Spring Integration se propõe a implementar esses padrões de forma simples, sem a necessidade de grandes mudanças no processo de desenvolvimento. 5 \
2 EAI (Enterprise Application Integration) O termo EAI já existia dede o início de 2000, mas o problema que ele se propõe a resolver é muito antigo, vem desde os primórdios da computação, quando nos deparamos com a necessidade de fazer aplicações se comunicarem. Podemos resumir a integração entre uma aplicação e outra como uma conversa. Se ela não for conduzida em uma determinada linguagem e em um determinado padrão, o que chamamos protocolo de comunicação, não há diálogo. Hoje temos basicamente as seguintes formas de comunicação entre aplicações: File Transfer: aplicações transferem ou disponibilizam, em local comum, arquivos para que outras aplicações possam ler. Shared Database: aplicações acessando um ou mais banco de dados em comum, com intuito de compartilhar informações. Remote Procedure Call: aplicações acessando outras aplicações através de chamadas remotas. Abrangendo diversas tecnologias, como CORBA, RMI e WebService. Messaging: aplicações enviando mensagens a outras aplicações. Em uma arquitetura empresarial, tende a existir diversos sistemas e aplicações, para atender a diversos departamentos e serviços que uma empresa pode oferecer e consumir. É muito comum que todos esses recursos estejam distribuídos dentro da organização. No entanto para obter os benefícios desse tipo de distribuição, é necessário se preocupar com a forma com que essas aplicações se integram. Hoje temos os seguintes tipos de integrações entre aplicações. Point-to-Point: neste tipo de integração as conexões são feitas de forma direta. A vantagem é que o mesmo atende bem necessidades pontuais, dentro de uma arquitetura pequena. A desvantagem ocorre quando queremos aumentar o número de aplicações participantes, neste caso, temos um aumento exponencial do número de conexões. Veja um exemplo na figura 1. Hub and Spoke: todas as aplicações se comunicam através de um mediador e é esse mediador que se comunica com as outras aplicações. A vantagem é que todas aplicações se convergem em uma só conexão, simplificando a manutenção e o gerenciamento das conexões. A desvantagem é justamente pelo fato de centralizar todas as conexões, pois quando o serviço fica indisponível, todas as aplicações sofrem com isso. Veja um exemplo na figura 2. Figura 2. Tipo de integração Hub and Spoke. Diferentemente do que parece, EAI não trabalha diretamente com nenhum dos tipos de integrações mencionados acima, tão pouco atende especificamente a alguma forma de comunicação existente. EAI possui simplesmente uma notação genérica e baseada em padrões. Cada framework/ferramenta/ plataforma implementa a especificação de EAI da forma que lhe convir. Existe um padrão dentro da especificação EAI, por exemplo, chamado Message Bus que visa representar uma boa prática de integração entre aplicações (Hub and Spoke, mencionado anteriormente), veja como funciona o mesmo na figura 3. Esse padrão foi responsável pelo surgimento de diversas interpretações, nomeadas de ESB (Enterprise Service Bus). application application message bus application Figura 1. Tipo de integração Point-to-Point. Figura 3. Exemplo de funcionamento do padrão Message Bus. / 6
3 data message message channel message data endpoint endpoint sender application receiver application Figura 4. Elementos básicos da notação EAI. O Framework Spring Integration Spring Integration é uma extensão do Spring (framework de inversão de controle) que possibilita a utilização da notação EAI de forma declarativa e/ou programática. O mesmo disponibiliza uma interface de integração com os adaptadores do Spring, abstraindo a complexidade de acessar vários tipos de plataformas, sistemas, tecnologias e protocolos como HTTP, TCP/ UDP, Banco de Dados, Arquivos, FTP, RMI, JMS, e- -mail, até a redes sociais, como Twitter, possibilitando ainda reaproveitar e acessar outros tipos de recursos externos através de serviços customizados. No Spring Integration podemos observar os seguintes elementos para utilização de EAI, acompanhando na figura 4. Data: representa os dados a serem processados. Message: no Spring Integration, é formada por Header (cabeçalho) e Payload (corpo) conforme a ilustração da figura 5. No Header podemos trafegar informações adicionais que serão usadas para tomada de decisões no fluxo, e no corpo estão os dados propriamente ditos. message header payload Figura 5. Estrutura da mensagem. Message channel: é o canal de comunicação de mensagens. Um canal possui duas pontas, por onde as mensagens trafegam: Entrada: por onde os produtores enviam as mensagens. Saída: por onde os receptores conseguem resgatar as mensagens enviadas pelos produtores. Os canais ainda podem ser categorizados de duas formas: Handoff: que podem ser síncronos, ou seja, a mensagem é recebida diretamente pelo receptor. Ou assíncronos, ou seja, a mensagem é armazenada no canal antes de ser enviada ao receptor. Delivery: que podem ser point-to-point, ou seja, um produtor envia uma mensagem diretamente para um receptor ou publish- -subscribe, onde um produtor envia uma mensagem e N receptores podem se inscrever para receber a mesma mensagem. Message Endpoints: são todos os componentes que efetivamente sabem receber/manipular/enviar as mensagens. São divididos basicamente em Gateway, Sevice Activator, Router, Splitter e Aggregator. Os mesmos serão detalhados no decorrer da explicação da implementação do projeto de exemplo a seguir. Diferentemente de muitas das soluções de mercado, Spring Integration não é considerado um ESB, pois não é baseado no padrão Message Bus. Mas por se tratar de um framework robusto, provê uma boa base para implementação do mesmo. Projeto de exemplo Meu intuito é mostrar não só os padrões EAI e como utilizá-los no Spring Integration, mas um exemplo prático e funcional de aplicação dos principais padrões de integração em um cenário fictício, mas suficientemente complexo que será explorado abaixo. História Grandes empresas varejistas e atacadistas ainda aceitam um grande volume de cheques diariamente de seus clientes. O banco Sua Poupança vendo um nicho de mercado ainda pouco explorado, decide criar um novo produto e atrair esses clientes. Sabendo do trabalho que estas empresas têm em depositar esse grande volume de cheques, decide criar um processo que facilite este trabalho. 7 \
4 Problema Para atender essa quantidade de cheques, hoje o banco conta com profissionais que avaliam um a um os cheques os separando e os enviando através de malotes para os respectivos bancos. Esse processo é lento e também envolve a burocracia do banco de destino. Ao final o banco de destino envia os dados confirmando o débito na conta do cliente. O tempo total do depósito do cheque gira em torno de 5 dias. Solução de negócio Esses cheques são na grande maioria preenchidos por impressoras nos caixas, por isso são passíveis de serem lidos sem a necessidade de intervenção humana. Para a leitura automática dos cheques, foram encontradas várias opções de impressoras que conseguem processar centenas de cheques por minuto, gerando imagens de qualidade e capturando dados via OCR. Essas impressoras seriam disponibilizadas para os clientes para que os mesmos possam enviar mais rapidamente as imagens e os dados dos cheques através de um serviço a ser disponibilizado para o mesmo. Este serviço por sua vez, agruparia os cheques por banco e os enviaria aos bancos que já possuem uma política de recebimento de cheques digitalizados. A previsão é que o tempo do depósito de cheques desses clientes caia para 2 dias. Solução técnica Esse processo é um tanto complexo, pois envolve integração com várias tecnologias, então a equipe de negócio pede a equipe de Arquitetura que desenhe a solução e escolha a melhor forma de resolver o problema. Em uma reunião, a equipe de arquitetura chegou a conclusão que seriam necessárias duas aplicações, para atender a solução. A figura 6 mostra o diagrama de arquitetura levantado. 1. Uma aplicação Desktop que irá capturar as imagens scaneadas e dados extraídos dos cheques, através do OCR presente no scanner de cheques. Esses cheques formarão um lote a ser enviado ao serviço Web a ser desenvolvido. Um lote pode possuir N cheques e depende da capacidade do scanner de cheques. 2. Serviço Web que irá separar os cheques e enviá-los a seus respectivos bancos de destino. Os únicos bancos que possuem serviços que recebem e processam cheques digitalizados é o Banco do Povo e o Banco de Todos. O Banco do Povo disponibiliza um servidor FTP para enviar os dados e as imagens dos cheques e o Banco de Todos disponibiliza um servidor de filas para enviar os dados via remessa, com todas as imagens e informações dos cheques. O serviço precisará acessar um componente EJB que está em outro servidor, para buscar informações do cliente (beneficiário) uma vez que só será enviado o código do mesmo. Para desenvolver o serviço Web, foi optado pelo framework Spring Integration e para chegar nessa decisão, foram considerados os seguintes critérios:» A integração deve ser feita de forma menos trabalhosa e mais flexível possível, uma vez que as tecnologias podem mudar, o número de clien- Figura 6. Diagrama de arquitetura da solução. / 8
5 tes pode aumentar e, no futuro, o número de bancos atendidos também pode aumentar. Ser open-source, pois há um risco de investir em ferramenta e treinamento e a solução não ter o retorno esperado. Desenvolver uma versão piloto no menor tempo possível, pelo mesmo motivo do item anterior. Aproveitamento da equipe de desenvolvimento, pelo mesmo motivo do item anterior. Aproveitar a infraestrutura já existente, pelo mesmo motivo do item anterior. Configuração de Ambiente Maven Plugin do eclipse Maven Integration for Eclipse Plugin do eclipse Spring Tool Suite for Eclipse Criando o projeto Crie um novo workspace. Clique com botão direito e selecione New > Other.... Selecione Maven > Maven Project e clique em Next >. Em New Maven Project, Select project name and location, marque a opção Create a single project (skip archetype selection) e clique em Next >. Em New Maven Project, Enter a group id and the artifact, preencha os campos Group Id e Artifact Id, selecione war em Packaging e clique em Finish. Configurando o projeto No projeto dentro da pasta src/main/webapp, crie a pasta WEB-INF e em seguida o arquivo web.xml. Como nosso projeto disponibilizará um serviço Web, devemos criar o arquivo web.xml que ficaria conforme a Listagem 1. Por se tratar de um projeto Spring não poderia faltar o arquivo de configuração do mesmo, veja na Listagem 2 o básico para o projeto funcionar. Iremos explicar a configuração do arquivo spring-integration.xml no decorrer da explicação. No arquivo pom.xml adicione a dependência conforme a Listagem 3, para que o projeto funcione com o Spring MVC, Spring Integration e como o serviço será um REST, usamos o JAXB que faz os parses de Objeto Java para XML e vice-verça, através da extensão O/X Mappers do Spring. Listagem 1. Arquivo web.xml. <?xml version= 1.0 encoding= UTF-8?> <web-app...> <servlet> <servlet-name>dispatcher-servlet</servlet-name> <servlet-class>org.springframework.web.servlet. DispatcherServlet</servlet-class> <init-param> <param-name>contextconfiglocation </param-name> <param-value> classpath:application-context.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher-servlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app> Listagem 2. Arquivo application-context.xml. <beans xmlns= schema/beans xmlns:xsi= XMLSchema-instance xmlns:context= xsi:schemalocation= schema/beans beans/spring-beans.xsd org/schema/context context/spring-context.xsd > <context:component-scan base-package= mundoj.springintegration /> <import resource= spring-integration.xml /> </beans> Listagem 3. Arquivo pom.xml. <dependency> <groupid>org.springframework.integration</groupid> <artifactid>spring-integration-core</artifactid> <version>${spring.integration.version</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-webmvc</artifactid> <version>${spring.version</version> 9 \
6 </dependency> <dependency> <groupid>javax.servlet</groupid> <artifactid>servlet-api</artifactid> <version>${servlet-api.version</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-oxm</artifactid> <version>${spring.version</version> </dependency> Explicação do fluxo Para desenhar o fluxo, foi optada pela utilização da forma declarativa, ou seja via XML, pois o plugin Spring Tool Suite consegue exibi-lo facilmente na forma gráfica, facilitando a geração de documentação. Como nosso foco é mostrar o funcionamento dos padrões EAI, para explicar o fluxo, omitiremos alguns padrões que se repetem ao longo da solução. Para facilitar a explicação os padrões foram enumerados, conforme pode ser visto na figura 7. Ao receber uma notificação HTTP, o Spring através do Servlet org.springframework.web.servlet. DispatcherServlet registrado no web.xml, repassa a requisição para o Spring Integration, no caso, chamando o primeiro elemento do fluxo a ser explicado, o padrão Gateway. Gateway É um padrão de adaptação, disponibilizando conexão a algum recurso de entrada (inbound) ou saída (outbound). Este padrão repassa a mensagem ao recurso adaptado e então fica esperando uma resposta, conforme pode ser observado na figura 8. Ainda pode atender a diversos formatos, como HTTP, TCP/ UDP, FTP, Feed (RSS), JDBC, JMS, JMX, JPA, Arquivos e muitos outros. No nosso exemplo o Gateway é de entrada e representa uma chamada HTTP, veja como ficou a configuração do mesmo na forma declarativa na Listagem 4. Como é um serviço web para representar o endereço a ser disponibilizado, utilizamos a propriedade name. Podemos também estipular o tipo de entrada através da propriedade request-payload, no caso, enviamos um XML no corpo da mensagem e como a Classe mundoj.springintegration.to.lote está mapeada utilizando anotações da biblioteca Jaxb, o Spring Integration se encarrega de fazer a conversão sem a necessidade de código algum. Além dos canais de entrada e saída, configurados através das propriedades request-channel e reply-channel, respectivamente, e o canal onde os erros que ocorrem no fluxo serão encaminhados error-channel. Listagem 4. Exemplo de configuração do padrão Gateway. <int- request-channel= inputchannel reply-channel= outputchannel name= /lote supported-methods= POST request-payload-type= mundoj.springintegration.to.lote error-channel= errorchannel /> Figura 7. Modelagem do fluxo da solução baseada nos padrões EAI. GatEway GatEway application a output application b output Figura 8. Funcionamento do padrão Gateway. / 10
7 Channel O segundo padrão é o Channel. No exemplo de configuração da Listagem 5, utilizamos o canal de comunicação DirectChannel que é uma implementação síncrona e do tipo point-to-point. Este é o canal mais simples suportado pelo Spring Integration, por isso não exige qualquer configuração especial, simplesmente um id para identificar o mesmo. Por padrão esse tipo de canal implementa um balanceamento de carga que é baseado em uma abordagem round-robin, ou seja, se existirem mais de um receptor acoplado ao canal as mensagens serão repassadas de forma rotativa. Um recurso também interessante a ser mencionado no balanceamento de carga, é a configuração do atributo failover como true, neste caso se o receptor que está atendendo uma mensagem emitir uma exceção, a mensagem é repassada automaticamente ao receptor subsequente. Ainda no balanceador é possível estabelecer a ordem de execução dos receptores através da propriedade order, configurada em cada receptor. Listagem 6. Exemplo de configuração do padrão Filter. <int:filter input-channel= lotechannel output-channel= lotevalidochannel ref= lotefilter method= filtrar /> Listagem 7. Exemplo de implementação do padrão public class LoteFilter { public boolean filtrar(final Lote lote) { checkargument(lote.getnumerolote()!= null, Numero do lote não pode ser vazio ); checkargument(lote.getbeneficiario()!= null, Código do beneficiário não pode ser vazio ); checkargument(lote.getcheques()!= null &&!lote.getcheques().isempty(), A lista de cheques não pode ser vazia ); Listagem 5. Exemplo de configuração do padrão Channel. <int:channel id= inputchannel /> //... return true; Filter É responsável por decidir se a mensagem deve continuar no fluxo ou ser descartada, conforme ilustrado na figura 9. Também é muito simples de ser implementado, exigindo um canal de entrada input- -channel e um canal de saída de mensagens output- -channel, conforme pode ser observado na Listagem 6. Além disso, é necessário indicar uma implementação através do atributo ref e method, ou mesmo passar uma expressão de decisão do tipo SpEL (Spring Expression Language). A implementação pode ser vista na Listagem 7, no caso, estamos apenas validando os campos obrigatórios para que a mensagem possa ser processada sem erros. Note a presença da responsável por mapear os Endpoints do Spring Integration como beans do Spring. Service Activator Este padrão é similar ao padrão de programação orientada a objeto Delegate que simplesmente tem a função de delegar chamadas, conforme pode ser observado na figura 10. Conforme pode ser visto na Listagem 8, além dos canais de entrada e saída, através das propriedades input-channel e output- -channel, respectivamente, o Service Activator necessita também do bean a ser chamado através da propriedade ref e o método propriedade method. No lugar do bean, podemos utilizar uma expressão SpEL, quando queremos executar uma operação mais simples, como uma operação aritmética, por exemplo. Em isolado, seria necessário configurar o canal de entrada e saída, com as propriedades input-channel e output-channel, respectivamente. widget quote gadget quote widget quote widget quote widget quote message filter Figura 9. Funcionamento do padrão Filter. 11 \
8 A implementação do mesmo pode ser analisada na Listagem 9, onde simplesmente chamamos um serviço EJB, mapeado como beneficiarioservice (veja configuração na Listagem 10, no nosso exemplo, estamos utilizando o OpenEJB e o MockEJB), mas o serviço poderia ser outro recurso, como, uma chamada a um programa Mainframe, ou simplesmente a um POJO. Note que estamos trabalhando com uma mensagem que contém um Lote é importante trabalhar desta forma, pois apesar do Spring Integration cuidar de criar uma mensagem de saída. Às vezes, queremos por exemplo, adicionar informações ao Header da mensagem, mas o Spring Integration, não deixa você simplesmente adicionar uma informação no Header, para isso, devemos criar um novo Header, que encapsula o original, adicionar a nova informação, no caso, o objeto Beneficiario, retornado pelo serviço e utilizar a classe utilitária MessageBuilder para gerar uma nova mensagem. Listagem 8. Exemplo de configuração do padrão Service Activator. <int:service-activator input-channel= lotevalidochannel output-channel= lotebeneficiariochannel ref= beneficiarioserviceactivator method= consultar /> Listagem 9. Exemplo de implementação do padrão Service public class BeneficiarioServiceActivator private BeneficiarioService beneficiarioservice; public Message<Lote> consultar(final Message<Lote> message) { Integer codigobeneficiario = message. getpayload().getbeneficiario(); Beneficiario beneficiario = beneficiarioservice. obterporcodigo(codigobeneficiario); if (beneficiario == null) { throw new BeneficiarioInvalidoException( String.format( Beneficiário %d inválido, codigobeneficiario)); Map<String, Object> headers = Maps.newHashMap (message.getheaders()); headers.put( beneficiario, beneficiario); return MessageBuilder.withPayload( message.getpayload()).copyheaders(headers). build(); Listagem 10. Configuração do EJB BeneficiarioService. requestor request reply service activator replier Figura 10. Funcionamento do padrão Service Activator. service <jee:remote-slsb id= beneficiarioservice jndi-name= java:openejb/ejb/beneficiarioservice business-interface= mundoj.springintegration.ejb.service.beneficiarioservice /> Content Enricher Este padrão representa uma ação de enriquecimento do conteúdo da mensagem, conforme podemos observar na figura 11. O Spring Integration possui duas variações desse padrão: header-enricher: enriquece apenas o Header da mensagem, podemos ver um exemplo na Listagem 10. Para configurá-lo são necessários os canais de entrada e saída e as informações a serem adicionadas ao Header. No nosso exemplo, é informado o correlation-id que será utilizado no padrão Aggregator a ser explicado mais a frente. Mas podemos ser mais genéricos utilizando a tag header, passando o nome a ser utilizado, através da propriedade name e o valor, propriedade value. enricher: enriquece apenas o Payload. Nele po- / 12
9 basic message demos atribuir propriedades do objeto contido no Payload, através da tag property e das propriedades name, expression ou value, para atribuir seus valores. enricher Figura 11. Funcionamento do padrão Content Enricher. enriched message Listagem 10. Exemplo de configuração do padrão Content Enricher. <int:header-enricher input-channel= lotebeneficiariochannel output-channel= lotebeneficiarioenriquecidochannel > <int:correlation-id expression= payload.numerolote /> </int:header-enricher> Splitter Como o próprio nome diz, ele é responsável por dividir a mensagem em N mensagens, conforme pode ser observado na figura 12. Sua configuração é simples, bastando fornecer os canais de entrada e saída, através das propriedades input-channel e output- -channel, assim como o bean e seu método a ser chamado, através das propriedades ref e method, conforme é mostrado na Listagem 11. A complexidade da sua implementação dependerá da função do mesmo no fluxo, no nosso caso, como pode ser observado na Listagem 12, temos como entrada um lote e queremos retornar todos os cheques para serem processados individualmente. Note que criamos a classe QuantidadeCheques que será utilizada como contador de cheques. Essa contagem de cheques é feita por banco e será utilizada pelo agrupador de cheques, a ser explicado mais a frente, necessário para enviar informações ao Banco de todos mais especificamente. Listagem 11. Exemplo de configuração do padrão Splitter. <int:splitter input-channel= lotebeneficiarioenriquecidochannel output-channel= chequeschannel ref= lotesplitter method= split /> Listagem 12. Exemplo de implementação do padrão public class LoteSplitter { public Collection<Message<Cheque>> split(message<lote> message) { Collection<Cheque> cheques = message.getpayload().getcheques(); Map<String, Object> headers = Maps.newHashMap( message.getheaders()); for (Cheque cheque : cheques) { String chavechequebanco = String.format( CHEQUES_BANCO_%d, cheque.getbanco()); if (headers.containskey(chavechequebanco)) { QuantidadeCheques quantidade = (QuantidadeCheques) headers.get(chavechequebanco); quantidade.incrementar(); else { headers.put(chavechequebanco, new QuantidadeCheques()); Collection<Message<Cheque>> messages = Lists.newArrayList(); for (Cheque cheque : cheques) { messages.add( MessageBuilder.withPayload(cheque). copyheaders(headers).build()); return messages; splitter order item 1 order item 2 order item 3 new order Figura 12. Funcionamento do padrão Splitter. 13 \
10 Router É um padrão de decisão e desvio de fluxo, onde a mensagem que é recebida pode ser enviada para determinado canal, através da satisfação de determinada condição, conforme podemos acompanhar na ilustração da figura 13. Para facilitar, o Spring Integration provê uma série de variações desse padrão. Todas essas variações seguem a mesma estrutura, tendo pequenas mudanças entre uma e outra abordagem. Basicamente, precisamos configurar um canal de entrada, propriedade input-channel e um canal para condições não mapeadas, se necessário, neste caso pela propriedade default-output-channel. Os mapeamentos de desvios também devem possuir um canal mapeado, propriedade channel. Seguem as implementações disponíveis: payload-type-router: onde é possível, através do tipo do dado contido no Payload da mensagem, estipular o caminho que a mensagem deve seguir. header-value-router: possibilita rotear uma mensagem através das informações contidas no Header da mensagem. recipient-list-router: decisão através de expressões que podem ser referentes tanto ao Header como ao Payload da mensagem. exception-type-router: permite executar o roteamento da mensagem que contenham uma exceção encapsulada. router: permite criar uma implementação customizada de um roteador. Se quiser utilizar o plugin do Spring para gerar o diagrama, não é aconselhável a utilização de um bean para essa variação, pois não permite ao Spring Integration saber de imediato, quais serão os caminhos a serem tomados, quebrando o gráfico. Neste caso, aconselho recuperar as informações em uma etapa anterior, ficando somente uma expressão ou valor para a decisão de roteamento, como no exemplo da Listagem 13. Listagem 13. Exemplo de configuração do padrão Router. <int:router input-channel= chequeschannel expression= payload.banco > <int:mapping value= 341 channel= chequesbancodopovochannel /> <int:mapping value= 237 channel= chequesbancodetodoschannel /> </int:router> Wire Tap Padrão responsável por copiar uma mensagem de um canal e repassá-la a outro canal, conforme podemos acompanhar na figura 14. Isto é muito útil quando queremos monitorar as mensagens de um canal, ou até mesmo fazer outro processamento em paralelo com a mesma mensagem, como é o caso do nosso fluxo. Podemos observar na Listagem 14 que estamos utilizando a tag interceptors dentro da tag channel para interceptar a mensagem e a tab wire-tap para copiar a mesma. source wire tap Figura 14. Funcionamento do padrão Wire Tap. destination outqueue 1 inqueue outqueue 2 message router Figura 13. Funcionamento do padrão Router. / 14
11 Listagem 14. Exemplo de configuração do padrão Wire Tap. <int:channel id= chequesbancodopovochannel > <int:interceptors> <int:wire-tap channel= chequesbancodopovowirechannel /> </int:interceptors> </int:channel> Aggregator Se trata de um agrupador de mensagens, conforme mostrado na figura 15. Ao contrário do padrão Splitter que divide as mensagens o Aggregator junta N mensagens. A sua configuração é simples de entender, conforme podemos notar na Listagem 15, além das típicas propriedades referentes aos canais de entrada e saída, o mesmo possui algumas propriedades específicas. Basicamente para que o Aggregator possa transmitir uma mensagem são necessários três passos a serem explicados abaixo: Estratégia de correlação: é a estratégia responsável por identificar quais mensagens serão consideradas no agrupamento. Por padrão o Aggregator utiliza a informação correlation-id presente no Header da mensagem. No nosso caso, o mesmo é configurado utilizando o padrão header-enricher e tomando como base o número do lote, conforme podemos constatar na Listagem 16. A mesma ainda pode ser implementada de forma mais sofisticada, utilizando as propriedades correlation-strategy, passando o bean que contém a estratégia, a propriedade correlation-strategy-method, contendo o método do bean de estratégia a ser chamado, ou simplesmente correlation-strategy-expression, contendo uma expressão SpEL. Estratégia de liberação: é responsável por identificar em que momento a mensagem está pronta para ser transmitida. No caso do fluxo, tivemos que implementar uma estratégia, a setando através das propriedades release-strategy e release-strategy-method. A implementação, pode ser avaliada na Listagem 17, no método verificar, onde simplesmente estamos verificando se a quantidade de cheques, até o momento, corresponde a quantidade de cheques do banco informada no Header da mensagem. Outra forma de implementar essa estratégia é através da propriedade release-strategy-expression. Estratégia de envio: efetivamente transmite a mensagem. A mesma só é acionada se as outras estratégias explicadas anteriormente forem verdadeiras. Para utilizá-la, basta setarmos o bean e o método nas propriedades ref e method. Veja na Listagem 17, no método enviar que estamos juntando as mensagens em um novo lote. Esse lote é referente a um banco e um número de lote. Como todas as mensagens contêm as mesmas informações no Header, então estamos o copiando, da primeira mensagem. Listagem 15. Exemplo de configuração do padrão Aggregator. <int:aggregator input-channel= chequesbancodetodoschannel output-channel= lotebancodetodoschannel ref= chequeaggregator method= enviar release-strategy= chequeaggregator release-strategy-method= verificar /> Listagem 16. Exemplo de configuração da Estratégia de correlação do padrão Aggregator. <int:header-enricher input-channel= lotebeneficiariochannel output-channel= lotebeneficiarioenriquecidochannel > <int:correlation-id expression= payload.numerolote /> </int:header-enricher> inventory item 1 inventory item 2 inventory item 3 aggregator inventory order Figura 15. Funcionamento do padrão Aggregator. 15 \
12 Listagem 17. Exemplo de implementação do padrão public class ChequeAggregator { public boolean verificar( Collection<Message<Cheque>> messages) { Message<Cheque> primeiramensagem = messages.iterator().next(); String chavechequebanco = String.format( CHEQUES_BANCO_%d, primeiramensagem.getpayload().getbanco()); QuantidadeCheques quantidadecheques = ((QuantidadeCheques) primeiramensagem.getheaders(). get(chavechequebanco)); return messages.size() == quantidadecheques. getvalue(); public Message<Lote> enviar(final Collection<Message<Cheque>> messages) { Map<String, Object> header = Maps.newHashMap(messages.iterator(). next().getheaders()); Lote lote = new Lote(); lote.setcheques(lists.<cheque>newarraylist()); for (Message<Cheque> message : messages) { lote.getcheques().add(message.getpayload()); return MessageBuilder.withPayload(lote). copyheaders(header).build(); translator Message Translator Esse padrão tem uma função bem simples, transformar mensagens. Ou seja, a mensagem produzida é a mensagem que foi utilizada, mas em outro formato, conforme pode ser observado na figura 16. Por exemplo, entra um objeto Java e sai um objeto Serializado / JSON / XML ou vice-versa. Normalmente utilizado, para adaptar os tipos internos as chamados de aplicativos externos. No nosso fluxo, é utilizado principalmente para atender aos tipos exigidos pelos bancos, supondo que devemos enviar mensagens para uma fila no Banco De Todos em formato XML, temos que fazer uma transformação do objeto interno Lote, para esse XML, já para o Banco do Povo por se tratar de um FTP, devemos converter o objeto em bytes a serem salvos como arquivos. Assim como o padrão Router existem algumas implementações prontas com intuito de facilitar a transformação de mensagens. Todas as variações possuem uma configuração similar, necessitando basicamente dos canais de entrada e saída. Abaixo uma listagem desses facilitadores: object-to-string-transformer: simplementes transforma o objeto em String, chamam o método tostring(). payload-serializing-transformer: serializa o objeto JAVA. payload-deserializing-transformer: deserializa o objeto JAVA. object-to-map-transformer: transforma o objeto em um Map. Esse map será formado por chave (atributo) e valor (valor do atributo). map-to-object-transformer: transforma um Map em um objeto, o inverso de object-to- -map-transformer. object-to-json-transformer: transforma o objeto JAVA em objeto JSON. json-to-object-transformer: transforma objeto JSON em objeto JAVA. transformer: é um transformador genérico. Se a transformação for simples basta montar uma expressão, utilizando a propriedade expression. Se for mais sofisticada, podemos definir um bean e método que irão executar a transformação, através das propriedades ref e method, respectivamente, conforme a configuração da Listagem 18. No exemplo, é transformado um objeto cheque interno para um cheque no formato específico do Banco do Povo, como pode ser constatado na implementação da Listagem 19. Listagem 18. Exemplo de configuração do padrão Message Translator. incoming message translated message Figura 16. Funcionameto do padrão Message Translator. <int:transformer input-channel= dadoschequebancodopovochannel output-channel= ftpbancodopovochannel ref= imagemchequeparabytestransformator method= transformar /> / 16
13 Listagem 19. Exemplo de implementação do padrão Message public class ChequeParaChequeBancoDoPovoTransformer { public Message<ChequeBancoDoPovo> transformar( final Message<Cheque> message) throws Exception { Cheque cheque = message.getpayload(); Beneficiario beneficiario = (Beneficiario)message.getHeaders(). get( beneficiario ); ChequeBancoDoPovo chequebancodopovo = new ChequeBancoDoPovo(); chequebancodopovo.setagenciabeneficiario( beneficiario.getagencia()); chequebancodopovo.setcontabeneficiario( beneficiario.getconta()); chequebancodopovo.setvalor(cheque.getvalor()); return MessageBuilder.withPayload( chequebancodopovo). copyheaders(message.getheaders()).build(); Chain O funcionamento do mesmo pode ser observado na figura 17. Ele não é mencionado dentre os padrões EAI, pois é simplesmente um facilitador, que o Spring Integration oferece, onde podemos ligar os Endpoints em sequência sem a necessidade de um canal para conectá-los, formando um elemento composto. Na Listagem 20, o utilizamos para agrupar dois Message Translators. Note que os Endpoints não indicam quais serão os canais de entrada e saída, pois os mesmo são definidos no Chain. chain /chain Figura 17. Exemplo de funcionamento do padrão Chain. Listagem 20. Exemplo de configuração do elemento Chain. <int:chain input-channel= lotebancodetodoschannel output-channel= jmsbancodetodoschannel > <int:transformer ref= lotepararemessabancodetodostransformer method= transformar /> <int:transformer ref= objetoparaxmltransformer method= transformar /> </int:chain> Channel Adapter É o padrão de adaptação responsável por prover uma conexão de entrada ou saída há algum recurso. Assim como o Gateway pode atender a diversos recursos diferentes. Basicamente a única diferença entre esses padrões é que o Channel Adapter não fica esperando a resposta, conforme pode ser visto na figura 18. No nosso fluxo, estamos utilizando adaptadores do tipo saída. Um, para acessar um servidor FTP e outro, para acessar uma fila de mensagens através de JMS, conforme pode ser acompanhado na Listagem 21. Para configurá-los, necessitamos basicamente de um canal setando a propriedade channel e então temos as configurações especiais para cada tipo de recurso acessado. No caso do servidor FTP, temos que estipular o bean SessionFactory (sua configuração pode ser vista na Listagem 22, no exemplo estamos utilizando o framework FakeFTP), através da propriedade session-factory, o separador de arquivos, propriedade remote-file-separator, se o diretório será criado automaticamente ou não, propriedade auto-create- -directory e o diretório remoto onde os arquivos serão criados, propriedade remote-directory-expression. A mensagem repassada a este adaptador deve encapsular três tipos: um array de bytes, uma String ou um tipo java.util.io.file. No caso, estamos criando dois tipos de arquivos, um de imagem que é gerado se utilizando do atributo imagem do Cheque e o outro é um XML do tipo ChequeBancoDoPovo. No caso da fila de mensagens com JMS, temos que apenas referenciar os beans da fábrica de conexão e da fila propriamente dita, através das propriedades connection-factory e destination, respectivamente. Na Listagem 23, temos as configurações necessárias para apontar para o servidor de mensagens. Para o projeto de exemplo, estamos utilizando o framework Active- MQ da Apache. 17 \
14 channel adapter channel adapter application a INput application b Figura 18. Funcionamento do padrão Channel Adapter. Listagem 21. Exemplos de configuração do padrão Channel Adapter. <int-ftp:outbound-channel-adapter id= ftpbancodopovo channel= ftpbancodopovochannel session-factory= ftpbancodopovosessionfactory remote-file-separator= / auto-create-directory= true remote-directory-expression= /123/ /> <int-jms:outbound-channel-adapter id= jmsbancodetodos channel= jmsbancodetodoschannel destination= bancodetodosqueue connection-factory= bancodetodosconnectionfactory /> Listagem 22. Configuração do Session Factory do servidor FTP do Banco do Povo. <bean id= ftpbancodopovosessionfactory class= org.springframework.integration.ftp.session. DefaultFtpSessionFactory > <property name= host value= localhost /> <property name= port value= 9981 /> <property name= username value= mundoj /> <property name= password value= mundoj /> </bean> Listagem 23. Configuração da fila de mensagens do Banco De Todos. <jee:jndi-lookup id= bancodetodosconnectionfactory jndi-name= jms/bancodetodosconnectionfactory /> <jee:jndi-lookup id= bancodetodosqueue jndi-name= jms/bancodetodosqueue /> Bridge Este padrão estabelece uma ponte entre dois canais, não alterando a mensagem, ou seja, a mesma mensagem que chega através do canal de entrada é transmitida ao canal de saída, conforme exibido na figura 19. O mesmo pode ser utilizado tanto para facilitar os testes, pulando trechos do fluxo, como para o nosso exemplo, onde temos um canal de tratamento de erro que pode se ligar tanto a um canal de log, quanto a um canal de resposta, conforme o administrador optar. Veja na Listagem 24, dois exemplos utilizados no fluxo que ilustram bem as configurações deste padrão. Note a presença da propriedade auto- -startup, que pode ser usada na maioria dos padrões, indicando se o mesmo será startado (true) ao iniciar o fluxo ou ficará stopado (false). Se omitido o valor padrão é true. Listagem 24. Exemplos de utilização do padrão Bridge. <int:bridge id= logbridge input-channel= errorchannel output-channel= logerrorchannel auto-startup= true /> Figura 19. Funcionamento do padrão Bridge. / 18
15 message flow control bus Figura 20. Funcionamento do padrão Control Bus. <int:bridge id= errorbridge input-channel= errorchannel output-channel= outputchannel auto-startup= false /> Control Bus O Control Bus é um padrão muito importante dentro de uma solução EAI, pois o mesmo é responsável por prover uma administração de todo o fluxo em tempo de execução, conforme ilustrado na figura 20. No Spring Integration, o mesmo não é acoplado a nenhum EndPoint. Basta apenas disponibilizar acesso externo ao mesmo que esse elemento tem controle sobre todo o fluxo. No nosso caso é feito via um Gateway HTTP, através do endereço conforme podemos constatar na Listagem 25. No Spring Integration, o Control Bus funciona a base de comandos, no nosso caso, iremos habilitar ou desabilitar os dois Bridges mencionados anteriormente. Veja na Listagem 26 um exemplo de utilização do mesmo, onde, estamos stopando o Brigde logbridge e startando o Bridge errorbridge, fazendo com que os erros que antes eram logados, passem a ser lançados para a aplicação cliente. Listagem 25. Exemplo de configuração do padrão Control Bus. <int- request-channel= controlchannel name= /control supported-methods= POST /> <int:channel id= controlchannel /> <int:control-bus input-channel= controlchannel /> Listagem 26. Exemplo de utilização do padrão Control Bus. ); ); Rodando o projeto Para rodar o projeto que está disponível no site da revista, basta executar o comando do Maven: mvn integration-test Isso fará com que o Jetty suba, junto também é startado os servidores/containers OpenEJB, Apache ActiveMQ e de FakeFTP, tudo isso para que você não precise subir nada a parte, para ver o exemplo rodando. Ao final da execução, os testes irão verificar se os arquivos foram copiados no servidor FTP e se as mensagens foram enviadas ao servidor MQ. Considerações finais Como podemos observar, EAI não é nenhum bicho de sete cabeças. Muito pelo contrário, o mesmo utiliza uma notação funcional. Por trabalhar com uma estrutura simples, voltada à utilização de padrões, facilita em muito o desenho de soluções, a separação de tarefas e a reutilização de componentes. Já o Spring Integration é open source, utiliza a madura plataforma Java e o famoso framework Spring como base, possuindo integração com diversas tecnologias, protocolos, plataformas e sistemas. O que faz como que seja uma ótima opção na hora de escolher uma ferramenta EAI. Se você está pensando em implementar SOA na sua empresa e pretende investir fortemente em uma ferramenta ESB, equipamentos, treinamentos e contratações, fica a dica, vale a pena avaliar as opções open source antes. > Enterprise Application Integration /referências > Documentação Spring Integration htmlsingle/ > Exemplos de utilização do Spring Integration 19 \
Parte I. Demoiselle Mail
Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework
Leia maisCriação de um novo projeto no Eclipse utilizando Maven
1. Faça o download da versão mais atual do Eclipse IDE for Java EE Developers em https://www.eclipse.org/downloads/. 2. No Eclipse, crie um novo projeto Maven, em File >> New >> Maven Project 3. Marque
Leia mais4 O Workflow e a Máquina de Regras
4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu
Leia maisABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE
ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil aapfjr@gmail.com
Leia maisArquitetura de Rede de Computadores
TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador
Leia mais02 - Usando o SiteMaster - Informações importantes
01 - Apresentação do SiteMaster - News Edition O SiteMaster foi desenvolvido para ser um sistema simples de gerenciamento de notícias, instalado em seu próprio computador e com configuração simplificada,
Leia maisDOCUMENTAÇÃO DO FRAMEWORK - versão 2.0
DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia maisConfigurando o DDNS Management System
Configurando o DDNS Management System Solução 1: Com o desenvolvimento de sistemas de vigilância, cada vez mais usuários querem usar a conexão ADSL para realizar vigilância de vídeo através da rede. Porém
Leia maisAPLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE
1/5 PROTOCOLOS DE O Modelo OSI O OSI é um modelo usado para entender como os protocolos de rede funcionam. Para facilitar a interconexão de sistemas de computadores, a ISO (International Standards Organization)
Leia maisEntendendo como funciona o NAT
Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços
Leia maisINFORMÁTICA FUNDAMENTOS DE INTERNET. Prof. Marcondes Ribeiro Lima
INFORMÁTICA FUNDAMENTOS DE INTERNET Prof. Marcondes Ribeiro Lima Fundamentos de Internet O que é internet? Nome dado a rede mundial de computadores, na verdade a reunião de milhares de redes conectadas
Leia mais3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio
32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio
Leia maisPrática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva
1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade
Leia maisManual do Visualizador NF e KEY BEST
Manual do Visualizador NF e KEY BEST Versão 1.0 Maio/2011 INDICE SOBRE O VISUALIZADOR...................................................... 02 RISCOS POSSÍVEIS PARA O EMITENTE DA NOTA FISCAL ELETRÔNICA.................
Leia mais2.0.0.X. Storage Client. TecnoSpeed. Tecnologia da Informação. Manual do Storage Client
2.0.0.X TecnoSpeed Tecnologia da Informação Storage Client Manual do Storage Client 1 Conteúdo 1. Apresentação... 3 1.1. Apresentação do Produto... 3 1.2. Sobre este Manual... 3 2. Sobre o Storage Client...
Leia maisCONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;
CONCEITOS INICIAIS Agenda A diferença entre páginas Web, Home Page e apresentação Web; O que é necessário para se criar páginas para a Web; Navegadores; O que é site, Host, Provedor e Servidor Web; Protocolos.
Leia maisCSAU 10.0. Guia: Manual do CSAU 10.0 como implementar e utilizar.
CSAU 10.0 Guia: Manual do CSAU 10.0 como implementar e utilizar. Data do Documento: Janeiro de 2012 Sumário 1. Sobre o manual do CSAU... 3 2. Interface do CSAU 10.0... 4 2.1. Início... 4 2.2. Update...
Leia maisTRANSMISSOR ECF. Sistema de transmissão de arquivos Nota Fiscal Paulista. Manual de Utilização
TRANSMISSOR ECF Sistema de transmissão de arquivos Nota Fiscal Paulista Manual de Utilização 1. Histórico de alterações Data Versão Alteração 04/12/2012 1 Criação do documento 28/02/2013 2 Revisão 2. Proposta
Leia maisProgramação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza
Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem
Leia maisSUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2
SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 1.1 Introdução... 2 1.2 Estrutura do IP... 3 1.3 Tipos de IP... 3 1.4 Classes de IP... 4 1.5 Máscara de Sub-Rede... 6 1.6 Atribuindo um IP ao computador... 7 2
Leia maisTrecho retirando do Manual do esocial Versão 1.1
Trecho retirando do Manual do esocial Versão 1.1 A rotina de acesso direto ao XML do S-1000, o usuário pode encontrar na opção de cadastro de Empresas do SIP. Sempre que o usuário localizar a figura ao
Leia maishttp://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho
vi http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Administração de Redes de Computadores Resumo de Serviços em Rede Linux Controlador de Domínio Servidor DNS
Leia maisManual SAGe Versão 1.2 (a partir da versão 12.08.01)
Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação
Leia maisUFG - Instituto de Informática
UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 6 EJB Enterprise Java
Leia mais3 SCS: Sistema de Componentes de Software
3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário
Leia maiswww.nddigital.com.br Manual de Administração DPS Printer 2.1 NDDigital S/A - Software
www.nddigital.com.br Manual de Administração DPS Printer 2.1 NDDigital S/A - Software 2 Introdução Este manual foi elaborado para administradores, para entendimento do funcionamento do produto e administração
Leia maisManual de Instalação
Manual de Instalação Produto: n-control MSI Versão: 4.6 Versão do Doc.: 1.0 Autor: Aline Della Justina Data: 17/06/2011 Público-alvo: Clientes e Parceiros NDDigital Alterado por: Release Note: Detalhamento
Leia maise-ouv Passo-a-passo Sistema de Ouvidorias do Poder Executivo Federal Junho, 2015 Controladoria-Geral da União
e-ouv Passo-a-passo Sistema de Ouvidorias do Poder Executivo Federal Junho, 2015 Sumário 1. Acesso ao sistema... 3 2. Funcionalidades do sistema... 5 3. Como tratar manifestações... 14 3.1 Detalhar...
Leia maisPara funcionamento do Netz, alguns programas devem ser instalados e alguns procedimentos devem ser seguidos. São eles:
Instalação do Netz Para funcionamento do Netz, alguns programas devem ser instalados e alguns procedimentos devem ser seguidos. São eles: Instalação do Java SE 6, que pode ser instalado através da JDK.
Leia mais4 Um Exemplo de Implementação
4 Um Exemplo de Implementação Neste capítulo será discutida uma implementação baseada na arquitetura proposta. Para tanto, será explicado como a arquitetura proposta se casa com as necessidades da aplicação
Leia maisManual de Publicaça o no Blog da Aça o TRIBOS nas Trilhas da Cidadania
Manual de Publicaça o no Blog da Aça o TRIBOS nas Trilhas da Cidadania Sumário Objetivos do Blog... 2 Log-in... 3 Esqueci minha senha... 4 Utilizando o Blog... 5 Encontrando seu Blog... 5 Conhecendo o
Leia mais5 Estudo de caso: utilizando o sistema para requisição de material
61 5 Estudo de caso: utilizando o sistema para requisição de material A fim de avaliar as características da arquitetura proposta e a corretude da implementação, realizamos experiências com cenários de
Leia maisDespachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1
DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1 1 Sumário 1 - Instalação Normal do Despachante Express... 3 2 - Instalação do Despachante Express em Rede... 5 3 - Registrando o Despachante Express...
Leia maisFluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos
Este procedimento corresponde ao fluxo de trabalho de Indexação de código de barras e de separação de documentos no programa de treinamento do Capture Pro Software. As etapas do procedimento encontram-se
Leia maisJXTA. Alessandro Vasconcelos Ferreira de Lima. avfl@cin.ufpe.br
JXTA Alessandro Vasconcelos Ferreira de Lima Roteiro Motivação Introdução Arquitetura de JXTA Elementos de JXTA Os Protocolos Comparações e Desvantagens Conclusão Motivação Limitações do Modelo Cliente
Leia maisAnálise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)
Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem
Leia maisGuia De Configuração do Sistema de Comunicação GPRS ID DATA
Guia De Configuração do Sistema de Comunicação GPRS ID DATA www.iddata.com.br Sumário 1. Introdução... 3 2. Requisitos Mínimos... 4 3. Modos de Configuração da Estrutura de Comunicação... 5 3.1. Conexão
Leia maisMINISTÉRIO DA EDUCAÇÃO
MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SANTA CATARINA CAMPUS SÃO JOSÉ REDES DE COMPUTADORES Laboratório 2 Wireshark
Leia maisMANUAL DE FTP. Instalando, Configurando e Utilizando FTP
MANUAL DE FTP Instalando, Configurando e Utilizando FTP Este manual destina-se auxiliar os clientes e fornecedores da Log&Print na instalação, configuração e utilização de FTP O que é FTP? E o que é um
Leia maisPasso a Passo. WebSphere Message Broker. Fluxo como WebService
Passo a Passo WebSphere Message Broker Fluxo como WebService Alexandre José Batista ajbatist@ibest.com.br Criado em: 07/11/08 Página 1 de 38 Índice 1. OBJETIVOS DO DOCUMENTO... 4 2. CRIANDO UM FLUXO NO
Leia maisNoções de. Microsoft SQL Server. Microsoft SQL Server
Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados
Leia maisProfessor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede
Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede O sistema de nome de domínio (DNS) é um sistema que nomeia computadores e serviços de rede e é organizado em uma hierarquia de domínios.
Leia maisMANUAL DO ADMINISTRADOR LOCAL. Entidade Municipal
MANUAL DO ADMINISTRADOR LOCAL Entidade Municipal Abril / 2011 ÍNDICE Objetivos do Sistema de Registro de Integrado - REGIN... 3 Principais Módulos do Sistema... 4 Módulo Controle de Acesso... 5 Módulo
Leia maisMANUAL TISS Versão 3.02.00
MANUAL TISS Versão 3.02.00 1 INTRODUÇÃO Esse manual tem como objetivo oferecer todas as informações na nova ferramenta SAP que será utilizada pelo prestador Mediplan, a mesma será responsável para atender
Leia maisConfigurando um Grupo Doméstico e Compartilhando arquivos no Windows 7
Configurando um Grupo Doméstico e Compartilhando arquivos no Windows 7 Para criar um grupo doméstico e compartilhar arquivos é necessário que tenhamos pelo menos dois computadores ligados entre si (em
Leia maisManual de Utilização do Zimbra
Manual de Utilização do Zimbra Compatível com os principais navegadores web (Firefox, Chrome e Internet Explorer) o Zimbra Webmail é uma suíte completa de ferramentas para gerir e-mails, calendário, tarefas
Leia maisManual Integra S_Line
1 Introdução O é uma ferramenta que permite a transmissão Eletrônica de Resultado de Exames, possibilitando aos Prestadores de Serviços (Rede Credenciada), integrarem seus sistemas com os das Operadoras
Leia maisManual de Utilização do Sistema Financeiro Opções Disponíveis a partir da versão 8.0.40 do Sistema Micropost
O Novo Gerenciador Financeiro Micropost é acessado através do botão "Gerenciador Financeiro" na tela principal do sistema (como mostra a figura 1). Caso o botão esteja desabilitado deve-se entrar nas configurações
Leia maisCadastrar Categorias e Produtos
Cadastrar Categorias e Produtos 1- Introdução Bom, agora que você conseguiu configurar a sua loja com sucesso, incluindo as informações do PagSeguro, precisamos cadastrar o principal: Os Produtos, afinal,
Leia maisVVS Sistemas (21)3405-9500
Índice Assunto Página Apresentação... 2 Funcionamento do Módulo... 3 Instalação do Módulo... 4 Configurações no C-Plus NF-e... 9 Acessando os arquivos... 11 Apresentação Apresentamos o módulo C-Plus NF-e
Leia maisPrincipais Novidades Abril/2013 a Junho/2013
Principais Novidades Abril/2013 a Junho/2013 Sumário 1. Ambiente Group Shopping... 3 2. Alteração na Tela de Contratos e Controle de Edições... 7 3. Propagação de Contratos... 10 4. Configuração de Impressora
Leia maisO que há de novo. Audaces Idea
O que há de novo Audaces Idea Com o propósito de produzir tecnologia de ponta, o principal requisito da Política de Qualidade da Audaces é buscar a melhoria contínua de seus produtos e serviços. Inovadora
Leia maisPersistência de Dados
Persistência de s Universidade do Estado de Santa Catarina - Udesc Centro de Ciências Tecnológicas - CCT Departamento de Ciência da Computação Tecnologia de Sistemas de Informação Estrutura de s II - DAD
Leia maisAula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela
Aula 01 - Formatações prontas e Sumário Formatar como Tabela Formatar como Tabela (cont.) Alterando as formatações aplicadas e adicionando novos itens Removendo a formatação de tabela aplicada Formatação
Leia maisSISTEMAS OPERACIONAIS LIVRES GERENCIAMENTO DE SERVIÇOS NO WINDOWS. Professor Carlos Muniz
SISTEMAS OPERACIONAIS LIVRES GERENCIAMENTO DE SERVIÇOS NO WINDOWS Se todos os computadores da sua rede doméstica estiverem executando o Windows 7, crie um grupo doméstico Definitivamente, a forma mais
Leia maisManual de configuração do sistema
Manual de configuração do sistema (v.1.5.x Beta) Rua México, 119 Sala 2004 Centro Rio de Janeiro, RJ www.doctors-solution.com.br www.simdoctor.com.br contato@simdoctor.com.br Sumário 1. Fazendo seu primeiro
Leia mais5 Mecanismo de seleção de componentes
Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações
Leia maisUFG - Instituto de Informática
UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 13 Web Services Web Services
Leia maisRegistro e Acompanhamento de Chamados
Registro e Acompanhamento de Chamados Contatos da Central de Serviços de TI do TJPE Por telefone: (81) 2123-9500 Pela intranet: no link Central de Serviços de TI Web (www.tjpe.jus.br/intranet) APRESENTAÇÃO
Leia maisManual das funcionalidades Webmail AASP
Manual das funcionalidades Webmail AASP 1. Configurações iniciais 2. Regras 3. Histórico da conta 4. Autorresposta 5. Dados de acesso (alterando senha de acesso) 6. Identidade (assinatura) 7. Redirecionamento
Leia maisComo criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse
Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web
Leia maisComo instalar uma impressora?
Como instalar uma impressora? Antes de utilizar uma impressora para imprimir seus documentos, arquivos, fotos, etc. é necessário instalá-la e configurá-la no computador. Na instalação o computador se prepara
Leia maisSistemas Distribuídos Comunicação entre Processos em Sistemas Distribuídos: Middleware de comunicação Aula II Prof. Rosemary Silveira F. Melo Comunicação em sistemas distribuídos é um ponto fundamental
Leia maisSistema de Controle de Solicitação de Desenvolvimento
Sistema de Controle de Solicitação de Desenvolvimento Introdução O presente documento descreverá de forma objetiva as principais operações para abertura e consulta de uma solicitação ao Setor de Desenvolvimento
Leia maisEAI Manual do Administrador
EAI Manual do Administrador 1 Definição de Host Application O que é um Host Application? Significa Aplicativo Hospedeiro, é o nome dado ao ambiente EAI que estará executando no seu computador ou em um
Leia maisProcedimentos para Reinstalação do Sisloc
Procedimentos para Reinstalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Criação de backups importantes... 3 3. Reinstalação do Sisloc... 4 Passo a passo... 4 4. Instalação da base de dados Sisloc...
Leia maisConceitos Básicos de Rede. Um manual para empresas com até 75 computadores
Conceitos Básicos de Rede Um manual para empresas com até 75 computadores 1 Conceitos Básicos de Rede Conceitos Básicos de Rede... 1 A Função de Uma Rede... 1 Introdução às Redes... 2 Mais Conceitos Básicos
Leia maisProcedimentos para Configuração de Redirecionamento de Portas
1 Procedimentos para Configuração de Redirecionamento de Portas O DIR 635 tem duas opções para liberação de portas: Virtual server: A opção Virtual Server permite que você defina uma única porta pública
Leia maisGUIA INTEGRA SERVICES E STATUS MONITOR
GUIA INTEGRA SERVICES E STATUS MONITOR 1 - Integra Services Atenção: o Integra Services está disponível a partir da versão 2.0 do software Urano Integra. O Integra Services é um aplicativo que faz parte
Leia mais1. Explicando Roteamento um exemplo prático. Através da análise de uns exemplos simples será possível compreender como o roteamento funciona.
Aula 14 Redes de Computadores 24/10/07 Universidade do Contestado UnC/Mafra Sistemas de Informação Prof. Carlos Guerber ROTEAMENTO EM UMA REDE DE COMPUTADORES A máscara de sub-rede é utilizada para determinar
Leia maisProgramando em PHP. Conceitos Básicos
Programando em PHP www.guilhermepontes.eti.br lgapontes@gmail.com Conceitos Básicos Todo o escopo deste estudo estará voltado para a criação de sites com o uso dos diversos recursos de programação web
Leia maisManual de Administração
Manual de Administração Produto: n-host Versão do produto: 4.1 Autor: Aline Della Justina Versão do documento: 1 Versão do template: Data: 30/07/01 Documento destinado a: Parceiros NDDigital, técnicos
Leia maisSISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl
SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE Aluno: Roberto Reinert Orientador: Everaldo A. Grahl Roteiro de apresentação Introdução Objetivos Fundamentação Teórica Workflow Processo
Leia maisTabela e Gráficos Dinâmicos Como estruturar dinamicamente dados no Excel
Tabela e Gráficos Dinâmicos Como estruturar! Para que serve a Tabela e o Gráfico Dinâmico?! Como criar uma Tabela Dinâmica?! Como criar um Gráfico Dinâmico?! Como podemos atualizar dos dados da Tabela
Leia maisADMINISTRAÇÃO DE SISTEMA OPERACIONAL DE REDE (AULA 4)
Prof. Breno Leonardo Gomes de Menezes Araújo brenod123@gmail.com http://blog.brenoleonardo.com.br ADMINISTRAÇÃO DE SISTEMA OPERACIONAL DE REDE (AULA 4) Serviço de diretório Serviço de diretório é um conjunto
Leia maisMANUAL DO ANIMAIL 1.0.0.1142 Terti Software
O Animail é um software para criar campanhas de envio de email (email Marketing). Você pode criar diversas campanhas para públicos diferenciados. Tela Principal do sistema Para melhor apresentar o sistema,
Leia maisCurso de Aprendizado Industrial Desenvolvedor WEB
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Modelo Cliente- Servidor Modelo de Aplicação Cliente-servidor Os
Leia maisTutorial para envio de comunicados e SMS
Tutorial para envio de comunicados e SMS Conteúdo 1. Enviando comunicado para os alunos... 1 2. Verificando a situação do envio dos e-mails para os alunos... 5 3. Enviando comunicado para colaboradores
Leia maisCONFIGURAÇÃO MINIMA EXIGIDA:
Este tutorial parte do princípio que seu usuário já possua conhecimentos básicos sobre hardware, sistema operacional Windows XP ou superior, firewall, protocolo de rede TCP/IP e instalação de software.
Leia maisAndroid e Bancos de Dados
(Usando o SQLite) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do
Leia maisData Transformation Services (DTS) por Anderson Ferreira Souza
Data Transformation Services (DTS) por Anderson Ferreira Souza O Sql Server possui um recurso extremamente poderoso que é muito pouco utilizado pelos administradores e programadores. Com certeza, sendo
Leia maisMódulo e-rede VirtueMart v1.0. Manual de. Instalação do Módulo. estamos todos ligados
Módulo e-rede VirtueMart v1.0 Manual de Instalação do Módulo estamos todos ligados 01 02 03 04 Introdução 3 Versão 3 Requerimentos 3 Manual de instalação 4 05 06 4.1 Permissões 4 4.2 Instalação e ativação
Leia mais2 Diagrama de Caso de Uso
Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa
Leia maisINDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 4. INTERLIGAÇÃO DO SISTEMA... 5 5. ALGUNS RECURSOS... 6 6. SERVIDOR BAM...
1 de 30 INDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 3.1. ONDE SE DEVE INSTALAR O SERVIDOR BAM?... 4 3.2. ONDE SE DEVE INSTALAR O PROGRAMADOR REMOTO BAM?... 4 3.3. COMO FAZER
Leia maisPORTAL DE COMPRAS SÃO JOSÉ DO RIO PRETO
Compra Direta - Guia do Fornecedor PORTAL DE COMPRAS SÃO JOSÉ DO RIO PRETO Página As informações contidas neste documento, incluindo quaisquer URLs e outras possíveis referências a web sites, estão sujeitas
Leia mais10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO
10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE
Leia maisIntrodução a Banco de Dados
Introdução a Banco de Dados Ricardo Henrique Tassi - Departamento de Replicação Índice 1- Introdução... 03 2- Quais são os bancos de dados mais conhecidos hoje em dia...04 3- Quais são os tipos de banco...05
Leia maisCONFIGURAÇÃO DE REDE SISTEMA IDEAGRI - FAQ CONCEITOS GERAIS
CONFIGURAÇÃO DE REDE SISTEMA IDEAGRI - FAQ CONCEITOS GERAIS Servidor: O servidor é todo computador no qual um banco de dados ou um programa (aplicação) está instalado e será COMPARTILHADO para outros computadores,
Leia maisEscritório Virtual Administrativo
1 Treinamento Módulos Escritório Virtual Administrativo Sistema Office Instruções para configuração e utilização do módulo Escritório Virtual e módulo Administrativo do sistema Office 2 3 1. Escritório
Leia maisINTRODUÇÃO À TECNOLOGIA SERVLETS
PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO À TECNOLOGIA SERVLETS Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o conceito aplicações orientada a serviços via web Apresentar o papel dos contentores
Leia maisMANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1
MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento Toledo PR Página 1 INDICE 1. O QUE É O SORE...3 2. COMO ACESSAR O SORE... 4 2.1. Obtendo um Usuário e Senha... 4 2.2. Acessando o SORE pelo
Leia maisSISTEMAS DISTRIBUÍDOS
SISTEMAS DISTRIBUÍDOS Modelo cliente e servidor Slide 2 Nielsen C. Damasceno Modelos Cliente - Servidor A principal diferença entre um sistema centralizado e um sistema distribuído está na comunicação
Leia maisIntrodução... 2. Contratando o produto Link2NFe... 2. Assistente de configuração de emissor... 3. Configurações Avançadas do Emissor...
0 Conteúdo Introdução... 2 Contratando o produto Link2NFe.... 2 Assistente de configuração de emissor.... 3 Configurações Avançadas do Emissor... 5 Conhecendo o Gerenciador de Recursos da Link2business....
Leia maisManual do Google agenda. criação e compartilhamento de agendas
Manual do Google agenda criação e compartilhamento de agendas 1 O que é o Google Agenda? Google Agenda é um serviço de agenda on line gratuito do Google, onde você pode anotar compromissos e tarefas, organizando
Leia mais