Uso do MDS (MetaData Service) no Oracle SOA Suite

O Oracle SOA Suite, solução da Oracle para integração de sistemas e automação de processos, na sua versão 11g, trouxe muitas novidades, se compararmos com a versão 10g. Uma delas foi o MDS, ou o MetaData Service. Nesse post vamos falar sobre ele, procurando esclarecer para que serve e como utilizá-lo.

Definição
O MDS é um repositório unificado para armazenamento de arquivos (metadados) usados nos projetos do SOA Suite. Quando, por exemplo, um projeto BPEL ou BPM é implementado (deploy) os seus arquivos são armazenados no MDS.

Além disso, é possível utilizar o MDS para outros fins, como, por exemplo, compartilhar artefatos comuns entre os vários projetos, sejam eles schemas XML (XSD), arquivos EDL, DVM ou WSDL.

Porque usar o MDS para artefatos comuns?
O MDS provê maior segurança e melhor manutenção dos artefatos comuns aos projetos do SOA Suite. Existe total compatibilidade com o JDeveloper (IDE de desenvolvimento) para visualizar o conteúdo do repositório e total compatilidade do EM para a sua manutenção.

Um exemplo de situação que justifica o uso do MDS é quando um arquivo XSD é compartilhado por vários projetos, o que ocorre com certa freqüência quando utilizamos modelos canônicos. Ter uma cópia desse arquivo em cada projeto pode gerar um problema de manutenção (pensemos que, cada nova versão do arquivo deveria ser replicada 10, 20 vezes, dependendo da quantidade de projetos envolvidos na integração). Se utilizamos o MDS, os projetos envolvidos farão uma referência para ele no repositório e, sempre que o arquivo XSD for atualizado, automaticamente todos os projetos também estarão atualizados.

Como utilizar o MDS
Existem duas versões do MDS: uma armazenada em forma de arquivos e outra registrada no banco de dados (servidor). A primeira é usada para o desenvolvimento e pode ser salva, por exemplo, num repositório subversion (GIT, SVN, CVS, TFS, etc), de forma que todos os desenvolvedores tenham acesso ao conteúdo.

A versão do banco de dados, por sua vez, será aquela utilizada pelo servidor SOA Suite, que estará rodando sobre um server Weblogic. Assim será necessário implementar (deploy) o conteúdo dos arquivos no banco de dados para que o servidor tenha acesso ao conteúdo atualizado pelos desenvolvedores.

Cada projeto utiliza um padrão próprio para implantação (deploy) dos projetos no servidor SOA Suite. Esse artigo explica como criar a árvore de arquivos e como atualizar o MDS da maneira nativa, ou seja, via JDeveloper.

Uma vez que o MDS esteja configurado e com o conteúdo armazenado, a referenciação dentro do projeto é bastante simples, bastando informar, na localização, o caminho completo dentro do MDS e incluindo o prefixo oramds. Veja no exemplo:

  • Para referenciar o XSD que está no caminho apps/MyCannonical: oramds:/apps/MyCannonical.xsd
  • Para referenciar um WSDL:

 

Utilizar o MDS em projetos SOA Suite é uma opção de arquitetura que pode simplificar muito o desenvolvimento. Porém, é necessário que exista um forte controle das atualizações dos arquivos locais e do banco de dados. Trabalhar com multi-desenvolvedores também pode causar algum tipo de transtorno caso isso não ocorra.

Podem haver problemas, também, no uso compartilhado do conteúdo do repositório. Indispensável dizer que deve haver uma preocupação muito grande quando esses artefatos forem atualizados, evitando incompatibilidade com outros projetos.

Quando usar o OSB, Oracle BPEL ou Oracle BPM

Estivemos presentes no Oracle Open World Brasil 2012 e tivemos a oportunidade de ter uma agradável conversa com um consultor da Oracle sobre uma dúvida recorrente entre os nossos clientes. Por mais que saibamos para ‘que serve’ cada produto, muitas vezes, em projetos de automação de processos e de integração de sistemas, existe a dúvida: quando utilizar OSB, Oracle BPEL e Oracle BPM?

