________________________________________________________
PAULO HENRIQUE CRUZ JUNIOR - MESTRE
________________________________________________________
LUDMILA CANUTO DE MELO FERREIRA SALIMENA – ESPECIALISTA
________________________________________________________
ROGÉRIO MARINKE - ESPECIALISTA
___/___/___
DATA DE APROVAÇÃO
iii
AGRADECIMENTOS
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.
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.
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
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.3 Metodologia
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.
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.
CICS alimenta as filas de mensagens com as respostas da SEFAZ de cada nota fiscal
eletrônica emitida na aplicação desktop.
As seções seguintes explicam a arquitetura CORBA e sua integração com outras plataformas.
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).
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).
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).
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).
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
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 (HP-
UX), 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.
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).
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
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).
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.
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.
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
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 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).
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
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 NF-
e (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).
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).
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).
SEFAZ
Ambiente SPED
SEFAZ Virtual
Web Farm
NF-e
...
Contribuinte
Serv Serv Serv Serv NF-e
SEFAZ
- Recepção, Validação e Autorização da
NF-e NF-e
INTERNET INTERNET
Ambiente Nacional
NF-e
- Recepção e Armazenamento da NF-e
Geração de NF-e
Consulta resultado
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.
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 NF-
e 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 SEFAZ
Web Service:
NfeRecepcao Filas de entrada
Envio do lote
da NF-e nfeRecepcaoLote Processamento
Cliente NF-e
Aplicação
NF-e
Recibo
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, multi-
camada e aplicações baseadas em componentes modulares executando em um servidor de
aplicações Web (SUN, 2010).
3.5.2 XML
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.4 COBOL
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.
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
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.
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 estrutura construída no lado desktop compreende dois aplicativos, o emissor de nota fiscal
eletrônica e Websphere MQ Client.
Retorno de mensagem
Fila de saída
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
Fila de saída
Envio da NF-e
Retorno da NF-e
AMBIENTE SEFAZ
Web Service:
NfeRecepcao
CICS TS
Retorno da NF-e
nfeRecepcaoLote
Aplicação COBOL
Envio da NF-e
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.
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);
}
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
@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();
}
}
}
}
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.
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.
REFERÊNCIAS BIBLIOGRÁFICAS
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.
EDWARDS, J. 3-Tier Client/ Server at work, Editora: John Wiley, 1997, 147 pg, ISBN:
0471184438.
IBM, CICS Transaction Server for Z/OS V3.2. Disponível em: http://www-
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
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