Você está na página 1de 71

APX

SESSÃO II
ÍNDICE
01 Introdução Arquitetura Online
1.1 Revisão dos principais componentes
1.2 Transações
1.3 Bibliotecas
1.4 Conexões com BD
1.5 Desenvolvimento de documentos

02 Exemplos OnLine
2.1 Objeto de transferência de dados (DTO ́s)
2.2 Criando transações
2.3 Criação de bibliotecas lógicas de negócios de
aplicativos
2.4 Usando utilitários de log
2.5 Conexão de transação --> Library
2.6 Criar biblioteca JPA
2.7 Conexão de biblioteca --> Library
Introdução Arquitetura Online
01
REVISÃO DOS PRINCIPAIS COMPONENTES
Componentes Online:

➔ Unidade Funcional: Corresponde ao componente mínimo de implantação em


PaaS.

➔ APX Backend Service: Expõe a interface RestFul da API que representa.

➔ Transação APX: Uma transação é aunidade de aplicação a ser executada no


APX Online. Define a Unidade Transacional no nível da lógica do aplicativo.

➔ Biblioteca APX: Encapsula lógica de negócios e acesso a dados. Publica sua


interface para ser utilizada por terceiros.

➔ DTO: Representação na forma de Bean de uma Entidade Empresarial.

TREINAMENTO APX | 5
01
REVISÃO DOS PRINCIPAIS COMPONENTES
Online:
O Aplicativo possui utilitários de Arquitetura que facilitam o acesso a fontes de
dados.

Estratégia de Desenvolvimento: Todo o acesso aos dados deve ser


encapsulado em uma biblioteca para facilitar sua reutilização e controle de
acesso.
TREINAMENTO APX | 6
REVISÃO DOS PRINCIPAIS COMPONENTES
Utilitários de arquitetura on-line APX :

A Arquitetura Online APX possui uma série de utilidades, tais como:


– Utilitários expostos por bibliotecas "especiais": São bibliotecas cuja utilidade pode ser recuperada
pelo usuário a partir dessa biblioteca. Essas bibliotecas serão vistas na seção "Criação de
bibliotecas"
– Bibliotecas de bancos de dados relacionais
– Bibliotecas APP
– Bibliotecas Mecanismo de regras
– Bibliotecas MongoDB
– Bibliotecas de Conectores
» Interbackend
» Gerenciador de Documentos
» Gerador de Documentos
»…

– Utilitários comuns a todas as bibliotecas: Esses utilitários podem ser usados de qualquer
biblioteca, seja qual for o tipo que sejam. Esses utilitários serão vistos na seção "utilitários
comuns":
– Erros e avisos
– Informações de recuperação/saída

TREINAMENTO APX | 7
Criação da Serv. Back-end
01
CRIAÇÃO DA SERV. BACK-END
MENU PRINCIPAL

A criação de um Serviço de Backend dentro da Arquitetura Online do APX é feita


através das opções:

8
TREINAMENTO APX | 10
A implementação do serviço de Backend é gerada automaticamente a partir dos
editores das transações que ele utiliza, associando cada operação em uma
entidade em cada uma delas. Portanto, essa classe não deve ser modificada
diretamente.

TREINAMENTO APX | 11
Criação de DTO
CRIANDO UM DTO DO MENU PRINCIPAL

Um DTO é a representação Java de uma Entidade Comercial. Ele pode ser criado com o
Próximas opções:

Antes de criar um DTO, é necessário validar


se ele já está disponível no nível do Modelo
de Dados Canônicos (QMCD).

10
TREINAMENTO APX | 10
Criação de Transações
CRIANDO TRANSAÇÕES MENU PRINCIPAL

Possíveis maneiras de criar uma transação através de diferentes opções de


menu.

Acabamento em lata

12
TREINAMENTO APX | 12
01
CRIAÇÃO DE TRANSAÇÕES
ASSISTENTE DE CRIAÇÃO (E IV)

O Nova transação de back-end

O "T" deve ser mantido para


cumprir a nomenclatura
01
CRIAÇÃO DE TRANSAÇÕES
ASSISTENTE DE CRIAÇÃO (E IV)

Todos os campos são obrigatórios e têm suas


restrições correspondentes.
– Código do aplicativo: deve ter 4 caracteres.
– Nome da transação: deve ter 4
caracteres (começando com "T" e três números)
– Versão: deve conter dois personagens
Numérico.
– País: Deve ter 2 caracteres.
– Descrição: deve ser especificada e deve ter um
sentido funcional

A tag Nome da transação nos informa o nome


que a classe que implementa a transação terá.

O pacote indica o nome do pacote Java no qual


essa classe deve ser colocada.

Ambas as tags são geradas automaticamente à