Usando do expertise da iProcess e da Oracle buscamos alguns pontos que podem ajudar na tomada de decisão. São eles:

  • BPEL e BPM possuem a auditoria completa da execução da instância de orquestração e do processo automatizado. Assim, se o serviço precisa de auditoria, sugere-se escolher um deles. OSB não tem esse requisito.
  • O seu projeto vai produzir eventos que irão ser integrados ao Oracle BAM? BPEL e BPM possuem esse recurso e o desenvolvimento é rápido e fácil com ele. OSB, não.
  • É necessário utilizar o error hospital, incluindo a ressubmissão de mensagens etrace completo no caso de erro? Essa também é uma característica do BPEL e BPM.
  • BPEL/BPM são stateful (guarda o estado do processo) e OSB é stateless (não guarda o estado do processo). Ou seja, caso seja necessário ter uma execução de longa duração (de alguns minutos a vários dias) que aguarde eventos intermediários e tome decisões baseado no estado atual do processo e mais os dados do evento recebido, deve-se utilizar BPEL/BPM. Caso a execução leve apenas alguns segundos e todas as decisões ocorram apenas com base nos dados recebidos no momento da chamada, pode-se utilizar OSB. Para saber mais sobre stateless/stateful, veja esse artigo.
  • O projeto prevê a existência de tarefas humanas? Opte por BPM. O BPEL também é uma alternativa (já que a infraestrutura do SOA Suite é a mesma para ambos). OSB não possui esse recurso.
  • Entre BPM e BPEL, qual escolher? Ambos são ótimas soluções. No caso de não haver grande diferença entre um e outro, hoje em dia sugere-se utilizar o BPM pela simplicidade no aprendizado e na pouca quantidade de código envolvido. O BPEL ainda necessita um conhecimento mais aprofundado de XML e seus correlatos. Outro ponto é que BPM usa BPMN como notação para representar o fluxo do processo, que é muito mais facil de ser compreendida pelo negócio tanto no desenho do processo a ser automatizado quanto no acompanhamento da execução das instâncias.
Certamente muitos outros aspectos devem ser considerados nessa tomada de decisão, incluindo o tempo de processamento do serviço, se ele será síncrono ou assíncrono, etc. Mas os pontos acima podem ser úteis para, ao menos, eliminar uma ou outra opção.
(Com a contribuição de Leonardo Fagundes, Kelly Sganderla e Rafael Andrade).

Caso de Sucesso – Aumento da produtividade e efetividade nos negócios do SICREDI com a adoção de SOA e BPM

Marcio Lermen, gerente de tecnologia do Sicredi

Durante o Oracle Open World 2012 em São Paulo, Marcio Lermen, gerente de tecnologia do Sicredi, apresentou como caso de sucesso a adoção da suíte de SOA e BPM da Oracle para a automação dos processos da organização e o uso do Oracle Exalogic como plataforma de hardware e software para dar alta performance a esta suíte.

De acordo com Marcio, a escolha destas tecnologias foi feita dado o desafio que o Sicredi tinha quanto a decisões e processos manuais em um cenário de negócio complexo, em que os processos estão distribuídos entre as cooperativas do sistema. A adoção destas tecnologias viabilizou o redesenho e automação dos processos, apresentando excelentes ganhos no controle da execução dos processos.

Dentre os benefícios obtidos com esta adoção, foi mencionado o ganho de tempo na execução de um processo. Em alguns casos, a automação de um processo (que antes era ad-hoc e feito via envio de e-mails e trocas de telefonemas) fez com que o ciclo de vida do mesmo, que costumava levar vários dias, pudesse ser realizado no mesmo dia. Além disto, foi mencionado o ganho de desempenho com o uso do Oracle Exalogic, que chegou na ordem de 4 a 6 vezes. Segundo Márcio, para conseguir esta performance foi preciso que todos os serviços envolvidos estivessem dentro do Exalogic.

Como pontos importantes apresentados por ele, foram citados os seguintes fatores:

  • o mapeamento e desenho do processo as-is e to-be antes da automação do mesmo;
  • a definição dos pontos onde serão gerados indicadores (que serão enviados ao BAM na execução) durante a definição do processo;
  • a quebra do processo principal em subprocessos menores, inclusive para facilitar o controle de versão e o desenvolvimento;
  • governança SOA, contendo uma arquitetura bem definida, além da necessidade de uma garantia de que a mesma será utilizada dentro dos projetos.

