• Nenhum resultado encontrado

Prática em Laboratório N.04 Criando uma aplicação composta a partir de um serviço Web

N/A
N/A
Protected

Academic year: 2021

Share "Prática em Laboratório N.04 Criando uma aplicação composta a partir de um serviço Web"

Copied!
23
0
0

Texto

(1)

Prática em Laboratório N.04

Criando uma aplicação composta a partir de um serviço Web

O objetivo deste exercício é fornecer uma introdução a criação de uma aplicação composta de modo a ilustrar o processo de construção, implantação, execução e teste da mesma. Para tanto irá se implementar uma aplicação simples de avaliação de pedidos de empréstimos.

Business Use Case

A aplicação de processamento de pedidos de empréstimos satisfaz a seguintes requisitos:

• O cliente solicita um empréstimo através do preenchimento de uma solicitação de empréstimo que inclui informações tais como dados de identificação pessoal, quantia requisitada e histórico de crédito. • Quanto a solicitação de empréstimo é recebida, as informações pessoais fornecidas pelo cliente são

verificadas em um banco de dados existente e o empréstimo é aprovado ou rejeitado com base nas informações e no montante solicitado.

• Depois que certas formalidades forem cumpridas, um relatório, sob a forma de uma carta de aprovação (no caso de aprovação), é gerado e enviado ao cliente, confirmando assim a aprovação de sua solicitação de empréstimo.

• Se a solicitação de empréstimo for rejeitada por alguma razão, um relatório contendo os motivos da não aprovação é gerado e exibido para o cliente.

Criando um serviço Web com Lógica de Processamento de Empréstimos

Criando um módulo EJB:

1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Selecione EJB Module na categoria Java EE e clique em Next.

(2)

2. No campo Project Name, digite

LoanProcessor

e clique em Next.

3. Na página Server and Settings, verifique se o servidor selecionado é GlassFish V2, e clique em Finish. A janela de Projetos agora contém um nodo correspondente ao projeto de um EJB Module chamado

LoanProcessor.

Criando um serviço Web:

1. Na janela de Projetos, clique com o botão direito do mouse no nó

LoanProcessor

e escolha New > Web Service.

2. Chame o serviço Web de

LoanProcessor

e digite

org.me.loanprocessor

no Pacote. 3. Deixe selecionado Create Web Service from Scratch (Criar serviço Web do início). 4. Clique em Finish.

O IDE cria o serviço Web e abre

LoanProcessor.java

no Editor.

5. Expanda o nodo Web Services.

6. Clique com o botão direito do mouse sobre o nodo

LoanProcessor

(que representa o serviço Web) e selecione Add Operation. O diálogo Add Operation será exibido.

7. No campo Name, digite

processApplicOperation

.

8. Na lista de parâmetros, adicione os sete parâmetros conforme descritos a seguir. Name Type socialSecurityNumber java.lang.String applicantName java.lang.String applicantAddress java.lang.String applicantEmailAddress java.lang.String applicantAge java.lang.Integer applicantGender java.lang.String annualSalary java.lang.Double amountRequested java.lang.Double

(3)

9. Clique em OK.

10. No editor de código, clique no botão Source para exibir o código do arquivo

LoanProcessor.java

(caso ele não esteja visível).

11. No Editor de código, substitua

//TODO write your implementation code here:

return

null;

pelo seguinte código:

int MINIMUM_AGE_LIMIT = 18; int MAXIMUM_AGE_LIMIT = 65; double MINIMUM_SALARY = 20000; int AVERAGE_LIFE_EXPECTANCY = 70;

String result = "Loan Application APPROVED.";

// Check age of applicant

// If less than min age limit, rejected if(applicantAge < MINIMUM_AGE_LIMIT) {

result = "Loan Application REJECTED - Reason: Under-aged " + applicantAge +

". Age needs to be over " + MINIMUM_AGE_LIMIT + " years to qualify."; System.out.println(result); return result; }

// Check age of applicant

// If more than max age limit, rejected if(applicantAge > MAXIMUM_AGE_LIMIT) {

result = "Loan Application REJECTED - Reason: Over-aged " + applicantAge +

(4)

