FATEC - FACULDADE DE TECNOLOGIA DE SÃO JOSÉ DOS CAMPOS
JOVAN ANGELO RODRIGUES DE SOUZA, PAULO ALVES FRANÇA
INTEGRANDO UMA SOLUÇÃO DE BAIXA PLATAFORMA
COM MAINFRAME UTILIZANDO IBM WEBSPHERE MQ E CICS
SÃO JOSÉ DOS CAMPOS
2011
i
JOVAN ANGELO RODRIGUES DE SOUZA, PAULO ALVES FRANÇA
INTEGRANDO UMA SOLUÇÃO DE BAIXA PLATAFORMA
COM MAINFRAME UTILIZANDO IBM WEBSPHERE MQ E CICS
Trabalho de graduação apresentado a Faculdade
de tecnologia de São José dos Campos, como parte dos
requisitos necessários para obtenção do título de
Tecnólogo em Banco de dados.
Orientador: Rogério Marinke.
SÃO JOSÉ DOS CAMPOS
2011
ii
JOVAN ANGELO RODRIGUES DE SOUZA, PAULO ALVES FRANÇA
INTEGRANDO UMA SOLUÇÃO DE BAIXA PLATAFORMA
COM MAINFRAME UTILIZANDO IBM WEBSPHERE MQ E CICS
Trabalho de graduação apresentado a Faculdade
de tecnologia de São José dos Campos, como parte dos
requisitos necessários para obtenção do título de
Tecnólogo em Banco de dados.
________________________________________________________
PAULO HENRIQUE CRUZ JUNIOR - MESTRE
________________________________________________________
LUDMILA CANUTO DE MELO FERREIRA SALIMENA – ESPECIALISTA
________________________________________________________
ROGÉRIO MARINKE - ESPECIALISTA
___/___/___
DATA DE APROVAÇÃO
iii
Dedicamos este trabalho aos nossos amigos, familiares e professores
que nos ajudaram a trilhar os caminhos e superar
os inúmeros desafios para galgar
o sucesso e a realização.
iv
AGRADECIMENTOS
Agradecemos ao professor e orientador Rogério Marinke pelo apoio, encorajamento e
pelo tempo empregado na qualidade deste trabalho tanto quanto empregado na discussão,
sempre aberta estimulante, de novas idéias. Também agradecemos a equipe IBM Ludmila
Canuto de Melo Ferreira Salimena, Paulo Henrique Cruz, Rogério Salgado Rocha, Célio
Costa Carvalho, Eugenio Fernandes, André Luiz dos Santos Gonçalves, Tadeu Moraes e
Aroldo Yuji Yai por incutir em nós a necessidade de aprender sempre, pelo apoio técnico
fornecido e o acesso aos ambientes, sem o quais a concretização desse trabalho seria inviável.
v
RESUMO
Este trabalho propõe uma arquitetura de integração entre baixa e alta plataforma utilizando
Web Services, IBM Websphere MQ Client, IBM Websphere MQ e CICS Transaction Server.
O estudo de caso tem como aplicação prática a nota fiscal eletrônica. O objetivo é propor uma
forma alternativa para transmitir a nota fiscal eletrônica utilizando recursos de fila de
mensagens disponíveis no mainframe pelo middleware IBM Websphere MQ. Esta arquitetura
terá dois componentes de software. O primeiro uma aplicação desktop que será responsável
por transmitir a nota fiscal para outro componente alocado no mainframe. Este componente se
conectará através do Web Service ao servidor da Secretaria da Fazenda a fim de transmitir a
nota fiscal eletrônica e posteriormente receber o status da nota enviada.
Palavras-chave: Mainframe, nota fiscal eletrônica, Web Service, certificado digital.
vi
ABSTRACT
An integration architecture between low and high platform using Web Services, IBM
Websphere MQ Client, IBM Websphere MQ and CICS transaction Server is proposed in this
work. The study of case has as practical application the electronic invoice. The objective is to
propose an alternative form to broadcast the electronic invoice using the resources of message
queues available in the mainframe by middleware IBM Websphere MQ. This architecture will
have two software components. The former is a desktop application that will be responsible
for broadcasting the electronic invoice to another component allocated in the mainframe. This
component will connect through Web Service to the server of the government tax bureau
intending to broadcast the electronic invoice and posteriorly receiving the status of the sent
invoice.
Keywords: Mainframe, Web Service, Digital Certificate.
vii
LISTA DE FIGURAS
Figura 1 - Infra-estrutura dos componentes CORBA......................................................... 19
Figura 2 - Ambientes integrados utilizando o Object Broker do CORBA........................ 22
Figura 3 - Estrutura geral da ICP-Brasil. ............................................................................ 27
Figura 4 - Dados de Identificação do Certificado digital. ................................................... 29
Figura 5 - Todos os dados contidos no certificado digital, aba Detalhe ............................ 30
Figura 6 – Funcionamento da SEFAZ virtual. .................................................................... 33
Figura 7 – Processo de envioda NF-e ao ambiente virtual da SEFAZ. ............................. 34
Figura 8 - Canal de comunicação cliente servidor de uma aplicação WMQ. ................... 37
Figura 9 – Exemplo código COBOL com RDZ. .................................................................. 40
Figura 10 – Arquitetura de integração da aplicação desktop com o mainframe. ............ 42
Figura 11 – Processo de envio da NF-e para o mainframe. ................................................ 43
Figura 12 – Seleção de um arquivo XML da NF-e preenchida. ......................................... 44
Figura 14 – Código Fonte da implementação da classe Consulta.java.............................. 46
Figura 15 – Diagramas de classe da aplicação desktop....................................................... 47
Figura 16 – Tela de administração do WMQ....................................................................... 48
Figura 17 – Código Fonte do componente NFERECEP.cbl ............................................... 49
viii
LISTA DE TABELAS
Tabela 1 - Vantagens e desvantagens da utilização de Web Service.................................. 25
Tabela 2 - Vantagens e desvantagens da utilização de CORBA. ....................................... 26
ix
SUMÁRIO
1.INTRODUÇÃO ................................................................................................................... 11
1.1 Motivação .......................................................................................................................... 11
1.2 Objetivos............................................................................................................................ 12
1.2.1 Objetivo geral................................................................................................................. 12
1.2.2 Objetivos específicos...................................................................................................... 12
1.3 Metodologia....................................................................................................................... 13
1.4 Organização do trabalho ................................................................................................. 14
2 INTEGRAÇÃO DE BAIXA COM ALTA PLATAFORMA........................................... 15
2.1 Baixa plataforma .............................................................................................................. 15
2.2 Alta Plataforma ................................................................................................................ 15
2.3 Arquitetura Comum de Barramento de Objeto (CORBA) .......................................... 15
2.3.1 Object Management Group (OMG) .............................................................................. 15
2.3.2 Arquitetura Comum de Barramento de Objeto ......................................................... 16
2.3.3 ORA (Object Request Architecture) ........................................................................... 16
2.3.4 ORB (Object Request Broker) ..................................................................................... 16
2.3.5 Interface ORB ................................................................................................................ 16
2.3.6 DII (Dynamic invocation interface) ............................................................................. 17
2.3.7 DSI (Dynamic skeleton interface) ................................................................................ 17
2.3.8 Stub ................................................................................................................................. 17
2.3.9 Skeleton .......................................................................................................................... 18
2.3.10 Arquitetura de Gerenciamento de Objeto................................................................. 18
2.3.11 Integração utilizando CORBA ................................................................................... 19
2.3.12 Estudo de caso de integração utilizando CORBA .................................................... 21
2.4 Arquitetura Orientada a Serviço (SOA) ........................................................................ 23
2.4.1 Web Service.................................................................................................................... 24
2.4.2 Descrição de Serviços .................................................................................................... 24
2.4.3 UDDI - Descoberta e descrição de serviços ................................................................. 24
2.5 Breve análise de tecnologias de integração..................................................................... 25
2.5.1 CORBA e Web Service ................................................................................................. 25
3 TECNOLOGIAS - BAIXA PLATAFORMA ................................................................... 27
3.1 ICP Brasil .......................................................................................................................... 27
3.2 Certificado Digital ............................................................................................................ 28
3.3 Nota fiscal eletrônica (NF-e) estudo de Caso ................................................................. 30
3.3.1 Lei e objetivo do projeto ............................................................................................... 30
3.3.2 Conceito da nota fiscal eletrônica ................................................................................ 31
3.3.3 O ambiente virtual da secretaria da fazenda (SEFAZ) ............................................. 31
3.4 Web Service disponíveis no ambiente virtual da SEFAZ ............................................. 34
3.4.1 Descrição da recepção da NF-e .................................................................................... 34
3.5 Tecnologias para a aplicação desktop............................................................................. 35
3.5.1 J2EE................................................................................................................................ 35
3.5.2 XML................................................................................................................................ 35
4 TECNOLOGIAS - ALTA PLATAFORMA ..................................................................... 36
4.1 IBM Websphere MQ ........................................................................................................ 36
4.2 IBM Websphere MQ Client ............................................................................................ 36
4.3 IBM CICS TS3.2............................................................................................................... 37
x
4.4 COBOL.............................................................................................................................. 37
4.5 DB2..................................................................................................................................... 38
4.6 Rational for System Z .................................................................................................. 38
5 IMPLEMENTAÇÃO DO PROTÓTIPO .......................................................................... 41
5 .1 Arquitetura de integração ............................................................................................ 41
5.1.1 Arquitetura de comunicação da camada Desktop ..................................................... 41
5.1.2 Arquitetura de comunicação da camada mainframe................................................. 42
5.2 Projeto e implementação do protótipo............................................................................ 43
5.2.1 Aplicação desktop .......................................................................................................... 43
5.2.2 Aplicação mainframe .................................................................................................... 48
6 CONCLUSÕES.................................................................................................................... 50
6.1 Contribuições e Conclusões ............................................................................................. 50
6.2 Trabalhos Futuros ............................................................................................................ 51
11
1.
INTRODUÇÃO
1.1
Motivação
O período de 50 a 80 é marcado pela computação centralizada. A característica dos
computadores construídos nesta época são super computadores e mainframes dotados de alto
poder de processamento. A utilização desta tecnologia justificava as atividades desenvolvidas
em universidades, centros militares, financeiros e governamentais. Esta modalidade de
computação ainda é utilizada pelas organizações. Sua utilização é justificada pela capacidade
que estes sistemas têm de trabalhar com dados críticos e servir a uma alta demanda de
processamento. Outro fator importante são as questões ligadas a escalabilidade e
extensibilidade, pois é possível aumentar a capacidade de processamento dos mainframes sem
a necessidade de paradas no sistema, mantendo-o disponível.
Entretanto o constante avanço da micro-eletrônica tornou viável a proposta de um modelo de
arquitetura compacta, com menor poder de processamento e baixo custo (THACKER, 1979).
Seu intuito era substituir o uso dos mainframes em tarefas que não necessitassem de alto
poder de processamento. O IBM-PC caracterizou-se por criar uma nova modalidade de
computação. As conseqüências deste desenvolvimento possibilitaram difundir a tecnologia do
computador pessoal (THACKER, 1979).
Com a expansão das redes de computadores e da Internet houve a necessidade de integrar
estas duas modalidades de computação, a centralizada com a distribuída. Isto se justifica
devido à necessidade do mercado, pois as organizações têm tecnologias robustas com alto
poder de processamento e que precisam ser disponibilizadas para computadores pessoais.
A nota fiscal eletrônica é um projeto do governo Federal que se desenvolve em parceria com
os governos estaduais e possui como objetivo regulamentar, padronizar a emissão de notas
fiscais em formato eletrônico (ENATE, 2011).
Atualmente várias empresas no mercado fornecem solução de nota fiscal eletrônica para os
mais diferenciados estabelecimentos. As características destas soluções, entretanto, variam
12
entre aplicações desktop, que são voltadas para usuários de pequeno porte ou aplicações web,
para usuários de médio porte. Todas elas se conectando aos Web Services da secretaria da
fazenda para a transmissão da nota fiscal.
O presente trabalho propõe uma arquitetura de integração de software entre a baixa e a alta
plataforma. Como estudo de caso é desenvolvida uma aplicação desktop que se integre a um
componente de software disponível no ambiente mainframe. O componente de software
desenvolvido para a alta plataforma é capaz de gerenciar simultaneamente a requisição de
envio de nota fiscal eletrônica de vários usuários aos servidores da secretaria da fazenda.
Acredita-se que esta arquitetura possa suprir a necessidade tanto de usuários de pequeno porte
a usuários de grande porte.
1.2
Objetivos
1.2.1
Objetivo geral
Desenvolver uma solução de nota fiscal desktop que se integre a um
componente de mainframe utilizando IBM Websphere MQ para o posterior envio da nota
fiscal aos servidores da secretaria da fazenda.
1.2.2
Objetivos específicos
a)Desenvolver uma aplicação desktop Java para o envio de nota fiscal
eletrônica.
b)Desenvolver uma aplicação de alta plataforma utilizando IBM Websphere
MQ para receber uma nota fiscal eletrônica enviada pela aplicação desktop.
c)Integrar a aplicação de alta plataforma com a aplicação desktop.
13
d)Integrar a aplicação de alta plataforma com o Web Service da secretaria da
fazenda do estado de São Paulo.
1.3
Metodologia
A metodologia aplicada aqui consiste na pesquisa e desenvolvimento de uma arquitetura entre
desktop e mainframe adotando-se a Nota Fiscal Eletrônica (NFE) como estudo de caso.
Para a realização desta pesquisa foi realizado um levantamento bibliográfico sobre duas
tecnologias de integração utilizadas no mercado, CORBA e Web Service. Este levantamento
bibliográfico colaborou na escolha da tecnologia mais apropriada para o problema da
integração entre sistemas distintos.
Posteriormente, foi realizado um levantamento das tecnologias para o desenvolvimento do
protótipo de envio de nota fiscal eletrônica desktop e do componente de software de envio do
xml da nota fiscal eletrônica para a SEFAZ que foi desenvolvido para o ambiente mainframe.
Foi feita a modelagem da arquitetura de integração. A partir da aplicação desktop foi criada
uma estrutura de conexão com o middleware IBM Websphere MQ, cuja principal
característica é o recurso de filas de mensagens. Esta aplicação desktop que foi desenvolvida
tem como principais funcionalidades a alimentação e o consumo destas filas de mensagens
através da ação de upload de um xml de uma nota fiscal eletrônica preenchida e assinada e da
leitura das respostas que são enviadas pelos Web Services da SEFAZ.
Para a implementação do protótipo desktop foi utilizado à linguagem de programação Java, a
biblioteca gráfica Java Swing e as bibliotecas do IBM Websphere MQ Client para a criação
da conexão com as filas de mensagens do IBM Websphere MQ.
A implementação do componente no mainframe compreende a utilização do IBM Websphere
MQ para a definição das filas de mensagem e o seu gerenciamento. O CICS (CICS –
Customer Information Control System) foi utilizado para a implementação do Web Service da
SEFAZ para que a nota fiscal eletrônica enviada da aplicação desktop possa chegar aos
servidores da Receita Federal por intermédio deste componente no mainframe. Além disso, o
14
CICS alimenta as filas de mensagens com as respostas da SEFAZ de cada nota fiscal
eletrônica emitida na aplicação desktop.
1.4
Organização do trabalho
Este Trabalho está organizado da seguinte forma:
O capítulo 2 aborda à integração de baixa e alta plataforma, suas características e um histórico
contendo as definições de ambas as plataformas. Também é realizado um breve comparativo
entre as tecnologias SOA e CORBA abordando os seus principais conceitos e arquitetura.
O capítulo 3 apresenta algumas características das tecnologias de baixa plataforma utilizadas
para o desenvolvimento do protótipo. O capítulo apresenta as seguintes tecnologias: Java
Enterprise Edition (J2EE), Extendible Markup Language (XML) e certificado digital.
O capítulo 4 apresenta as ferramentas e tecnologias utilizadas durante o desenvolvimento do
protótipo na alta plataforma. No capítulo são apresentadas algumas características e
funcionalidades das ferramentas WebSphere MQ, Monitor de Transação CICS, COBOL e
DB2.
O capítulo 5 trata do desenvolvimento da solução de integração, da definição do modelo do
protótipo no ambiente mainframe e da interface do protótipo na baixa plataforma. É
apresentada a forma de integração utilizando Web Service. O capítulo também apresenta o
diagrama de classe, alguns casos de uso, o levantamento de requisitos funcionais e não
funcionais da solução, o modelo relacional e uma análise da aplicação e do sistema em ambas
as arquiteturas.
O capítulo 6 apresenta às considerações finais, experiências e resultados obtidos e sugestões
para trabalhos futuros.
15
2
INTEGRAÇÃO DE BAIXA COM ALTA PLATAFORMA
2.1
Baixa plataforma
Baixa plataforma é como se denomina a modalidade de computação constituída por
microcomputadores. O objetivo dos microcomputadores era substituir o uso de computadores
de grande porte em atividades que não necessitassem alto poder de processamento. A idéia era
criar uma máquina menor, de baixo custo e que tivesse capacidade suficiente para satisfazer
as necessidades de um único usuário (THACKER, 1979).
A popularização do computador pessoal possibilitou o desenvolvimento de aplicações para as
mais diversas finalidades. Seu uso, atualmente é imprescindível para a execução do trabalho
de vários profissionais nos mais variados segmentos do mercado de trabalho.
2.2
Alta Plataforma
O termo mainframe é utilizado para se referir a computadores desenhados com o objetivo de
processar cargas muito grandes de dados e servir a milhares de usuários. Seu uso é voltado
tipicamente para grandes empresas que possuem aplicações críticas (THECHTERMS, 2010).
A presença do mainframe está relacionada ao conceito de computação centralizada, seu uso
em grandes corporações é justificado, pois o mainframe torna-se um repositório central de
dados que está conectado a dispositivos menores como terminais e estações de trabalho.
2.3
Arquitetura Comum de Barramento de Objeto (CORBA)
As seções seguintes explicam a arquitetura CORBA e sua integração com outras plataformas.
2.3.1
Object Management Group (OMG)
O Grupo de Gerenciamento de Objeto (OMG - Object Management Group) é uma
organização internacional sem fins lucrativos. Foi fundada em 1984 e possui em torno de 750
empresas que ajudam no desenvolvimento do projeto. Entre estas empresas estão IBM, HP,
SUN, DEC, Microsoft. O objetivo é definir padrões para aplicações orientadas a objetos
16
distribuídos, com a finalidade de atender a indústria de desenvolvimento de software. O
padrão de integração proposto pela OMG foi a Arquitetura de Gerenciamento de Objeto
(OMA - Object Management Architecture) (OMG, 2010).
2.3.2
Arquitetura Comum de Barramento de Objeto
A Arquitetura Comum de Barramento de Objeto (CORBA - Common Object Request Broker
Architecture) foi desenvolvida pela OMG e suas empresas membro para estabelecer padrões e
simplificar a troca de dados entre objetos em sistemas heterogêneos distribuídos (OMG,
2010).
2.3.3
ORA (Object Request Architecture)
O ORA exerce o papel de middleware entre os objetos distribuídos. É responsável também
pela comunicação entre objetos de forma transparente, entre o cliente e a implementações dos
objetos desejados (OMG, 2010).
2.3.4
ORB (Object Request Broker)
O ORB é responsável pela comunicação e interação entre os objetos distribuídos e um dos
principais simplificadores na hora de desenvolver em ambientes distribuídos, sendo que o
mesmo trata características de baixo nível da implementação, ele intercepta a chamada e fica
responsável por definir um objeto que atenda a solicitação do objeto solicitante. Ao encontrar
o objeto que atenda a necessidade o ORB passa a esses objetos os parâmetro do objeto
solicitante, por sua ver o objeto solicitado processa os parâmetros e devolve a resposta ORB,
que transmite ao objeto solicitante. Dessa maneira o usuário não precisa preocupar-se onde o
objeto está, ou em que sistema operacional o mesmo se encontra ou qual programa foi usado
para desenvolvê-lo (OMG, 2010).
2.3.5
Interface ORB
A Interface ORB foi definida, dentro da especificação do CORBA, como uma "interface
abstrata" para o ORB, servido como uma biblioteca de ajuda para a implementação de
17
serviços locais dentro o ORB. Onde ainda, por esta interface se tratar de uma entidade lógica,
pode ser implementada de diversas maneiras, portanto, a interface ORB vem justamente com
o intuito de desacoplar as aplicações dos detalhes de cada uma dessas implementações na
camada ORB. Dentre as funcionalidades oferecidas por essa interface, temos a conversão de
“referências a objetos” para strings e vice-versa, provê também a criação de listas de
argumentos para as requisições que são realizadas através da interface de invocação dinâmica
(OMG, 2010).
2.3.6
DII (Dynamic invocation interface)
É um canal de comunicação implementado no lado do cliente. Permite ao mesmo, por meio
das tentativas de implementação dos métodos em tempo de execução, um acesso direto aos
mecanismos de requisição residentes em um ORB e também que realizem uma sincronização
entre os objetos remotos, conhecidos como deferidas ou não-bloqueadas (operações separadas
de envio e recebimento) e chamadas unidirecionais (só de envio). Neste tipo de invocação,
esse processo é feito de forma dinâmica sem necessitar passar pela interface específica da IDL
para que seja ativado (OMG, 2010).
2.3.7
DSI (Dynamic skeleton interface)
O DSI realiza uma função semelhante à realizada pela DII, a diferença básica, é que todas as
atividades realizadas pela DSI são feitas no servidor. A principal característica da DSI é
permitir que ORB transmita, apesar de não conhecer em tempo de execução o tipo de objeto
utilizado, requisições para uma implementação de objeto, correlacionado diretamente com o
Skeleton (OMG, 2010).
2.3.8
Stub
Está localizado no cliente, tem como característica promover interfaces estáticas para criar e
enviar requisições correspondentes dos serviços desejados do cliente para o servidor. O Stub é
criado utilizando-se um compilador IDL e está implementado diretamente do lado do cliente
(OMG, 2010).
18
2.3.9
Skeleton
Está vinculado diretamente com o Stub e tem como função fornecer a interface através da
qual o método recebe as requisições. Está implementado diretamente do lado do servidor
(OMG, 2010).
2.3.10
Arquitetura de Gerenciamento de Objeto
A Arquitetura de Gerenciamento de Objeto (OMA - Object Management Architecture) é um
padrão de arquitetura, desenvolvido pela OMG, uma tecnologia de middleware que é utilizado
para mover ou transportar informações, dados de sistemas heterogêneos com diversos
protocolos de rede e sistemas operacionais. Independente de plataforma o padrão OMA é
constituído por interfaces de alto nível conhecidas como Interface de programação de
Aplicação (API – Application Programming Interface), possui os seguintes objetivos de
integrar objetos de sistemas distribuídos, fornecer orientação sobre a padronização de
interface, desenvolver a criação de componentes que permitam integrar um ou mais objetos
que tenham funcionalidades comuns e disponibilizá-lo por meio de interfaces de comunicação
entre objetos (OMG, 2010). Este padrão é dividido em módulos e componentes de serviço que
serão tratados abaixo, padrão de arquitetura OMA ilustrado na Figura 1.
19
Figura 1 - Infra-estrutura dos componentes CORBA.
Adaptado de: OMG, 2010.
2.3.11
Integração utilizando CORBA
As necessidades de integração das diversas plataformas que se encontram no ambiente de
negócio são das mais variadas. Desde instituições financeiras como bancos até órgãos
governamentais possuem plataformas mistas em funcionamento, que precisam acessar
recursos e processos entre diversas aplicações existentes, entretanto são sistemas legados e
críticos para o negocio. Isto implica que devido à natureza deste ambiente não é aconselhável
a substituição de tecnologia devido ao custo e riscos envolvidos, porém, uma das soluções
plausíveis para a integração de plataformas distintas está contida no universo dos objetos
distribuídos, o mesmo visa estabelecer uma comunicação entre esses ambientes mistos,
independente da plataforma ou arquitetura utilizada, simplificar a manutenção e o
desenvolvimento de objetos e sistemas, propondo o reuso de objetos comuns aos diversos
tipos de aplicações, dispostas neste ambiente. Sabe-se que este ambiente tem por
característica ser composto por arquiteturas de hardware e software mistas. Englobam
aplicativos em diversas linguagens de programação e uma variedade de Sistemas
20
Operacionais (SO) envolvidos, além de variações entre diversos protocolos de rede. Portanto
este ambiente torna-se heterogêneo e de alta complexidade (BALBINO, 2010).
Devido à evolução da micro-informática e o aumento na capacidade de processamento bem
como o aprimoramento da arquitetura dos PC’s possibilitou que os sistemas centralizados
fossem migrados para sistemas distribuídos, houve algumas implicações devido à
complexidade da arquitetura distribuída, geralmente o desenvolvimento de soluções nesta
arquitetura são em suma mais complexas e demandam mais tempo para desenvolvimento.
Também há dificuldades relacionadas a distribuição do processamento em diversos pontos de
uma rede e o paralelismo de processamento envolvido (BALBINO, 2010).
Para efetuar a comunicação entre objetos distintos dentro de uma arquitetura distribuída,
existem varias maneiras de fazê-lo, sendo que os objetos podem comunicar-se tanto
internamente, utilizando ambientes compartilhados de memória do aplicativo bem como se
comunicar com outros objetos dispostos em maquinas diferentes. Para efetuar tal processo o
objeto distribuído utiliza API’s, para efetuar passagem de mensagens e estabelecer
comunicação entre objetos às vezes implementado em plataformas distintas e tem como
recurso a utilização de protocolos de transporte (BALBINO, 2010).
A utilização dos protocolos de transporte tem custos em complexidade ao codificar a solução,
devido a inúmeros processos de comunicação que envolve os protocolos de transporte, porém
o programador pode optar por métodos de comunicação encapsulados como o caso da
Invocação de Método Remoto (RMI – Remote Method Invocation) que abstrai a camada de
rede tornando a conexão uma tarefa simples como se o objeto que está sendo invocado
estivesse na própria maquina (BALBINO, 2010).
Com a crescente demanda por reuso de código os programadores que defendem o paradigma
orientado a objeto, investiram no desenvolvimento de soluções embasadas em componentes
que são um ou mais objetos integrados que sozinhos conseguem ser genéricos o suficiente
para serem utilizado em diversos sistemas. Para efetuarem a comunicação entre componentes
foram desenvolvidos alguns padrões para Windows, como por exemplo, o DCOM
(Distributed Component Object Model), para Java as tecnologias JavaBeans e Enterprise
JavaBeans, e uma arquitetura que é independente de plataforma chamada CORBA (Common
Object Request Broker Architecture) (BALBINO, 2010).
21
O CORBA é um padrão desenvolvido sobre as especificações do padrão Barramento Comum
de Requisição de Objeto (ORB - Common Object Request Broker) e utilizado para efetuar a
conexão entre objetos que estão contidos em pontos diferentes de uma rede. Para efetuar essa
comunicação é utilizada uma linguagem de programação própria para implementar os Stubs
que são interfaces de acesso ao objeto remoto. Essa interface é compilada na linguagem nativa
do aplicativo cliente que irá utilizar o serviço. O mesmo acontece com outra estrutura
conhecida como Skeleton que é compilada na linguagem do aplicativo cliente. O Skeleton fica
disponível no servidor para disponibilizar a inteface com o aplicativo solicitado.
2.3.12
Estudo de caso de integração utilizando CORBA
A instituição Wells Fargo é citada como um dos oito experimentos descritos no livro 3 Tier
Client/Server At Work (EDWARDS, 1997). O livro trata de tecnologias para a integração de
plataformas distintas. Neste estudo de caso foi utilizada a tecnologia CORBA para efetuar a
integração (BALBINO, 2010).
Na década de 80, nos Estados Unidos, os bancos passaram a oferecer a seus clientes uma
gama de serviços que não faziam parte dos serviços tradicionalmente oferecidos por um
banco. Seus clientes recebiam diferentes extratos para cada produto que era comercializado
pelo banco (RONAYNE, 1996). Porém no final da mesma década a crescente tendência era
que diversos tipos de extratos fossem substituídos por apenas um extrato que reunisse
informações de todos os produtos que o cliente pudesse ter, este extrato ficou conhecido como
compound statement banking (RONAYNE, 1996). Os bancos começaram a integrar seus
extratos de diversos tipos de contas como conta corrente, conta poupança, hipotecas, cartões
de crédito, corretagem e contas para aposentadoria para a obtenção de um único extrato
(BALBINO, 2010).
A instituição Wells Fargo, enfrentava a limitação a esse tipo de exigência do mercado, por
suas contas estarem alocadas em plataformas distintas como IBM MVSq/CICS, Digital
VAX/VMS e UNIX, possibilitando um ambiente propício para a aplicação da tecnologia
CORBA, para solução da dificuldade (BALBINO, 2010).
22
Tendo em vista esse ambiente de plataformas mista foi criado uma solução de integração
baseada na tecnologia CORBA, que propunha a integração entre os diversos tipos de conta
por meio de um Sistema de Relacionamento com Cliente (CRS - Customer Relationship
System) que utilizava o ORB da empresa BEA utilizando servidores com Barramento de
Objeto. Esse sistema propunha uma integração lógica das contas por novo conceito de seguro
social um único número capaz de unificar todas as contas do Número de Seguridade Social
(SSN - Social Security Number) para pessoas físicas e o Número de Identificação do
Empregador (EIN - Employer Identification Number) para as pessoas jurídicas (BALBINO,
2010).
A Integração nesse ambiente foi realizada com sucesso entre as plataformas HP 9000 (HPUX), computadores pessoais (Windows) e Sun (SunOs), porém com os mainframes IBM foi
diferente, pois em 1993 não havia suporte para ORB. Para mainframe a integração foi
efetuada através de meios não CORBA, veja Figura 2.
Figura 2 - Ambientes integrados utilizando o Object Broker do CORBA.
Fonte: RONAYNE, 1996.
23
2.4
Arquitetura Orientada a Serviço (SOA)
Arquitetura Orientada a Serviço (SOA - Service Oriented Architecture) tem como base
disponibilizar o produto de processamento de uma determinada aplicação, por meio de serviço
estabelecendo contratos de comunicações entre as diversas aplicações existentes, baseando-se
em um principio de computação distribuída (SOMMERVILLE, 2006). O objetivo desta
arquitetura é disponibilizar funcionalidades de uma aplicação na forma de serviço através dos
conceitos-chave de application frontend, repositório de serviço e barramento de serviço
(MARINHO, 2006).
O application frontend é uma entidade responsável por interagir, enviando e recebendo
resposta de outros elementos de software tais como aplicações web, interfaces gráficas ou até
mesmo sistemas batch.
O repositório de serviço dispõe de facilidades para o descobrimento de serviços disponíveis
na arquitetura como, por exemplo, a localização virtual, provedor, taxas, limitações técnicas,
aspectos de segurança entre outros.
O barramento de serviço é a entidade utilizada para conexão entre todos os participantes da
SOA.
Algum dos aspectos arquiteturais que SOA prove no ambiente de negocio de uma instituição
como modularidade, reuso e encapsulamento (IBM, 2010). Uma das modalidades de SOA é
dada por meio da implementação de um web service, utilizando um contrato de comunicação
possível graças à implementação de padrões estabelecidos para a troca de mensagem entre
web service para estabelecer a comunicação entre eles. Entre esses padrões se encontra o
SOAP (Simple Object Access Protocol) que utiliza XML para efetuar a troca de mensagens
entre aplicações e o REST (Representational State Transfer) que utiliza protocolo HTTP
(Hypertext Transfer Protocol) e XML (Extensible Markup Language) para efetuar a troca de
mensagens entre aplicações (SOAP, 2010).
24
A arquitetura SOA terá grande influência no processo de desenvolvimento dos sistemas de
informação estima-se que até 2008 haverá 70% de probabilidade do uso de SOA como prática
predominante de engenharia de software (MCCOY, 2003).
2.4.1
Web Service
Web Service é um termo utilizado para o componente de software que transmite dados no
formato XML para outros sistemas. Utilizando Web Service uma aplicação pode invocar um
serviço disponível em outra aplicação para efetuar uma tarefa integrando sistemas permitindo
sua interação independente de plataforma e linguagem de programação (SOMMERVILLE,
2006).
O Web Service é composto por três tecnologias o Protocolo de Acesso a Objeto Simples
(SOAP - Simple Object Access Protocol), a Linguagem de Descrição de Web Service (WSDL
- Web Service Description Language) e o Descritor Universal de Descoberta e Integração
(UDDI - Universal Description Discovery and Integration).
2.4.2
Descrição de Serviços
A Linguagem de Descrição de um Web Service (WSDL) faz uso de um arquivo XML para
descrever as características e comportamentos de Web Service. Algumas características são:
como o que o Web Service pode fazer, o servidor do Web Service e a forma como ele é
invocado.
2.4.3
UDDI - Descoberta e descrição de serviços
O UDDI é um contrato que define um padrão XML para que os Web Service sejam
descobertos por serviços de busca.
25
O padrão UDDI é reconhecido pela OASIS (Organization for the Advancement of Structured
Information Standards). A OASIS é uma organização sem fins lucrativos que conduz o
desenvolvimento e a adoção de padrões abertos para tecnologia da informação (OASIS,
2011). O UDDI é um serviço de registros de Web Service, sua finalidade é representar
metadados de serviços através de um padrão permitindo assim criar catálogos.
2.5
Breve análise de tecnologias de integração
Esta seção é dedicada a uma breve análise das tecnologias de integração.
2.5.1
CORBA e Web Service
CORBA é um padrão desenvolvido para permitir a criação de aplicações com objetos
distribuídos (OMG, 2010). Os Web Services são um padrão desenvolvido para disponibilizar
pequenos serviços no formato de procedimento remoto (SOAP, 2010).
A Tabela 1 expõe as vantagens e desvantagens da utilização de Web Service e suas
implicações.
Tabela 1 - Vantagens e desvantagens da utilização de Web Service.
Fonte: (SOAP, 2010).
Vantagens
Desvantagens
O Web Service é transparente do ponto de Em comparação com as chamadas RPC
vista do protocolo de comunicação entre existentes o protocolo SOAP, apresenta
cliente e o servidor.
uma menor eficiência.
Os Web Services utilizam um protocolo A troca efetuada entre sistema RPC é pelo
chamado SOAP, baseado em XML de fácil formato binário sendo que a troca de
leitura e fácil programação.
mensagens pelo protocolo SOAP e dada por
arquivo XML apresentando um menor
desempenho.
O protocolo SOAP atua sobre o protocolo Outro ponto agravante é a escolha do
26
HTTP, sendo, portanto transparente no protocolo de comunicação entre Web
ponto para os firewalls.
Service, se optarmos na arquitetura por
protocolos seguros como o SSL terá perda
em desempenho da aplicação em contra
partida se escolher protocolos simples com
o XML Signature teremos perdas efetivas
na segurança dessa informação.
A Tabela 2 expõe algumas vantagens e desvantagens da utilização de CORBA e suas
implicações.
Tabela 2 - Vantagens e desvantagens da utilização de CORBA.
Adaptado de: (OMG, 2010 ; BALBINO, 2010).
Vantagens
Desvantagens
O CORBA é um padrão que tem o Não tem implementação da camada ORA
diferencial de permitir objetos distribuídos para ambiente mainframe.
e não apenas procedimentos distribuídos
O CORBA pode trabalhar com o
A
camada
ORA
protocolo de GIOP, que possui diversos
relacionada à implementação do Stubs e
tipos de implementação como o IIOP (que
Skeletons, são implementações de interface
constitui do protocolo GIOP sobre
entre aplicativos cliente e servidores. Estas
TCP/IP) e o HTIOP (que constitui do
interfaces ficam diretamente ligadas à
protocolo GIOP sobre HTTP), esse último
linguagem
têm uma função similar ao protocolo
implementado.
que
está
o
diretamente
aplicativo
foi
SOAP/HTTP.
A independência de plataformas devido à Maior complexidade na implementação da
disponibilidade
tecnologia
da
CORBA,
principais atrativos.
camada
um
IDL
dos
na solução por estar diretamente ligada à
seus chamada de objetos distribuídos.
27
3
TECNOLOGIAS - BAIXA PLATAFORMA
Este capítulo apresenta de forma objetiva as tecnologias utilizadas para o desenvolvimento do
protótipo.
3.1
ICP Brasil
A Infra-estrutura de Chave Pública (ICP) é um conjunto de regras que regulamenta a emissão
de chave pública no Brasil. Sendo que somente algumas entidades têm autorização para emitir
um certificado digital que tenha valor jurídico nos termos da Medida Provisória nº 2.200-2, de
24.8.2001 (MOREIRA, 2004). Esta infra-estrutura foi desenvolvida pelo Instituto Nacional de
Tecnologia da Informação (ITI)
A divisão hierárquica do ICP-Brasil é dada por AC (Autoridade Certificadora) que são
entidades publicas ou privadas que emitem, distribuem, revogam e gerenciam (MOREIRA,
2004). As ARs (Autoridade de Registro) são entidades responsáveis pela interface entre
usuário e autoridades certificadoras, pois facilitam o recebimento, validação, encaminhamento
de solicitações de emissão ou revogação de certificados digitais para as AC (ITI, 2010),
conforme a Figura 3.
Figura 3 - Estrutura geral da ICP-Brasil.
Fonte: ITI, 2010.
28
3.2
Certificado Digital
Uma das tecnologias desenvolvidas pelo ITI é conhecida como certificado digital que por
meio de conceitos e técnicas computacionais como criptografia permite a criação de uma
assinatura digital garantindo aos documentos digitais, por exemplo, a nota fiscal eletrônica
aspectos como autenticidade, confidencialidade, integridade e não-repúdio de documentos e
transações comerciais (VERONESE, 2008).
A Autenticidade até então era restrita a documentos impressos e com reconhecimento de
firma, esse critério predispõe a identificação do emissor do documento permitindo a
conferencia caso seja necessária de quem emitiu a identificação da pessoa física ou jurídica
(VERONESE, 2008).
A confidencialidade de dados sigilosos, como dados pessoais e dados financeiros, tem suas
restrições de informação, destinada apenas ao emissor ou ao órgão responsável pela emissão
documento, para prevenção de fraudes e manipulação dessas informações. Antes dos adventos
digitais esses dados eram protegidos dentro de departamentos e ficavam restritos a pessoas
autorizadas. Hoje no caso de documentos digitais, esse requisito é feito por criptografia que
permite que o emissor da mensagem cifre a informação para que apenas o destinatário possa
compreendê-la, permitindo o sigilo entre dados confidenciais (ITI, 2010).
A integridade era efetuada por meio de não rasura e analise em documentos de identificação
para a validade da informação, garantindo que os dados fossem realmente pertinentes a pessoa
que os disponibilizavam, hoje esse processo acontece por meio de comparação feita por
algoritmos que testam o HASH de uma determinada informação para validar se não houve
alteração na mesma (ITI, 2010).
O não-repúdio é uma característica jurídica que da validade das informações contidas em um
documento e impele o receptor de negar a veracidade das informações contida naquele
documento. Uma de suas formas hoje utilizada é o reconhecimento de firma por um cartório
que garante a veracidade da informação ali inserida. Nos meios digitais, hoje esse processo é
feito por tecnologias com o uso do certificado digital, que possibilitam transações de
documentos na via digital, garantindo a veracidade das informações ali contidas
(VERONESE, 2008).
29
O Certificado digital é um documento que permite armazenar em seu interior informações
como:
a)
Chave pública
b)
Nome e endereço de e-mail
c)
Data de validade da chave pública
d)
Identificação da Autoridade Certificadora
e)
Número de série do Certificado Digital
f)
Assinatura digital da Autoridade Certificadora (AC)
A Figura 4 mostra como estas informações ficam disponíveis para um usuário.
Figura 4 - Dados de Identificação do Certificado digital.
Fonte: Microsoft Windows XP, 2010.
Na aba detalhes é possível notar todas informações do certificado digital incluindo
informações técnicas e computacionais, conforme a Figura 5.
30
Figura 5 - Todos os dados contidos no certificado digital, aba Detalhe
Fonte: Microsoft Windows XP, 2010.
3.3
Nota fiscal eletrônica (NF-e) estudo de Caso
As seções seguintes explicam de forma detalhada o funcionamento da NF-e.
3.3.1
Lei e objetivo do projeto
A nota fiscal eletrônica (NF-e) foi desenvolvida a partir da assinatura do protocolo de ENAT
03/2005 (27/08/2005). Este protocolo se baseou na lei complementar contida no Ato COTEPE
72/05, de 22/12/2005 (FAZENDA, 2011), a lei estabelece que:
a)
A substituição dos antigos modelos fiscais 1 e A1 por um documento
auxiliar da NF-e (DANFE) com validade jurídica.
b)
A validade jurídica dos documentos digitais e sigilo fiscal, por meio de
tecnologias
como
o
certificado
digital
que permita a integridade,
confiabilidade, autenticidade e não repudio dos dados fiscais emitidos.
c)
A Padronização no território nacional da NF-e, por meio de tecnologias
como o Web Service que possibilita os serviços de cancelamento, inutilização,
cadastro e consulta da NF-e (FAZENDA, 2011).
31
3.3.2
Conceito da nota fiscal eletrônica
A NF-e tem por objetivo ser um documento de emissão restrita ao meio digital para produtos
e prestações de serviços, garantindo a autenticidade dos dados fiscais por meio da assinatura
eletrônica através do certificado digital. A seguir a listagem de algumas das vantagens da NFe (ENATE, 2011):
a)
Redução da burocracia agilizando o processo de recolhimento de
impostos.
b)
Melhor acesso das informações por parte do fisco.
c)
Proposta de uma arquitetura altamente segura e com recursos
computacionais que garanta disponibilidade e elevado desempenho no acesso
as informações.
d)
Viabilizar o acesso à maior número de contribuintes para o
recolhimento de impostos.
e)
Favorecer a um ambiente único da secretaria da fazenda e a
centralização das informações em um único sistema digital nacional (ENATE,
2011).
3.3.3
O ambiente virtual da secretaria da fazenda (SEFAZ)
O ambiente da SEFAZ foi proposto para garantir um ambiente seguro com alta
disponibilidade e elevado desempenho computacional. Esse ambiente tem por objetivo
receber documentos digitais emitidos via internet usando o Web Service da SEFAZ. Este
documento digital é conhecido como NF-e (RECEITA, 2011).
O Web Service da SEFAZ promove o encapsulamento da lógica de negócio da NF-e. Os
padrões SOAP e XML são utilizados para possibilitar a comunicação de sistemas
heterogêneos com o ambiente virtual possibilitando assim a independência de plataforma
(CERAMI, 2002).
32
Após a emissão da NF-e para o ambiente virtual o Web Service da SEFAZ envia uma
resposta de rejeição ou autorização para o uso desta NF-e (RECEITA, 2011). A Figura 6
mostra o esquema de funcionamento do ambiente virtual da SEFAZ.
A arquitetura de serviços da SEFAZ virtual prevê os seguintes ambientes:
a)
Homologação – ambiente de teste sem validade jurídica disponibilizada
pela receita.
b)
Produção – ambiente normal de faturamento da receita, o mesmo
garante toda a validade legal dos dados nele faturado.
c)
Contingência – ambiente de contingência para casos de queda do
ambiente de produção ou algum problema técnico que inviabilize o envio de
NF-e para a receita (RECEITA, 2011).
Consulta resultado
Geração de NF-e
Contribuinte
INTERNET
Serv
Serv
...
Serv
NF-e
Fonte: SEFAZ adaptado, 2011.
- Consulta NF-e
http://www.nfe.fazenda.gov.br/portal
Portal
NF-e
- Recepção e Armazenamento da NF-e
Ambiente Nacional
- Recepção, Validação e Autorização da
Serv
Web Farm
SEFAZ Virtual
Ambiente SPED
NF-e
INTERNET
NF-e
NF-e
NF-e
SUFRAMA
SEFAZ
SEFAZ
33
Figura 6 – Funcionamento da SEFAZ virtual.
34
3.4
Web Service disponíveis no ambiente virtual da SEFAZ
Esta seção descreve os principais Web Services oferecidos pelo ambiente virtual da SEFAZ.
O serviço de recepção da NF-e será abordado com maior ênfase, pois será usado como
exemplo no protótipo.
3.4.1
Descrição da recepção da NF-e
A recepção de nota fiscal consiste no seguinte processo, o contribuinte efetua o envio de uma
NF-e já preenchida e assinada pelo certificado digital para o Web Service de nome
nfeRecepcaoLote da SEFAZ virtual. Após a requisição deste serviço a SEFAZ processa a NFe e devolve uma resposta no formato XML ao contribuinte. É possível obter as seguintes
respostas:
a)
Rejeição – A resposta de rejeição é dada quando há algum problema de
preenchimento dos campos do XML.
b)
Erro de XML – A resposta de erro é dado quando há falha de schema de
XML
c)
Autorização – A resposta de autorização é dada quando não existe
nenhuma falha de schema de XML e quando não existe erro de preenchimento
dos campos
A Figura 7 mostra o fluxo de envio de uma NF-e ao ambiente virtual da SEFAZ
Contribuinte
Web Service:
NfeRecepcao
Cliente NF-e
Envio do lote
da NF-e
SEFAZ
Filas de entrada
nfeRecepcaoLote
Processamento
Aplicação
NF-e
Recibo
Figura 7 – Processo de envioda NF-e ao ambiente virtual da SEFAZ.
Fonte: RECEITA adaptado, 2010.
35
3.5
Tecnologias para a aplicação desktop
Este seção aborda as tecnologias utilizadas na baixa plataforma para o desenvolvimento da
solução de integração. Será feita uma breve descrição das tecnologias e suas respectivas
origens.
3.5.1
J2EE
O Java edição empresarial (J2EE - Java to Enterprise Edition) é uma edição diferente da
edição Java Edição Padrão (JSE - Java Standard Edition). A plataforma J2EE é um ambiente
para desenvolvimento e distribuição de aplicações empresariais. Consiste de um conjunto de
serviços, interfaces de programação de aplicação (API) e protocolos que provêem
funcionalidades para desenvolvimento de aplicações multi-thread, tolerante a falhas, multicamada e aplicações baseadas em componentes modulares executando em um servidor de
aplicações Web (SUN, 2010).
3.5.2
XML
Linguagem de marcação extensível (XML) é um arquivo de formato texto simples para
representar uma informação estruturada como documentos, dados, configurações, livros,
transações entre outros. Seu padrão é derivado de um formato chamado SGML (W3C, 2010).
O XML é um dos formatos mais utilizados para compartilhar informação estruturada entre
programas, pessoas, computadores, tanto localmente quanto através da internet. O formato
XML é muito parecido com o formato HTML. O formato XML tem várias vantagens em
cima de outros formatos como:
a)
Redundância
b)
Autodescritivo
c)
Portabilidade
36
4
TECNOLOGIAS - ALTA PLATAFORMA
Neste capítulo serão apresentadas as principais características das ferramentas existentes no
ambiente mainframe que utilizadas para o desenvolvimento de uma parte do protótipo
responsável por se comunicar com a aplicação desktop. Dentre estas ferramentas foram
selecionadas IBM Websphere MQ, IBM Websphere MQ Client, IBM CICS TS3.1, COBOL e
DB2.
Estas ferramentas foram escolhidas, pois são ferramentas que disponibilizam as
funcionalidades básicas para o conceito de integração utilizando SOA na alta plataforma.
4.1
IBM Websphere MQ
IBM Websphere MQ (WMQ) é uma plataforma middleware que utiliza um modelo de
transporte assíncrono de dados desenvolvido pela IBM. Este middleware é utilizado para
transportar dados assegurando a entrega de mensagens utilizando uma API que suporta uma
variedade de linguagens de programação. Sua arquitetura é baseada em fila de mensagens que
se conectam com as mais variadas plataformas de hardware e sistemas operacionais
(RAYNS).
4.2
IBM Websphere MQ Client
Websphere MQ Client é um componente do Websphere MQ que pode ser instalado em
ambientes que não exista um gerenciador de fila sendo executado. A aplicação permite que
outra aplicação se conecte a um gerenciador de fila e faça chamadas de comandos da API do
WMQ como, por exemplo, a inserção e leitura de mensagens nas filas de mensagens que estão
sendo executados em outro ambiente. A comunicação entre cliente e servidor é feita
utilizando um canal de comunicação chamado MQI, este canal é responsável por manter a
conexão ativa entre cliente e servidor. A Figura 8 a conexão de uma aplicação que utiliza
WMQ (WMQC, 2010).
37
Figura 8 - Canal de comunicação cliente servidor de uma aplicação WMQ.
Fonte: WMQC, 2010.
4.3
IBM CICS TS3.2
CICS é um poderoso monitor de transação responsável por processar milhares de requisições
em mainframes IBM. Suporta um grande volume de transações oferecendo um tempo rápido
de resposta. É utilizado tanto em pequenas aplicações quanto em grandes aplicações
empresarias como softwares voltados para bancos (IBM, 2010).
O CICS possuí várias características relacionadas a ambientes de transação como
gerenciamento de concorrência, compartilhamento de recursos, integridade de dados,
priorização de trabalho, suporte para aplicações de escritas em linguagens como COBOL, C,
C++, PL/I, Java e Assembler. Possuí também interoperabilidade com o IBM Websphere MQ.
4.4
COBOL
Cobol é uma linguagem de programação de alto nível desenvolvida primeiramente em 1960
por uma conferência chamada CODASYL Committee (Conference on Data Systems
Languages). A responsabilidade de desenvolver novos padrões da linguagem foi assumida
pela ANSI(American National Standards Institute) que produziu outros três padrões da
linguagem nos anos de 1968, 1974 e 1985. A palavra COBOL é o acrônimo de Common
Bussiness Oriented Language. A linguagem é voltada para aplicações de negócios,
principalmente para processamento de arquivos. Sua estrutura contém palavras oriundas da
38
língua inglesa, o principal objetivo é possibilitar que qualquer pessoa que não fosse
programador pudesse ler um código em COBOL. O COBOL é uma linguagem simples que
não contém ponteiros, não existe funções definidas por usuários e não têm tipos definidos por
usuários, não é uma linguagem proprietária, portável para várias plataformas (CSIS, 2010).
A linguagem COBOL tem sido uma das linguagens mais utilizadas nos negócios. Em um
relatório publicado pelo grupo Gartner estimou-se que em 1997 existiam em torno de 240
bilhões de linhas de código escritas em COBOL no mundo (BROWN, 2010) e que 50% das
aplicações de missão crítica em 1999 eram desenvolvidas em COBOL.
Aplicações feitas em COBOL são caracterizadas de longa duração, freqüentemente
executadas em área críticas de negócios como bancos e instituições governamentais. Em torno
de 95% dos dados de bancos são processados com COBOL.
4.5
DB2
DB2 é um sistema gerenciador de banco de dados (SGBD) relacional desenvolvido pela IBM
que primeiramente rodava em sistemas Unix, mainframes e plataformas AS/400.
O DB2 foi o primeiro banco de dados desenvolvido a utilizar a teoria do banco de dados
relacional que foi desenvolvida por E.F. Codd. Codd enquanto membro da IBM publicou sua
teoria em junho de 1970, junto com sua teoria Codd desenvolveu uma linguagem para
manipular dados ralacionais que mais tarde foi chamada de SQL (WATTERSON, 2010).
O DB2 pode ser administrado tanto em linha de comando quanto em interface gráfica, possui
também APIs para várias linguagens de programação como REXX, PL/I, COBOL,
FORTRAN, C++, C Java e várias outras linguagens.
4.6
Rational for System Z
O IBM Rational Development for System Z (RDZ) é um ambiente de desenvolvimento
integrado (IDE – Integrated Development Enviroment) com foco em aplicações voltadas para
mainframe. Com o RDZ é possível desenvolver aplicações nas mais dirversas linguagens para
mainframe como: COBOL, PL/I, C, C++, Assembler, JCL, REXX e Java (RATIONAL,
2010).
39
Sua interface permite a simples interação com os subsistemas que são executados no
mainframe como CICS, IMS, DB2, Operações de controle do Lote, Z/OS Unix e os ambientes
de transação Websphere. A Figura 9 mostra a interface do RDZ (RATIONAL, 2010).
40
Figura 9 – Exemplo código COBOL com RDZ.
Fonte: RATIONAL, 2010.
41
5
IMPLEMENTAÇÃO DO PROTÓTIPO
Este capítulo irá aborda os detalhes de implementação do protótipo emissor de nota fiscal
eletrônica, detalhando suas funcionalidades e o fluxo de dados realizado pela nota eletrônica
na arquitetura proposta.
O protótipo será apresentado da seguinte forma: Arquitetura de integração e Protótipo do
Sistema.
5.1
Arquitetura de integração
Esta seção demonstrará de forma detalhada como as ferramentas descritas no capítulo 4 serão
utilizadas para construir a arquitetura responsável pela comunicação da aplicação desktop com
o mainframe.
A arquitetura de integração é dividida em 2 camadas para possibilitar o fluxo de uma
mensagem do emissor desktop de nota fiscal eletrônica para uma fila de mensagem do
mainframe.
5.1.1
Arquitetura de comunicação da camada Desktop
A estrutura construída no lado desktop compreende dois aplicativos, o emissor de nota fiscal
eletrônica e Websphere MQ Client.
O emissor de nota fiscal eletrônica é desenvolvido em Java Swing e é composta de duas
funcionalidades. A primeira funcionalidade se constitui do carregamento de uma nota fiscal
eletrônica preenchida no formato xml para dentro do emissor. A segunda funcionalidade é o
envio do arquivo em formato xml para uma fila de entrada de mensagens ao IBM Websphere
MQ no mainframe utilizando como intermediário desta conexão a API do aplicativo IBM
Websphere MQ Client. A Figura 10 ilustra como é feita a comunicação da plataforma desktop
com o mainframe para o envio de um arquivo xml.
42
MAINFRAME
APLICAÇÃO DESKTOP
Envio de mensagem
Websphere MQ
Fila de entrada
Websphere MQ Client
Retorno de mensagem
Fila de saída
Figura 10 – Arquitetura de integração da aplicação desktop com o mainframe.
5.1.2
Arquitetura de comunicação da camada mainframe
Na plataforma mainframe foi criado duas estruturas para permitir o fluxo do arquivo xml de
uma nota fiscal eletrônica enviada a partir da aplicação desktop para o Web Service da
SEFAZ.
A primeira estrutura são duas filas de mensagens. Uma fila de entrada e uma fila de saída.
Estas filas de mensagens foram criadas utilizando o IBM Websphere MQ. As filas de
mensagens funcionam como um repositório de dados, pois possibilitam que outros
componentes de software envolvidos na arquitetura consumam estes dados deixados nestas
filas como, por exemplo, o IBM CICS Transaction Server 3.2.
A segunda estrutura criada é uma simples aplicação COBOL desenvolvida para consumir os
dados da fila de entrada do IBM Websphere MQ e enviar para a SEFAZ. A Figura 11
exemplifica a interação das duas estruturas criadas no mainframe.
43
MAINFRAME
Websphere MQ
Fila de entrada
Envio da NF-e
Retorno da NF-e
Fila de saída
AMBIENTE SEFAZ
Web Service:
NfeRecepcao
CICS TS
Retorno da NF-e
nfeRecepcaoLote
Aplicação COBOL
Envio da NF-e
Figura 11 – Processo de envio da NF-e para o mainframe.
5.2
Projeto e implementação do protótipo
Nas próximas seções será apresentado o projeto de implementação do protótipo emissor de
nota fiscal eletrônica.
5.2.1
Aplicação desktop
A aplicação desktop apresenta os seguintes componentes: classes Java implementando a
interface gráfica baseada em Java Swing, classes Java de conexão às filas de mensagem
implementando as funcionalidades da API do IBM Websphere MQ Client e uma classe Java
implementando uma thread para envio e retorno da NF-e.
44
A interface gráfica contém um campo para indicar o caminho de entrada do arquivo xml junto
com um botão pra selecionar e carregar a NF-e dentro do emissor. Há uma tabela na interface
que exibe as entradas de NF-e realizadas no emissor. A Figura 12 representa a seleção de uma
NF-e no emissor.
Figura 12 – Seleção de um arquivo XML da NF-e preenchida.
A classe ConexaoFilaMensagem.java, responsável pela conexão às filas de mensagem, foi
implementada utilizando a API do IBM Websphere MQ Client. Esta classe contém todos os
métodos para conexão, envio e recebimento das mensagens vindas do IBM Websphere MQ
no mainframe. A classe ConexaoFilaMensagem.java é apresentada na Figura 13.
45
public class ConexaoFilaMensagem {
private String hostname = "172.24.200.66";
private String channel = "CLIENT.CONN.PFRANCA";
private String qManager = "WMQA";
private MQQueueManager qMgr;
private MQQueue filaEntrada;
private MQMessage msgSaida;
private MQMessage msgEntrada;
public ConexaoFilaMensagem(){
MQEnvironment.hostname = hostname;
MQEnvironment.channel
= channel;
MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,
QC.TRANSPORT_MQSERIES_CLIENT);
}
public void conectar(String queue) throws MQException {
//cria a conexão com a queue manager
qMgr = new MQQueueManager(qManager);
int openOptions = MQC.MQOO_INPUT_AS_Q_DEF |
MQC.MQOO_OUTPUT;
filaEntrada = qMgr.accessQueue(queue, openOptions);
}
Figura 13 – Código Fonte da implementação da classe ConexaoFilaMensagem.java.
A classe Consulta.java implementa uma thread. Seu objetivo é fazer a chamada dos métodos
de envio e recebimento de mensagens da classe ConexaoFilaMensagem.java. Esta thread é
disparada de cinco em cinco segundos. A classe Consulta.java é apresentada na Figura 14.
46
public class Consulta extends Thread{
private TelaPrincipal tela;
public Consulta(TelaPrincipal tela){
super();
this.tela = tela;
}
@Override
public void run(){
while(true){
try {
tela.getConexaoMQ().enviarMensagem();
tela.getConexaoMQ().receberMensagem();
Thread.sleep(5000);
} catch (InterruptedException ex) {
System.out.println("Erro na Thread!");
ex.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (MQException e) {
e.printStackTrace();
}
}
}
}
Figura 14 – Código Fonte da implementação da classe Consulta.java.
Na figura 15 são apresentadas as principais classes que compõem a aplicação desktop. A
partir desta figura é possível ter a visão geral do relacionamento entre as classes.
47
Figura 15 – Diagramas de classe da aplicação desktop
48
5.2.2
Aplicação mainframe
A aplicação no mainframe é dividida em dois componentes: as definições das filas de
mensagem no IBM Websphere MQ e o componente para requisitar o Web Service da SEFAZ
escrito em COBOL utilizando as chamadas da API do IBM CICS Transactional Server.
As filas de mensagem foram definidas através do terminal de administração do WMQ no
mainframe. Foram definidas duas filas, uma de entrada chamada ENTRADA.FILA.NFE e
outra de saída chamada SAIDA.FILA.NFE. Estas definições servem para alocar as
requisições das NF-es vindas da aplicação desktop e as respostas vindas do Web Service da
SEFAZ, respectivamente. A Figura 15 apresenta o terminal de administração do WMQ.
Figura 16 – Tela de administração do WMQ.
O NFERECEP.cbl é o componente escrito em COBOL. Seu código possui chamadas da API
do CICS para requisitar o Web Service da SEFAZ de nome nfeRecepcaoLote. O objetivo do
NFERECEP.cbl é consumir a fila de entrada das NF-es, enviá-las para a SEFAZ e escrever a
resposta do Web Service na fila de saída do WMQ. A Figura 16 apresenta parte do código do
componente NFERECEP.cbl.
49
Figura 17 – Código Fonte do componente NFERECEP.cbl
50
6
CONCLUSÕES
Neste capítulo são apresentadas as considerações finais deste trabalho. A seção 6.1
apresentará as contribuições, conclusões e as experiências obtidas. A seção 6.2 apresenta
sugestões para trabalhos futuros.
6.1
Contribuições e Conclusões
Este trabalho propôs uma alternativa de integração de uma aplicação desktop Java com uma
aplicação disponível no ambiente mainframe utilizando um conjunto ferramentas e soluções
da IBM. Foi utilizado como estudo de caso o projeto da nota fiscal eletrônica do governo do
estado de São Paulo.
O trabalho proporcionou as seguintes contribuições:
a)
Uma arquitetura de integração entre uma aplicação desktop e a alta
plataforma;
b)
Apresentar algumas ferramentas e tecnologias do ambiente mainframe;
c)
Uma proposta de arquitetura de integração entre a baixa e alta
plataforma para o projeto da nota fiscal eletrônica.
A partir destas contribuições, pode se concluir que:
a)
A partir de estudos e análises dos softwares existentes no mercado foi
possível criar uma estrutura de comunicação entre aplicações em plataformas
distintas.
b)
A utilização do mainframe oferece robustez ao sistema visto que as
soluções de nota fiscal eletrônica existente no mercado não possuem
implementação de componentes em mainframe.
51
6.2
Trabalhos Futuros
Para trabalhos futuros sugere-se:
a)
Complementação do protótipo com o desenvolvimento de outras
funcionalidades do Web Service da SEFAZ; e
b)
Persistência de dados em banco de dados no mainframe.
52
REFERÊNCIAS BIBLIOGRÁFICAS
BALBINO,
Souza
Junior;
ALANIS,
E.
Objetos
Distribuídos.
http://www.inf.unisinos.br/~barbosa/paradigmas/consipa2/artigos/a2.pdf.
Disponível
em:
Acesso em 6 de abr. 2010.
BROWN, Gary DeWard; COBOL: The failure that wasn´t. Disponível em: http://
COBOLReport.com.
Acesso em 16 de junho de 2010.
CERAMI, Ethan. Web Services Essentials, Editora: O`Reilly, 2002, 9 pg, 3pg, ISBN:
0596002246.
CSIS, Departament of Conputer Science and Information Systems. Disponível em:
http://www.csis.ul.ie/COBOL/Course/COBOLIntro.htm. Acesso em 16 de junho de 2010.
EDWARDS, J. 3-Tier Client/ Server at work, Editora: John Wiley, 1997, 147 pg, ISBN:
0471184438.
ENATE,
Legislação
da
Nota
Fiscal
Eletrônica.
Disponível
em:
http://portalnfe.fazenda.mg.gov.br/downloads/legislacao_protocolo_enat_03_2005.pdf.
Acessado em 28 de março de 2011.
FAZENDA,
Portal
da
Nota
Fiscal
Eletrônica,
Fazenda.
Disponível
em:
http://portalnfe.fazenda.mg.gov.br/legislacao.html. Acessado em 28 de março de 2011.
IBM,
CICS
Transaction
Server
for
Z/OS
V3.2.
01.ibm.com/software/htp/cics/tserver/v32/features.html?S_CMP=rnav.
ITI,
Definições
da
ICP-Brasil,
Disponível
em:
http://www-
Acesso em 29 de nov. 2010.
Disponível
em:
http://www.iti.gov.br/twiki/bin/view/Certificacao/CertificadoConceitos. Acessado em 23 de
julho de 2010.
MARINHO, B. L.; SORDI, J. O.; NAGY M. Benefícios da arquitetura de software orientada
a serviços para as empresas: Análise da experiência do ABN AMRO Brasil. Revista de
Gestão da Tecnologia e Sistemas de Informação. v. 3, n. 1, p. 19-34, 2006.
53
MCCOY, D. W.; NATIS, Y. V. Service-Oriented Architecture: Mainstream Straight Ahead.
Gartner Research. 2003.
MOREIRA, Rogério de M. Fialho, A Implantação dos Juizados Virtuais na 5ª Região, Revista
ESMAFE – 5ª. n. 7, p. 52-54, 2004.
OASIS, Organization for the Advancement of Structured Information Standards. Disponível
em: http://www.oasis-open.org/org. Acesso em 15 de julho de 2011.
OMG,
Object
Management
Group.
Disponível
em:
http://www.omg.org/gettingstarted/gettingstartedindex.htm . Acesso em 18 de novembro de
2010.
RATIONAL, IBM. Disponível em:
http://www-01.ibm.com/software/rational/products/developer/systemz/java/features/?S_CMP=wspace
. Acesso
em 15 de dezembro de 2010.
RAYNS, C.; CAREY, D.; GARDNER, A.; NOTT, J.; SIMCOCK, A. Developing web
services using CICS, WMQ, and WMB, Editora: Redbooks, 2007, 8 pg, ISBN: 0738489239
RECEITA, Manual de Integração da Receita Federal - Contribuinte Padrão Técnico de
Comunicação,
versão
4.01,
10pg,
http://www.nfe.fazenda.gov.br/PORTAL/integracao.aspx.
67pg.
Acessado
Disponível
em
27
em:
abril
de
Novembro de 2011.
RONAYNE, M. L.; TOWNSEND, E. S. A Case Study: Distributed Object Technology at
Wells Fargo Bank. A Cushing group white paper, 1996.
SEFAZ, Orientação de Utilização do Sefaz Virtual, Ambiente Nacional para empresas, versão
1.0, 2pg. Disponível em:
http://www.aprobatoneto.com.br/downloads/ManualSEFAZ.pdf.
Acessado em 26 de abril 2011.
SOMMERVILLE, I. Software Engineering 8th Edition, Editora: Addison Wesley, 2006 285
pg, ISBN: 0321313798.
54
SUN, J2EE. Disponível em: http://java.sun.com/javaee/reference/glossary/index.jsp. Acesso em 23 de
julho de 2010.
THECHTERMS, Disponível em: http://www.techterms.com/definition/mainframe. Acessado
em 18 de julho de 2010.
THACKER, C. P. et al. Alto: A personal computer. Computer Structures: Principles and
Examples, New York, v. 2, p. 549-572, 1979.
VERONESE, A. Segredo e democracia: certificação digital e software livre. Revista
Informática Pública. Belo Horizonte. Ano 2008. n. 02.
WATTERSON,
Karen.
DB2
Does
Data.
Disponível
em:
http://www.windowsitpro.com/article/product-review/db2-does-data/2. Acessado em 15 de
julho de 2010.
WMQC,
IBM
WebSphere
MQ
V7.0.0
information
http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0m0/index.jsp.
center.
Disponível
em:
Acessado em Novembro de 2010.
W3C, SOAP Version 1.2. Disponível em: http://www.w3.org/TR/2007/REC-soap12-part0-20070427/.
Acesso em 20 de abr. 2010.
W3C, XML. Disponível em: http://www.w3.org/standards/xml/core. Acesso em 24 de julho de
2010.
Download

integrando uma solução de baixa plataforma com mainframe