Foram mostrados alguns exemplos de processos criados utilizando Oracle BPM, sendo que muitos deles foram mapeados e criados em parceria com a iProcess.

É um orgulho para nós poder fazer parte de cases de sucesso em BPM do sicredi.

Governança SOA – A chave para o sucesso de uma implantação

Esse é o quinto de uma série de artigos do nosso blog que estão abordando o tema SOA, conceito antigo e atual que está enraizado nas atividades cotidianas da iProcess.

No primeiro post nós respondemos à pergunta: o que é SOA? Já no segundo definimos o que é um serviço e, no terceiro, trouxemos algumas estratégias que podem ser utilizadas na definição e na escolha de bons serviços candidatos.

O post seguinte abordou a relação entre SOA e BPM para garantir o sucesso da automação de processos. Neste artigo falaremos sobre Governança SOA como chave para o sucesso de uma implantação.

 

Objetivo: alinhamento com o negócio
A governança SOA consiste na definição de processos que garantam que os objetivos de SOA e da área de TI sejam atingidos. Para isso, a iniciativa deve:

  • definir um conjunto de instrumentos gerenciais que a instituição estabelece para garantir o sucesso e a sustentabilidade da iniciativa SOA;
  • definir claramente papéis e responsabilidades.;
  • avaliar a criação de estruturas destinadas a gerir a iniciativa de SOA.

Se os processos de governança não forem claros, a iniciativa SOA cairá em descrédito e rapidamente fracassará. Nesse sentido, seu principal desafio é gerencial e não técnico, e o ponto central sempre será o alinhamento dos processos com o negócio.

Os processos de governança
De acordo com a experiência da iProcess e a literatura disponível, podemos citar alguns dos principais processos de governança a serem criados. São eles:

  • capacitação das equipes em SOA;
  • identificação dos possíveis serviços a serem criados do ponto de vista corporativo (portfólio de serviços);
  • desenvolvimento de novos serviços;
  • análise do aproveitamento dos serviços existentes;
  • modificação/evolução dos serviços existentes;
  • desativação de serviços;
  • garantia do desempenho e estabilidade dos serviços em operação;
  • estimular/recompensar o reuso e a criação de novos serviços que tragam ganhos;
  • gestão da arquitetura corporativa (mesmo se a definição não precisa partir de SOA, SOA precisa disto);
  • planejamento das iniciativas SOA;
  • gestão de projetos SOA;
  • gestão da inovação;
  • definição de metodologia e padrões;
  • gestão dos acordos de nível de serviço (SLA).

Estrutura de trabalho
A governança também define, se necessário, as estruturas de trabalho para a sua equipe. Ela poderá conter um escritório SOA, uma área específica de arquitetura ou um núcleo de conhecimento. Também poderá centralizar a supervisão dos projetos SOA.

Outra opção é implantar um Centro de Excelência SOA. Trata-se de um comitê que conta com a presença de um conselho de especialistas no assunto (técnicos e de negócio) que auxiliam na tomada de decisão e encaminhamento das atividades de SOA.

Responsabilidades
Algumas das atividades que são responsabilidade da equipe de governança são:

  • gerência do repositório de serviços;
  • gerência do registro de serviços;
  • gerência da reutilização de serviços;
  • definição de boas práticas e metodologias;
  • treinamentos e atualização.

No caso de empresas que estão no estágio inicial de implantação de SOA, não é necessário pensar numa grande infraestrutura ou em soluções muito sofisticada para realizar as atividades de governança. A wiki corporativa ou mesmo planilhas podem ser suficientes para gerenciar e publicar as informações de governança.

Entre os documentos fundamentais a serem criados pela equipe de governança, sugere-se começar com a lista de serviços. Se essa informação não estiver disponível, existe um grande risco da não reutilização dos serviços já existentes.

SOA X Confiança
O sucesso de uma iniciativa SOA é baseada na confiança, já que quem consome os serviços conhece somente a sua interface e desconhece como ele foi implementado.