". Age needs to be under " + MAXIMUM_AGE_LIMIT + " years to qualify."; System.out.println(result); return result; }

// Check annual salary

// If less than min salary, rejected if(annualSalary < MINIMUM_SALARY) {

result = "Loan Application REJECTED - Reason: Annual Salary $" + annualSalary +

" too low. Annual Salary needs to be over $" + MINIMUM_SALARY + " to qualify."; System.out.println(result); return result; }

// Calculate the years to pay off loan based on applicantAge int yearsToRepay = AVERAGE_LIFE_EXPECTANCY - applicantAge;

// Calculate the max amount of loan based on years to pay off loan double limit = annualSalary * yearsToRepay * 0.5;

// Check amount requested, if higher than limit, rejected if(amountRequested > limit) {

result = "Loan Application REJECTED - Reason: You are asking for too much $" + amountRequested + ". Annual Salary $" + annualSalary + ", Age " + applicantAge +

" years. Your limit is $" + limit; System.out.println(result); return result; } System.out.println(result); return result;

12. Salve suas alterações.

13. Compile (Clean and Build), implante (Deploy) e teste o serviço Web (selecione o nodo correspondente ao serviço Web e escolha Test Web Service).

Criando um Projeto para um Módulo BPEL

Agora iremos criar um projeto para conter um módulo BPEL chamado

LoanRequestor

. Para criar o projeto

LoanRequestor

:

1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Selecione BPEL Module na categoria SOA e clique em Next.

(5)

Criando um Esquema XML

Agora iremos adicionar um esquema XML ao projeto do módulo BPEL. Para criar o esquema

LoanRequestor.xsd

:

1. Expanda o nodo do projeto

LoanRequestor

, clique com o botão direito do mouse no nó

Process

Files

e escolha New > Other. O assitente New File será exibido.

2. Faça o seguinte:

a. Selecione a categoria XML e, em seguida, XML Schema. Clique em Next. b. No campo File Name, digite

LoanRequestor

.

c. Clique em Finish.

3. No editor, clique no botão de Design para abrir a visualização de Design do esquema XML.

Para adicionar tipos complexos ao esquema XML:

1. Na Paleta (a direita da janela de Design), expanda a seção XML Schema Components e selecione o ícone Complex Type. Se a Paleta não estiver visível, escolha Window > Palette a partir no menu principal.

2. Arreste sua seleção para a área de design sob o nodo Complex Types.

O IDE adicionará um nodo Complex Type e o nome do tipo complexo (newComplexType) estará selecionada e pronto para que você o altere.

3. Digite

processApplicType

como nome do novo nodo e pressione Enter.

(6)

Para adicionar elementos locais ao tipo

processApplicType

:

1. Na seção XML Components da Paleta, selecione o ícone Element e arraste sua seleção sobre o nodo

processApplicType

da área de design. O IDE adicionará um nodo correspondente ao elemento com nome newElement.

2. Se a janela de propriedade não estiver visível, escolha Window > Properties.

3. Utilize a janela Properties para modificar o nome do novo elemento para

socialSecurityNumber

. 4. Analogamente, modifique a propriedade Nillable para True.

5. Altere a propriedade Definition, selecionando o tipo string dentro do nodo Built-in Types e clique em OK.

6. Repita os passos de 1 a 5 para adicionar os seguintes elementos:

Name Nillable

Definition

applicantName

True

string

applicantAddress

True

string

applicantEmailAddress

True

string

applicantAge

True

int

applicantGender

True

string

annualSalary

True

double

amountRequested

True

double

Para adicionar um elemento local ao tipo

processApplicRespType

:

1. Na seção XML Components da Paleta, selecione o ícone Element e arraste sua seleção sobre o nodo

processApplicRespType

da área de design. O IDE adicionará um nodo correspondente ao elemento com nome newElement.

2. Utilize a janela Properties para modificar o nome do novo elemento para

return

.

3. Altere a propriedade Definition, selecionando o tipo string dentro do nodo Built-in Types e clique em OK.

(7)

Para adicionar elementos globais:

1. Na seção XML Components da Paleta, selecione o ícone Element e arraste sua seleção sobre o nodo