medida que você preenche os campos de texto.

Se o transação FORMAÇÃO | 14
01
CRIAÇÃO DE TRANSAÇÕES
ASSISTENTE DE CRIAÇÃO (E IV)

O assistente permite criar campos de


entrada e saída, simples ou compostos
para transações. Para isso é necessário
indicar, obrigatoriamente:
Com o protocolo QP05, o aninhamento

-Nome
- Tipo (String, Long e Int)
- Tamanho (valor diferente de 0)
- Obrigatório (Opcional ou obrigatório)

múltiplo é permitido
. A partir do ASO, o protocolo de
comunicação será sempre
QP05, então isso é
transparente para o
desenvolvedor
01
CRIAÇÃO DE TRANSAÇÕES
ASSISTENTE DE CRIAÇÃO (E IV)

15
TREINAMENTO APX | 15
01
CRIAÇÃO DE TRANSAÇÕES
ASSISTENTE DE CRIAÇÃO (E IV)

Quando a transação é consumida de um


serviço de Back-end, um identificador
descritivo da operação a ser implementada
deve ser indicado.

O assistente permite que você defina em


detalhes todas as opções para a exposição
Restful da transação (verbo http, campos de
entrada e saída, códigos http, parâmetros de
consulta...)
01
CRIAÇÃO DE TRANSAÇÕES
ASSISTENTE DE CRIAÇÃO (E IV)

16
TREINAMENTO APX | 16
01
CRIAÇÃO DE TRANSAÇÕES
ASSISTENTE DE CRIAÇÃO (E IV)

Ao final do assistente, um projeto Java Maven é construído com todas as dependências necessárias para o
desenvolvimento da transação desde o seu início. Por outro lado, o arquivo Java gerado pelo assistente que
define a transação é aberto para edição.

Arquivo Editar Fonte Refatorar Navegar Pesquisar Projeto Elara ClearCase Serena Executar CVS Janela Ajuda

$0Q G O $ 13 • IB TI E $ Debug
Sim - c<Elara
H Package Explorer 23
J) UUAATO01OIESTransactionjava23
0 UUAATO0101-PT Pacote com.BBVA.UUAA ;
3 src/main/java
E com.bbva.uuaa
J AbstractUUAATOlOl EST ransaction.java
J UUAAT00101ESTransaction.java
63 src/main/recursos

* Implementação de lógica de
negócio.
* Gautor XE23423
01
CRIAÇÃO DE TRANSAÇÕES
ASSISTENTE DE CRIAÇÃO (E IV)