Nesse sentido temos um grande desafio de implantar SOA no Brasil, onde existe uma cultura muito forte da desconfiança no relacionamento entre desconhecidos. Se você não conhece tudo no detalhe, a premissa é desconfiar. É importante levar isso em consideração na hora organizar as ações de governança, inclusive criando alternativas para que isso não seja motivo de fracasso.

SOA – A relação com BPM no sucesso da automação de processos

Esse é o quarto de uma série de artigos do nosso blog que estão abordando o tema SOA, conceito antigo e atual que está enraizado nas atividades cotidianas da iProcess.

No primeiro post nós respondemos à pergunta: o que é SOA? Já no segundo definimos o que é um serviço e, no terceiro, trouxemos algumas estratégias que podem ser utilizadas na definição e na escolha de bons serviços candidatos.

Nesse post vamos abordar a relação entre SOA e BPM para garantir o sucesso da automação de processos.

Mercado está mais exigente
O mercado hoje está cada vez mais desenvolvido, informado, informatizado e em busca de soluções capazes de traduzir em resultados eficazes e eficientes as necessidades de empresas e seus clientes. Grandes são os investimentos em pessoal, sistemas e infraestrutura (incluindo a nuvem) que, muitas vezes, não revertem em resultados positivos.

Também não é raro encontrarmos empresas que possuem um grande emaranhado de sistemas que não são capazes de trocar informações entre si, ou processos administrativos que devem se adaptar a sistemas informatizados que não refletem a cultura e a realidade da empresa. O processo inverso – pessoas tendo que se adaptar a sistemas – também tem efeitos técnicos e humanos sérios, comprometendo as atividades e os resultados corporativos como um todo. Tudo isso sem falarmos dos sistemas redundantes e da montanha de dados de difícil (ou impossível) acesso, que impossibilitam o retorno esperado pelos gestores, que necessitam de relatórios detalhados e atualizados para tomar decisões mais acertadas.

Confusões
Existe um pouco de confusão quando falamos de BPM e SOA, seja acidentalmente, por desconhecimento dos conceitos, seja intencional, visando a promoção de produtos e serviços. Vemos alguns fabricantes de software afirmarem que “a nossa plataforma de SOA inclui ótimas ferramentas de mapeamento e redesenho de processos” ou então afirmam que “a nossa plataforma de BPM inclui um fantástico ESB”. Já algumas pessoas afirmam que “SOA deve iniciar com o redesenho dos processos“.

Relação de SOA com BPM
SOA (arquitetura orientada a serviços) e BPM (gerenciamento de processos de negócio) nascem em resposta à essas necessidades empresariais, tanto para a área de TI (SOA) quanto para a área de negócio (BPM). Ambas não foram criadas ontem (existem há pelo menos 15 anos). Então por que, agora, se fala tanto da relação entre as elas? Vejamos.

SOA é uma filosofia de TI que visa facilitar a integração entre sistemas orientando a criação e disponibilização de soluções modulares e fracamente acopladas baseadas no conceito de serviços.

SOA ajuda a TI a pensar as soluções de tecnologia de forma integrada mas com baixo acoplamento (sistemas com pouca dependência de outras funções e aplicações). Também ajuda a organizar os sistemas e as soluções corporativas, já que é a TI que deve pensar a melhor maneira de resolver os problemas do negócio (veja mais no artigo SOA – Arquitetura Orientada a Serviços).

BPM é um modelo de gestão dos processos de negócio que necessita de ferramentas de TI como apoio. É fundamental nas mãos de profissionais da área de negócio que querem aperfeiçoar os seus processos internos e garantir qualidade na entrega dos serviços.

E aqui temos a principal relação entre SOA e BPM, entre TI e negócio: um precisa do outro, um depende do outro. A TI não pode implantar sistemas sem conhecer o negócio. Já a área de negócio não pode implantar nada sem o suporte da TI.

A TI não pode implantar sistemas sem conhecer o negócio. Já a área de negócio não pode implantar nada sem suporte da TI.

Normalmente BPM é uma iniciativa da área de negócio que quer organizar os seus processos e pede auxílio à TI para fazer isso de forma automatizada. Já SOA costuma ser uma iniciativa da área de TI, com o objetivo de melhorar a sua eficácia.