Elements

da área de design. O IDE adicionará um nodo correspondente ao elemento com nome newElement.

2. Utilize a janela Properties para modificar o nome do novo elemento para

processApplicElement

. 3. Altere a propriedade Definition, selecionando o tipo

processApplicType

dentro do nodo Complex

Types e clique em OK.

4. Repita os passos de 1 a 3 para adicionar um elemento global chamado

processApplicRespElement

e selecione

processApplicRespType

como para a definição do mesmo.

5. Salve suas modificações.

Criando um Documento WSDL

Agora iremos adicionar um documento WSDL ao projeto do módulo BPEL. Para criar o documento

LoanRequestor.wsdl

:

1. Expanda o nodo do projeto

LoanRequestor

, clique com o botão direito do mouse no nó

Process

Files

e escolha New > WSDL Document. O assitente de documentos WSDL será exibido.

2. No campo File Name, digite

LoanRequestor

e clique em Next. 3. Na área de Input da página de Abstract Configuration faça o seguinte:

a. Na coluna Message Part Name, altere o nome para

requestLoanMessage

e pressione Enter.

b.

Na coluna Element Or Type, clique no botão com reticências e modifique o elemento para

processApplicElement

. Localize e expanda By File > LoanRequestor > src/LoanRequestor.xsd > Elements e selecione

processApplicElement

. 4. Na área de Output da página de Abstract Configuration faça o seguinte:

(8)

b.

Na coluna Element Or Type, clique no botão com reticências e modifique o elemento para

processApplicRespElement

. Localize e expanda By File > LoanRequestor > src/LoanRequestor.xsd > Elements e selecione

processApplicRespElement

.

5.

Clique em Finish e salve suas modificações.

Criando um Processo BPEL

Agora iremos adicionar um processo BPEL ao projeto. Para criar o documento

LoanRequestor.bpel

:

1. Expanda o nodo do projeto

LoanRequestor

, se já existir um nodo chamado basta selecioná-lo com um duplo clique e seguir para o próximo tópico. Caso contrário, clique com o botão direito do mouse no nó

Process Files

e escolha New > BPEL Process. O assitente New BPEL Process será exibido.

(9)

2. No campo File Name, digite

LoanRequestor

. Clique em Finish.

Para adicionar Partner Links:

1. Selecione o nodo

LoanRequestor.wsdl

. Arraste sua seleção (

LoanRequestor.wsdl

) para o lado esquerdo da área de design (região da margem esquerda). O IDE irá lhe fornecer dicas visuais de modo a orientá-lo onde é possível colocar (drop) sua seleção.

2. Use o Editor de Propriedades para alterar o nome para

BpelImplementation

(para ativar o editor, selecione o ícone com forma de lápis sobre a representação gráfica do Partner Link recém criado). 3. Aceite os demais valores default e clique em OK.

4. Na janela de Projetos, expanda o nodo do projeto de módulo EJB

LoanProcessor

e selecione o nodo correspondente ao serviço Web

LoanProcessor

.

5. Arraste sua seleção (

LoanProcessor

) para o lado direito da área de design (região da margem direita). O IDE irá lhe fornecer dicas visuais de modo a orientá-lo onde é possível colocar (drop) sua seleção. Em seguida o diálogo Create New Partner Link será exibido.

(10)

Para adicionar uma atividade Receive:

1. Na seção Web Service da Paleta, selecione o ícone Receive e arraste sua seleção para a área de design entre as atividades Process Start e Process End. O IDE adicionará um nodo correspondente a atividade com nome Receive1.

2. Clique no botão de edição para atividade recém inserida.

3. Altere o nome para

ReceiveFromCustomer

, selecione

BpelImplementation

na lista de Partner Links. O IDE automaticamente preenche o campo Operation com

LoanRequestorOperation

. 4. Clique no botão Create próximo ao campo Input Variable. O diálogo New Input Variable é exibido,

aceite os valores default e clique em OK.

5. Dessa forma será criada uma nova variável de entrada chamada

LoanRequestorOperationIn

.

(11)

A atividade Receive é agora rotulada como

ReceiveFromCustomer

e a conexão entre a atividade Receive e o Partner Link

