SlideShare uma empresa Scribd logo
1 de 90
Baixar para ler offline
INTEGRAÇÃO DE SISTEMAS - PRÁTICA
Mestrado Engenharia Informática
SIKULI
TÓPICOS
• O que é o Sikuli
• Como funciona
• Sikuli utilizado para automação GUI
• Sikuli utilizado para GUI testing
• Básico
• Automação condicional
• Looping condicional
• Exemplo prático
O QUE É?
• Software de automação que usa reconhecimento de imagens para identi
fi
car e controlar
componentes GUI
• Atualmente usa Jython como linguagem scripting
• Foi escrito em Java, o que permite que o Sikuli possa correr em Windows, Linux e Mac
OS.
COMO FUNCIONA
• SikuliX tem diferente tipos de funcionalidades que tentam fazer o match e descobrir
quando usa as suas funções, isto é referido como PSMRL
• P - pattern
• S - String
• M - Match
• R - Region
• L - Location
• Normalmente trabalhamos com padrões (Pattern) podendo especi
fi
car imagens e
localizações para clicar.
CONFIGURAÇÃO
• http://sikulix.com/
• Download sikulixide-…-.jar
• Necessário instalar o Java
• Execute o .jar, poderá ser necessário dar permissões de acessibilidade o de administrador
• java -jar caminho/Sikul…-.jar
BÁSICO
• Sikuli tem um IDE integrado
• Sem conhecer programação é possível automatizar um conjunto de tarefas:
• Integração de sistemas ao nível da interface
• Testes de funcionalidade
• Entre outros.
COMANDOS BÁSICOS
• click(): clica no padrão reconhecido no ecrã.
• type(): digita algo no ecrã.
• doubleClick(): clica duas vezes
• rightClick(): clique com o botão direito.
• wait(): espera que uma imagem apareça
• sleep(): adormece x segundos
DEMO
DEMO
• Hello World
• Example: http://doc.sikuli.org/tutorials/helloworld/helloworld-win.html
• You will learn how to capture a screenshot of a GUI element and write a Sikuli Script to do two things:
• Click on that element
• Type a string in that element
PADRÕES
• Padrões serão o principal objeto que iremos usar nos nossos exemplos
• Padrões contém uma imagem e informação sobre a imagem: tamanho da imagem,
semelhança e offset do alvo.
• Similarity - parâmetro que controla a semelhança com uma imagem (varia entre 0 e 100%)
• Target offset - Ponto de click na imagem, offset é a variação em x e y do centro da imagem
• Explorando a semelhança e o offset reduz-se consideravelmente o número de imagens
usados na automação.
COMO GUARDA A INFORMAÇÃO?
• Ver como o Sikuli guarda a informação da tarefa automatizada do demo criado
ENTRADA DE DADOS
MÉTODOS
Fonte: https://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html
CONDIÇÃO IF - ELSE
• Sintaxe Phyton
• Usar a identação para identi
fi
car blocos de código
• Operadores de comparação
• ==
• !=
• > < >= <=
• true or false
If expression:
Do something
else:
Do this instead
If expression:
Do something
elif expression:
Do something different
else:
Do this instead
CONDIÇÃO IF - ELSE
Abre um janela com uma comboBox
Utilizador seleciona a operação a realizar
Lança a calculadora
Faz clique em 5
Faz clique na operação selecionar pelo utilizador previamente
….
O CICLO FOR
• Usado na repetição de um número de vezes
fi
xo
• Ex. Clicar 10 vezes, numa lista de 5 elementos
• Em python apenas podemos iterar em lista
for step in range(5):
do this 5 times
for item in listPatterns:
click(item)
O CICLO FOR
Clica no número “1”
Clica 5 vezes em “+” e “1”
Clica em “=“
Resultado 6
CLASSE JAVA.AWT.ROBOT
INTRODUÇÃO
• Esta classe é usada para gerar eventos nativos de input com o propósito de:
• Testes de automação
• Self-running demos
• Outras aplicações em que o controlo do rato e do teclado seja necessário
• Esta classe tem três funcionalidades principais
• Controla o rato
• Controlar o teclado
• Captura de ecrã
DEMO DA ROBOT CLASS
• Demo 0
• Simular o clique de um botão
• Tarefas a realizar:
• Mover o rato
• Fazer o clique
DEMO DA ROBOT CLASS
• Demo 1
• Executar uma operação de teclado com ajuda da classe Robot
• O programa irá escrever a palavra “Hello World” automaticamente durante a execução do programa.
• A palavra será escrita caracter a caracter com 0.5 segundos de delay entre elas.
HTTP REQUESTS
HTTP REQUESTS
• O protocolo HTTP de
fi
ne um conjunto de métodos de requisição responsáveis por
indicar a ação a ser executada para um dado recurso.
• Cada um deles implementa um comportamento diferente.
• Os pedidos HTTP são feitas por um cliente, por exemplo, ao acedermos a website o
browser vai fazer um request para o servidor, pedindo determinados recursos
• Um pedido HTTP está dividido em 3 partes:
• Request Line
• Request Header
• Request Body
HTTP REQUESTS
• Request Line
• Contém o método, a localização do recurso e a versão do protocolo HTTP.
• Request Header
• Contém informações referentes a requisição, como host, política de cookies, enconding, tipo de
resposta e cache.
• Existem diversos tipos de headers: generic header, request header, response header e entity header.
• Request Body
• Contém normalmente dados as serem enviados ao servidor, é mais utilizado nos
pedidos POST e PUT.
HTTP RESPONSE
• O HTTP Response
• A um pedido HTTP o servidor devolve uma resposta.A resposta pode conter um corpo
em HTML, JSON, XML ou outro.
• Cada resposta possui um Status Code, que informa o que aconteceu com a requisição
enviada: • 1xx: Informacional
• 2xx: Sucesso
• 200: SUCCESS
• 201: CREATED
• 3xx: Redirecionamento
• 301: MOVED PERMANENTLY
• 302: MOVED
• 4xx: Erro no cliente
• 400: BAD REQUEST
• 401: UNAUTHORIZED
• 404: NOT FOUND
• 5xx: Erro no servidor
• 500: INTERNAL SERVER ERROR
HTTP REQUESTS
• O protocolo HTTP de
fi
ne um conjunto de métodos de requisição responsáveis por indicar a ação a
ser executada para um dado recurso.
• Cada um deles implementa um comportamento diferente.
• GET
• O método GET solicita a representação de um recurso especí
fi
co. Requisições utilizando o método GET devem
retornar apenas dados. (ex. Solicitar dados de um utilizador)
• HEAD
• O método HEAD solicita uma resposta de forma idêntica ao método GET, porém sem conter o corpo da resposta.
• POST
• O método POST é utilizado para submeter uma entidade a um recurso especí
fi
co, frequentemente causando uma
mudança no estado do recurso ou efeitos colaterais no servidor. (Ex: adicionar um utilizador)
HTTP REQUESTS
• PUT
• O método PUT substitui todas as atuais representações do recurso de destino pela carga de dados da requisição. Usado para atualizar
informações.
• DELETE
• O método DELETE remove um recurso especí
fi
co. Usado para remover informações.
• CONNECT
• O método CONNECT estabelece um túnel para o servidor identi
fi
cado pelo recurso de destino.
• OPTIONS
• O método OPTIONS é usado para descrever as opções de comunicação com o recurso de destino.
• TRACE
• O método TRACE executa um teste de chamada loop-back junto com o caminho para o recurso de destino.
• PATCH
• O método PATCH é utilizado para aplicar modi
fi
cações parciais num recurso.
POSTMAN
• Conjunto de ferramentas integradas oferece suporte a todas as etapas do ciclo de vida
de uma API
• Permite simular, testar, documentar, monitorar e publicar APIs através da interface do
Postman.
• Workspaces - permitem a colaboração da equipa durante o desenvolvimento de software
• Collections - série de solicitações HTTP organizadas por
fi
nalidade
• Enviroments - permitem o armazenamento e proteção de informações privadas
• Test scripts - permite escrever e executar testes para cada solicitação usando JavaScript.
• Variables - permite a referência a dados armazenados localmente sem comprometer informações
con
fi
denciais.
POSTMAN
APIS PARATESTES DE CLIENTES
• APIs com fake data para testar frontends.
• REQ | REST (Test your front-end against a real API
• Url: https://reqres.in
• GO REST (Online REST API forTesting and Prototyping)
• Url: https://gorest.co.in
HOWTO SEND HTTP REQUEST GET/POST IN JAVA
1.Apache HttpClient
• Standard to send an HTTP GET/POST request in Java.
• Version 5.0 was released in early 2020, adding HTTP/2 support.The library
also supports synchronous and asynchronous requests.
2.Java 11 HttpClient
• In Java 11, a new HttpClient is introduced in package java.net.http.*
• Can handle HTTP/2, and Websockets. It also has the option to make
requests synchronously or asynchronously by using
the CompletableFuture API
HOWTO SEND HTTP REQUEST GET/POST IN JAVA
3.OkHttp
• This OkHttp is very popular on Android, and widely use in many web projects, the rising star.
• OkHttp is an HTTP client from Square with a lot of helpful built-in features, like automatic
handling of GZIP, response caching and retries or fallback to other hosts in case of network
errors as well as HTTP/2 and WebSocket support.
• There is no built-in parsing of JSON responses, you have to use Jackson:
4.HttpURLConnection
• This HttpURLConnection class is available since Java 1.1. Generally, it’s NOT recommend
to use this class, because the codebase is very old and outdated, it may not supports the new
HTTP/2 standard, in fact, it’s really dif
fi
cult to con
fi
gure and use this class.
• The below example is just for self reference, NOT recommend to use this class!
HOWTO SEND HTTP REQUEST GET/POST IN C#
• WebClient
• The WebClient class is a simple way to send HTTP requests and receive responses in
• It can be used to perform both GET and POST operations
• It is suitable for simple requests where detailed control over requests and responses is not
required
• HttpWebRequest and HttpWebResponse
• HttpWebRequest and HttpWebResponse are more advanced classes for working with HTTP
requests
• They offer more control over requests and responses, including custom HTTP headers
• They also allow working with data streams directly
HOWTO SEND HTTP REQUEST GET/POST IN C#
• HttpClient
• HttpClient is a newer class in C# that offers a modern API for sending HTTP requests
and receiving responses
• It is easier to use and more intuitive than HttpWebRequest and HttpWebResponse
• It also supports features such as sending multiple requests in parallel
• RestSharp
• RestSharp is an open-source library that makes working with REST APIs easier in C#
• It offers a simple API for sending HTTP requests and receiving responses
• It can also handle authentication, serialization, and deserialization of data in JSON, XML,
and other formats
STORED PROCEDURES
INTRODUÇÃO
• Stored procedure
• Bloco de código SQL que é armazenado numa base de dados e pode ser invocado por um programa
cliente ou por outros comandos SQL.
• Pode conter uma instrução condicional como IF ou CASE ou os Loops.
• É útil para executar operações complexas em base de dados que podem exigir várias consultas ou
atualizações, pois permite que o desenvolvedor agrupe essas operações num único bloco de código
executável.
• Podem aceitar parâmetros de entrada e podem retornar resultados para o cliente, como uma tabela
de dados, uma mensagem de texto ou um código de erro.
• As stored procedures são suportadas pela maioria dos principais sistemas de gestão de bancos de
dados, como MySQL, Oracle, Microsoft SQL Server e PostgreSQL.
VANTAGENS
• Reduz o tráfego de rede:
• Várias instruções SQL são encapsuladas num SP. Ao executá-lo, em vez de enviar várias queries, envia-
se apenas o nome e os parâmetros do procedimento armazenado
• Fácil de manter:
• É reutilizável. Podemos implementar a lógica de negócios dentro de um SP,
• Pode ser usada por diferentes aplicativos várias vezes, ou diferentes módulos de um aplicativo
• Seguro:
• São mais seguros que as consultas AdHoc. A permissão pode ser concedida ao utilizador para
executar o procedimento armazenado sem dar permissão às tabelas usadas no procedimento
armazenado. O procedimento armazenado ajuda a evitar que o banco de dados SQL Injection
EXEMPLO -VERIFICAÇÃO DA INFORMAÇÃO ANTES
DE SER INSERIDA
CREATE DEFINER=`root`@`10.0.0.1` PROCEDURE `AdicionaUtilizador`(IN numero int, IN nome
text,IN email text, IN salario int)
BEGIN
if numero >=0 AND salario >= 0 then
INSERT INTO Clientes (numero, nome, emai, salario) values (numero, nome, email,
salario);
end if;
END
SINTAXE - CRIAR UMA SP
Create Procedure [Procedure Name] ([Parameter 1], [Parameter 2], [Parameter 3] )
Begin
SQL Queries..
End
Exemplo:
DELIMITER //
CREATE PROCEDURE SP_GetAlunos()
BEGIN
select numero,nome,turma from Turma;
END //
DELIMITER ;
SINTAXE - CHAMAR UMA SP
CALL [Procedure Name] ([Parameters]..)
PARÂMETROS NAS SP
• (IN | OUT | INOUT) (Parameter Name [datatype(length)])
• Especi
fi
que o tipo do parâmetro. Pode ser IN, OUT ou INOUT
• Especi
fi
que o nome e o tipo de dados do parâmetro
• Exemplo
• DELIMITER //
CREATE PROCEDURE GetAlunosPorAno(IN ano int)
BEGIN
select * from Aluno where ano=ano;
END //
DELIMITER ;
CALL GetAlunosPorAno(3)
PARÂMETROS NAS SP
• (IN | OUT | INOUT) (Parameter Name [datatype(length)])
• Especi
fi
que o tipo do parâmetro. Pode ser IN, OUT ou INOUT
• Especi
fi
que o nome e o tipo de dados do parâmetro
• Exemplo
• DELIMITER //
CREATE PROCEDURE CountAlunosPorAno(IN ano int, OUT totalAlunos)
BEGIN
select count(nome) from Aluno where ano=ano;
END //
DELIMITER ;
CALL CountAlunosPorAno(3)
ACEDER À LISTA DE SP DE UM BD
• É possível aceder à lista de SP existentes numa base de dados
• Para isso consulte a tabela information_schema.routines.
• Contém a lista de SP e funções armazenadas na base de dados
• Além disso, também fornece a data de criação, tipo de segurança e acesso aos dados
SQL aos SP armazenados.
•
select routine_name,
routine_type,definer,created,security_type,SQL_Data_Access from
information_schema.routines where routine_type='PROCEDURE' and
routine_schema='biblioteca';
FICHA 4 - STORED PROCEDURES
• Objetivo:
• Encapsular as operações CRUD (CREATE, READ, UPDATE, DELETE) numa Base de Dados partilhada
FICHA 4 - EXPORTTRANSFER LOAD (ETL)
• Procedimento para copiar dados de um fonte diferente do sistema de destino
• Integração ao nível dos dados em Base de dados Heterogéneas
• Soluções:
• Trigger na Base de dados para exportar os dados e ter uma camada abstracta para gerir a inserção no
sistema destinatário
• SSIS (Microsoft Software)
• BCP (Bulk Copy Program) utility
• OLE API
• Microsoft SQL Server integration com o .NET Framework common language runtime (CLR)
FICHA 4 - EXPORTTRANSFER LOAD (ETL)
RABBITMQ
RABBITMQ
• Sistema de mensagens robusto para diverso tipo de aplicações
• Ele é escrito em Erlang, uma linguagem de programação projetada para construir sistemas distribuídos e
tolerantes a falhas.
• Fácil de colocar a funcionar em grande parte dos sistemas operativos
• Suporta um grande número de plataformas de desenvolvimento: Java, .NET, Python, Ruby, PHP, …
• Versão open-source ou comercial com suporte
• Suporta vários protocolos de mensagens:
• Advanced Message Queuing Protocol (AMQP)
• Industry-standardized open protocol
• Wire-level binary protocol
• Well-de
fi
ned Messaging Model
RABBITMQ
• Algumas das principais vantagens do RabbitMQ incluem:
• Alta disponibilidade e escalabilidade: pode ser implantado num cluster para fornecer alta disponibilidade
e escalabilidade horizontal.
• Suporta balanceamento de carga e failover automático.
• Flexibilidade: é altamente con
fi
gurável e suporta vários tipos de trocas de mensagens, permitindo que as
mensagens sejam roteadas de forma precisa.
• Pode ser facilmente integrado com outras ferramentas de software, como o Apache Kafka, o Apache
Cassandra, o MongoDB e o Elasticsearch.
• Documentação abrangente: inclui tutoriais, guias de con
fi
guração e exemplos de código, tornando-o fácil
de usar e aprender.
HOW IT WORKS?
• Componentes:
• Produtores: são responsáveis por enviar mensagens para as
fi
las do RabbitMQ. Conectam-se ao RabbitMQ e
publicam mensagens em
fi
las especí
fi
cas usando um canal.
• Filas: são usadas para armazenar as mensagens. Quando um produtor envia uma mensagem para uma
fi
la, o
RabbitMQ armazena essa mensagem na
fi
la e, em seguida, a entrega a um ou mais consumidores que estejam
à escuta nessa
fi
la.
• Consumidores: são responsáveis por receber mensagens das
fi
las do RabbitMQ. Cconectam-se ao RabbitMQ e
inscrevem-se para receber mensagens de uma ou mais
fi
las usando um canal.
• Exchangers: são responsáveis por receber mensagens dos produtores e encaminhá-las para as
fi
las corretas no
RabbitMQ. Existem vários tipos de trocas, como fanout, direct, topic, e header, cada um com diferentes regras
de roteamento para encaminhar as mensagens.
• Roteamento: é usado para encaminhar mensagens da troca para a
fi
la correta. O RabbitMQ usa uma chave de
roteamento e regras de
fi
nidas na troca, para decidir qual é a
fi
la que irá receber a mensagem.
AMQP MESSAGE MODEL/AMQP
TRANSPORT MODEL
• Virtual hosts: são usados para separar o ambiente de mensagens de
diferentes aplicações no RabbitMQ. Cada virtual host tem seu próprio
conjunto de trocas,
fi
las e bindings.
• Bindings: de
fi
nem a relação entre trocas e
fi
las. Especi
fi
cam qual
fi
la ou
fi
las
que devem receber mensagens de uma determinada troca com base na
chave de roteamento.
• Connection: Uma conexãoTCP física entre cliente e o broker. Uma
conexão consiste em múltiplos canais
• Channel: Um canal virtual entre o cliente e o broker
HOW IT WORKS?
AMQP MESSAGING ABSTRACTION
UNDERTHE HOOD
client server
TCP connection
Only one persistent connection to all the channels
channel 1
channel 2
channel 3
...
EXCHANGE STRATEGIES
• Exchanges support 4 routing strategies
• Direct
• Fanout
• Topic
• Header (rarely used)
• Delivers messages based on algorithm
• Allow for numerous routing scenarios
DIRECT EXCHANGE
• Simple strategy
• Routed based on binding key value in
message
• Message is delivered to the queue that
matches the key value (routing key:
"USA")
FANOUT EXCHANGE
• Used to broadcast messages
• All bounded queues receive same
messages
TOPIC EXCHANGE
• Routing based on binding key patterns
• Messages can end up in on/more
queues
JAVA NATIVE INTERFACE(JNI)
INTRODUÇÃO
• É um padrão de programação que permite que código Java executado numa máquina
virtual Java (JVM) chame ou seja chamado por aplicações nativas (programas especí
fi
cos
para uma plataforma de hardware e sistema operativo) e bibliotecas escritas noutras
linguagens, tais como C, C++ e assembly.
• O JNI permite aos programadores escrever código nativo para tratar situações em que
uma aplicação não pode ser escrita inteiramente na linguagem Java.
• Isto é, quando a biblioteca padrão de classes Java não suporta bibliotecas ou características especí
fi
cas
da plataforma.
INTRODUÇÃO
• Os exemplos a seguir ilustram quando é necessário usar métodos nativos Java:
• A biblioteca de classes Java padrão não suporta os recursos dependentes da plataforma necessários
para o aplicativo.
• Já possui uma biblioteca escrita noutra linguagem e deseja torná-la acessível ao código Java por meio
da JNI.
• Deseja implementar uma pequena parte do código de tempo crítico numa linguagem de nível inferior,
como assembly.
VISÃO GERAL DO JNI
• O código nativo pode ser usado juntamente com Java de duas maneiras distintas:
• como "métodos nativos" numa JVM em execução
• e como o código que cria uma JVM usando a "API de Chamada”.
• Ao programar através da JNI, é possível usar métodos nativos para:
• Criar, inspecionar e atualizar objetos Java (incluindo arrays e strings).
• Chamar métodos Java.
• Capturar e lançar exceções.
• Carregar classes e obter informações sobre as classes.
• Executar a veri
fi
cação do tipo de tempo de execução.
MÉTODOS NATIVOS
• Os métodos nativos Java são declarados em Java, implementados noutra linguagem (como C ou C++) e carregados
pela JVM, conforme necessário.
• Para usar métodos nativos, deve-se:
• Declarar o método nativo no código Java. Quando o compilador javac encontra uma declaração de método nativo no código de origem
Java, ele registra o nome e os parâmetros para o método. Como o código de origem Java não contém nenhuma implementação, o
compilador marca o método como "nativo".A JVM pode então resolver o método corretamente quando for chamada.
• Implementar o método nativo como pontos de entrada externos numa biblioteca binária carregável. O conteúdo de uma biblioteca
nativa é especí
fi
co da plataforma.A JVM executa chamadas a métodos nativos. Quando a JVM está num método nativo, a JNI fornece
uma maneira de "retornar chamada" à JVM.
• Carregar o código de método nativo para aVM. É necessário localizar e carregar a biblioteca nativa que contém o método no tempo de
execução.
• Duas interfaces Java carregam bibliotecas nativas:
• java.lang.System.load()
• java.lang.System.loadLibrary()
• Breve descrição dos principais componentes:
• Código Java – As classes que incluem pelo menos um método nativo.
• Código Nativo – a lógica real dos métodos nativos, geralmente codi
fi
cados em C ou C++.
• Ficheiro header JNI – este
fi
cheiro header para C/C++ (incluir/jni.h no diretório JDK) inclui todas as
de
fi
nições de elementos JNI que é possível usar no programas nativos.
• Compilador C/C++ – pode ser um qualquer compilador capaz de gerar uma biblioteca partilhada
nativa para a plataforma.
MÉTODOS NATIVOS
FICHEIRO .JAVA
• A seguir, são apresentados os elementos que geralmente compõem um
fi
cheiro .java que usa o JNI:
• Importações de bibliotecas nativas: O
fi
cheiro .java deve incluir a importação das bibliotecas nativas que contém as
funções que serão chamadas a partir do código Java. Isso é feito por meio da declaração "native" no método que fará
a chamada à função nativa, seguido do nome da biblioteca (sem o pre
fi
xo "lib") e do nome da função nativa.
• De
fi
nição do método nativo: O método que fará a chamada à função nativa deve ser declarado como "native" e
especi
fi
car a assinatura da função nativa correspondente.A assinatura inclui o tipo de retorno e os tipos de
argumentos da função nativa.
• Carregamento da biblioteca nativa:A biblioteca nativa deve ser carregada antes que a função nativa seja chamada,
para que as funções nativas estejam disponíveis para o código Java. Isso é feito por meio do método
System.loadLibrary(), que recebe o nome da biblioteca como argumento.
• Implementação da função nativa:A implementação da função nativa é escrita em C ou C++ em um
fi
cheiro
separado que deve ser compilado em uma biblioteca compartilhada (.dll no Windows ou .so no Linux, por exemplo).
O
fi
cheiro .java deve incluir uma declaração que corresponde à função nativa implementada na biblioteca nativa.
FICHEIRO .C
• Em geral, um
fi
cheiro .c para JNI deve incluir as seguintes seções:
• Inclusão dos cabeçalhos do JNI: no início do
fi
cheiro, é necessário incluir os cabeçalhos do JNI
correspondentes ao nível da versão do JNI utilizada, como jni.h e jni_md.h. Esses cabeçalhos de
fi
nem as
estruturas e funções necessárias para interagir com o ambiente Java.
• De
fi
nição de funções nativas: a implementação das funções nativas que serão chamadas a partir do Java deve
ser de
fi
nida nessa seção. Essas funções devem seguir um padrão especí
fi
co, começando com a palavra-chave
"JNIEXPORT" seguida pelo tipo de retorno e o nome da função.Além disso, é necessário incluir os
argumentos especí
fi
cos do JNI, como o JNIEnv e o jobject.
• Registro das funções nativas: depois que as funções nativas são de
fi
nidas, elas precisam ser registradas no
ambiente Java usando a função RegisterNatives. Isso é feito em uma função chamada JNI_OnLoad, que é
chamada automaticamente quando a biblioteca nativa é carregada pelo Java.
• Implementação da função JNI_OnLoad: essa função é responsável por registrar as funções nativas de
fi
nidas
anteriormente usando a função RegisterNatives.
DEMO
INSTRUÇÕES
• Instalação de Software
• 1.Instalar o GCC 64 no SO Windows
• 2.Adicionar MinGW e JAVA_HOME (em princípio a JAVA_HOME já estará adicionada) às variáveis de ambiente do sistema
• "At the bottom "SystemVariables" panel, look for aVariable named "Path" and double click on it. Some systems show a good UI for adding a New Path easily (by clicking New),
else you just need to add ; at the end and add the following path"
• Abra a consola e execute 1º: gcc e depois java. Se obtiver resposta então avance.
• Programação (Tutorial)
• 1. Criar todos os
fi
cheiros no diretório src.
• 2. Escrever Programa em Java
• C:ExerciciosISsrcexercicio6> javac -h . *.java
• C:ExerciciosISsrcexercicio6> javac -h . C:ExerciciosISsrc *.java
• Isto cria o haeder
fi
le em c
• 3.Escrever o programa em C e incluir o header
fi
le com o nome correto
• gcc -I "C:Program FilesJavajdk-17.0.2include" -I"C:Program FilesJavajdk-17.0.2includeincludewin32" -shared -o hello.dll
HelloJNI.c
• 4. Correr o programa
• C:ExerciciosISsrc> java HelloJNI
• Se não funcionar tente:
• C:ExerciciosISsrc> java -D"java.library.path"="C:ExerciciosISsrc" HelloJNI
WEB SERVICES
SOAP
• SOAP é uma sigla para Simple Object Access Protocol
• É um protocolo que permite a comunicação entre sistemas distribuídos, utilizando mensagens no formato
XML (Extensible Markup Language).
• Um Web Service SOAP é um tipo de Web Service que utiliza o protocolo SOAP para troca de
mensagens.
• É composto por três partes principais:
• Envelope, que contém informações sobre a mensagem,
• Cabeçalho, que contém informações adicionais
• Corpo, que contém o conteúdo da mensagem.
SOAP - ARQUITECTURA
• Componentes de uma mensagem SOAP
• Envelope
• Identi
fi
ca o documento XML como uma mensagem SOAP
• Contém a mensagem SOAP e é usada para encapsular todos os
detalhes na mensagem SOAP.
• Header
• Contém informações de cabeçalho
• Pode conter informações como credenciais de autenticação ou a
de
fi
nição de tipos complexos que podem ser usados
 ​​
na mensagem
SOAP.
• A mensagem SOAP pode conter parâmetros que podem ser de
tipos simples, como strings e números, mas também podem ser de
um tipo de objeto complexo.
SOAP - ARQUITECTURA
• Componentes de uma mensagem SOAP
• Body contém informações de chamada e resposta
• Contém os dados reais que precisam ser enviados entre o serviço
da Web e o aplicativo de cliente.
• Fault (Opcional)
• Quando uma solicitação é feita a um serviço da Web SOAP, a
resposta retornada pode ser sucesso ou erro. Quando um sucesso
é gerado, a resposta do servidor sempre será uma mensagem SOAP.
• O Fault é o código que designa o código do erro.
<soap:Body>
<GetPersonInfo>
<Name>Joaquina</Name>
<Address>Vila Real</Address>
</GetPersonInfo>
</soap:Body>
SOAP -TIPO COMPLEXO
• Suponha um tipo de dados estruturado que tenha uma combinação de um “Nome de uma pessoa” e
uma “Morada”, então o tipo complexo
fi
cava:
•
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Nome" type="string"/>
<xsd:element name="Morada" type="string"/>
</xsd:sequence>
</xsd:complexType>
SOAP - ESTRUTURA DA MENSAGEM
• Exemplo de uma mensagem SOAP
SOAP - RESUMO
• SOAP é um protocolo usado para trocar dados entre aplicativos que são construídos em diferentes
linguagens de programação .
• SOAP é construído sobre a especi
fi
cação XML e funciona com o protocolo HTTP. O que o torna perfeito
para uso em aplicativos da web.
• Os blocos de construção SOAP consistem numa Mensagem SOAP. Cada mensagem SOAP consiste num
elemento Envelope, um Header e um Body.
• O elemento Envelope é o elemento obrigatório na mensagem SOAP e é usado para encapsular todos os
dados na mensagem SOAP.
• O elemento Header pode ser usado para conter informações como informações de autenticação ou a
de
fi
nição de tipos de dados complexos.
• O elemento Body é o elemento principal que contém a de
fi
nição dos métodos da web junto com
qualquer informação de parâmetros
WSDL (WEB SERVICES DESCRIPTION LANGUAGE)
• WSDL é uma descrição em formato XML de um Web Service que utiliza SOAP / RPC como protocolo.
• O conteúdo do WSDL descreve os métodos fornecidos pelo web service e como aceder a este
• Através de um WSDL informa-se o cliente como cada serviço num end-point deve ser invocado: quais os
parâmetros e o tipo de dados de cada parâmetro esperado, e qual o tipo de dado do retorno que será
enviado como resposta.
FERRAMENTAS E LABORATÓRIO
• Ficha Prática Nº 7
• Ferramentas:
• JDK 1.8
• Netbeans 8.x
• Visual Studio 2019
BPEL
INTRO
• Business Process Execution Language for Web Services (BPEL ou BPEL4WS) é uma
linguagem usada para a de
fi
nição e execução de processos de negócios usando Web
Services (WS).
• Permite a realização top-down da Arquitetura Orientada a Serviços (SOA) por meio da
composição, orquestração e coordenação de Web Services.
• Fornece uma maneira relativamente fácil e direta de compor vários Web Services em
novos serviços compostos chamados processos de negócios.
ORQUESTRAÇÃOVS COREOGRAFIA
• Combinar vários Web Services envolve, na verdade, a integração dos aplicativos subjacentes e suas
funcionalidades.
• Os Web Services podem ser combinados de duas maneiras:
• Orquestração
• Coreogra
fi
a
• Na orquestração, que geralmente é usada em processos de negócios privados, um processo central (que
pode ser outro serviço da Web) assume o controlo dos Web Services envolvidos e coordena a execução
de diferentes operações nos Web Services envolvidos na operação.
• Os Web Services envolvidos não "sabem" (e não precisam saber) que estão envolvidos num processo de
composição e que fazem parte de um processo de negócios de nível superior.
• Apenas o coordenador central da orquestração está ciente desse objetivo, então a orquestração é
centralizada (Ver Figura 1)
ORQUESTRAÇÃOVS COREOGRAFIA
• A coreogra
fi
a, ao contrário, não conta com um coordenador central.
• Em vez disso, cada serviço da Web envolvido na coreogra
fi
a sabe exatamente quando
executar as suas operações e com quem interagir.
• A coreogra
fi
a é um esforço colaborativo com foco na troca de mensagens em
processos de negócios públicos.
• Todos os participantes da coreogra
fi
a precisam estar cientes do processo de negócio,
operações a serem executadas, mensagens a serem trocadas e o tempo das trocas de
mensagens.
ORQUESTRAÇÃOVS COREOGRAFIA
• A orquestração é um paradigma mais
fl
exível e apresenta as seguintes vantagens sobre a
coreogra
fi
a:
• A coordenação dos processos de componentes é gerida centralmente por um
coordenador conhecido.
• Os Web Serivces podem ser incorporados sem que eles estejam cientes de que
pertencem a um processo de negócios maior.
• Cenários alternativos podem ser implementados caso ocorram falhas.
CRIAR UM PROCESSO BPEL
• Um processo BPEL especi
fi
ca a ordem exata na qual os WS participantes devem ser invocados,
sequencialmente ou em paralelo.
• É possível expressar comportamentos condicionais.
• Por exemplo, uma chamada de um serviço da Web pode depender do valor de uma chamada
anterior.
• É possível construir loops, declarar variáveis, copiar e atribuir valores, de
fi
nir gestores de falhas,
entre outros.
• Ao combinar todas essas construções, é possível de
fi
nir processos de negócios complexos de
maneira algorítmica.
• Na verdade, como os processos de negócios são essencialmente grá
fi
cos de atividades, é
muitas vezes útil expressá-los usando diagramas de atividades UML.
CRIAR UM PROCESSO BPEL
• Num cenário típico, o processo de negócios BPEL recebe um request.
• Para cumpri-lo, o processo invoca os WS envolvidos e, em seguida, responde ao chamador original.
• Como o processo BPEL comunica com outros WS, ele depende muito da descrição WSDL dos WS invocados pelo serviço da Web
composto.
• Por exemplo:
• Um processo BPEL consiste em etapas; cada etapa é chamada de "atividade". O BPEL suporta atividades primitivas e de estrutura.
• As atividades primitivas representam construções básicas e são usadas para tarefas comuns, como as seguintes:
• Invoca outros serviços da Web - <invoke>
• Aguarda que o cliente invoque o processo de negócios enviando uma mensagem - <receive>(recebendo uma solicitação)
• Gera uma resposta para operações síncronas - <reply>
• Manipula variáveis
 ​​
de dados - <assign>
• Indica falhas e exceções - <throw>
CRIAR UM PROCESSO BPEL
• Espera por algum tempo - <wait>
• Finaliza todo o processo - <terminate>
• É possível combinar essas e outras atividades primitivas para de
fi
nir algoritmos complexos que especi
fi
cam
exatamente as etapas dos processos de negócios.
• Para combinar atividades primitivas, o BPEL suporta várias atividades de estrutura.As mais importantes são;
• Sequence( <sequence>), permite de
fi
nir um conjunto de atividades que serão invocadas numa sequência
ordenada
• Flow( <
fl
ow>) para de
fi
nir um conjunto de atividades invocadas em paralelo
• Case-switch construct( <switch>) para implementar branches
• While ( <while>) para de
fi
nir loops
• Selecionar um dos vários caminhos alternativos, usando <pick>
• Cada processo BPEL também de
fi
ne links de parceiros, através <partnerLink>, e declara variáveis, usando <variable>.
SERVIÇOS ASSÍNCRONOSVS SÍNCRONOS
• Normalmente, usa-se serviços assíncronos para operações de longa duração e serviços
síncronos para operações que retornam um resultado num tempo relativamente curto.
• Ao usar-se WS assíncronos, o processo BPEL geralmente também é assíncrono.
ESTRUTURA BÁSICA DE UM PROCESSO BPEL
ESTRUTURA BÁSICA DE UM PROCESSO BPEL
FERRAMENTAS E LABORATÓRIO
• Ferramenta - Open ESB:
• https://www.open-esb.net
• 1º laboratório
• Instalação e con
fi
guração: https://www.open-esb.net/index.php/openesb-resources-
and-documentation/get-started
• Laboratório: Start with Hello World
• Laboratório. Create a calculator with OpenESB

Mais conteúdo relacionado

Semelhante a Diapositivos práticos - Integração de Sistemas.pdf

Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Daniel Makiyama
 
Entity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidadesEntity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidadesC. Augusto Proiete
 
TDC2016SP - Construindo Web APIs em Java na era do Big Data
TDC2016SP - Construindo Web APIs em Java na era do Big DataTDC2016SP - Construindo Web APIs em Java na era do Big Data
TDC2016SP - Construindo Web APIs em Java na era do Big Datatdc-globalcode
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkMayara Fernandes
 
Segurança Através de Gerência de Configurações
Segurança Através de Gerência de ConfiguraçõesSegurança Através de Gerência de Configurações
Segurança Através de Gerência de ConfiguraçõesJeronimo Zucco
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPSérgio Vilar
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
JBoss-WildFly - Avançado
JBoss-WildFly - AvançadoJBoss-WildFly - Avançado
JBoss-WildFly - AvançadoAdriano Schmidt
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web APIVinicius Mussak
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceJosé Roberto Araújo
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetMarcos Petry
 

Semelhante a Diapositivos práticos - Integração de Sistemas.pdf (20)

Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
 
Entity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidadesEntity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidades
 
Palestra
PalestraPalestra
Palestra
 
TDC2016SP - Construindo Web APIs em Java na era do Big Data
TDC2016SP - Construindo Web APIs em Java na era do Big DataTDC2016SP - Construindo Web APIs em Java na era do Big Data
TDC2016SP - Construindo Web APIs em Java na era do Big Data
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot framework
 
Segurança Através de Gerência de Configurações
Segurança Através de Gerência de ConfiguraçõesSegurança Através de Gerência de Configurações
Segurança Através de Gerência de Configurações
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
JBoss-WildFly - Avançado
JBoss-WildFly - AvançadoJBoss-WildFly - Avançado
JBoss-WildFly - Avançado
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web API
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
 
Api todo list
Api todo listApi todo list
Api todo list
 
Curso AngularJS - Parte 2
Curso AngularJS - Parte 2Curso AngularJS - Parte 2
Curso AngularJS - Parte 2
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performance
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internet
 

Diapositivos práticos - Integração de Sistemas.pdf

  • 1. INTEGRAÇÃO DE SISTEMAS - PRÁTICA Mestrado Engenharia Informática
  • 3. TÓPICOS • O que é o Sikuli • Como funciona • Sikuli utilizado para automação GUI • Sikuli utilizado para GUI testing • Básico • Automação condicional • Looping condicional • Exemplo prático
  • 4. O QUE É? • Software de automação que usa reconhecimento de imagens para identi fi car e controlar componentes GUI • Atualmente usa Jython como linguagem scripting • Foi escrito em Java, o que permite que o Sikuli possa correr em Windows, Linux e Mac OS.
  • 5. COMO FUNCIONA • SikuliX tem diferente tipos de funcionalidades que tentam fazer o match e descobrir quando usa as suas funções, isto é referido como PSMRL • P - pattern • S - String • M - Match • R - Region • L - Location • Normalmente trabalhamos com padrões (Pattern) podendo especi fi car imagens e localizações para clicar.
  • 6. CONFIGURAÇÃO • http://sikulix.com/ • Download sikulixide-…-.jar • Necessário instalar o Java • Execute o .jar, poderá ser necessário dar permissões de acessibilidade o de administrador • java -jar caminho/Sikul…-.jar
  • 7. BÁSICO • Sikuli tem um IDE integrado • Sem conhecer programação é possível automatizar um conjunto de tarefas: • Integração de sistemas ao nível da interface • Testes de funcionalidade • Entre outros.
  • 8. COMANDOS BÁSICOS • click(): clica no padrão reconhecido no ecrã. • type(): digita algo no ecrã. • doubleClick(): clica duas vezes • rightClick(): clique com o botão direito. • wait(): espera que uma imagem apareça • sleep(): adormece x segundos
  • 10. DEMO • Hello World • Example: http://doc.sikuli.org/tutorials/helloworld/helloworld-win.html • You will learn how to capture a screenshot of a GUI element and write a Sikuli Script to do two things: • Click on that element • Type a string in that element
  • 11. PADRÕES • Padrões serão o principal objeto que iremos usar nos nossos exemplos • Padrões contém uma imagem e informação sobre a imagem: tamanho da imagem, semelhança e offset do alvo. • Similarity - parâmetro que controla a semelhança com uma imagem (varia entre 0 e 100%) • Target offset - Ponto de click na imagem, offset é a variação em x e y do centro da imagem • Explorando a semelhança e o offset reduz-se consideravelmente o número de imagens usados na automação.
  • 12. COMO GUARDA A INFORMAÇÃO? • Ver como o Sikuli guarda a informação da tarefa automatizada do demo criado
  • 15. CONDIÇÃO IF - ELSE • Sintaxe Phyton • Usar a identação para identi fi car blocos de código • Operadores de comparação • == • != • > < >= <= • true or false If expression: Do something else: Do this instead If expression: Do something elif expression: Do something different else: Do this instead
  • 16. CONDIÇÃO IF - ELSE Abre um janela com uma comboBox Utilizador seleciona a operação a realizar Lança a calculadora Faz clique em 5 Faz clique na operação selecionar pelo utilizador previamente ….
  • 17. O CICLO FOR • Usado na repetição de um número de vezes fi xo • Ex. Clicar 10 vezes, numa lista de 5 elementos • Em python apenas podemos iterar em lista for step in range(5): do this 5 times for item in listPatterns: click(item)
  • 18. O CICLO FOR Clica no número “1” Clica 5 vezes em “+” e “1” Clica em “=“ Resultado 6
  • 20. INTRODUÇÃO • Esta classe é usada para gerar eventos nativos de input com o propósito de: • Testes de automação • Self-running demos • Outras aplicações em que o controlo do rato e do teclado seja necessário • Esta classe tem três funcionalidades principais • Controla o rato • Controlar o teclado • Captura de ecrã
  • 21. DEMO DA ROBOT CLASS • Demo 0 • Simular o clique de um botão • Tarefas a realizar: • Mover o rato • Fazer o clique
  • 22. DEMO DA ROBOT CLASS • Demo 1 • Executar uma operação de teclado com ajuda da classe Robot • O programa irá escrever a palavra “Hello World” automaticamente durante a execução do programa. • A palavra será escrita caracter a caracter com 0.5 segundos de delay entre elas.
  • 24. HTTP REQUESTS • O protocolo HTTP de fi ne um conjunto de métodos de requisição responsáveis por indicar a ação a ser executada para um dado recurso. • Cada um deles implementa um comportamento diferente. • Os pedidos HTTP são feitas por um cliente, por exemplo, ao acedermos a website o browser vai fazer um request para o servidor, pedindo determinados recursos • Um pedido HTTP está dividido em 3 partes: • Request Line • Request Header • Request Body
  • 25. HTTP REQUESTS • Request Line • Contém o método, a localização do recurso e a versão do protocolo HTTP. • Request Header • Contém informações referentes a requisição, como host, política de cookies, enconding, tipo de resposta e cache. • Existem diversos tipos de headers: generic header, request header, response header e entity header. • Request Body • Contém normalmente dados as serem enviados ao servidor, é mais utilizado nos pedidos POST e PUT.
  • 26. HTTP RESPONSE • O HTTP Response • A um pedido HTTP o servidor devolve uma resposta.A resposta pode conter um corpo em HTML, JSON, XML ou outro. • Cada resposta possui um Status Code, que informa o que aconteceu com a requisição enviada: • 1xx: Informacional • 2xx: Sucesso • 200: SUCCESS • 201: CREATED • 3xx: Redirecionamento • 301: MOVED PERMANENTLY • 302: MOVED • 4xx: Erro no cliente • 400: BAD REQUEST • 401: UNAUTHORIZED • 404: NOT FOUND • 5xx: Erro no servidor • 500: INTERNAL SERVER ERROR
  • 27. HTTP REQUESTS • O protocolo HTTP de fi ne um conjunto de métodos de requisição responsáveis por indicar a ação a ser executada para um dado recurso. • Cada um deles implementa um comportamento diferente. • GET • O método GET solicita a representação de um recurso especí fi co. Requisições utilizando o método GET devem retornar apenas dados. (ex. Solicitar dados de um utilizador) • HEAD • O método HEAD solicita uma resposta de forma idêntica ao método GET, porém sem conter o corpo da resposta. • POST • O método POST é utilizado para submeter uma entidade a um recurso especí fi co, frequentemente causando uma mudança no estado do recurso ou efeitos colaterais no servidor. (Ex: adicionar um utilizador)
  • 28. HTTP REQUESTS • PUT • O método PUT substitui todas as atuais representações do recurso de destino pela carga de dados da requisição. Usado para atualizar informações. • DELETE • O método DELETE remove um recurso especí fi co. Usado para remover informações. • CONNECT • O método CONNECT estabelece um túnel para o servidor identi fi cado pelo recurso de destino. • OPTIONS • O método OPTIONS é usado para descrever as opções de comunicação com o recurso de destino. • TRACE • O método TRACE executa um teste de chamada loop-back junto com o caminho para o recurso de destino. • PATCH • O método PATCH é utilizado para aplicar modi fi cações parciais num recurso.
  • 29. POSTMAN • Conjunto de ferramentas integradas oferece suporte a todas as etapas do ciclo de vida de uma API • Permite simular, testar, documentar, monitorar e publicar APIs através da interface do Postman. • Workspaces - permitem a colaboração da equipa durante o desenvolvimento de software • Collections - série de solicitações HTTP organizadas por fi nalidade • Enviroments - permitem o armazenamento e proteção de informações privadas • Test scripts - permite escrever e executar testes para cada solicitação usando JavaScript. • Variables - permite a referência a dados armazenados localmente sem comprometer informações con fi denciais.
  • 31. APIS PARATESTES DE CLIENTES • APIs com fake data para testar frontends. • REQ | REST (Test your front-end against a real API • Url: https://reqres.in • GO REST (Online REST API forTesting and Prototyping) • Url: https://gorest.co.in
  • 32. HOWTO SEND HTTP REQUEST GET/POST IN JAVA 1.Apache HttpClient • Standard to send an HTTP GET/POST request in Java. • Version 5.0 was released in early 2020, adding HTTP/2 support.The library also supports synchronous and asynchronous requests. 2.Java 11 HttpClient • In Java 11, a new HttpClient is introduced in package java.net.http.* • Can handle HTTP/2, and Websockets. It also has the option to make requests synchronously or asynchronously by using the CompletableFuture API
  • 33. HOWTO SEND HTTP REQUEST GET/POST IN JAVA 3.OkHttp • This OkHttp is very popular on Android, and widely use in many web projects, the rising star. • OkHttp is an HTTP client from Square with a lot of helpful built-in features, like automatic handling of GZIP, response caching and retries or fallback to other hosts in case of network errors as well as HTTP/2 and WebSocket support. • There is no built-in parsing of JSON responses, you have to use Jackson: 4.HttpURLConnection • This HttpURLConnection class is available since Java 1.1. Generally, it’s NOT recommend to use this class, because the codebase is very old and outdated, it may not supports the new HTTP/2 standard, in fact, it’s really dif fi cult to con fi gure and use this class. • The below example is just for self reference, NOT recommend to use this class!
  • 34. HOWTO SEND HTTP REQUEST GET/POST IN C# • WebClient • The WebClient class is a simple way to send HTTP requests and receive responses in • It can be used to perform both GET and POST operations • It is suitable for simple requests where detailed control over requests and responses is not required • HttpWebRequest and HttpWebResponse • HttpWebRequest and HttpWebResponse are more advanced classes for working with HTTP requests • They offer more control over requests and responses, including custom HTTP headers • They also allow working with data streams directly
  • 35. HOWTO SEND HTTP REQUEST GET/POST IN C# • HttpClient • HttpClient is a newer class in C# that offers a modern API for sending HTTP requests and receiving responses • It is easier to use and more intuitive than HttpWebRequest and HttpWebResponse • It also supports features such as sending multiple requests in parallel • RestSharp • RestSharp is an open-source library that makes working with REST APIs easier in C# • It offers a simple API for sending HTTP requests and receiving responses • It can also handle authentication, serialization, and deserialization of data in JSON, XML, and other formats
  • 37. INTRODUÇÃO • Stored procedure • Bloco de código SQL que é armazenado numa base de dados e pode ser invocado por um programa cliente ou por outros comandos SQL. • Pode conter uma instrução condicional como IF ou CASE ou os Loops. • É útil para executar operações complexas em base de dados que podem exigir várias consultas ou atualizações, pois permite que o desenvolvedor agrupe essas operações num único bloco de código executável. • Podem aceitar parâmetros de entrada e podem retornar resultados para o cliente, como uma tabela de dados, uma mensagem de texto ou um código de erro. • As stored procedures são suportadas pela maioria dos principais sistemas de gestão de bancos de dados, como MySQL, Oracle, Microsoft SQL Server e PostgreSQL.
  • 38. VANTAGENS • Reduz o tráfego de rede: • Várias instruções SQL são encapsuladas num SP. Ao executá-lo, em vez de enviar várias queries, envia- se apenas o nome e os parâmetros do procedimento armazenado • Fácil de manter: • É reutilizável. Podemos implementar a lógica de negócios dentro de um SP, • Pode ser usada por diferentes aplicativos várias vezes, ou diferentes módulos de um aplicativo • Seguro: • São mais seguros que as consultas AdHoc. A permissão pode ser concedida ao utilizador para executar o procedimento armazenado sem dar permissão às tabelas usadas no procedimento armazenado. O procedimento armazenado ajuda a evitar que o banco de dados SQL Injection
  • 39. EXEMPLO -VERIFICAÇÃO DA INFORMAÇÃO ANTES DE SER INSERIDA CREATE DEFINER=`root`@`10.0.0.1` PROCEDURE `AdicionaUtilizador`(IN numero int, IN nome text,IN email text, IN salario int) BEGIN if numero >=0 AND salario >= 0 then INSERT INTO Clientes (numero, nome, emai, salario) values (numero, nome, email, salario); end if; END
  • 40. SINTAXE - CRIAR UMA SP Create Procedure [Procedure Name] ([Parameter 1], [Parameter 2], [Parameter 3] ) Begin SQL Queries.. End Exemplo: DELIMITER // CREATE PROCEDURE SP_GetAlunos() BEGIN select numero,nome,turma from Turma; END // DELIMITER ;
  • 41. SINTAXE - CHAMAR UMA SP CALL [Procedure Name] ([Parameters]..)
  • 42. PARÂMETROS NAS SP • (IN | OUT | INOUT) (Parameter Name [datatype(length)]) • Especi fi que o tipo do parâmetro. Pode ser IN, OUT ou INOUT • Especi fi que o nome e o tipo de dados do parâmetro • Exemplo • DELIMITER // CREATE PROCEDURE GetAlunosPorAno(IN ano int) BEGIN select * from Aluno where ano=ano; END // DELIMITER ; CALL GetAlunosPorAno(3)
  • 43. PARÂMETROS NAS SP • (IN | OUT | INOUT) (Parameter Name [datatype(length)]) • Especi fi que o tipo do parâmetro. Pode ser IN, OUT ou INOUT • Especi fi que o nome e o tipo de dados do parâmetro • Exemplo • DELIMITER // CREATE PROCEDURE CountAlunosPorAno(IN ano int, OUT totalAlunos) BEGIN select count(nome) from Aluno where ano=ano; END // DELIMITER ; CALL CountAlunosPorAno(3)
  • 44. ACEDER À LISTA DE SP DE UM BD • É possível aceder à lista de SP existentes numa base de dados • Para isso consulte a tabela information_schema.routines. • Contém a lista de SP e funções armazenadas na base de dados • Além disso, também fornece a data de criação, tipo de segurança e acesso aos dados SQL aos SP armazenados. • select routine_name, routine_type,definer,created,security_type,SQL_Data_Access from information_schema.routines where routine_type='PROCEDURE' and routine_schema='biblioteca';
  • 45. FICHA 4 - STORED PROCEDURES • Objetivo: • Encapsular as operações CRUD (CREATE, READ, UPDATE, DELETE) numa Base de Dados partilhada
  • 46. FICHA 4 - EXPORTTRANSFER LOAD (ETL) • Procedimento para copiar dados de um fonte diferente do sistema de destino • Integração ao nível dos dados em Base de dados Heterogéneas • Soluções: • Trigger na Base de dados para exportar os dados e ter uma camada abstracta para gerir a inserção no sistema destinatário • SSIS (Microsoft Software) • BCP (Bulk Copy Program) utility • OLE API • Microsoft SQL Server integration com o .NET Framework common language runtime (CLR)
  • 47. FICHA 4 - EXPORTTRANSFER LOAD (ETL)
  • 49. RABBITMQ • Sistema de mensagens robusto para diverso tipo de aplicações • Ele é escrito em Erlang, uma linguagem de programação projetada para construir sistemas distribuídos e tolerantes a falhas. • Fácil de colocar a funcionar em grande parte dos sistemas operativos • Suporta um grande número de plataformas de desenvolvimento: Java, .NET, Python, Ruby, PHP, … • Versão open-source ou comercial com suporte • Suporta vários protocolos de mensagens: • Advanced Message Queuing Protocol (AMQP) • Industry-standardized open protocol • Wire-level binary protocol • Well-de fi ned Messaging Model
  • 50. RABBITMQ • Algumas das principais vantagens do RabbitMQ incluem: • Alta disponibilidade e escalabilidade: pode ser implantado num cluster para fornecer alta disponibilidade e escalabilidade horizontal. • Suporta balanceamento de carga e failover automático. • Flexibilidade: é altamente con fi gurável e suporta vários tipos de trocas de mensagens, permitindo que as mensagens sejam roteadas de forma precisa. • Pode ser facilmente integrado com outras ferramentas de software, como o Apache Kafka, o Apache Cassandra, o MongoDB e o Elasticsearch. • Documentação abrangente: inclui tutoriais, guias de con fi guração e exemplos de código, tornando-o fácil de usar e aprender.
  • 51. HOW IT WORKS? • Componentes: • Produtores: são responsáveis por enviar mensagens para as fi las do RabbitMQ. Conectam-se ao RabbitMQ e publicam mensagens em fi las especí fi cas usando um canal. • Filas: são usadas para armazenar as mensagens. Quando um produtor envia uma mensagem para uma fi la, o RabbitMQ armazena essa mensagem na fi la e, em seguida, a entrega a um ou mais consumidores que estejam à escuta nessa fi la. • Consumidores: são responsáveis por receber mensagens das fi las do RabbitMQ. Cconectam-se ao RabbitMQ e inscrevem-se para receber mensagens de uma ou mais fi las usando um canal. • Exchangers: são responsáveis por receber mensagens dos produtores e encaminhá-las para as fi las corretas no RabbitMQ. Existem vários tipos de trocas, como fanout, direct, topic, e header, cada um com diferentes regras de roteamento para encaminhar as mensagens. • Roteamento: é usado para encaminhar mensagens da troca para a fi la correta. O RabbitMQ usa uma chave de roteamento e regras de fi nidas na troca, para decidir qual é a fi la que irá receber a mensagem.
  • 52. AMQP MESSAGE MODEL/AMQP TRANSPORT MODEL • Virtual hosts: são usados para separar o ambiente de mensagens de diferentes aplicações no RabbitMQ. Cada virtual host tem seu próprio conjunto de trocas, fi las e bindings. • Bindings: de fi nem a relação entre trocas e fi las. Especi fi cam qual fi la ou fi las que devem receber mensagens de uma determinada troca com base na chave de roteamento. • Connection: Uma conexãoTCP física entre cliente e o broker. Uma conexão consiste em múltiplos canais • Channel: Um canal virtual entre o cliente e o broker
  • 55. UNDERTHE HOOD client server TCP connection Only one persistent connection to all the channels channel 1 channel 2 channel 3 ...
  • 56. EXCHANGE STRATEGIES • Exchanges support 4 routing strategies • Direct • Fanout • Topic • Header (rarely used) • Delivers messages based on algorithm • Allow for numerous routing scenarios
  • 57. DIRECT EXCHANGE • Simple strategy • Routed based on binding key value in message • Message is delivered to the queue that matches the key value (routing key: "USA")
  • 58. FANOUT EXCHANGE • Used to broadcast messages • All bounded queues receive same messages
  • 59. TOPIC EXCHANGE • Routing based on binding key patterns • Messages can end up in on/more queues
  • 61. INTRODUÇÃO • É um padrão de programação que permite que código Java executado numa máquina virtual Java (JVM) chame ou seja chamado por aplicações nativas (programas especí fi cos para uma plataforma de hardware e sistema operativo) e bibliotecas escritas noutras linguagens, tais como C, C++ e assembly. • O JNI permite aos programadores escrever código nativo para tratar situações em que uma aplicação não pode ser escrita inteiramente na linguagem Java. • Isto é, quando a biblioteca padrão de classes Java não suporta bibliotecas ou características especí fi cas da plataforma.
  • 62. INTRODUÇÃO • Os exemplos a seguir ilustram quando é necessário usar métodos nativos Java: • A biblioteca de classes Java padrão não suporta os recursos dependentes da plataforma necessários para o aplicativo. • Já possui uma biblioteca escrita noutra linguagem e deseja torná-la acessível ao código Java por meio da JNI. • Deseja implementar uma pequena parte do código de tempo crítico numa linguagem de nível inferior, como assembly.
  • 63. VISÃO GERAL DO JNI • O código nativo pode ser usado juntamente com Java de duas maneiras distintas: • como "métodos nativos" numa JVM em execução • e como o código que cria uma JVM usando a "API de Chamada”. • Ao programar através da JNI, é possível usar métodos nativos para: • Criar, inspecionar e atualizar objetos Java (incluindo arrays e strings). • Chamar métodos Java. • Capturar e lançar exceções. • Carregar classes e obter informações sobre as classes. • Executar a veri fi cação do tipo de tempo de execução.
  • 64. MÉTODOS NATIVOS • Os métodos nativos Java são declarados em Java, implementados noutra linguagem (como C ou C++) e carregados pela JVM, conforme necessário. • Para usar métodos nativos, deve-se: • Declarar o método nativo no código Java. Quando o compilador javac encontra uma declaração de método nativo no código de origem Java, ele registra o nome e os parâmetros para o método. Como o código de origem Java não contém nenhuma implementação, o compilador marca o método como "nativo".A JVM pode então resolver o método corretamente quando for chamada. • Implementar o método nativo como pontos de entrada externos numa biblioteca binária carregável. O conteúdo de uma biblioteca nativa é especí fi co da plataforma.A JVM executa chamadas a métodos nativos. Quando a JVM está num método nativo, a JNI fornece uma maneira de "retornar chamada" à JVM. • Carregar o código de método nativo para aVM. É necessário localizar e carregar a biblioteca nativa que contém o método no tempo de execução. • Duas interfaces Java carregam bibliotecas nativas: • java.lang.System.load() • java.lang.System.loadLibrary()
  • 65. • Breve descrição dos principais componentes: • Código Java – As classes que incluem pelo menos um método nativo. • Código Nativo – a lógica real dos métodos nativos, geralmente codi fi cados em C ou C++. • Ficheiro header JNI – este fi cheiro header para C/C++ (incluir/jni.h no diretório JDK) inclui todas as de fi nições de elementos JNI que é possível usar no programas nativos. • Compilador C/C++ – pode ser um qualquer compilador capaz de gerar uma biblioteca partilhada nativa para a plataforma. MÉTODOS NATIVOS
  • 66. FICHEIRO .JAVA • A seguir, são apresentados os elementos que geralmente compõem um fi cheiro .java que usa o JNI: • Importações de bibliotecas nativas: O fi cheiro .java deve incluir a importação das bibliotecas nativas que contém as funções que serão chamadas a partir do código Java. Isso é feito por meio da declaração "native" no método que fará a chamada à função nativa, seguido do nome da biblioteca (sem o pre fi xo "lib") e do nome da função nativa. • De fi nição do método nativo: O método que fará a chamada à função nativa deve ser declarado como "native" e especi fi car a assinatura da função nativa correspondente.A assinatura inclui o tipo de retorno e os tipos de argumentos da função nativa. • Carregamento da biblioteca nativa:A biblioteca nativa deve ser carregada antes que a função nativa seja chamada, para que as funções nativas estejam disponíveis para o código Java. Isso é feito por meio do método System.loadLibrary(), que recebe o nome da biblioteca como argumento. • Implementação da função nativa:A implementação da função nativa é escrita em C ou C++ em um fi cheiro separado que deve ser compilado em uma biblioteca compartilhada (.dll no Windows ou .so no Linux, por exemplo). O fi cheiro .java deve incluir uma declaração que corresponde à função nativa implementada na biblioteca nativa.
  • 67. FICHEIRO .C • Em geral, um fi cheiro .c para JNI deve incluir as seguintes seções: • Inclusão dos cabeçalhos do JNI: no início do fi cheiro, é necessário incluir os cabeçalhos do JNI correspondentes ao nível da versão do JNI utilizada, como jni.h e jni_md.h. Esses cabeçalhos de fi nem as estruturas e funções necessárias para interagir com o ambiente Java. • De fi nição de funções nativas: a implementação das funções nativas que serão chamadas a partir do Java deve ser de fi nida nessa seção. Essas funções devem seguir um padrão especí fi co, começando com a palavra-chave "JNIEXPORT" seguida pelo tipo de retorno e o nome da função.Além disso, é necessário incluir os argumentos especí fi cos do JNI, como o JNIEnv e o jobject. • Registro das funções nativas: depois que as funções nativas são de fi nidas, elas precisam ser registradas no ambiente Java usando a função RegisterNatives. Isso é feito em uma função chamada JNI_OnLoad, que é chamada automaticamente quando a biblioteca nativa é carregada pelo Java. • Implementação da função JNI_OnLoad: essa função é responsável por registrar as funções nativas de fi nidas anteriormente usando a função RegisterNatives.
  • 68. DEMO
  • 69. INSTRUÇÕES • Instalação de Software • 1.Instalar o GCC 64 no SO Windows • 2.Adicionar MinGW e JAVA_HOME (em princípio a JAVA_HOME já estará adicionada) às variáveis de ambiente do sistema • "At the bottom "SystemVariables" panel, look for aVariable named "Path" and double click on it. Some systems show a good UI for adding a New Path easily (by clicking New), else you just need to add ; at the end and add the following path" • Abra a consola e execute 1º: gcc e depois java. Se obtiver resposta então avance. • Programação (Tutorial) • 1. Criar todos os fi cheiros no diretório src. • 2. Escrever Programa em Java • C:ExerciciosISsrcexercicio6> javac -h . *.java • C:ExerciciosISsrcexercicio6> javac -h . C:ExerciciosISsrc *.java • Isto cria o haeder fi le em c • 3.Escrever o programa em C e incluir o header fi le com o nome correto • gcc -I "C:Program FilesJavajdk-17.0.2include" -I"C:Program FilesJavajdk-17.0.2includeincludewin32" -shared -o hello.dll HelloJNI.c • 4. Correr o programa • C:ExerciciosISsrc> java HelloJNI • Se não funcionar tente: • C:ExerciciosISsrc> java -D"java.library.path"="C:ExerciciosISsrc" HelloJNI
  • 71. SOAP • SOAP é uma sigla para Simple Object Access Protocol • É um protocolo que permite a comunicação entre sistemas distribuídos, utilizando mensagens no formato XML (Extensible Markup Language). • Um Web Service SOAP é um tipo de Web Service que utiliza o protocolo SOAP para troca de mensagens. • É composto por três partes principais: • Envelope, que contém informações sobre a mensagem, • Cabeçalho, que contém informações adicionais • Corpo, que contém o conteúdo da mensagem.
  • 72. SOAP - ARQUITECTURA • Componentes de uma mensagem SOAP • Envelope • Identi fi ca o documento XML como uma mensagem SOAP • Contém a mensagem SOAP e é usada para encapsular todos os detalhes na mensagem SOAP. • Header • Contém informações de cabeçalho • Pode conter informações como credenciais de autenticação ou a de fi nição de tipos complexos que podem ser usados ​​ na mensagem SOAP. • A mensagem SOAP pode conter parâmetros que podem ser de tipos simples, como strings e números, mas também podem ser de um tipo de objeto complexo.
  • 73. SOAP - ARQUITECTURA • Componentes de uma mensagem SOAP • Body contém informações de chamada e resposta • Contém os dados reais que precisam ser enviados entre o serviço da Web e o aplicativo de cliente. • Fault (Opcional) • Quando uma solicitação é feita a um serviço da Web SOAP, a resposta retornada pode ser sucesso ou erro. Quando um sucesso é gerado, a resposta do servidor sempre será uma mensagem SOAP. • O Fault é o código que designa o código do erro. <soap:Body> <GetPersonInfo> <Name>Joaquina</Name> <Address>Vila Real</Address> </GetPersonInfo> </soap:Body>
  • 74. SOAP -TIPO COMPLEXO • Suponha um tipo de dados estruturado que tenha uma combinação de um “Nome de uma pessoa” e uma “Morada”, então o tipo complexo fi cava: • <xsd:complexType> <xsd:sequence> <xsd:element name="Nome" type="string"/> <xsd:element name="Morada" type="string"/> </xsd:sequence> </xsd:complexType>
  • 75. SOAP - ESTRUTURA DA MENSAGEM • Exemplo de uma mensagem SOAP
  • 76. SOAP - RESUMO • SOAP é um protocolo usado para trocar dados entre aplicativos que são construídos em diferentes linguagens de programação . • SOAP é construído sobre a especi fi cação XML e funciona com o protocolo HTTP. O que o torna perfeito para uso em aplicativos da web. • Os blocos de construção SOAP consistem numa Mensagem SOAP. Cada mensagem SOAP consiste num elemento Envelope, um Header e um Body. • O elemento Envelope é o elemento obrigatório na mensagem SOAP e é usado para encapsular todos os dados na mensagem SOAP. • O elemento Header pode ser usado para conter informações como informações de autenticação ou a de fi nição de tipos de dados complexos. • O elemento Body é o elemento principal que contém a de fi nição dos métodos da web junto com qualquer informação de parâmetros
  • 77. WSDL (WEB SERVICES DESCRIPTION LANGUAGE) • WSDL é uma descrição em formato XML de um Web Service que utiliza SOAP / RPC como protocolo. • O conteúdo do WSDL descreve os métodos fornecidos pelo web service e como aceder a este • Através de um WSDL informa-se o cliente como cada serviço num end-point deve ser invocado: quais os parâmetros e o tipo de dados de cada parâmetro esperado, e qual o tipo de dado do retorno que será enviado como resposta.
  • 78. FERRAMENTAS E LABORATÓRIO • Ficha Prática Nº 7 • Ferramentas: • JDK 1.8 • Netbeans 8.x • Visual Studio 2019
  • 79. BPEL
  • 80. INTRO • Business Process Execution Language for Web Services (BPEL ou BPEL4WS) é uma linguagem usada para a de fi nição e execução de processos de negócios usando Web Services (WS). • Permite a realização top-down da Arquitetura Orientada a Serviços (SOA) por meio da composição, orquestração e coordenação de Web Services. • Fornece uma maneira relativamente fácil e direta de compor vários Web Services em novos serviços compostos chamados processos de negócios.
  • 81. ORQUESTRAÇÃOVS COREOGRAFIA • Combinar vários Web Services envolve, na verdade, a integração dos aplicativos subjacentes e suas funcionalidades. • Os Web Services podem ser combinados de duas maneiras: • Orquestração • Coreogra fi a • Na orquestração, que geralmente é usada em processos de negócios privados, um processo central (que pode ser outro serviço da Web) assume o controlo dos Web Services envolvidos e coordena a execução de diferentes operações nos Web Services envolvidos na operação. • Os Web Services envolvidos não "sabem" (e não precisam saber) que estão envolvidos num processo de composição e que fazem parte de um processo de negócios de nível superior. • Apenas o coordenador central da orquestração está ciente desse objetivo, então a orquestração é centralizada (Ver Figura 1)
  • 82. ORQUESTRAÇÃOVS COREOGRAFIA • A coreogra fi a, ao contrário, não conta com um coordenador central. • Em vez disso, cada serviço da Web envolvido na coreogra fi a sabe exatamente quando executar as suas operações e com quem interagir. • A coreogra fi a é um esforço colaborativo com foco na troca de mensagens em processos de negócios públicos. • Todos os participantes da coreogra fi a precisam estar cientes do processo de negócio, operações a serem executadas, mensagens a serem trocadas e o tempo das trocas de mensagens.
  • 83. ORQUESTRAÇÃOVS COREOGRAFIA • A orquestração é um paradigma mais fl exível e apresenta as seguintes vantagens sobre a coreogra fi a: • A coordenação dos processos de componentes é gerida centralmente por um coordenador conhecido. • Os Web Serivces podem ser incorporados sem que eles estejam cientes de que pertencem a um processo de negócios maior. • Cenários alternativos podem ser implementados caso ocorram falhas.
  • 84. CRIAR UM PROCESSO BPEL • Um processo BPEL especi fi ca a ordem exata na qual os WS participantes devem ser invocados, sequencialmente ou em paralelo. • É possível expressar comportamentos condicionais. • Por exemplo, uma chamada de um serviço da Web pode depender do valor de uma chamada anterior. • É possível construir loops, declarar variáveis, copiar e atribuir valores, de fi nir gestores de falhas, entre outros. • Ao combinar todas essas construções, é possível de fi nir processos de negócios complexos de maneira algorítmica. • Na verdade, como os processos de negócios são essencialmente grá fi cos de atividades, é muitas vezes útil expressá-los usando diagramas de atividades UML.
  • 85. CRIAR UM PROCESSO BPEL • Num cenário típico, o processo de negócios BPEL recebe um request. • Para cumpri-lo, o processo invoca os WS envolvidos e, em seguida, responde ao chamador original. • Como o processo BPEL comunica com outros WS, ele depende muito da descrição WSDL dos WS invocados pelo serviço da Web composto. • Por exemplo: • Um processo BPEL consiste em etapas; cada etapa é chamada de "atividade". O BPEL suporta atividades primitivas e de estrutura. • As atividades primitivas representam construções básicas e são usadas para tarefas comuns, como as seguintes: • Invoca outros serviços da Web - <invoke> • Aguarda que o cliente invoque o processo de negócios enviando uma mensagem - <receive>(recebendo uma solicitação) • Gera uma resposta para operações síncronas - <reply> • Manipula variáveis ​​ de dados - <assign> • Indica falhas e exceções - <throw>
  • 86. CRIAR UM PROCESSO BPEL • Espera por algum tempo - <wait> • Finaliza todo o processo - <terminate> • É possível combinar essas e outras atividades primitivas para de fi nir algoritmos complexos que especi fi cam exatamente as etapas dos processos de negócios. • Para combinar atividades primitivas, o BPEL suporta várias atividades de estrutura.As mais importantes são; • Sequence( <sequence>), permite de fi nir um conjunto de atividades que serão invocadas numa sequência ordenada • Flow( < fl ow>) para de fi nir um conjunto de atividades invocadas em paralelo • Case-switch construct( <switch>) para implementar branches • While ( <while>) para de fi nir loops • Selecionar um dos vários caminhos alternativos, usando <pick> • Cada processo BPEL também de fi ne links de parceiros, através <partnerLink>, e declara variáveis, usando <variable>.
  • 87. SERVIÇOS ASSÍNCRONOSVS SÍNCRONOS • Normalmente, usa-se serviços assíncronos para operações de longa duração e serviços síncronos para operações que retornam um resultado num tempo relativamente curto. • Ao usar-se WS assíncronos, o processo BPEL geralmente também é assíncrono.
  • 88. ESTRUTURA BÁSICA DE UM PROCESSO BPEL
  • 89. ESTRUTURA BÁSICA DE UM PROCESSO BPEL
  • 90. FERRAMENTAS E LABORATÓRIO • Ferramenta - Open ESB: • https://www.open-esb.net • 1º laboratório • Instalação e con fi guração: https://www.open-esb.net/index.php/openesb-resources- and-documentation/get-started • Laboratório: Start with Hello World • Laboratório. Create a calculator with OpenESB