BPM facilita e orienta a definição do portfólio de serviços, já que:

  • processos são consumidores de serviços;
  • serviços são atividades/funções de negócio e, portanto, fazem parte de algum processo;
  • é o método natural e alinhado ao negócio;
  • permite rastreabilidade (matriz processo x serviço);
  • possui um crescimento incremental.

A conclusão, assim, é óbvia: o alinhamento entre a área de negócio e a de TI é certamente o melhor case de sucesso para a empresa. Podemos inclusive citar alguns dos benefícios desse ‘casamento’:

Abaixo temos uma imagem que ajuda a compreender melhor a relação entre SOA e BPM, que vai do alto nível do modelo de negócio até o baixo nível da infraestrutura:

Nessa imagem fica claro que a colaboração entre a TI e a área de negócio é a fórmula mágica do sucesso. Isso requer que a TI invista tempo para aprender e compreender profundamente as necessidades da área de negócio e a área de negócio desenhe seus processos da forma mais coerente, detalhada e transparante possível e auxilie a TI na sua implementação.

Essa colaboração alinhada certamente tratá benefícios para toda a empresa, em todos os níveis – do administrativo ao gerencial.

SOA – Escolhendo e definindo bons serviços candidatos

Esse é o terceiro de uma série de artigos do nosso blog que estão abordando o tema SOA, conceito antigo e moderno que está enraizado nas atividades cotidianas da iProcess.

No primeiro post nós respondemos à pergunta: o que é SOA? Já no segundo definimos o que é um serviço.

Nesse terceiro post gostaríamos de trazer algumas estratégias que podem ser utilizadas na definição e na escolha de bons serviços candidatos.

 

Ciclo de desenvolvimento de serviços
O desenvolvimento em uma arquitetura orientada a serviços pressupõe algumas mudanças na forma com que tradicionalmente se faz o desenvolvimento orientado a sistemas.

O ciclo de desenvolvimento de serviços envolve:

Ciclo de Desenvolvimento de Serviços

Normalmente vemos que a descoberta de serviços nasce da necessidade de aprimorar alguma função ou processo de negócio. Nesse sentido, os candidatos a serviços de negócio são:

Candidatos a serviços de negócio

Existem duas abordagens comumente utilizadas na descoberta de serviços. Vamos ver abaixo.

  • Abordagem top-down: Essa abordagem identifica a necessidade de um serviço através da análise de processos de negócio ou das interações com entidades externas. Ela normalmente é realizada pelo analista de negócio em conjunto com arquiteto de sistemas e tem como principal benefício o alinhamento mais natural com o negócio. Se o serviço (ou as capacidades necessárias) já existir em um sistema legado, será necessário procurá-lo e extraí-lo. Se o serviço ainda não existir, é necessário construí-lo.
  • Abordagem bottom-up: serviços (ou capacidades) identificados através dos pontos de integração entre sistemas ou das funcionalidades já disponíveis nos sistemas atuais. Nessa abordagem corre-se o risco de criar serviços que não representam uma função de negócio ou que tenham acoplamento com a implementação. Porém, pode ser uma boa opção quando existem muitos problemas de integração spaghetti ou se deseja preparar para substituição de algum sistema de back-end.

 

Modelagem e projeto de serviços

Na hora de modelar e projetar um serviço, o primeiro passo é ajustar a sua granularidade, adequando-o a um modelo de níveis (camadas) de serviços que tenha sido definido pela sua corporação. Por exemplo:

  • Básicos (acesso a dados, funções mais simples);
  • Serviços compostos (orquestração, funções mais complexas);
  • Processos de negócio, workflows.

Outra possibilidade é classificar os serviços por área ou processo de negócio. De acordo com a granularidade, pode ser necessário quebrar em vários serviços, reunir com outros, reorganizar, etc.

 

Além disso, devem-se identificar as entidades conceituais relevantes para a empresa e suas interrelações, criando um modelo conceitual corporativo, independente das tecnologias ou sistemas já existentes.

São exemplos de entidades conceituais: Cliente, Proposta, Produto, Ordem de Compra, Item de Compra, Nota Fiscal, Centro de Custo, Funcionário.

Sugere-se também a criação de um repositório com esses modelos de dados corporativos e suas respectivas descrições de estruturas XML (esquemas XML), já que o modelo conceitual é a base para o projeto de serviços.