BpelImplementation

é exibida.

Para adicionar uma atividade Invoke:

1. Na seção Web Service da Paleta, selecione o ícone Invoke e arraste sua seleção para a área de design logo abaixo da atividade

ReceiveFromCustomer

. O IDE adicionará um nodo correspondente a atividade com nome Invoke1.

2. Clique no botão de edição para atividade recém inserida.

3. Altere o nome para

InvokeLoanProcessorEJB

, selecione

EjbImplementation

na lista de Partner Links. O IDE automaticamente preenche o campo Operation com

processApplicOperation

. 4. Clique no botão Create próximo ao campo Input Variable. O diálogo New Input Variable é exibido,

aceite os valores default e clique em OK.

5. Dessa forma será criada uma nova variável de entrada chamada

ProcessApplicOperationIn

. 6. Clique no botão Create próximo ao campo Output Variable. O diálogo New Output Variable é exibido,

aceite os valores default e clique em OK.

(12)

8. Clique em OK para fechar o editor.

A atividade Invoke é agora rotulada como

InvokeLoanProcessorEJB

e a conexão entre a atividade Invoke e o Partner Link

EjbImplementation

é exibida.

Para adicionar uma atividade Reply:

1. Na seção Web Service da Paleta, selecione o ícone Reply e arraste sua seleção para a área de design logo abaixo da atividade

InvokeLoanProcessorEJB

. O IDE adicionará um nodo correspondente a atividade com nome Reply1.

2. Clique no botão de edição para atividade recém inserida.

3. Altere o nome para

ReplyToCustomer

, selecione

BpelImplementation

na lista de Partner Links. O IDE automaticamente preenche o campo Operation com

LoanRequestorOperation

.

4. Certifique-se que Normal Response está selecionado.

5. Clique no botão Create próximo ao campo Output Variable. O diálogo New Output Variable é exibido, aceite os valores default e clique em OK.

(13)

6. Dessa forma será criada uma nova variável de saída chamada

LoanRequestorOperationOut

.

7. Clique em OK para fechar o editor.

A atividade Reply é agora rotulada como

ReplyToCustomer

e a conexão entre a atividade Reply e o Partner Link

BpelImplementation

é exibida.

Para adicionar a atividade de Assign

CopyCustomerInfo

:

1. Na seção Basic Activities da Paleta, selecione o ícone Assign e arraste sua seleção para a área de design entre as atividades

ReceiveFromCustomer

e

InvokeLoanProcessorEJB

. O IDE adicionará um nodo correspondente a atividade com nome Assign1.

2. Use a janela de propriedades para alterar o nome da atividade para

CopyCustomerInfo

. Se a janela de propriedade não estiver visível, escolha Windows > Properties.

(14)

4. No lado esquerdo da janela do BPEL Mapper, expanda os nodos Variables > LoanRequestorOperationIn > requestLoanMessage. Será, então, exibido um nodo para cada elemento local do tipo complexo

processApplicType

criado anteriormente no esquema.

5. No lado direito da janela do BPEL Mapper, expanda os nodos Variables > ProcessApplicOperationIn > parameters. Será, então, exibido um nodo para cada elemento.

6. Arraste o nodo correspondente ao

socialSecurityNumber

do lado esquerdo (fonte) para o nodo de mesmo nome do lado direito (destino).

7. Repita o passo anterior para cada um dos demais elementos:

applicantName

,

applicantAddress

,

applicantEmailAddress

,

applicantAge

,

applicantGender

,

annualSalary

e

amounRequested

.

(15)

Para adicionar a atividade de Assign

CopyLoanStatus

:

1. No editor de BPEL, selecione o botão de Design para retornar a modo de design.

2. Na seção Basic Activities da Paleta, selecione o ícone Assign e arraste sua seleção para a área de design entre as atividades

InvokeLoanProcessorEJB

e

ReplyToCustomer

. O IDE adicionará um nodo correspondente a atividade com nome Assign1.

3. Use a janela de propriedades para alterar o nome da atividade para

CopyLoanStatus

. Se a janela de propriedade não estiver visível, escolha Windows > Properties.

