TDD. Se você é leitor da MundoJ ou alguma outra revista, em aplicações Java EE com JBoss Arquillian

Tamanho: px
Começar a partir da página:

Download "TDD. Se você é leitor da MundoJ ou alguma outra revista, em aplicações Java EE com JBoss Arquillian"

Transcrição

1 capa_ TDD em aplicações Java EE com JBoss Arquillian Passo-a-passo completo para testar seus EJBs sem Mocks Gabriel Ozeas Bacharel em Ciência da Computação pela Universidade de Franca. Tem contato com Java há mais de 5 anos, possui as certificações SCJP, SCWCD, SCBCD, OCE-EJB, OCMJD, CSM. Trabalha atualmente como desenvolvedor e consultor na equipe de portais da 4Linux, ajudando outras equipes em projetos de órgãos públicos e privados. Ronaldo Florence ronaldo@rd.eti.br Bacharel em Ciências da Computação pela Faculdade Ruy Barbosa, sócio-diretor da empresa RD Tecnologia da Informação e trabalha com Java há 12 anos desenvolvendo aplicações corporativas. Criar uma suíte de testes para uma aplicação que depende de containers pode ser trabalhoso e cansativo. Testes de integração sempre foram difíceis de escrever e lentos de executar, mas isso mudou. Com o JBoss Arquillian testes de integração ficaram tão fáceis que viabilizou o desenvolvimento Java EE utilizando TDD. Neste artigo caminhamos passo-a-passo na criação de um EJB através do ciclo de TDD, mostrando como configurar o Arquillian e como tirar proveito da sua simplicidade na construção de testes de Integração. Se você é leitor da MundoJ ou alguma outra revista, blog ou fórum referente a desenvolvimento, já deve ter notado a quantidade de artigos e comentários sobre testes de software. O quanto eles nos ajudam a proteger a qualidade do nosso código do caos do trabalho em equipe, atualizações, desvio da especificação e outras questões tiradas da lista de problemas no desenvolvimento. Por estes motivos, a fama dos testes não é passageira, ela está mergulhando no dia-a-dia do processo de desenvolvimento das equipes junto às metodologias ágeis. E dentro do processo de desenvolvimento voltado a testes, os testes de integração sempre foram considerados um mal necessário. Eles são mais lentos que os testes de uni-