Poderá ocorrer que a aplicação que implementa um serviço já existente não se encaixe no modelo conceitual. Nesse caso, será preciso criar um elemento de adaptação.

 

A seguir deverá ser definido o projeto da interface. É importante salientar que a chave para um projeto duradouro de contrato de serviço é pensar apenas no negócio. A interface sempre deve ser definida antes da implementação do serviço. O nome do serviço, entradas, saídas, exceções e comportamento devem ser descritos somente em função dos termos de negócio, abstraindo implementações. Também, devem ser utilizados os esquemas XML dos tipos de dados do modelo corporativo e a interface do serviço deve ser descrita através de um arquivo no padrão WSDL – Web Services Description Language.

 

Nesse ponto, nos perguntamos: como nomear um serviço? Comprar ou vender? Notificar ou receber notificação?

A regra geral é: identifique o serviço do ponto de vista do consumidor. O consumidor pode ser sua própria empresa (solicitar compra de material) ou uma entidade externa (solicitar proposta). Se possível, utilize um meio-termo (registrar, cadastrar, criar), mas assegure-se de não gerar ambiguidades.

E as entradas e saídas de um serviço, como identificá-las?

Utilizar sempre as entidades do modelo conceitual. Resista à tentação de colocar IDs como parâmetros do serviço. Esta é uma abordagem vinculada à implementação relacional. Ex.: ID requisição → Requisição

 

Muito importante lembrar que, ao expor novas funcionalidades como serviços, serão necessários novos tratamentos de segurança. Não é mais possível contar com a segurança da aplicação, uma vez que o serviço é um ente independente. Será preciso definir:

  • quem pode executar quais serviços;
  • mensagens a serem criptografadas;
  • integração de diretórios de usuários e perfis.

Alguns dos padrões emergentes para segurança de serviços são o WS-Security, WS-Policy e SAML (Security Assertion Markup Language).

 

Existem, ainda, requisitos não-funcionais que devem ser levados em consideração. Embora os acordos de nível de serviço (SLA) sejam um aspecto gerencial, que normalmente devem ser negociados pelo gestor da TI com a área ou entidade cliente, a identificação dos requisitos de qualidade precisa ser feita o quanto antes. Aspectos como desempenho, escalabilidade e disponibilidade devem ser derivados dos requisitos do negócio e podem ser elicitados com as técnicas tradicionais da Engenharia de Requisitos. O projeto da implementação deve prover a capacidade de atender os níveis desejados.

 

Ao final da modelagem, você precisará responder afirmativamente as seguintes perguntas:

  • o serviço provê uma função de negócio?
  • o serviço é auto-condido, independente?
  • o serviço é reutilizável?
  • o serviço pode ser utilizado em uma composição?
  • o serviço esconde todos os detalhes de implementação?
  • o serviço utiliza apenas entidades conceituais na definição?

E por último responda se a interface do serviço teria que sofrer alterações se a implementação mudar. É a garantia que a modelagem do seu serviço foi realizada de maneira correta!

 

Identificando bons serviços candidatos
A definição do portfólio de serviços deve considerar os seguintes pontos:

  • redundância atual da funcionalidade;
  • quantidade de sistemas fortemente acoplados à funcionalidade;
  • volume esperado de modificações na funcionalidade;
  • grau de agilidade necessária na execução das modificações;
  • perspectiva de reutilização do serviço;
  • complexidade de fatorar o serviço dos sistemas atuais (impacto nos sistemas legados).

Uma função que só é chamada uma vez por um único sistema não é candidata e uma função que é chamada por vários sistemas é uma ótima candidata.

 

Mas, então, e na hora de criar um novo software, como identificar o que é candidato para se transformar em um novo serviço? Em primeiro lugar é fundamental entender o processo de negócio no momento de desenhar a solução de software e olhar além das fronteiras do projeto em questão. Tente identificar o que outros consumidores do seu sistema irão precisar.

No caso de softwares já existentes, verifique o que pode virar serviço, olhando para as funcionalidades internas e externas.

 

Dessa maneira será possível ter serviços consistentes e que correspondam às reais necessidades da sua empresa.