4. No editor, selecione o botão Mapper para abrir a janela do BPEL Mapper.

5. No lado esquerdo da janela do BPEL Mapper, expanda os nodos Variables > ProcessApplicOperationOut > parameters. Será, então, exibido um nodo

return

.

6. No lado direito da janela do BPEL Mapper, expanda os nodos Variables > LoanRequestorOperationOut > responsePart. Será, então, exibido um nodo

return

.

7. Arraste o nodo correspondente ao

return

do lado esquerdo (fonte) para o nodo de mesmo nome do lado direito (destino).

8. Salve suas modificações e compile seu projeto de módulo BPEL (selecione o nodo

LoanRequestor

com o botão direito e clique Clean and Build).

(16)

Criando um Projeto de Aplicação Composta

Antes de implantar um projeto de módulo BPEL, devemos criar uma aplicação composta. Para criar um projeto de aplicação composta:

1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Selecione Composite Application na categoria SOA e clique em Next.

2. No campo Project Name, digite

LoanRequestorCompositeApp

e clique em Finish.

Usando Editor CASA (Composite Application Service Assembly)

Agora iremos utiliza o editor CASA para modificar a configuração do projeto e construir/implantar o projeto de módulo BPEL.

1. Selecione o nodo correspondente ao projeto

LoanRequestor

e arraste sua seleção para a área de módulos JBI.

(17)

2. Clique no botão Build Project na barra de ferramentas do editor para construir o projeto de módulo BPEL

LoanRequestor

. Quando este passo se concluir:

a. A janela de saída deverá conter uma mensagem indicando sucesso – BUILD SUCCESSFUL. b. O editor irá exibir a seguinte configuração.

Para criar WSDL Endpoints:

1. Na seção WSDL Bindings da Paleta, selecione o ícone SOAP e arraste sua seleção para a área de WSDL Ports (lado esquerdo do editor).

2. Use a janela de propriedades para alterar o nome do Endpoint

LoanProcessorPort

. Se a janela de propriedade não estiver visível, escolha Windows > Properties.

3. Arraste o ícone de Consume Endpoint

EjbImplementation

em

LoanRequestor

para o Provide Endpoint em

LoanProcessorPort.

4. Use o Editor de Propriedades para alterar a propriedade Location (SOAP Address) do Endpoint

LoanProcessorPort

para http://localhost:8080/LoanProcessorService/LoanProcessor (para ativar o editor, selecione o ícone com forma de lápis junto a representação gráfica do Endpoint recém criado).

(18)

5. Na seção WSDL Bindings da Paleta, selecione novamente o ícone SOAP e arraste sua seleção para a área de WSDL Ports (lado esquerdo do editor).

6. Use a janela de propriedades para alterar o nome do Endpoint

LoanRequestPort

. 7. Arraste o ícone de Consume Endpoint

LoanRequestPort

para o Provide Endpoint

BpelImplementation

em

LoanRequestor.

8. Salve as alterações em seu projeto

.

Implantando e Testando uma Aplicação Composta

Para implantar um projeto de aplicação composta:

1. Selecione com o botão direito do mouse o nodo

LoanRequestorCompositeApp

e clique em Deploy.

2. Verifique se a aplicação composta foi implantada corretamente. Vá a janela Services e expanda o nó Servers > Glassfish v2.1 > JBI > Service Assemblies. Verifique também se o módulo EJB ainda se encontra implantado. Vá a janela Services e expanda o nó Servers > Glassfish v2.1 > Applications > EJB Modules. Caso seja necessário repita o procedimento de implantação tanto da aplicação composta quanto do módulo EJB.

(19)

Para adicionar um caso de teste para uma requisição aprovada:

1. Expanda o nodo

LoanRequestorCompositeApp

e clique com o botão direito do mouse no nodo Test, selecione New Test Case no menu popup.

2. No campo Test Case Name, digite

ApprovedTestCase

e clique em Next.

3. Na página Select WSDL Document, expanda o nodo

LoanRequestorCompositeApp – Process

Files

, selecione

LoanRequestorCompositeApp.wsdl

e clique em Next.

4. Na página Select Operation to Test, selecione

LoanRequestorOperation

e clique em Finish.

