Translate

terça-feira, 9 de junho de 2015

☕🔥 LABORATÓRIO PRÁTICO — IBM Integration Bus (Broker) Integrando COBOL/MQ com JSON REST

 

Bellacosa Mainframe e o laboratorio de ibm integration bus (broker)


☕🔥 LABORATÓRIO PRÁTICO — IBM Integration Bus (Broker) Integrando COBOL/MQ com JSON REST

Este laboratório simula um cenário REAL de mercado:

Um sistema COBOL no mainframe envia uma mensagem MQ em formato legado, e o IBM Integration Bus (IIB/ACE) transforma tudo em JSON para APIs modernas.

Você aprenderá:

✅ fluxo completo
✅ MQ Input
✅ transformação EBCDIC/Copybook → JSON
✅ ESQL
✅ Message Flow
✅ deploy
✅ testes
✅ troubleshooting


🎯 CENÁRIO DO LAB

Sistema legado (Mainframe)

Envia:

000123JOAO      0000500

Formato:

  • posição fixa

  • padrão COBOL

  • MQ


Broker/IIB/ACE

Recebe:

  • MQ Queue

Transforma:

  • fixed length

  • copybook lógico

  • JSON

Entrega:

  • API REST

  • ou outra fila MQ


🏗️ ARQUITETURA

COBOL Batch/CICS
       ↓
     IBM MQ
       ↓
 MQINPUT NODE
       ↓
 COMPUTE NODE (ESQL)
       ↓
 JSON OUTPUT
       ↓
HTTP/MQ/API

📦 PASSO 1 — PREPARAR O AMBIENTE

Você precisará:

ComponenteFunção
IBM MQMensageria
IBM ACE/IIBIntegração
ToolkitDesenvolvimento
Queue ManagerFilas
MQ ExplorerAdministração

📌 FILAS DO LAB

Entrada

LAB.INPUT

Saída

LAB.OUTPUT

⚙️ PASSO 2 — CRIAR AS FILAS MQ

Script MQSC

DEFINE QLOCAL(LAB.INPUT)
DEFINE QLOCAL(LAB.OUTPUT)

▶️ EXECUTAR

Linux:

runmqsc QM1 < filas.mqsc

Windows:

runmqsc QM1

Cole os comandos.


🔥 PASSO 3 — CRIAR O PROJETO NO ACE TOOLKIT

Novo Application

File → New → Application

Nome:

LAB_MAINFRAME_JSON

🔥 PASSO 4 — CRIAR MESSAGE FLOW

Novo Message Flow

MF_MAINFRAME_JSON

🧩 PASSO 5 — ADICIONAR NODES

Arraste:

NodeFunção
MQInputReceber MQ
ComputeTransformar
MQOutputEnviar saída

🔗 CONECTAR

MQInput → Compute → MQOutput

⚙️ PASSO 6 — CONFIGURAR MQINPUT

Queue Name

LAB.INPUT

Queue Manager

QM1

⚙️ PASSO 7 — CONFIGURAR MQOUTPUT

Queue

LAB.OUTPUT

🧠 PASSO 8 — CRIAR O ESQL

Compute Node

Clique:

Open ESQL

✨ CÓDIGO COMPLETO

CREATE COMPUTE MODULE MAINFRAME_TO_JSON

CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN

    DECLARE MSG CHAR;
    
    SET MSG = CAST(InputRoot.BLOB.BLOB AS CHAR CCSID 1208);

    DECLARE CONTA CHAR;
    DECLARE NOME  CHAR;
    DECLARE SALDO CHAR;

    SET CONTA = SUBSTRING(MSG FROM 1 FOR 6);
    SET NOME  = TRIM(SUBSTRING(MSG FROM 7 FOR 10));
    SET SALDO = SUBSTRING(MSG FROM 17 FOR 7);

    CREATE FIELD OutputRoot.JSON.Data;

    SET OutputRoot.JSON.Data.conta = CONTA;
    SET OutputRoot.JSON.Data.nome  = NOME;
    SET OutputRoot.JSON.Data.saldo = CAST(SALDO AS INTEGER);

    RETURN TRUE;

END;

END MODULE;

🧠 O QUE ESSE ESQL FAZ?


📌 PASSO A PASSO DA LÓGICA

1️⃣ Recebe o BLOB MQ

SET MSG = CAST(InputRoot.BLOB.BLOB AS CHAR CCSID 1208);

Converte:

  • bytes MQ

  • para texto


2️⃣ Extrai os campos

Conta

SET CONTA = SUBSTRING(MSG FROM 1 FOR 6);

Pega:

000123

Nome

SET NOME = TRIM(SUBSTRING(MSG FROM 7 FOR 10));

Pega:

JOAO

Saldo

SET SALDO = SUBSTRING(MSG FROM 17 FOR 7);

Pega:

0000500

📌 MONTA JSON

SET OutputRoot.JSON.Data.conta = CONTA;

Cria:

{
  "conta": "000123"
}

🚀 RESULTADO FINAL

Mensagem saída:

{
  "conta": "000123",
  "nome": "JOAO",
  "saldo": 500
}

🔥 PASSO 9 — DEPLOY

Clique direito

Deploy → Integration Server

📦 PASSO 10 — TESTAR

Enviar MQ Message

Use:

amqsput LAB.INPUT QM1

Digite:

000123JOAO      0000500

ENTER
ENTER novamente.


📥 VERIFICAR SAÍDA

amqsget LAB.OUTPUT QM1

🎉 RESULTADO

{
  "conta":"000123",
  "nome":"JOAO",
  "saldo":500
}

🔥 O QUE VOCÊ APRENDEU AQUI?

Você criou:

✅ integração real
✅ transformação legado → moderno
✅ parsing de layout COBOL
✅ transformação JSON
✅ fluxo MQ
✅ ESQL
✅ Message Flow


🧠 CENÁRIOS REAIS DE MERCADO

Esse padrão é MUITO usado para:

LegadoModerno
COBOLAPI REST
VSAMJSON
CICSCloud
MQKafka
DB2Microservices

🚨 PROBLEMAS COMUNS

❌ CCSID errado

Erro clássico:

caracteres estranhos

Solução:

  • validar UTF-8

  • EBCDIC

  • CCSID MQ


❌ Campo deslocado

Exemplo:

JOAO indo para saldo

Problema:

  • posições incorretas


❌ JSON vazio

Problema:

  • OutputRoot errado


❌ MQInput não lê

Verificar:

  • queue manager

  • channel

  • listener

  • permissões


🔥 LAB AVANÇADO (PRÓXIMOS PASSOS)

Você pode evoluir para:

✅ Copybook COBOL real
✅ XMLNSC
✅ SOAP
✅ REST API
✅ Kafka
✅ integração DB2
✅ CICS Web Services
✅ SAP IDoc
✅ HTTPS OAuth2
✅ JWT
✅ transformação XML ↔ JSON


🏆 DESAFIO EXTRA

Transforme este layout:

000123JOAO      00005000000100SP

Em:

{
  "conta":123,
  "nome":"JOAO",
  "saldo":500,
  "agencia":100,
  "estado":"SP"
}

☕🔥 CONCLUSÃO

Esse laboratório mostra exatamente:

como o IBM Integration Bus/ACE virou a ponte entre o mundo COBOL/mainframe e o universo APIs/cloud.

É literalmente:

✅ legado falando moderno
✅ MQ falando REST
✅ EBCDIC falando JSON
✅ mainframe conectado ao futuro 🚀


Sem comentários:

Enviar um comentário