META-INF
• MANIFESTO. MF
multilíngüe-ES. Propriedades
Classe Pública UUAATO0101ESTransaction estende AbstractUUAATOO1O1ESTransaction {
sql-UUAAT001-01-PT.properties
UUAAT001-01-PT.xml
©Substituir public void
execute() { // ALL
09 src/teste/java
H com.bbva.uuaa
J UUAATOOlOlESTransactionTest.java
CH src/teste/recursos
& META-INF

£ UUAATOOlOlESTest.xml common-env.properties
Iog4j. Propriedades
UUAA.propriedades

=h Biblioteca do Sistema JRE jdkl.7.0_11] Dependências do Maven

M pom.xml

17
TREINAMENTO APX | 17
01
CRIAÇÃO DE TRANSAÇÕES
ESTRUTURA DO PROJETO GERADO: ESQUELETO
até 3 UUAAT00101-PT

± Gerenciador de Pacotes
23
J [ src/main/java
src\main\java.- Contém o código-fonte da lógica do
J th com.bbva.uuaa aplicativo. O assistente gera o pacote de arquitetura
| J | Abstrato ctU UAAT00101 EST ransaction.j ava padrão contendo:
| J | UUAAT00101 EST correu saetí em. ..java - a classe Java que implementa a transação
- A classe abstrata da qual ele herda.
J 0 src/main/recursos

J & META-INF
src\main\resources.- Contém os recursos e pastas
E MANIFESTO. MF gerados para uso:
E multilanguage-PT.properties - O arquivo de manifesto
O sqI-UUAAT001 -01 -ES. Propriedades
- o arquivo XML de parametrização da transação
- O arquivo de configuração multilíngue
x UUAAT001-01-PT.xml
J [ src/teste/java src\test\java.- Contém os pacotes que definem as
J th com.bbva.uuaa classes usadas para os testes de unidade da transação,
J UUAAT00101 EST ransactionTest .java Jsrc/test/resources
por padrão, uma vez que o assistente é executado, há o
pacote padrão que contém um único teste definido que
j & M ETA-INF j & primavera
será usado para fazer os testes de unidade da transação.
x UUAATO0101ESTestxmI
E common-env.properties src\test\resources.- Contém os recursos e pastas
E Iog4j.propriedades necessários para a execução de testes de unidade.
E UUAA. Vantagens
A pasta de destino armazenará o JAR da transação
- =Biblioteca do Sistema JRE [jdId.7.G_ll] sempre que a transação for compilada.
Dependências D Bi Maven

- 0 sre

M pom.xml

18
TREINAMENTO APX | 18
CRIANDO TRANSAÇÕES
ESTRUTURA DO PROJETO GERADO: TESTES JUNIT
(I)

Testes unitários (JUnit) são


definidos em o .class
UUAAT00101ESTransactionTest,
onde:

- UUAA.- Identifica o código do


aplicação
- T001.- Identificar o restante do
Código de transação
- 01.- É a versão da transação
que queremos executar
- ES.- Identifica o país da transação
- TransactionTest.- É um sufixo
indicando que se trata de um teste

Por padrão, será criado um teste que


iniciará a transação sem nenhum parâmetro
de entrada.

19
TREINAMENTO APX | 19
Criação de
Bibliotecas
01
CRIAÇÃO DE BIBLIOTECAS
MENU PRINCIPAL

Possíveis maneiras de criar uma biblioteca através de diferentes opções


menu.
de

21
TREINAMENTO APX | 21
01
CRIAÇÃO DE BIBLIOTECAS
ASSISTENTE DE CRIAÇÃO

O "R" deve ser mantido


de acordo com a
Todos os campos são obrigatórios e têm suas restrições nomenclatura
correspondentes.
– Código do aplicativo: deve ter 4 caracteres.
– Nome da biblioteca: deve ter 4 caracteres (começando com
"R" e três números)
– Versão: recomendado com o formato X.Y.Z
– Arquitetura: Online (para Jobs: Batch)
– Tipo: vários (ou nenhum) podem ser selecionados

O Nome do rótulo da biblioteca nos diz o nome que a


classe que implementa a biblioteca terá.

Esse rótulo é gerado automaticamente à medida que


você preenche os campos de texto.
22
TREINAMENTO APX | 22
CRIAÇÃO DE
BIBLIOTECAS
GENÉRICO O OBJETIVO DE uma BIBLIOTECA É QUE O DESENVOLVEDOR POSSA CODIFICAR O
Lógica de aplicação da sua transação, sem necessidade dela
acesso aos dados, nem utilidade fornecida pela arquitetura.
• Explorador de Projetos 23
► •BUUAARO00-0.0.0 O esqueleto básico de uma biblioteca é
v > UUAAROOOIM PL-0.0.0
V 2src/main/java composto por um projeto que contém a
interface que será usada a partir das
T
H com.bbva.uuaa.lib.r000.impl
► EA UUAAROOOAbstract.java
► • UUAAROOOImpljava
V Esrc/main/recursos
transações ou bibliotecas que a invocam,
v® META-INF e a parte da implementação onde toda a
7&primavera lógica de negócios das bibliotecas estará
IX UUAARO00-app-osgi.xml
Ix UUAAR000-app.xml
localizada. Os arquivos que compõem a
Ix UUAARO00-arc-osgi.xml
Ix UUAAR000-arco.xml
biblioteca são os seguintes:
E multilíngüe-ES. Propriedades UUAAR000Abstract: a classe abstrata
• Esrc/teste/java
• Esrc/test/reso urces onde os serviços usados pela
• =h J RE Biblioteca do Sistema
[jdk1.8.0_1 01] biblioteca são definidos. Ele não
• =h Dependências do Maven
► Src precisa ser modificado pelo
► Destino do &
aplicativo. TREINAMENTO APX |
23
Criando conexões com o banco
de dados
01
CAMADA DE ACESSO A DADOS DESACOPLADA

APX
CAMADA DE ACESSO
Conectores A DADOS
DESACOPLADA
XA Driver

✓ Acesso a dados via JDBC ou JPA

✓ A Arquitetura é responsável
por gerenciar a execução da
confirmação/reversão
ORÁCULO

REPLICAÇÃO

ETL

RÉPLICA
01
CRIAÇÃO DE BIBLIOTECAS
ASSISTENTE DE CRIAÇÃO: BIBLIOTECA JPA

Vários nomes lógicos podem ser definidos, cada um associado a


um
35
banco de dados diferente Íon APX | 26
01
CRIAÇÃO DE BIBLIOTECAS
ASSISTENTE DE CRIAÇÃO: BIBLIOTECA JPA (II)

O objetivo dessa biblioteca é que o desenvolvedor possa


um UUAAR001-0.0.0
um C9 src/main/java

um E acessar e manipular relacionamentos de banco de dados por


meio da API de persistência JPA
com.bbva.uu
aa.lib.r001 Se a opção JPA for selecionada, será necessário especificar um
D 3 UUAAROOl.java nome para o recurso de acesso lógico ao banco de dados
G3 src/main/recursos (explicado posteriormente)
( src/teste/java
0 src/teste/recursos
D=JRE Biblioteca do Sistema (jdld.7.0_ll]
• @ src Depois disso, o esqueleto da imagem será gerado. Cada um
M pom.xml dos pontos será explicado nas seções a seguir.
a • UUAAROO1IMPL-0.0.0
J [3 src/main/java

E com.bbva.uuaa.lib.rOOl.domain

a E com.bbva.uuaa.lib.rOOl.impI Vale destacar a criação de:


D J UUAAR001 Resumo.java • A pasta "Domínio" para lógica de negócios
D 3 UUAAROO1Impl.java • O arquivo "persistence.xml"
A 3 src/main/resources
a G META-INF d & primavera
• A classe "JpaUtilsFactory" para testes JUnit
x UUAAR001-app-osgi.xml
x UUAAR001-aplicativo.xml
x UUAAR001-arc-osgi.xml
x UUAAR001-arc.xml
4
persistência.xml
j (9 src/teste/java

um E
com.bbva.uu 27
TREINAMENTO APX | 27

aa.lib.r001
01
CRIAÇÃO DE BIBLIOTECAS
ASSISTENTE DE CRIAÇÃO: BIBLIOTECA JPA (III)

Para usar o utilitário APX Online em relação ao JPA, da classe de lógica de negócios:

this.jpaUtils.get("db1").createNamedQuery(query)this.jpaUtils.get("db1").XXX()

• O nome do recurso lógico no qual você deseja executar a consulta será recuperado

28
• Cada nome de um recurso lógico representará uma conexão com um banco de dados diferente

• Para bibliotecas do tipo JPA, um pacote chamado "domain" será criado em


TREINAMENTO APX | 37
01
CRIAÇÃO DE BIBLIOTECAS
ASSISTENTE DE CRIAÇÃO: BIBLIOTECA JPA (III)

/src/main/java.

• Este pacote deve incluir todas as classes de recursos JPA geradas

29
• Para bibliotecas JPA, um arquivo de persistência chamado "persistência.xml será
criado em /src/main/resources"

• Esse arquivo deve incluir todos os nomes das entidades JPA usadas na
TREINAMENTO APX | 38
01
CRIAÇÃO DE BIBLIOTECAS
ASSISTENTE DE CRIAÇÃO: BIBLIOTECA JPA (III)

biblioteca para acessar o banco de dados


• O nome da unidade de persistência não deve ser alterado

30

TREINAMENTO APX | 39
01
CRIAÇÃO DE BIBLIOTECAS
ASSISTENTE DE CRIAÇÃO: BIBLIOTECA JPA( E VI)

privado longo perf ormJpaQuery () {


final UUAAR002 uuaar002 = isso. getServiceLibrary (UUAAR002 . classe) ;
final Descrição da cadeia de caracteres = uuaar002 . executar () ;
LOGGER, debug ("Descrição encontrada no banco de dados: \"{}\"", descrição); retornar description.length(};
}

J*UUAARO02Impl.java pacote 23° com.bbva.uuaa.lib.r002.impl; -

+ Importar organização. SLF4J . Madeireiro:

classe pública UUAARO02Impl estende UUAAROO2Abstract {

final estático privado Logger LOGGER = LoggerFactory-getLogger(UUAAR002 .class) ;

■ • Substituir
— public String execute() {
MADEIREIRO.debug("Procurando descrição para o idioma 'es'"); final EntityClass entityClass = novo EntityClass();
entityClass.setLanguageCode("en");
entidade final EntityClass = isso.JPAÜTILS.get("unidade de persistência").find(EntityClass.classe, entidadeClasse); retornar entity.getLanguageDescription();
}}

3 *UUAAR002Impl.java 4 persistência.xml 23
http://java . Sol. com/xml/ns/persistence" xmlns : xsi="http://vvv. w3. org/200L/XMLSchema -instância"
9 versão de persistência="2.0" • xmlns="

xsi : schemaLocation="http://java . Sol. com/xml/ns/persistência http://java. Sol. coto./xml/ns /pers istence/pers istence_2_C

<persistence-unit name= "persistence-unit. UUAAR002-0.0.0 " transaction-type="JTA">


<class>com. BBVA. UUAA. lib. R002 . domínio. EntityClass</ classe
</unidade de persistência>
</persistência>
1
31
TREINAMENTO APX | 31
DESENVOLVIMENTO DE DOCUMENTOS

TREINAMENTO APX | 41
Exemplos OnLine
05
OBJETO DE TRANSFERÊNCIA DE DADOS (DTO ́S)

P Desenvolva o DTO, TipoBienDTO, com as propriedades:


■ código longo

■ Nome da cadeia de caracteres

■ Especialidade Longa

■ Cadeia de caracteres de nível de serviço

■ Data da cordaHigh

■ Data da cadeia de caracteresModificar

TREINAMENTO APX | 43
02
CRIANDO TRANSAÇÕES

P Desenvolver transações:
- MAPPT001
- MAPPT002
Exibir arquivos: Transaccion_MAPPT001-01-MX.xlsx e Transaccion_MAPPT002-01-
MX.xlsx

TREINAMENTO APX | 44
CRIAÇÃO DE BIBLIOTECAS LÓGICAS DE NEGÓCIOS DE
APLICATIVOS
) Desenvolver bibliotecas:
- MAPPR001, e implementar o método de registro e consulta das informações dos tipos de
bem.
- MAPPR002, e implementar o método de registro e consulta de informações no banco de
dados.
Exibir arquivos: MAPPR001*.java e MAPPR002*.java

TREINAMENTO APX | 45
CRIAÇÃO DE BIBLIOTECAS
COMPONENTES DA BIBLIOTECA: PROJETOS

• Para todos os tipos de bibliotecas, serão gerados dois projetos:


• Projeto com a interface do serviço a ser publicado
• Projeto com a implantação do serviço a ser publicado

• Os nomes dessas bibliotecas serão:


• UUAARXXX-X. Y.Z --> Nome da biblioteca de interfaces, com:
• UUAARXXXIMPL-X. Y.Z --> Nome da biblioteca de implementação, com:
• UUAA: UUAA da livraria
• R: Adicionado por padrão para indicar que é "rotina"
• X.Y.Z: Versão da biblioteca
• IMPL: Adicionado por padrão para indicar que é a implementação

• Ambas as bibliotecas terão que ser implantadas para a execução adequada

37
TREINAMENTO APX | 37
01
CRIAÇÃO DE BIBLIOTECAS
COMPONENTES DA BIBLIOTECA: BIBLIOTECA DE INTERFACE

• Para qualquer tipo de biblioteca, o projeto de interface terá apenas duas


seções importantes:

• Arquivo de definição de serviço


• Por padrão, um método "void execute()" será criado.
• Você pode modificar e criar novos métodos para receber e retornar os dados
Necessário
• Todos esses novos métodos terão que começar com "executar". Isso é obrigatório,
existe uma regra de verificação do Sonar

• Arquivo de dependência Pom.xml


• Recupera todas as dependências com outros projetos
• Nomenclatura das embalagens:
• com.bbva.<uuaa>.lib.rxxx:
Para as interfaces dos métodos oferecidos pelas bibliotecas, para consumo por transações e
outras bibliotecas.
• com.bbva.<uuaa>.lib.rxxx.impl :
Para classes de biblioteca que implementam os métodos das interfaces listadas acima.

• Nomenclatura do método de interface:


4
TREINAMENTO APX | 50
• executar[Nombre_elegido_por_app]
onde [Nombre_elegido_por_app] é opcional
Como você pode ver, a palavra "executar" é usada como um prefixo para qualquer nome de
método.

O comprimento máximo do nome do método é de 48 caracteres

39
TREINAMENTO APX | 39

4
TREINAMENTO APX | 50
CRIAÇÃO DE BIBLIOTECAS
COMPONENTES DA BIBLIOTECA: CLASSE ABSTRATA

Para qualquer tipo de biblioteca, o projeto de implementação gerará a classe


abstrata:

• Essa classe é gerada automaticamente e não deve ser modificada

• Para todos os tipos de projeto aqui, o serviço de recuperação de configuração é definido


public void setApplicationConfigurationService( ApplicationConfigurationService applicationConfigurationService )
{
this.applicationConfigurationService = applicationConfigurationService;
}

• Para bibliotecas de tipos "especiais", o serviço associado ao seu tipo será recuperado,
por exemplo, para o MongoDB:
public void setMongoDBUtils(MongoDBUtils mongoDBUtils)
{
this.mongoDBUtils = mongoDBUtils;
}

40º
TREINAMENTO APX | 40
CRIAÇÃO DE BIBLIOTECAS
COMPONENTES DA BIBLIOTECA: CLASSE
IMPLEMENTAÇÃO

• Para qualquer tipo de biblioteca, a classe de implantação principal será gerada no


projeto de implantação.

• Essa classe é criada apenas com um método "execute" para o desenvolvedor


implementar a interface vista acima.

• Sendo uma implementação da interface anterior, qualquer novo método


"execute" que esteja incluído nessa interface deve ser implementado nesta classe.

5
TREINAMENTO APX | 50
CRIAÇÃO DE BIBLIOTECAS
COMPONENTES DA BIBLIOTECA: OSGI ARQUITECTURA

• Para todos os tipos de bibliotecas, um arquivo de serviços de arquitetura OSGi,


chamado UUAAR001-arc-osgi.xml, será gerado em /src/main/resources/.

• Esse arquivo define os serviços que são importados da arquitetura para a biblioteca:
• Para todas as bibliotecas, o serviço de configuração será importado
<osgi:reference id="applicationConfigurationServiceFactory" bean-
name="applicationConfigurationServiceFactory"interface="com.bbva.elara.configuration.manager.application.factory.Application
ConfigurationServiceFactory"
/>

• Para bibliotecas "especiais", o serviço associado será importado. Por exemplo, para JDBC:
<osgi:reference id="jdbcUtilsFactory" bean-
name="jdbcUtilsFactory"interface="com.bbva.elara.utility.jdbc.connector.factory.JdbcUtilsFactory"
/>

• Por sua vez, o serviço que exporta a biblioteca também é definido como tal:
<osgi:service id="uuaaR001Osgi" ref="uuaaT001" interface="com.bbva.qwpu.lib.r001.UUAAR001" />

• Este arquivo não deve ser modificado


42º
CRIAÇÃO DE BIBLIOTECAS
COMPONENTES DA BIBLIOTECA: OSGI ARQUITECTURA

TREINAMENTO APX | 42
CRIAÇÃO DE BIBLIOTECAS
COMPONENTES DA BIBLIOTECA: APLICATIVO OSGI

• Para todos os tipos de bibliotecas, um arquivo de serviços OSGi do aplicativo,


chamado UUAAR001-app-osgi.xml, será gerado em /src/main/resources/.

• Esse arquivo define os serviços que são importados para a biblioteca de outras
bibliotecas.

• Ao mesmo tempo, também serão definidos os serviços que a livraria recolhe de


outras livrarias.

• Esse arquivo não deve ser modificado à medida que as interações são criadas entre
as diferentes bibliotecas de aplicativos.

• Somente bibliotecas de infraestrutura podem publicar serviços usados


genericamente
43
TREINAMENTO APX | 43
01
CRIAÇÃO DE BIBLIOTECAS
COMPONENTES DA BIBLIOTECA: ARQUITETURA DO BEANS

• Para todos os tipos de bibliotecas, um arquivo de arquitetura Spring bean,


chamado UUAAR001-arc.xml, será gerado em /src/main/resources/.

• Esse arquivo define os beans que serão associados aos serviços recuperados da
arquitetura:
• Para todas as bibliotecas, o bean de configuração será gerado
• Para as bibliotecas "especiais", os beans associados ao serviço correspondente serão
gerados.

• Por sua vez, o bean associado à classe também é definido, para exportação via
serviço OSGi.

• Este arquivo não deve ser modificado

44
TREINAMENTO APX | 44
01
CRIAÇÃO DE BIBLIOTECAS
COMPONENTES DA BIBLIOTECA: BEANS APLICATIVO

• Para todos os tipos de bibliotecas será gerado, em /src/main/resources/ um


arquivo de beans de aplicativos Spring, chamado UUAAR001-app.xml.

• Esse arquivo define os beans que serão associados aos serviços recuperados e
importados de outras bibliotecas de aplicativos:
• Por padrão, o bean associado à biblioteca é criado.

• Aqui também será definido o restante dos beans que o desenvolvedor precisa para
desenvolver sua lógica de negócios.
02
USANDO UTILITÁRIOS DE LOG

> Desenvolver ver uso na implementação da biblioteca:

Ver arquivos: MAPPR001*.java

5
TREINAMENTO APX | 50
UTILITÁRIOS COMUNS
GERENCIAMENTO DE
RASTREAMENTO(I)
LOGGER SLF4j
• Ao criar um novo componente com o IDE de desenvolvimento, por padrão, ele gera a
seguinte linha com a criação de um registrador a partir do pacote org.slf4j:
Logger LOGGER = LoggerFactory.getLogger(UUAAR000Impl.class);
• O SL4FJ fornece vários métodos para gerenciamento de rastreamento, incluindo:
• LOGGER.trace(Mensagem de cadeia de caracteres,
Objeto ... args) : Imprime informações com o máximo
nível de detalhe. Receba uma mensagem e n
argumentos (opcional) para
Complemente a mensagem a ser impressa.
• LOGGER.debug(Mensagem de string, Objeto ... args) :
Permite imprimir dados informativos com detalhes
finos que são úteis para depurar o aplicativo.
• LOGGER.info(Mensagem de string, Objeto ... args) :
Imprime informações úteis que permitem ver o
progresso da aplicação.
• LOGGER.warn(Mensagem de string, Objeto ... args) :
Imprime avisos ou falhas de aplicativos não críticos,
UTILITÁRIOS COMUNS
GERENCIAMENTO DE
RASTREAMENTO(I)
que
47
não impedem que o aplicativo continue seu fluxo.
■. . m m SA A■ A _ % ■ Para
CONTROLE DE ARQUITETURA

Aplicação TX

Invocação Biblioteca de
da aplicativos 1
A Arquitetura gerencia o Biblioteca Invocação
código de conclusão da APL Biblioteca
Transação de Aplicativo e
APL
executa a confirmação ou Invocação
reversão das consultas de
Serviço APX
aplicativo.
Manipula possíveis
exceções que podem
ocorrer na pilha de
execução de transações,
bibliotecas e conectores de
arquitetura invocada.

A biblioteca valida o
Em caso de exceção, ele resultado da chamada
do conector APX. Eles podem notificar
fecha por engano e
A livraria deve A lógica do aplicativo exceções em sua
reverte os dados.
A transação deve gerenciar validar o resultado da decide os avisos ou execução. Alguns
a invocação para as invocação para as erros que deseja podem ser
bibliotecas de aplicativos e outras bibliotecas. publicar. controláveis pelo
valida os avisos ou erros A lógica do aplicativo aplicativo. Cada
decide os avisos ou conector publica o
erros que deseja seu.
Estabeleça a criticidade publicar.
dos avisos notificados
gerenciando o código de
retorno TX.

5
TREINAMENTO APX | 50
UTILITÁRIOS COMUNS
ERROS E AVISOS (II)

• Ao nível de transações e bibliotecas de aplicações, existe a possibilidade de criar erros e


avisos controlados

• Se você quiser enviar um aviso de uma livraria ou da transação, seja qual for o tipo, você
usará o método addAdvice, que adiciona o aviso a uma lista. Esse método não define a
gravidade do aviso, uma vez que o aviso é contextual para a transação e deve ser
executado a partir da transação usando o método setSeverity ou setHttpResponseCode.

• Como um conceito de desenvolvimento e gerenciamento de erros que ocorrem durante


a pilha de execução de uma transação, a gravidade da execução deve ser determinada
pelo próprio Tx. Isso tem o contexto das bibliotecas que está invocando/orquestrando e
pode determinar se um Aviso deve ser emitido por Ok, Erro ou Aviso.

49
TREINAMENTO APX | 49
1
INTRODUÇÃO
ERROS E AVISOS (III)
A arquitetura fornece os métodos "addAdvice() para o aplicativo para relatar um erro ou
aviso no código da transação.
Códigos de devolução TX

1. OK ("00") → OK
2. WARN("04") → OK + Código de Aviso
3. ENR("06") → Rejeitado + Código de erro (sem
reversão)
4. EWR("08") → Rejeitado + Código de Erro (com
Reversão)
5. ERROR("12")→ Rejeitado (erro fatal) + Código
de erro

Códigos HTTP vs Códigos de Transação

1. 200, 201, 202, 204, 206 → Severidade.OK


2. 201, 202, 204, 206 → Severidade.AVISO
3. 404, 409, 422 → Severidade.ENR
4. 404, 409, 422 → Severidade.EWR
5. 500 → Severidade.ERRO

Nota: A gravidade ERROR(12) é usada apenas na arquitetura,


os aplicativos não podem usá-la

6
TREINAMENTO APX | 50
02
TRANSAÇÃO DE CONEXÃO --> BIBLIOTECA

> Para usar uma biblioteca online de uma transação, você precisa seguir as seguintes
etapas:
- No .xml da transação Invocador devemos importar o
Dependência da biblioteca a ser invocada. Se quisermos, por exemplo,
invocar uma biblioteca UUAAR001, devemos incluir o seguinte
<dependência>
<groupId>com.bbva.uuaa</groupId>
<artifactId>UUAAR001</artifactId>
<versão>0.0.0</versão>
</dependência>
02
TRANSAÇÃO DE CONEXÃO --> BIBLIOTECA

- No mesmo pom.xml temos que modificar a tag maven-bundle-plugin


Import-Packages para adicionar o nome do pacote onde a interface está:
<Pacote de importação>
com.bbva.elara.*;version="${osgi.version.manifest}",
com.bbva.uuaa.lib.r001;version="0.0",
org.osgi.framework,
Primavera

</Pacote de importação>

TREINAMENTO APX | 62
02
TRANSAÇÃO DE CONEXÃO --> BIBLIOTECA

- Para obter uma instância da biblioteca que queremos usar, no método


execute da transação, por exemplo, incluiríamos a seguinte linha:
UUAAR001 libUUAAR001
this.getServiceLibrary(com.bbva.uuaa.lib.r001.UUAAR001.class); onde
com.bbva.uuaa.lib.r001.UUAAR001 é a interface da biblioteca a ser invocada,
que deve ser incluída nas importações da classe de transação

TREINAMENTO APX | 63
02
CRIAR BIBLIOTECA JPA

P Criar a biblioteca
- MAPPR002, e implementar o método de registro e consulta de informações no banco de dados.
Ver arquivos: MAPPR002*.java

TREINAMENTO APX | 64
2
- CONEXÃO DE BIBLIOTECA --> BIBLIOTECA

- Para poder invocar uma biblioteca de outra biblioteca, você precisa seguir as
etapas a seguir. Tomaremos como exemplo uma biblioteca chamada UUAAR001 que
será invocada a partir de UUAAR002
- No pom.xml do invocador devemos importar a dependência da biblioteca que
contém a interface. O pom.xml será o de UUAAR002IMPL-0.0.0.
<dependência>
<groupId>com.bbva.uuaa</groupId>
<artifactId>UUAAR001</artifactId>
<versão>0.0.0</versão>
</dependência>

TREINAMENTO APX | 65
02
CONEXÃO DE BIBLIOTECA --> BIBLIOTECA

- No mesmo pom.xml temos que modificar no maven-bundle-plugin a tag Import-


Packages para adicionar o nome do pacote onde a interface está
<Pacote de importação>
com.bbva.elara.*;version="${osgi.version.manifest}",
com.bbva.uuaa.lib.r001;version="0.0",
org.osgi.framework,
Primavera

</Pacote de importação>
Observação : caso a variável osgi.version.manifest não esteja definida no pom, os
pacotes com.bbva.elara são definidos como versão 0.0, bem como os pacotes
com.bbva.uuaa.lib.r001.
02
CONEXÃO DE BIBLIOTECA --> BIBLIOTECA

- Você precisa modificar o seguinte arquivo que está no projeto da biblioteca de invocação:
(UUAAR002 em nosso exemplo):
TREINAMENTO APX | 66
/main/resources/META-INF/spring/UUAAR002-app-osgi.xml
ou, se não existir, o seguinte
/main/resources/META-INF/primavera/UUAAR002-osgi.xml
para incluir a linha que recupera o serviço da outra biblioteca, uuaar001 em nosso exemplo
<osgi:referência id="UUAAR001" nome-do-feijão="uuaaR001"
interface="com.bbva.uuaa.lib.r001.UUAAR001" />
Onde:
O id é o nome do feijão a ser criado no contexto da primavera.
O nome do bean é usado na pesquisa de serviço e deve corresponder à referência (ref) do
serviço que está sendo publicado. Este id uuaaR001 é o que foi indicado na primavera na
biblioteca invocada, e deve ser indicado por quem nos fornece a biblioteca.
XML Spring: <bean id="uuaaR001" classe=. . />
Interface a interface que estamos procurando. Tem que ser definido indicando o nome
completo, incluindo o pacote.
02
CONEXÃO DE BIBLIOTECA --> BIBLIOTECA


Na implementação da biblioteca UUAAR002, classe UUAAR002Impl.java,
devemos registrar uma variável de membro privado, do tipo da interface da
TREINAMENTO APX | 67
biblioteca a ser invocada (UUAAR001 em nosso exemplo), após importá-la.
privado UUAAR001 UUAAR001;
■ Na implementação da biblioteca devemos gerar um setter público para um
campo que deve ser chamado de UUAAR001 de acordo com o nosso exemplo,
que é o id que colocamos na tag osgi:reference do passo 3
public void setUUAAR001(UUAAR001 UUAAR001){
este. UUAAR001 = UUAAR001
}
02
CONEXÃO DE BIBLIOTECA --> BIBLIOTECA

- No arquivo <library>-app.xml da biblioteca você deve injetar o bean recuperado,


UUAAR001, via osgi na implementação do UUAAR002. Para fazer isso, uma nova
propriedade deve ser adicionada no bean da implementação. Onde name deve
corresponder ao nome do conjunto de métodos, mas sem conter o conjunto de
cláusulas dele. A propriedade ref deve ser preenchida com o valor do campo id
do serviço osgi importado, conforme indicado no ponto 3.
<feijão id="uuaaR002" class="com.bbva.uuaa.lib.r002.impl.UUAAR002Impl"
parent="uuaaR002Abstract" >
<nome da propriedade="UUAAR001" ref="UUAAR001"/>

TREINAMENTO APX | 68
</feijão>
- A partir desse momento podemos invocar os métodos de UUAAR001 a partir do
código da biblioteca UUAAR002.

TREINAMENTO APX | 69
Perguntas/Dúvidas

Você também pode gostar