O IDE irá adicionar um novo nodo sob o nodo Test chamado

ApprovedTestCase

. Esse nodo possui dois subnodos: Input e Output.

(20)

5. Altere o arquivo Input.xml, para os seguintes valores:

<loan:socialSecurityNumber>111-11-1111</loan:socialSecurityNumber> <loan:applicantName>Joao da Silva</loan:applicantName>

<loan:applicantAddress>Rua das Flores, 234</loan:applicantAddress>

<loan:applicantEmailAddress>jsilva@gmail.com</loan:applicantEmailAddress> <loan:applicantAge>36</loan:applicantAge>

<loan:applicantGender>male</loan:applicantGender> <loan:annualSalary>100000</loan:annualSalary>

<loan:amountRequested>1000000</loan:amountRequested> 6. Feche o arquivo Input.xml e salve todas suas alterações.

Para adicionar um caso de teste para uma requisição rejeitada:

1. Expanda o nodo

LoanRequestorCompositeApp

e clique com o botão direito do mouse no nodo Test, selecione New Test Case no menu popup.

2. No campo Test Case Name, digite

RejectedTestCase

e clique em Next.

3. Na página Select WSDL Document, expanda o nodo

LoanRequestorCompositeApp – Process

Files

, selecione

LoanRequestorCompositeApp.wsdl

e clique em Next.

(21)

O IDE irá adicionar um novo nodo sob o nodo Test chamado

ApprovedTestCase

. Esse nodo possui dois subnodos: Input e Output.

5. Altere o arquivo Input.xml, para os seguintes valores:

<loan:socialSecurityNumber>222-22-2222</loan:socialSecurityNumber> <loan:applicantName>Maria da Silva</loan:applicantName>

<loan:applicantAddress>Rua Chapeco, 456</loa <loan:applicantEmailAddress> n:applicantAddress> msilva@gmail.com</loan:applicantEmailAddress> <loan:applicantAge>15</loan:applicantAge> <loan:applicantGender>female</loan:applicantGender> <loan:annualSalary>100000</loan:annualSalary> <loan:amountRequested>1000000</loan:amountRequested> 6. Feche o arquivo Input.xml e salve todas suas alterações.

Para preencher o caso de teste

ApprovedTestCase

com informação para validação:

1. Faça um duplo clique em Output.xml no nodo

ApprovedTestCase

, para examinar o conteúdo desse arquivo. Veja que ele está inicialmente vazio.

(22)

2. Clique com o botão direito do mouse no nodo

ApprovedTestCase

, e selecione Run. Essa será uma execução especial (pois Output.xml está vazio) e o diálogo Overwrite Empty Output será exibido.

3. Clique em Yes.

(23)

Para executar um caso de teste:

1. Clique com o botão direito do mouse no nodo

ApprovedTestCase

, e selecione Run. O conteúdo de Output.xml agora será preservado e utilizado para comparação.

2. Execute procedimento análogo para preencher Output.xml do nodo

RejectedTestCase

. Realize em seguida teste para verificar se tudo funciona corretamente (isto é, se o pedido é realmente rejeitado). 3. Salve todas as suas alterações.

Referências

Documentos relacionados

A tem á tica dos jornais mudou com o progresso social e é cada vez maior a variação de assuntos con- sumidos pelo homem, o que conduz também à especialização dos jor- nais,

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

 Rendimentos de trabalho por conta própria, os quais são os auferidos no exercício, de forma independente, de profissão em que predomine o carácter

Apresenta-se neste trabalho uma sinopse das espécies de Bromeliaceae da região do curso médio do rio Toropi (Rio Grande do Sul, Brasil), sendo também fornecida uma chave

esta espécie foi encontrada em borda de mata ciliar, savana graminosa, savana parque e área de transição mata ciliar e savana.. Observações: Esta espécie ocorre

Dessa forma, os níveis de pressão sonora equivalente dos gabinetes dos professores, para o período diurno, para a condição de medição – portas e janelas abertas e equipamentos

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Analysis of relief and toponymy of the landscape based on the interpretation of the military topographic survey: Altimetry, Hypsometry, Hydrography, Slopes, Solar orientation,