2 dade, demoram mais e geram erros muito mais complexos de se identificar, já que envolvem a interação entre componentes que podem estar em diferentes camadas e até escritos em diferentes tecnologias. Alguns projetos, especialmente os que tangem o mundo Java EE, como o JBoss Arquillian, JSFUnit, OpenEJB e Selenium, estão facilitando a implementação de testes de integração, diminuindo o esforço necessário para elaborar um bom arsenal de testes mais real. Vamos voltar nossa atenção ao JBoss Arquillian. Neste artigo, você vai passar por um passo-a-passo na criação de testes com o Arquillian, conhecendo os aspectos mais importantes desta ferramenta. Você também irá conhecer o projeto ShrinkWrap, que permite ao desenvolvedor montar pacotes em tempo de execução, focando somente nas classes que devem ser testadas. Está fora do escopo deste artigo a discussão se testes de unidade podem ou não ser substituídos por testes de integração com a utilização de uma ferramenta como o JBoss Arquillian, mas o fato é que com servidores minimalistas como o Glassfish Embedded e JBoss Embedded os teste de integração se tornaram mais rápidos, chegando a rodar em segundos. Unindo-se isso ao enriquecimento dos testes que o Arquillian traz, escrever um teste de integração ficou tão simples quanto escrever um teste de unidade. Arquillian Durante a implementação dos testes para sua aplicação, o uso de mocks e objetos que simulam o comportamento de outros componentes estão extensamente distribuídos pelo suíte de teste. O uso exaustivo deles pode distorcer o teste de integração a ponto de não conseguir avaliar todos os comportamentos do componente testado quando está interagindo com suas dependências, não reproduzindo exatamente as interações que acontecem em ambientes reais. Outro problema encontrado pelos desenvolvedores quando estão implementando testes que empregam recursos externos é a dependência entre testes e ferramentas de build como Maven, Gradle e Ant. Durante o desenvolvimento, é comum os testes de regressão serem executados pelas ferramentas de build, porque são, na maioria das vezes, elas que possuem a integração com os containers através de plugins. Todavia, isso impossibilita o desenvolvedor de utilizar sua IDE como o Eclipse para executar os testes, devido ela não respeitar as pré e pós-fases de testes de integração da ferramenta de build. Para o Arquillian, o ato de gerenciar a integração dos testes com o container em uma aplicação Java EE não deve ser árduo para você, desenvolvedor. Os testes não devem dar voltar e voltas tentando ajustar a infraestrutura para que o cenário faça sentido. O Arquillian prevê um trabalho maior na configuração inicial, livrando os testes de repetirem estes passos dentro de si mesmos. A Listagem 1 mostra um caso de teste para um bean de sessão chamado GerenciadorLivros que utiliza o Arquillian. Para seu funcionamento, ele espera quatro coisas de seu caso de teste: 1. Pelo menos um método anotado com no caso do JUnit. 2. Que o caso de teste seja indicado para executar com o Arquillian, utilizando a RunWith(Arquillian.class). 3. Um método que retorne uma classe que representa o pacote com as classes que serão instaladas no container. Este pacote é montado pelo projeto JBoss ShrinkWrap que será abordado nas próximas sessões. Este método deve ser estático e anotado 4. Por último, um container onde será instalada a aplicação, podendo ser desde um container embutido e leve como Tomcat, Jetty, até servidores de aplicação completos como JBoss e Glassfish. O Arquillian possui alguns adaptadores para a maioria dos containers, e tanto o adaptador quanto o container embutido podem ser declarados no pom.xml do Maven. Veremos mais a frente no artigo como configurar um container. Listagem 1. Teste com o mínimo necessário do public class GerenciadorLivrosIT private GerenciadorLivros livros; public void avaliarlivrosemnotadevetervalorinicial() throws Exception { livros.adicionarlivro(new Livro( Senhor dos Anéis, A Sociedade do Anel )); livros.avaliarlivro( , 9f); Livro persistido = livros.getlivroporisbn( ); assertequals(float.valueof(9f), new public static WebArchive createdeployment() throws Exception { return ShrinkWrap.create(WebArchive.class, teste.war ).addclasses(gerenciadorlivros.class, Livro.class); / 16

3 Configurando o ambiente Para fins deste artigo, utilizaremos a IDE Eclipse, em sua versão Indigo, com os plugins m2e Maven Integration for Eclipse e Maven Integration for WTP, para integração com Maven. Através do Maven configuraremos todas as dependências e servidores que precisamos para nosso teste (ver seção configurando o Arquillian). O nosso cenário de teste é uma simples aplicação JEE 6 com um módulo EJB, um projeto JAR simples para armazenarmos entidades e nosso persistence. xml e um módulo EAR para agrupar os dois. A nossa aplicação não possui uma camada de visão, ela é uma prestadora de serviços, e para nosso teste vai possuir apenas um serviço, um CRUD de Clientes. Vamos considerar ainda que nossa aplicação possua uma camada DAO, implementada através de uma interface IClienteDAO e um serviço ClienteDAO, que implementa essa interface utilizando a API JPA. Lembre-se que o Arquillian não se limita a testes na camada de negócios ou persistência, mas pode ser utilizado para realizar testes entre todas as camadas de uma aplicação, como será mostrado. Nós iremos desenvolver o serviço ClienteDAO utilizando TDD, porém no lugar de um teste de unidade utilizaremos um teste de integração com JBoss Arquillian. E executaremos os mesmos em um servidor Glassfish Embedded, através do Eclipse e do Maven inserindo dados em um banco HSQLDB in memory. Vamos então ver como configurar o JBoss Arquillian no nosso projeto. Montando os projetos Para montarmos nossa simulação vamos utilizar um archtype do Maven, disponível em: google.com/p/open-archetypes. Com o Maven disponível no seu path vá para o diretório que deseja criar os projetos e digite a seguinte linha: mvn archetype:generate -DarchetypeCatalog= open-archetypes.github.com/maven-repo/snapshots/ archetype-catalog.xml Após todo o processamento necessário, o Maven solicitará uma opção numérica, selecione a opção 3. Informe como groupid MundoJ, e como artifactid mundoj-arquillian, dê um Enter na opção version e package e confirme as propriedades com um Y. O Maven irá gerar toda a estrutura que precisamos e além, essa é uma excelente forma de começar rapidamente novos projetos. Ficamos então com a seguinte estrutura de diretório: mundoj-arquillian \_ mundoj-arquillian-ear \_ mundoj-arquillian-ejb \_ mundoj-arquillian-util \_ mundoj-arquillian-web Vamos excluir o projeto web e renomear o projeto util para jar ficando mundoj-arquillian-jar. Esse projeto jar será o local onde vamos criar nossa entidade, e o projeto ejb o local onde iremos criar o nosso DAO. O projeto EAR não será utilizado neste artigo, mas vamos deixá-lo para fins de simulação de uma estrutura de projeto realista. Para desenvolver testes queremos o conforto de nossa IDE, e para tanto basta importarmos os projetos gerados para o Eclipse. Para tanto basta abrir o Eclipse, e clicar em File->Import->Existing Maven Projects, selecionar o diretório-raiz onde foram gerados os projetos e pronto, eles são importados e configurados para dentro do Eclipse. Configurando o Arquillian JBoss Arquillian não depende de nenhuma ferramenta de build ou gerência de dependência, podendo ser utilizado adicionando diretamente seus JARs. Mas a maneira simples e recomendada pela comunidade do Arquillian é utilizando a gerência de dependências do Maven e importando as dependências transitivas dele. Mas você ainda pode utilizar com qualquer outra ferramenta de build que deseje. Para seguir este exemplo você deve ter configurado o Maven 3. Na Listagem 2 você pode observar as dependências utilizadas no projeto. Tivemos que configurar o repositório do JBoss, para que as versões mais recentes possam ser usadas. O artefato arquillian-bom é um POM com as dependências necessárias do Arquillian que você pode importar para seu projeto. Aqui estamos utilizando JUnit, então o Arquillian possui um artefato (arquillian-junit-container) para fazer sua integração com ele. Fora isso, o que falta é definir qual adaptador de container utilizaremos. Como dito antes, há uma vasta quantidade de adaptares para containers como JBoss, Glassfish, Tomcat, Jetty, OpenEJB, Google AppEngine, Weld, entre outros. Seguem os tipos de containers que o Arquillian dá suporte: Containers Remotos: containers que já estão iniciados e os adaptadores do Arquillian utilizarão um cliente para se comunicar com eles. Através desse cliente, o Arquillian irá adicionar a aplicação, realizar os testes e desinstalar a aplicação. Ótimo para testar em servidores de aplicação completos que demoram a serem iniciados, já que você pode executar todos os Test Cases sem reiniciar o servidor.

4 Containers Gerenciados: são os mesmos que os containers remotos, mas são iniciados pelo próprio Arquillian, que permite a você especificar a localização deles para que ele cuide de toda a tarefa de gerenciar e testar através dos clientes. Containers Embutidos: são containers que podem ser iniciados dentro do código da sua aplicação através de uma API. Normalmente iniciam mais rápido por conter somente os recursos essenciais. Utilizaremos aqui o Glassfish Embedded, devido sua facilidade de uso. O que precisamos é do artefato arquillian-glassfish-embedded-3.1 que faz a integração com o GlasshFish e o próprio Glassfish Embedded, aqui sendo a dependência glassfish-embedded-all. Quando se está trabalhando com outros containers, basicamente são estas duas últimas dependências que variam. Listagem 2. Dependências do Arquillian e Glassfish Embedded. <project...> <groupid>br.com.mundoj</groupid> <artifactid>hotel-arquiliano</artifactid> <version>1.0</version> <packaging>war</packaging> <name>hotel Arquiliano</name> <dependencies> <groupid>org.jboss.arquillian</groupid> <artifactid>arquillian-bom</artifactid> <version>1.0.0.final</version> <type>pom</type> <scope>test</scope> <groupid>org.jboss.arquillian.junit</groupid> <artifactid>arquillian-junit-container</artifactid> <version>1.0.0.final</version> <scope>test</scope> <groupid>org.jboss.arquillian.container</groupid> <artifactid>arquillian-glassfish-embedded-3.1 </artifactid> <version>1.0.0.cr3</version> <scope>test</scope> <groupid>org.glassfish.extras</groupid> <artifactid>glassfish-embedded-all</artifactid> <version>3.2-b06</version> <scope>test</scope> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.10</version> <scope>test</scope>... </dependencies> <repositories> <repository> <id>jboss-public-repository-group</id> <name>jboss Public Maven Repository Group </name> <url> groups/public/</url> </repository> </repositories>... </project> Desenvolvendo o teste Com as dependências definidas, precisamos de um DAO (Data Access Object) para nosso cadastro de clientes. Seguindo as práticas do TDD, vamos então criar o primeiro teste. No pacote br.com.mundoj. arquillian.dao, adicionaremos a classe ClienteDAO- Test. Vamos modificá-la adicionando a RunWith, e parametrizando essa anotação com o Arquillian.class. Também vamos aproveitar a injeção de dependência para adicionar nossa implementação de IClienteDAO na classe de teste, utilizando a Vamos criar nosso primeiro método salvando- ClienteValido que irá testar a inserção de um cliente com sucesso. A classe fica como exibido na Listagem 3. Listagem 3. Testando persistência de uma instância válida de cliente. package br.com.mundoj.arquillian.dao; public class ClienteDAOTest private IClienteDAO public static JavaArchive criandopacote() { return ShrinkWrap.create(JavaArchive.class, test.jar ).addclass(clientedao.class).addclass(iclientedao.class).addclass(cliente.class).addasmanifestresource( test-persistence.xml, ArchivePaths.create( persistence.xml )); public void salvandoclientevalido() { Cliente cliente = new Cliente(); cliente.setnome( Mundo J Cliente ); / 16

5 cliente.setendereco( Intenet Brasil ); cliente.setcpf( ); cliente.settelefone( ); clientedao.save(cliente); asserttrue(cliente.getid()!= null); Cliente persistido = clientedao.findbyid(id); assertnotnull(persistido); assertequals(persistido.getid(), cliente.getid()); assertequals( Mundo J Cliente, persistido.getnome()); assertequals( Intenet Brasil, persistido.getendereco()); assertequals( , persistido.getcpf()); assertequals( , persistido.gettelefone()); Montando pacotes com JBoss ShrinkWrap ShrinkWrap é um projeto independente, mas que anda junto ao Arquillian. Seu propósito é facilitar a montagem de pacotes através de código. Ou seja, se sua aplicação precisa gerar algum EAR, WAR ou JAR em tempo de execução, pode utilizar o ShrinkWrap, que provê uma interface muito intuitiva para adicionar classes, pacotes, arquivos de configuração, bibliotecas ou qualquer outro tipo de recurso necessário. Depois disso, é possível exportá-lo para o sistema de arquivos ou transformá-lo em um fluxo de bytes. O foco do Arquillian é minimizar o esforço para testar, e nada mais simplista do que montar pacotes somente com as classes que estão no contexto do teste. Deve-se notar, olhando para a Listagem 4, que devemos incluir todas as classes que vão ser utilizadas no teste, no nosso caso incluímos a interface IClienteDAO, sua implementação ClienteDAO e a entidade Cliente. Porém, caso a entidade Cliente possuísse algum atributo de uma classe específica, ou o método a ser testado fizesse uso de alguma classe além da Cliente, essa classe teria que ser inserida no deployment também. Não inserir todas as classes gera exceções no servidor de aplicação e impede a execução do teste. Você também pode manter arquivos de configuração padrões da sua aplicação separados dos arquivos de configuração personalizados para os testes. Na Listagem 4, adicionamos um persistence.xml no pacote, sendo utilizado como fonte o test-persistence.xml achado no classpath. Ter a opção de escolher qual descritor empacotar durante os testes permite que você configure recursos para substituir aqueles em produção, como qual datasource utilizar ou o nível de log da camada de persistência, por exemplo. Listagem 4. Método public static JavaArchive criandopacote() { return ShrinkWrap.create(JavaArchive.class, test.jar ).addclass(clientedao.class).addclass(iclientedao.class).addclass(cliente.class).addasmanifestresource( test-persistence.xml, ArchivePaths.create( persistence.xml )); ShrinkWrap resolver Uma pausa no passo-a-passo para falarmos do ShrinkWrap Resolver. Com a API do ShrinkWrap, já é possível abranger os cenários de testes mais comuns. Porém, há ocasiões nas quais é necessário adicionar ao pacote algum projeto externo como o driver JDBC de banco de dados ou biblioteca de log. Para estes casos, existe o ShrinkWrap resolver. Ele é capaz de adicionar aos seus pacotes personalizados de tempo execução, dependências descritas no seu pom.xml. Para utilizá-lo você precisa de mais três dependências no seu POM: org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-api org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-api-maven org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-impl-maven. A Listagem 5 mostra como obter uma instância de MavenDepencyResolver e adicionar o artefato que deseja ao pacote. Na linha 1, é recuperado o pacote seguindo o padrão groupid:artifactid:versão e na linha 2, o artefato é adicionado ao pacote como uma biblioteca. Listagem 5. Recuperando e adicionando dependências do pom.xml ao pacote. // Adicionando dependencias do Maven MavenDependencyResolver resolver = DependencyResolvers.use( MavenDependencyResolver.class); MavenDependencyBuilder dominio = resolver.artifact( br.com.mundoj:carrinho-dominio:1.0 ); //1 carrinho.addaslibraries(dominio.resolveas( GenericArchive.class)); //2 Usando o ShrinkWrap e o ShrinkWrap resolver para construir pacotes personalizados, permite mandar para o servidor de aplicações ou containers

6 somente as classes que interessam para o teste, diminuindo significativamente o seu tempo de deploy. Fazendo o teste compilar Voltando ao passo-a-passo, a nossa classe de teste nem sequer compila, tudo bem, segundo o TDD ela não deveria compilar mesmo. Agora é hora de buscarmos a compilação dessa classe através dos passos mais simples possíveis. Primeiro, vamos criar nossa entidade Cliente, com os atributos que precisamos para que o nosso teste compile. Como falamos no início, nossa aplicação utilizará JPA para persistência, e queremos que nossos testes realizem verdadeiras inserções no banco, sem objetos Mock. Para tanto, a entidade Cliente, da Listagem 6, ficará no nosso módulo de classe de domínio. Listagem 6. Classe que representa um public class Cliente implements Serializable private Integer id; private String nome; private String telefone; private String cpf; private String endereco; private static final long serialversionuid = 1L; //construtores, getters e setters omitidos Com essa entidade demos o primeiro passo para compilar nosso teste. Agora vamos criar o DAO que fará a persistência dessa entidade em um banco de dados. Seguindo as boas práticas de design o DAO é um serviço, e como tal deve ter uma interface que representa esse serviço. As interfaces EJB são interfaces comuns com um adicional que é a o que denota se a interface é local ou remota. No nosso caso vamos criar uma interface local. Vamos adicionar a nela e o método que precisamos. Nesse momento é comum querermos criar todos os métodos da interface, mas devemos nos lembrar do TDD, devemos criar apenas os métodos para fazer com que nosso teste compile. Sendo assim vamos criar os métodos save e findbyid. A interface deve ficar como exibida na Listagem 7. Listagem 7. Interface public interface IClienteDAO { public void save(cliente cliente); public Cliente findbyid(integer id); A interface ainda não compila já que Cliente e IClienteDAO estão em módulos separados. Para corrigir isso basta adicionar a dependência descrita na Listagem 8 ao POM.XML do projeto EJB, clicar com botão direito no projeto EJB, clicar em Maven -> Update Project Dependencies. Depois basta pedir ao Eclipse para organizar seus imports e ele deve adicionar a classe Cliente à lista de imports da interface IClienteDAO. Listagem 8. Dependência do Projeto JAR. <groupid>mundoj</groupid> <artifactid>mundoj-arquillian-jar</artifactid> <version>1.0-snapshot</version> <type>jar</type> <scope>provided</scope> Com a interface e a entidade criadas, nosso teste já compila, demos mais um passo no ciclo TDD. Vamos então executar nosso teste. Para tanto basta abrir a classe de teste no Eclipse, e clicar com o botão direito e selecionar Run As.. -> JUnit Test. Se observarmos o console, veremos que o teste nem mesmo chega a ser executado. Isso ocorre porque o Arquillian ainda precisa de algumas configurações para saber o que e como executar. Seguindo o nosso ciclo TDD essa é a fase do fazer o que for preciso para o teste aparecer verde. Iniciamos então a parte de configurar o Arquillian. Configurando recursos e containers A adição de recursos dentro do container como datasources, fábrica de conexões e filas ainda é um Um bom lugar para utilizá-lo sem o ShrinkWrap é em testes de container de servlets embutidos como o Tomcat e Jetty, que possuem uma API menos trivial para adicionar as classes e arquivos de descrição necessários para o teste. O ShrinkWrap também possui outro subprojeto, que recebeu o nome de ShrinkWrap Descriptors, onde você pode criar arquivos descritores, como beans.xml, web.xml e ejb-jar. xml, utilizando uma API trivial. O projeto ainda está em alpha e com pouca documentação, mas você pode seguir os testes do projeto encontrado no Github como referência para aprender e colaborar com ele. / 16

7 pouco confusa dentro do Arquillian, pois variam muito de container para container. Por exemplo, no momento em que este artigo é escrito, o adaptador que permite adicionar recursos de forma mais simples é para Glassfish embutido. Os adaptadores para outros servidores de aplicações, como JBoss remoto e gerenciado, ainda não possuem formas práticas para configuração de recursos em suas instâncias. Enquanto isso, o JBoss 7.1 permite que você adicione recursos através de descritores dentro do próprio pacote, adicionando-os ao META-INF. O Glassfish espera um glassfish-resources.xml com a descrição dos recursos que devem ser criados Para fazer o teste funcionar precisamos informar o datasource através do glassfish-resources.xml, e vamos colocar esse arquivo dentro do nosso diretório src/test/resources do projeto EJB, onde ficarão todos os recursos de configuração que vamos utilizar. A Listagem 9 mostra um exemplo de configuração de um datasource no Glassfish embutido. Listagem 9. glassfish-resources.xml. <resources> <jdbc-connection-pool name= mundojpool datasource-classname= org.hsqldb.jdbc.jdbcdatasource res-type= javax.sql.datasource ping= true > <property name= User value= sa /> <property name= Password value= /> <property name= databasename value= jdbc:hsqldb:mem:mundoj /> <property name= driverclass value= org.hsqldb.jdbcdriver /> <property name= PortNumber value= 9001 /> <property name= servername value= localhost /> </jdbc-connection-pool> <jdbc-resource jndi-name= jdbc/mundoj pool-name= mundojpool ></jdbc-resource> </resources> Precisamos dizer ao Arquillian onde se encontra o arquivo glassfish-resources.xml, fazemos isso criando o arquivo de configuração arquillian.xml, e colocando-o no diretório src/test/resources do projeto EJB. Um exemplo do conteúdo do arquillian. xml está detalhado na Listagem 9. Ele é um descritor onde se pode configurar tanto o funcionamento do Arquillian como dos adaptadores do container. Ele permite especificar a localização dos arquivos de configuração dos adaptadores, qual protocolo utilizar para se comunicar com o container, portas do container, qual adaptador utilizar por padrão, entre outras coisas. Na Listagem 10, estamos dizendo em qual arquivo o Arquillian deve ler as configurações de recursos (datasources, filas de mensageria, configuração de segurança) para adicionar no Glassfish Embutido. Listagem 10. Arquillian.xml. <arquillian xmlns= xmlns:xsi= XMLSchema-instance xsi:schemalocation= arquillian xsd > <container qualifier= glassfish default= true > <configuration> <property name= sunresourcesxml > src/test/resources/glassfish-resources.xml </property> </configuration> </container> </arquillian> E para finalizar a nossa configuração de conexão ao banco de dados, criamos um arquivo test-persistence.xml, referenciado nas listagens anteriores, no nosso src/test/resources, esse arquivo vai definir a nossa persistence-unit, e configurar o eclipselink (ou hibernate, OpenJPA etc.) para criar o banco assim que a aplicação for ao ar. Essa configuração é necessária, pois utilizamos um banco em memória, o HSQLDB, e que assim que nosso teste acabar ele some, levando consigo o nosso Schema bem como os dados de teste. O uso dos chamados in-memory database tem sido bastante interessante nos testes de integração. Acaba-se com a dependência de qualquer banco externo, ao mesmo tempo em que tem um custo de processamento bem menor. Após essas configurações, que serão utilizadas em todos os testes daqui para frente, vamos escrever a classe que falta, a implementação do serviço DAO, ClienteDAO. No módulo EJB, crie uma nova classe que será um bean de sessão como a Listagem 11. Nele é injetado um EntittyManager utilizado para persistir e procurar clientes por ID, por enquanto. Listagem 11. public class ClienteDAO implements EntityManager public void save(cliente cliente) { public Cliente findbyid(integer id) { Cliente cliente = em.find(cliente.class, id); return cliente;

8 Agora nós executamos o teste novamente, e vemos o verde novamente ser exibido. Deve-se notar que nesse momento nós já inserimos um dado no banco de dados, esse dado não pode ser verificado porque o HSQLDB vive apenas no período de execução do teste. Vamos então validar se o dado foi realmente inserido. Adicionando funcionalidade ao DAO Vamos ampliar nosso teste com um segundo método, o delete, que vamos utilizar para remover clientes do banco de dados. Para testar o delete nós precisamos primeiro inserir um registro, verificar sua inserção e depois excluir o mesmo e confirmar sua exclusão. Para isso vamos adicionar mais um método na nossa classe de teste o método deletandocliente- PersistidoSucesso, que é exibido na Listagem 12. Listagem 12. Testando remoção de cliente com sucesso. public void deletandoclientepersistidosucesso(){ Cliente cliente = new Cliente( João José Maria ); clientedao.save(cliente); Long clienteid = cliente.getid(); clientedao.delete(cliente); assertnull(clientedao.findbyid(clienteid)); Como estamos no começo do ciclo, o nosso código ainda não compila, vamos buscar compilar o método, para tanto precisamos adicionar o delete na nossa interface de DAO, como mostra a Listagem 13. Listagem 13. Interface IClienteDAO com método public interface IClienteDAO { public void save(cliente cliente); public Cliente findbyid(integer id); public void delete(cliente cliente); Com a adição do novo método, nosso código compila, mas ele não retorna verde. Nesse caso, o método mais rápido de fazer um verde ser retornado é implementando devidamente o método delete. Vamos então alterar nossa classe ClienteDAO para adicionar o método como na Listagem 14. Listagem 14. Implementação do método public void delete(cliente cliente){ em.remove(cliente); Quando vamos executar o nosso teste, eis que o Eclipse nos exibe uma surpresa, o teste retorna vermelho. Ao que tudo parece a nossa implementação está perfeita, nosso teste certamente está correto, no entanto recebemos uma exceção da camada JPA nos informando que a entidade que tentamos remover não está no contexto de persistência. Não precisamos ficar alarmados, essa é uma das grandes vantagens dos testes de integração, se tivéssemos feito um mock da classes da JPA, provavelmente não teríamos esse erro. O erro ocorre porque o objeto que estamos removendo não está no nosso contexto de persistência, sendo assim devemos modificar a implementação do nosso método delete para garantir que, caso o objeto não seja gerenciado, ele passe a ser antes de executarmos sua exclusão. O método delete em sua versão final está na Listagem 15. Listagem 15. Método delete versão public void delete(cliente cliente){ cliente = em.find(cliente.class, cliente.getid()); if (cliente!= null) { em.remove(cliente); Ao executarmos o nosso teste novamente, a barra verde aparece e podemos respirar aliviados. Deve-se Quando o container é iniciado Uma peculiaridade não muito boa do Arquillian relacionada à camada de persistência é o fato de que o container é iniciado uma vez a cada Test Case, como o método anotado do JUnit. Isto faz com que os testes do TestCase compartilhem suas alterações, e que a alteração de um teste, se não desfeita nos refletirá nos outros testes. Então sempre se lembre de desfazer as alterações dos testes, para que elas não interfiram, fazendo com que os testes subsequentes que deveriam passar, não passem. O agrupamento de Test Cases em Test Suites não modificará este comportamento, sendo um ciclo de start/deploy/undeploy/stop para cada Test Case (deploy/undeploy em casos de containers remotos). / 16

9 notar como o ciclo TDD para desenvolver o método delete foi consideravelmente menor do que o primeiro ciclo, isso porque já tínhamos todo o processo de configuração do ambiente integrado que estamos testando, resolvido. Pode-se notar, também, como foi importante nos valermos do ciclo TDD para criação do método delete, que apresentou um erro extremamente comum em implementações DAO que utilizam JPA, caso fosse um teste de unidade dificilmente esse erro teria sido identificado. Concluímos o nosso segundo ciclo TDD, como se pode notar o processo se torna rápido e intuitivo à medida que reutilizamos configurações e classes já testadas. Encerramos assim o desenvolvimento do nosso DAO, ele possui um método save, um método findbyid e um método delete. É claro que um DAO na vida real poderia possuir uma complexidade muito superior ao aqui apresentado, porém o foco do artigo era apresentar a ferramenta JBoss Arquillian dentro de um ciclo TDD de desenvolvimento. Testando com Arquillian Persistence Extension Fugindo um pouco do passo-a-passo apresentado nas sessões anteriores, criar uma suíte de teste para a camada de persistência ou para outras camadas que interajam com ela pode ser trabalhoso durante o processo de teste. Você precisa gerenciar o que está sendo colocado no banco para não se perder, já que os testes podem ser isolados, mas o banco de dados é compartilhado entre eles. Para agilizar a escrita destes tipos de teste, o Arquillian possui uma extensão chamada Arquillian Persistence Extension que ajuda a minimizar o trabalho necessário para interação com o banco e propõe algumas anotações que vão auxiliar em isolar cada teste do TestCase. Para utilizar o Arquillian Persistence Extension, basta adicionar sua API e implementação como dependências do Maven, de acordo com a Listagem 16. Listagem 16. Dependências para o Arquillian Persistence Extension. <groupid>org.jboss.arquillian.extension</groupid> <artifactid>arquillian-persistence-api</artifactid> <version>1.0.0.alpha4</version> <groupid>org.jboss.arquillian.extension</groupid> <artifactid>arquillian-persistence-impl</artifactid> <version>1.0.0.alpha4</version> Como você pode ver, a versão mais recente é a 1.0.0Alpha4, lançada em abril, e possui algumas inconsistências que podem variar um pouco até sua versão final. Esta extensão faz grande uso do DBUnit, possibilitando que você especifique scripts que irão executar antes e depois de cada teste. Você também pode adicionar DataSets no formato YML, XML e JSON. A Listagem 17 mostra um exemplo de DataSet com XML. O DBUnit permite você adicionar dados a várias tabelas a partir de um mesmo DataSet. Aqui estamos separando em arquivo para cada entidade, assim podemos escolher quais DataSets persistiremos para satisfazer o teste em questão. Mais a frente, você verá como o Arquillian permite que você escolha qual DataSet usar, através de anotações. O arquivo clientes.xml descreve alguns clientes que serão persistidos. O arquivo quartos.xml também descreve alguns quartos que serão persistidos e que poderão ser alugados pelos clientes. Listagem 17. DataSets para iniciar os testes. <!-- src/test/resources/datasets/clientes.xml --> <dataset> <cliente id= 1 nome= João José telefone= cpf= endereco= Rua 7 de Setembro /> <cliente id= 2 nome= Maira José telefone= cpf= endereco= Rua 15 de Novembro /> <cliente id= 3 nome= Roberto José telefone= cpf= endereco= Rua 13 de Maio /> </dataset> <!-- src/test/resources/datasets/quartos.xml --> <dataset> <quarto id= 1 numero= 12A andar= 2 diaria= /> <quarto id= 2 numero= 13A andar= 2 diaria= /> <quarto id= 3 numero= 14A andar= 2 diaria= /> <quarto id= 4 numero= 15A andar= 2 diaria= /> </dataset> Aqui estão algumas das anotações oferecidas pelo Arquillian permite a você escolher quando e o tipo de estratégia utilizada para limpar as alterações do banco a cada teste. Você pode escolher entre limpá-lo antes de o teste iniciar ou quando ele finalizar (TestExecutionPhase. BEFORE ou TestExecutionPhase.AFTER, respectivamente). É possível especificar o que será apagado, com as opções de apagar todo o banco, somente as linhas inseridas ou somente as tabelas permite a você especificar datasets que serão adicionados ao banco antes do teste em permite a você espe-

10 cificar como as tabelas sendo testadas devem se encontrar no final do você também pode executar qualquer script em seu banco antes de iniciar o teste. A Listagem 18 mostra um pouco da utilização do Persistence Extension. Diferente do passo-a-passo onde era injetado um EJB no teste, aqui estamos injetando o EntityManager diretamente no teste. Assim você pode testar se está utilizando o mapeamento corretamente nas classes de entidade, sem ter que escrever mais código para isso. O método adicionandoreservavalida possui duas anotações extras. A especifica que utilizaremos os DataSets dos arquivos clientes.xml e permite indicar o DataSet em que algumas tabelas do banco de dados devem se parecer depois que o teste for executado. Ou seja, a tabela de reservas deve ter os mesmos dados que o DataSet de reservas. Na segunda linha da Listagem 18 indicamos como o Arquillian irá restaurar a base de dados depois que o teste for executado. A limpeza será executada depois que cada teste for executado e irá truncar somente as tabelas alteradas pelo teste. Listagem 18. DataSets para iniciar = TestExecutionPhase.AFTER, strategy = CleanupStrategy.USED_TABLES_ONLY) public class ReservaPersistenciaIT public static JavaArchive criandopacote() throws Exception { return ShrinkWrap.create(JavaArchive.class, hotel-dominio.jar ).addpackage(reserva.class.getpackage()).addasmanifestresource(emptyasset.instance, beans.xml ).addasmanifestresource( test-persistence.xml, persistence.xml = hotel-pu ) private EntityManager clientes.xml, quartos.xml reservas-esperadas.xml ) public void adicionandoreservavalida() throws Exception {... Realizando testes fora do container Para escrever testes funcionais, utilizar o Arquillian também ajuda a diminuir o esforço. Por exemplo, você pode utilizar o ShrinkWrap para montar os pacotes personalizados, excluindo os arquivos css, html, javascript e imagens que não são necessários para o teste. Como mostra a Listagem 19, a possui um atributo testable que, quando setado para false, faz com que os testes daquele TestCase sejam executados na JVM onde os testes do JUnit ou TestNG foram iniciados, como se fossem clientes do container. Neste exemplo estamos gerando um pacote WAR com o ShrinkWrap e precisamos testar se a interface Web realmente está funcional. Então, adicionamos as classes do pacote br.com.mundoj.hotel e a página JSP formulário.jsp. A partir disso, o método adicionando- Reserva utiliza o Selenium WebDriver para navegar até a página correta e observar se o título da página é realmente o que esperamos que seja. Assim, o Arquillian pode ser utilizado para um propósito bastante diferente do que foi apresentado até aqui, que são os testes funcionais. O Arquillian em conjunto com Selenium, HtmlUnit ou JSFUnit, torna-o muito flexível para testes de interface, mas não vamos entrar em detalhes de como utilizar o Selenium, pois estenderia muito o artigo. Listagem 19. Executando testes fora do public class ReservasServletIT = false) public static WebArchive criandopacote() throws Exception { WebArchive pacote = ShrinkWrap.create( WebArchive.class, hotel-web.war ); pacote.addpackages(true, br.com.mundoj.hotel ); pacote.addaswebresource(new File( src/main/webapp/formulario.jsp ), formulario.jsp ); return pacote; public void adicionandoreserva() throws Exception { WebDriver navegador = new HtmlUnitDriver(); navegador.manage().timeouts().implicitlywait(10, TimeUnit.SECONDS); navegador.get( ); String titulo = navegador.gettitle(); assertequals( Gerenciamento de Reservas, titulo); Em casos mais específicos você pode misturar a execução de testes dentro e fora do container no mesmo TestCase. Como na Listagem 20, basta retirar o parâmetro testable da e uti- / 16

11 Arquillian + Maven Profiles Um recurso muito interessante que pode ser aproveitado do Maven é a configuração de diferentes profiles. Você pode criar um profile para cada container que deseja testar, e nele adicionar as dependências necessárias para cada um. Com o Arquillian, você será capaz de escrever testes que não são dependentes de um container específico. Seus testes ainda irão funcionar na sua IDE, basta que você configure qual profile deseja executar nas configurações dela. Tome cuidado, pois o Arquillian não permite dois adaptadores no mesmo classpath. lizar a para cada teste que deva rodar fora do container. Novamente utilizamos o WebDriver para navegar através da aplicação pela interface Web. Listagem 20. Teste executando fora do public void listarreservasfeitas() throws Exception { WebDriver navegador = new HtmlUnitDriver(); navegador.manage().timeouts().implicitlywait(10, TimeUnit.SECONDS); navegador.get( hotel-web/reservas?acao=listar );... Observe que os recursos disponíveis para os testes que rodam dentro do container não estão disponíveis para os testes marcados Desta forma se você utilizar as para realizar alguma tarefa entre os testes, você não terá acesso aos recursos que estariam presentes via injeção de dependência, nem neles, nem nos próprios testes out container. Considerações finais O TDD mudou a forma de programar, trouxe segurança e provou ao longo da sua década de existência oficial que o custo de desenvolver teste é muito menor do que o custo de erros em códigos não testado. O JBoss Arquillian simplificou a tal nível os teste de integração, como mostramos neste artigo, que podemos passar a inserir testes de integração no ciclo TDD, com grandes ganhos de segurança e produtividade no desenvolvimento de aplicações JEE. Ele obriga a ter um trabalho extra no início da implementação da suíte de testes, mas minimiza muito o esforço durante a escrita dos testes, gerenciado o ciclo de vida dos testes e dos containers envolvidos. Como você viu, ele ajuda a gerenciar o ciclo de vida dos testes e do container, podendo ser utilizado em testes de integração e funcionais. Junto com outros projetos como ShrinkWrap, permite que foquemos nas classes que realmente precisam ser testadas. Alguns dos projetos apresentados aqui, como o Arquillian Persistence Extension e o ShrinkWrap Descriptors, ainda se encontram em versão alpha. Sendo assim, podemos esperar muito deles nos próximos meses. Alguns pontos do Arquillian ficaram fora do escopo deste artigo, como deploys múltiplos, testes de grid, Arquillian Drone, entre outras coisas. Mas sinta-se à vontade para consultar as referências, ou aguarde os artigos das próximas edições. Consulte o artigo Testes Automatizados, publicado na edição 47 da revista MundoJ, para uma referência adicional sobre ferramentas utilizadas em automatização de testes. /referências Test Driven Development: By Example, Kent Beck, Addison- Wesley Longman, 2002, ISBN , ISBN Reference+Guide, Guia de referência do Arquillian. Arquillian Persistence Extension Alpha4 Released. guia inicial oficial do Arquillian. Wiki ShrinkWrap. Mocks are a Mockery, post sobre a utilização de Mocks. tutorial sobre Arquillian Persistence. exemplos de utilização do Arquillian. /para saber mais

Como 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 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 mais

Parte I. Demoiselle Mail

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 mais

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC Módulo 5 No módulo anterior adaptamos nosso projeto para persistir as informações no banco de dados utilizando as facilidades da extensão demoiselle-jpa. Experimentamos o controle transacional do Framework

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

TESTES AUTOMATIZADOS COM JUNITE MOCKITO TESTES AUTOMATIZADOS COM JUNITE MOCKITO Jaime William Dias 12, Dener Barranco 1, Douglas Delapria 1 1 Universidade Paranaense (Unipar) 2 Universidade Estadual de Maringá (UEM) Paranavaí PR Brasil dener_barranco@hotmail.com,

Leia mais

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

ABORDAGEM 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 mais

02 - Usando o SiteMaster - Informações importantes

02 - 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 mais

Trecho retirando do Manual do esocial Versão 1.1

Trecho 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 mais

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) Sessão Prática II JPA entities e unidades de persistência 1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) a) Criar um Web Application (JPAsecond) como anteriormente:

Leia mais

Este tutorial está publicado originalmente em http://www.baboo.com.br/absolutenm/anmviewer.asp?a=30405&z=300

Este tutorial está publicado originalmente em http://www.baboo.com.br/absolutenm/anmviewer.asp?a=30405&z=300 WinRAR: Conheça este excelente compactador de arquivos Introdução: É fato que a Internet está mais rápida com a popularização da banda larga, mas os compactadores de arquivos ainda apresentam muita utilidade

Leia mais

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Fundamentos da Plataforma Java EE Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Como a plataforma Java EE trata o SERVIÇO DE NOMES Serviço de Nomes Num sistema distribuído os componentes necessitam

Leia mais

Ambientação JAVA. Versão 0.1 MICHEL CORDEIRO ANALISTA DE NEGÓCIO (NTI 2014) 1 UNIVERSIDADE CEUMA 08/01/2014

Ambientação JAVA. Versão 0.1 MICHEL CORDEIRO ANALISTA DE NEGÓCIO (NTI 2014) 1 UNIVERSIDADE CEUMA 08/01/2014 UNIVERSIDADE CEUMA Ambientação JAVA Versão 0.1 08/01/2014 Este é um modelo de configuração para desenvolvimento no ambiente Java. MICHEL CORDEIRO ANALISTA DE NEGÓCIO (NTI 2014) 1 Sumário Sumário... 2 1

Leia mais

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Prá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 mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Sistemas de Informações Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 7 JPA A Persistência com JPA Para configurar o JPA

Leia mais

MANUAL DE UTILIZAÇÃO

MANUAL DE UTILIZAÇÃO MANUAL DE UTILIZAÇÃO Módulo de operação Ativo Bem vindo à Vorage CRM! Nas próximas paginas apresentaremos o funcionamento da plataforma e ensinaremos como iniciar uma operação básica através do nosso sistema,

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

Android e Bancos de Dados

Android 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 mais

EXEMPLO DE COMO FAZER UMA MALA DIRETA

EXEMPLO DE COMO FAZER UMA MALA DIRETA EXEMPLO DE COMO FAZER UMA MALA DIRETA OBS: Para esta nota de aula foi utilizada como referência: Apostila Mala Direta Santos, Jorge Rodrigues dos. Foram adaptados os comando para utilizar mala direta no

Leia mais

Manual do Sistema "Vida Controle de Contatos" Editorial Brazil Informatica

Manual do Sistema Vida Controle de Contatos Editorial Brazil Informatica Manual do Sistema "Vida Controle de Contatos" Editorial Brazil Informatica I Vida Controle de Contatos Conteúdo Part I Introdução 2 1 Vida Controle... de Contatos Pessoais 2 Part II Configuração 2 1 Configuração...

Leia mais

Programaçã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 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 mais

Manual 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 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 mais

Operador de Computador. Informática Básica

Operador de Computador. Informática Básica Operador de Computador Informática Básica Instalação de Software e Periféricos Podemos ter diversos tipos de software que nos auxiliam no desenvolvimento das nossas tarefas diárias, seja ela em casa, no

Leia mais

Banco de Dados Microsoft Access: Criar tabelas. Vitor Valerio de Souza Campos

Banco de Dados Microsoft Access: Criar tabelas. Vitor Valerio de Souza Campos Banco de Dados Microsoft Access: Criar tabelas Vitor Valerio de Souza Campos Objetivos do curso 1. Criar uma tabela no modo de exibição Folha de Dados. 2. Definir tipos de dados para os campos na tabela.

Leia mais

Introdução ao Processamento de Imagens com o IRIS Por Rodolfo Barros

Introdução ao Processamento de Imagens com o IRIS Por Rodolfo Barros Introdução ao Processamento de Imagens com o IRIS Por Rodolfo Barros O IRIS é um software poderoso para o processamento de imagens astronômicas. Ele possui métodos avançados para realizar uma grande quantidade

Leia mais

Criando um script simples

Criando um script simples Criando um script simples As ferramentas de script Diferente de muitas linguagens de programação, você não precisará de quaisquer softwares especiais para criar scripts de JavaScript. A primeira coisa

Leia mais

Orientação a Objetos

Orientaçã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 mais

E.E.E.B. Professor José Fernandes de Oliveira. Manual de Uso. Sistema Interno (Professores)

E.E.E.B. Professor José Fernandes de Oliveira. Manual de Uso. Sistema Interno (Professores) E.E.E.B. Professor José Fernandes de Oliveira Manual de Uso Sistema Interno (Professores) Desenvolvido por Six Interfaces www.6i.com.br Telefone: (54) 3232.8486 Suporte: contato@6i.com.br Sumário Acessar

Leia mais

Guia Site Empresarial

Guia Site Empresarial Guia Site Empresarial Índice 1 - Fazer Fatura... 2 1.1 - Fazer uma nova fatura por valores de crédito... 2 1.2 - Fazer fatura alterando limites dos cartões... 6 1.3 - Fazer fatura repetindo última solicitação

Leia mais

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO Antes de criarmos um novo Banco de Dados quero fazer um pequeno parênteses sobre segurança. Você deve ter notado que sempre

Leia mais

TUTORIAL SISTEMA DE CONTROLE DE ACESSO

TUTORIAL SISTEMA DE CONTROLE DE ACESSO FACULDADE DE TECNOLOGIA SENAC GOIÁS GESTÃO EM TECNOLOGIA DA INFORMAÇÃO WISLIY LOPES JULIANO PIROZZELLI TULIO TSURUDA LUIZ GUILHERME MENDES TUTORIAL SISTEMA DE CONTROLE DE ACESSO GOIÂNIA JUNHO DE 2014 Sumário

Leia mais

Lazarus pelo SVN Linux/Windows

Lazarus pelo SVN Linux/Windows Lazarus pelo SVN Linux/Windows Sei que não faltam artigos sobre como obter e compilar o Lazarus e o FPC pelo SVN, mas sei também que nunca é de mais divulgar um pouco mais e talvez escrever algo diferente.

Leia mais

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano 2012-1

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano 2012-1 PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB PADRÕES MVC E DAO Prof. Dr. Daniel Caetano 2012-1 Objetivos Compreender o conceito de Padrões de Projeto Compreender o Padrão MVC Conhecer o princípio de alguns dos

Leia mais

Manual do Google agenda. criação e compartilhamento de agendas

Manual 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

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

Banco de Dados Microsoft Access: Criar tabelas

Banco de Dados Microsoft Access: Criar tabelas Banco de Dados Microsoft Access: Criar s Vitor Valerio de Souza Campos Objetivos do curso 1. Criar uma no modo de exibição Folha de Dados. 2. Definir tipos de dados para os campos na. 3. Criar uma no modo

Leia mais

Software. Gerenciamento de Manutenção

Software. Gerenciamento de Manutenção Software Gerenciamento de Manutenção Tutorial Passo a Passo Do Cadastro de Serviço à Consulta de Serviços Realizados Tutorial Recomendações AsinformaçõesutilizadasnestetutorialsãoasmesmasquevocêtemnoseuBancodeDados

Leia mais

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Programação Servidor para Sistemas Web 1 Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Objetivo: Apresentar a teoria por trás dos padrões na construção de aplicações Web. INTRODUÇÃO Nas aulas anteriores

Leia mais

Utilizando a ferramenta de criação de aulas

Utilizando a ferramenta de criação de aulas http://portaldoprofessor.mec.gov.br/ 04 Roteiro Utilizando a ferramenta de criação de aulas Ministério da Educação Utilizando a ferramenta de criação de aulas Para criar uma sugestão de aula é necessário

Leia mais

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

SUMÁ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 mais

Aula 03 - Projeto Java Web

Aula 03 - Projeto Java Web Aula 03 - Projeto Java Web Para criação de um projeto java web, vá em File/New. Escolha o projeto: Em seguida, na caixa Categorias selecione Java Web. Feito isso, na caixa à direita selecione Aplicação

Leia mais

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Despachante 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 mais

Integração de sistemas utilizando Web Services do tipo REST

Integração de sistemas utilizando Web Services do tipo REST Integração de sistemas utilizando Web Services do tipo REST Jhonatan Wilson Aparecido Garbo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil jhowgarbo@gmail.com jaime@unipar.br

Leia mais

Instalando o WordPress em localhost

Instalando o WordPress em localhost Instalando o WordPress em localhost WordPress sem Mistério LEE ARAUJO htto://wordpresssemmisterio.com.br Sumário Instalando o WordPress em Localhost... 2 O Servidor web... 3 Iniciando o servidor... 6 Criação

Leia mais

ANDROID APPLICATION PROJECT

ANDROID APPLICATION PROJECT Criando um programa Abrindo o programa Eclipse, clique na opção [FILE], depois em [NEW], selecione a opção [PROJECT], uma janela de opção do tipo de projeto irá se abrir, escolha [ANDROID] logo depois

Leia mais

( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO

( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO Serviço Nacional de Aprendizagem Comercial E.E.P. Senac Pelotas Centro Histórico Programa Nacional de Acesso ao Ensino Técnico e Emprego Curso Técnico em Informática ( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO

Leia mais

Lógica de Programação

Lógica de Programação Lógica de Programação Softblue Logic IDE Guia de Instalação www.softblue.com.br Sumário 1 O Ensino da Lógica de Programação... 1 2 A Ferramenta... 1 3 Funcionalidades... 2 4 Instalação... 3 4.1 Windows...

Leia mais

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos. JDBC CRIANDO O BANCO DE DADOS: Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos. CRIANDO O PROJETO JAVA PARA DESKTOP: Crie um projeto Java chamado Prograd Crie um pacote chamado

Leia mais

Prototype, um Design Patterns de Criação

Prototype, um Design Patterns de Criação Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe

Leia mais

Instalando o Internet Information Services no Windows XP

Instalando o Internet Information Services no Windows XP Internet Information Services - IIS Se você migrou recentemente do Windows 95 ou 98 para o novo sitema operacional da Microsoft Windows XP, e utilizava antes o Personal Web Server, deve ter notado que

Leia mais

Google Drive. Passos. Configurando o Google Drive

Google Drive. Passos. Configurando o Google Drive Google Drive um sistema de armazenagem de arquivos ligado à sua conta Google e acessível via Internet, desta forma você pode acessar seus arquivos a partir de qualquer dispositivo que tenha acesso à Internet.

Leia mais

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Criando Banco de Dados, Tabelas e Campos através do HeidiSQL Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 2 Pedreiros da Informação Criando Banco de Dados, Tabelas e Campos através do HeidiSQL

Leia mais

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco). Permissões de compartilhamento e NTFS - Parte 2 Criando e compartilhando uma pasta - Prática Autor: Júlio Battisti - Site: www.juliobattisti.com.br Neste tópico vamos criar e compartilhar uma pasta chamada

Leia mais

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Tutorial RMI (Remote Method Invocation) por Alabê Duarte Tutorial RMI (Remote Method Invocation) por Alabê Duarte Este tutorial explica basicamente como se implementa a API chamada RMI (Remote Method Invocation). O RMI nada mais é que a Invocação de Métodos

Leia mais

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE Renan Leme Nazário, Ricardo Rufino Universidade Paranaense (Unipar) Paranavaí PR - Brasil renazariorln@gmail.com, ricardo@unipar.br Resumo. Este artigo

Leia mais

Acessando um Banco de Dados

Acessando um Banco de Dados Acessando um Banco de Dados Introdução Agora que você já está craque em JSP e já instalou seu servidor, vamos direto para a parte prática! Neste tutorial vamos aprender a acessar um banco de dados. Para

Leia mais

INTRODUÇÃO À TECNOLOGIA SERVLETS

INTRODUÇÃ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 mais

Resolvendo problemas de conexão de rede wireless no pregão 83/2008

Resolvendo problemas de conexão de rede wireless no pregão 83/2008 Resolvendo problemas de conexão de rede wireless no pregão 83/2008 Recentemente forma instalados em minha cidade novos laboratórios do pregão 83/2008 mas em nenhum deles os terminais acessavam a rede.

Leia mais

Versão 1.0 09/10. Xerox ColorQube 9301/9302/9303 Serviços de Internet

Versão 1.0 09/10. Xerox ColorQube 9301/9302/9303 Serviços de Internet Versão 1.0 09/10 Xerox 2010 Xerox Corporation. Todos os direitos reservados. Direitos reservados de não publicação sob as leis de direitos autorais dos Estados Unidos. O conteúdo desta publicação não pode

Leia mais

Sistema de Digitalização e Gerenciamento de Arquivos On-Line

Sistema de Digitalização e Gerenciamento de Arquivos On-Line Sistema de Digitalização e Gerenciamento de Arquivos On-Line O aplicativo Aplicativo com quase 3 anos de mercado, onde gerencia atualmente mais de 500.000 arquivos sendo eles entre digitalizados ou anexados

Leia mais

Data Transformation Services (DTS) por Anderson Ferreira Souza

Data 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 mais

INSTALAÇÃO DO SISTEMA CONTROLGÁS

INSTALAÇÃO DO SISTEMA CONTROLGÁS INSTALAÇÃO DO SISTEMA CONTROLGÁS 1) Clique duas vezes no arquivo ControlGasSetup.exe. Será exibida a tela de boas vindas do instalador: 2) Clique em avançar e aparecerá a tela a seguir: Manual de Instalação

Leia mais

Como atualizar os preços da ABCFarma.

Como atualizar os preços da ABCFarma. Como atualizar os preços da ABCFarma. Requisitos 1. Ter o Microsoft Office 2003 instalado. Pode ser qualquer outra versão, mas eu vou explicar com a 2003, se você utilizar outra versão, saiba como utilizá-la.

Leia mais

ÍNDICE. 1. Introdução...2. 2. O que é o Sistema Mo Porã...2. 3. Como acessar o Site Mo Porã...3. 4. Cadastro do Sistema Mo Porã...

ÍNDICE. 1. Introdução...2. 2. O que é o Sistema Mo Porã...2. 3. Como acessar o Site Mo Porã...3. 4. Cadastro do Sistema Mo Porã... ÍNDICE 1. Introdução...2 2. O que é o Sistema Mo Porã...2 3. Como acessar o Site Mo Porã...3 4. Cadastro do Sistema Mo Porã...4 5. Navegando no Site Mo Porã...6 5. 1 Manual de ajuda do sistema Mo Porã...7

Leia mais

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Construtor de sites SoftPixel GUIA RÁPIDO - 1 - GUIA RÁPIDO - 1 - Sumário Introdução...3 Por que utilizar o Construtor de Sites?...3 Vantagens do Construtor de Sites...3 Conceitos básicos...3 Configuração básica do site...5 Definindo o layout/template

Leia mais

Microsoft Access XP Módulo Um

Microsoft Access XP Módulo Um Microsoft Access XP Módulo Um Neste primeiro módulo de aula do curso completo de Access XP vamos nos dedicar ao estudo de alguns termos relacionados com banco de dados e as principais novidades do novo

Leia mais

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1 TUTORIAL PRÁTICO SOBRE Git por Djalma Oliveira Versão 1.1 "Git é um sistema de controle de revisão distribuida, rápido e escalável" (tradução rápida do manual). Basicamente é

Leia mais

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR Novell Teaming - Guia de início rápido Novell Teaming 1.0 Julho de 2007 INTRODUÇÃO RÁPIDA www.novell.com Novell Teaming O termo Novell Teaming neste documento se aplica a todas as versões do Novell Teaming,

Leia mais

Configurações de Templates no SolidWorks 2011

Configurações de Templates no SolidWorks 2011 Configurações de Templates no SolidWorks 2011 Esse tutorial tem como intuito a criação de propriedades personalizadas, a criação destas propriedades é uma forma de automatizar o preenchimentos de informações

Leia mais

Manual 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) 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 mais

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

DOCUMENTAÇÃ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 mais

Manual do Painel Administrativo

Manual do Painel Administrativo Manual do Painel Administrativo versão 1.0 Autores César A Miggiolaro Marcos J Lazarin Índice Índice... 2 Figuras... 3 Inicio... 5 Funcionalidades... 7 Analytics... 9 Cidades... 9 Conteúdo... 10 Referência...

Leia mais

UNIVERSIDADE FEDERAL DO AMAPÁ NÚCLEO DE TECNOLOGIA DA INFORMAÇÃO. Manual de Avaliação de Desempenho Cadastro

UNIVERSIDADE FEDERAL DO AMAPÁ NÚCLEO DE TECNOLOGIA DA INFORMAÇÃO. Manual de Avaliação de Desempenho Cadastro UNIVERSIDADE FEDERAL DO AMAPÁ NÚCLEO DE TECNOLOGIA DA INFORMAÇÃO Manual de Avaliação de Desempenho Cadastro UNIFAP MACAPÁ-AP 2013 S U M Á R I O 1 Tela de Login...2 2 Acessando ao submenu cadastro de avaliação

Leia mais

VISUAL LIGHTBOX FERRAMENTA WEB DESIGN FABIANO KEIJI TAGUCHI

VISUAL LIGHTBOX FERRAMENTA WEB DESIGN FABIANO KEIJI TAGUCHI VISUAL LIGHTBOX FERRAMENTA WEB DESIGN FABIANO KEIJI TAGUCHI ESTE MATERIAL TEM UM OBJETIVO DE COMPLEMENTAR OS ASSUNTOS ABORDADOS DENTRO DE SALA DE AULA, TORNANDO-SE UM GUIA PARA UTILIZAÇÃO DA FERRAMENTA

Leia mais

TUTORIAL COMO CRIAR E EDITAR UM VÍDEO NO WINDOWS MOVIE MAKER*

TUTORIAL COMO CRIAR E EDITAR UM VÍDEO NO WINDOWS MOVIE MAKER* TUTORIAL COMO CRIAR E EDITAR UM VÍDEO NO WINDOWS MOVIE MAKER* * Microsoft Windows MovieMakeré um programa da Microsoft Corporation. A versão utilizada é a 5.1 que já vem instalada no Microsoft Windows

Leia mais

Manual de Utilização

Manual de Utilização Manual de Utilização Versão 1.0 18/01/2013 Sempre consulte por atualizações deste manual em nossa página. O Cotação Web está em constante desenvolvimento, podendo ter novas funcionalidades adicionadas

Leia mais

Manual de configuração do sistema

Manual 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 mais

Config. do módulo MSA com dispositivos REP.

Config. do módulo MSA com dispositivos REP. Config. do módulo MSA com dispositivos REP. 23/05/2011 Config. do módulo MSA com disp. REP. Sumário Sumário... 2 1 Configurando os novos serviços para os REP... 3 1.1 Configurando o devices.xml... 3 1.2

Leia mais

Entendendo como funciona o NAT

Entendendo 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 mais

EssentialPIM: Organize sua vida sem gastar nada! 01. Start menu program group Desktop icon Quick launch icon 02.

EssentialPIM: Organize sua vida sem gastar nada! 01. Start menu program group Desktop icon Quick launch icon 02. EssentialPIM: Organize sua vida sem gastar nada! Hoje em dia, os computadores realmente são multitarefa (podem executar mais de um programa ao mesmo tempo), só que nós normalmente também temos que ser.

Leia mais

Procedimentos para Reinstalação do Sisloc

Procedimentos 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 mais

MANUAL BACKUP XDENTAL 2012

MANUAL BACKUP XDENTAL 2012 MANUAL BACKUP XDENTAL 2012 Sumário CONFIGURANDO BACKUP... 2 ESCOLHENDO O TAMANHO DO ARQUIVO DE BACKUP... 4 CONFIGURANDO HORÁRIO DE INÍCIO DO BACKUP... 5 CONFIGURANDO BACKUP AO INICIAR O SISTEMA XDENTAL...

Leia mais

Criando uma agenda simples com NetBeans 6.5

Criando uma agenda simples com NetBeans 6.5 Criando uma agenda simples com NetBeans 6.5 (Swing application framework e Beansbinding) Já faz algum tempo que escrevi uma agenda simples usando o Eclipse com o Visual Class Editor. Demorei em torno de

Leia mais

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 ArpPrintServer Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 1 Sumário INTRODUÇÃO... 3 CARACTERÍSTICAS PRINCIPAIS DO SISTEMA... 3 REQUISITOS DE SISTEMA... 4 INSTALAÇÃO

Leia mais

CONSTRUÇÃO DE BLOG COM O BLOGGER

CONSTRUÇÃO DE BLOG COM O BLOGGER CONSTRUÇÃO DE BLOG COM O BLOGGER Blog é uma abreviação de weblog, qualquer registro frequênte de informações pode ser considerado um blog (últimas notícias de um jornal online por exemplo). A maioria das

Leia mais

Manual do Visualizador NF e KEY BEST

Manual 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 mais

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP AULA 4 VISÃO BÁSICA DE CLASSES EM PHP Antes de mais nada, vamos conhecer alguns conceitos, que serão importantes para o entendimento mais efetivos dos assuntos que trataremos durante a leitura desta apostila.

Leia mais

Microsoft Access: Criar relações para um novo banco de dados. Vitor Valerio de Souza Campos

Microsoft Access: Criar relações para um novo banco de dados. Vitor Valerio de Souza Campos Microsoft Access: Criar relações para um novo banco de Vitor Valerio de Souza Campos Conteúdo do curso Visão geral: relações são essenciais Lição: inclui oito seções Tarefas práticas sugeridas Teste Cartão

Leia mais

Processo de Controle das Reposições da loja

Processo de Controle das Reposições da loja Processo de Controle das Reposições da loja Getway 2015 Processo de Reposição de Mercadorias Manual Processo de Reposição de Mercadorias. O processo de reposição de mercadorias para o Profit foi definido

Leia mais

MANUAL PORTAL CLIENTE AVANÇO

MANUAL PORTAL CLIENTE AVANÇO MANUAL PORTAL CLIENTE AVANÇO [Digite seu endereço] [Digite seu telefone] [Digite seu endereço de email] MANUAL MANUAL AVANÇO INFORMÁTICA AVANÇO INFORMÁTICA Material Desenvolvido para Suporte Avanço Autor:

Leia mais

AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS

AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS Manual de Instalação Tempro Software StavTISS Sumário 1. INTRODUÇÃO... 2 2. REQUISITOS DO SISTEMA... 3 3. INSTALAÇÃO... 4 4.

Leia mais

CSAU 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. 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 mais

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider Ferramenta: Spider-CL Manual do Usuário Versão da Ferramenta: 1.1 www.ufpa.br/spider Histórico de Revisões Data Versão Descrição Autor 14/07/2009 1.0 15/07/2009 1.1 16/07/2009 1.2 20/05/2010 1.3 Preenchimento

Leia mais

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas Microsoft Power Point 2003 No Microsoft PowerPoint 2003, você cria sua apresentação usando apenas um arquivo, ele contém tudo o que você precisa uma estrutura para sua apresentação, os slides, o material

Leia mais

V.1.0 SIAPAS. Sistema Integrado de Administração ao Plano de Assistência à Saúde. Contas Médicas

V.1.0 SIAPAS. Sistema Integrado de Administração ao Plano de Assistência à Saúde. Contas Médicas 2014 V.1.0 SIAPAS Sistema Integrado de Administração ao Plano de Assistência à Saúde Contas Médicas SIAPAS Sistema Integrado de Administração ao Plano de Assistência à Saúde Módulos CONTAS MÉDICAS Capa

Leia mais

SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO

SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO AGOSTO DE 2013 SUMÁRIO STI/UFF - Sistema de Gerenciamento de Projetos do PDI SUMÁRIO... 2 1 Introdução... 3 1.1 O que é e qual a finalidade

Leia mais

Dicas para usar melhor o Word 2007

Dicas para usar melhor o Word 2007 Dicas para usar melhor o Word 2007 Quem está acostumado (ou não) a trabalhar com o Word, não costuma ter todo o tempo do mundo disponível para descobrir as funcionalidades de versões recentemente lançadas.

Leia mais

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova. 3.5 Páginas: Ao clicar em Páginas, são exibidas todas as páginas criadas para o Blog. No nosso exemplo já existirá uma página com o Título Página de Exemplo, criada quando o WorPress foi instalado. Ao

Leia mais