sexta-feira, 20 de julho de 2007

Intalio|BPMS

Para quem ainda não conhece, o Intalio|BPMS consiste numa ferramenta de BPMS, que possui uma versão Community Edition (Eclipse IDE + Apache Gerônimo Application Server), projetada para Analistas de Processos ou Arquitetos e Desenvolvedores que não necessáriamente precisam ser experts em J2EE.

Seus diagramas de processos são baseados no BPMN (possuindo um BPMN Designer), onde os mesmos são automaticamentes tranformados para o formato BPEL no momento da implantação dos processos, inclui um BAM em real-time, controle de versão automatica dos processos implantados, dentre outras funcionalidades.

Existe no site no fornecedor um comparação do Intalio|BPMS com o JBoss jBPM bem interessante.

Assim, para quem ficou interessado, a Intalio fornece uma demonstração de suas funcionalidades. Para vê-la, clique aqui.

Em breve, estaremos relantando neste blog, alguns estudos de casos com o uso do Intalio|BPMS e outras ferramentas.

Até a próxima.

terça-feira, 17 de julho de 2007

Quais os impactos de adoção de um BPMS?

Antes de mais nada, o que é um BPMS?

Um BPMS (Business Process Management Systems/ Softwares) consiste em uma nova categoria de software que permite as corporações, modelar, simular, implantar e gerenciar os seus processos de negócios de forma clara, fácil e controlada e monitorada, sem uma forte dependência com TI.

Resumindo, o BPMS permite dar vida aos processos de negócios da corporação em um ambiente controlado e monitorável.

Quais os componentes/ferramentas principais de um BPMS?

  • Business Process Modeler: Ferramenta que possibilita aos analistas de negócios a modelarem os processos de negócio da corporação na forma de diagramas. Normalmente, estes diagramas seguem uma notação padronizada para representação de fluxos de processos, denominado BPMN (Business Process Modeling Notation), porém podem seguir notações proprietárias.
  • Executable Process Modeler: Ferramenta que possibilita a transformação do diagrama criado acima em uma linguagem entendível pelas engines de execução dos processos. Normalmente, a linguagem a ser gerada é o BPEL (Business Process Execution Language), que é uma linguagem de execução de processos com foco em Web Services.
  • Process Execution Engine: Componente que executa os processos implantados, gerados acima, gerenciando as informações pelos mesmos, produzidas.
  • Business Activity Monitoring (BAM): Componente que possibilita a gestão dos processos implantados, através de diversos relatórios estatísticos (dashboards).
  • User Portal: Interface que permite aos usuários envolvidos do processo, a participarem da execução do mesmo.
  • Administration Portal: Interface que possibilita o acompanhamento dos processos em execução, desde que tenha permissão de acesso aos mesmos, além de possibilitar implantações tanto de novos processos quanto de novas versões.

Assim, para considerar seus impactos, vamos considerar os seguintes cenários:

Cenário 1: Imaginem um dado processo de negócio que realiza a orquestração de um determinado conjunto de serviços. Imaginou? Ótimo. Agora, imagine que todos estes serviços já estejam implementados, seguindo é claro as recomendações WS-I* (especificações Web Services Interoperability).

Bem, já que todos os serviços estão implementados e nós apenas tenhamos que orquestrá-los em uma seqüência lógica para compor o processo de negócio alvo. O que temos que fazer? Fácil, devemos utilizar uma ferramenta BPMS, sem que não seja necessário a criação de nenhuma linha de código.

Cenário 2: Agora imaginem uma situação onde tenhamos que criar um processo de negócio que envolve a integração de diversas aplicações legadas. Além disto, e muito provavelmente, estas aplicações legadas foram implementadas por tecnologias distintas (Cobol, Java, Natural, .Net, dentre outras). Com isto, nós teremos a necessidade de utilizar conectores (ou adaptadores), que são responsáveis por prover a transformação de um protocolo por outro e vice-versa.

Bem, muitas soluções BPMS já provem diversos destes conectores para as principais tecnologias existentes. E caso tenhamos que desenvolver algum conector, os próprios BPMS ou geram códigos nativos da linguagem usada no sistema legado alvo, ou até mesmo, já geram estes conectores na forma de web services.

Então, podemos perceber, que se por um acaso precisarmos codificar algo, este esforço será reduzido drasticamente.

Cenário 3: Imaginem que para todos os processos de negócios analisados e modelados, nós tenhamos que mantê-los sempre documentados, para que os mesmos possam ser frequentemente analisados.

Bem, a grande maioria das soluções BPMS geram boa parte das documentações sobre os processos modelados e seus serviços utilizados. E caso haja alguma mudança nos mesmos, estas documentações podem ser geradas em tempo-real.

Cenário 4: Imaginem que em um processo de negócio definido, modelado e implantado em um ambiente em “produção”, um erro foi identificado. Percebemos também, que algumas instâncias destes processos estão atualmente em execução. Onde, precisamos fazer uma correção nos fluxos deste processo, sem que as instância que estão rodando parem bruscamente.

Bem, as soluções BPMS permitem as alterações destes fluxos, mantendo-se as instância em execução no modelo antigo, e novas instâncias já adequadas ao modelo novo. Tudo isso apenas com um controle de versão já provido pelos BPMS.

Bom, acima descrevi apenas quatro cenários que possibilitam e justificam alguns olhares às soluções BPMS para adoção pela sua corporação. Pois, como vimos acima, o uso de um BPMS tem impactos bastante positivos, possibilitando-nos escrever menos códigos, ter flexibilidade e rapidez em eventuais mudanças e confecção de documentações, além de possibilidades de simulação dos processos a serem implantados e monitoramento dos processos já em execução.

Em breve, estaremos escrevendo um artigo que demonstra mais claramente o funcionamento destes BPMS. Até lá.

terça-feira, 3 de julho de 2007

Service-Oriented Migration and Reuse Technique (SMART)

O Service-Oriented Migration and Reuse Technique (SMART) foi desenvolvido pela Software Engineering Institute (SEI), para acessorar organizações à analisar seus sistemas legados, com o objetivo de levantar suas capacidades para utilização na forma de serviços, dentro do paradigma Service-Oriented Architecture (SOA).

O SMART visa levantar um grande volume de informações sobre os componentes legados, alvos para a SOA, e potenciais serviços que necessitarão serem produzidos, dentro de uma estratégia de migração. Além disso, o SMART produz outros artefatos que serão insumos para que a organização decida ou não pela migração dos sistemas legados para a SOA.

Em breve, voltaremos a comentar sobre este método com mais detalhes.

Para maiores informações, segue o link para o documento que descreve o SMART, retirado do site da SEI.

Entendendo o JBI

Mas o que é o Java Business Integration (JBI)?

JBI consiste em uma especificação que define uma arquitetura e comportamentos para hospedagem de componentes plugáveis, onde a comunicação entre estes componentes se fará através do uso de WSDL (Web Services Description Language) 2.0.

O principal objetivo do JBI é permitir que possamos utilizar componentes plugáveis, provendo todas as funções necessárias para uma solução de integração, sem sermos dependentes de um fornecedor específico. Ou seja, os componentes poderão ser facilmente portáveis entre quaisquer implementações do JBI.

O JBI também é conhecido como um "container of containers".

Imaginando um cenário para aplicação do JBI por arquitetos/desenvolvedores Java EE, seria mais ou menos assim: Os EJBs implementados, poderiam ser compostos dentro de processos de negócios, mais precisamente em Stateful Business Processes, através da linguagem BPEL, permitindo com isto, a orquestração do componentes de negócios (EJBs) sem a necessidade de implementação "hard-code" em classes Java destes processos de negócios. Conseguindo com isto, uma maior flexibilidade e interoperabilidade na utilização e otimização destes processos.

O JBI possui dois componentes principais: Os "Service Engines" e os "Binding Components".

Os "Service Engines" são responsáveis por prover lógicas de negócios e/ou serviços de tranformações de mensagens entre outro componentes, além de consumirem serviços (é claro). Já os "Binding Components" provêem serviços externos ao ambiente JBI, tal como atuando como um Adapter entre protocolos de comunicações diferentes, entre os serviços externos e o ambiente JBI.

É interessante destacar que a distinção entre os "Service Engines" e os "Binding Components" é apenas de caráter arquitetural, separando as lógicas de negócios das lógicas de comunicação com intuito de reduzir a complexidade de entendimento, implementação e flexibilidade.


Mas como funciona as interações entre os componentes dentro do ambiente JBI?

Estas interações funcionam da seguinte forma:

Dentro do ambiente JBI, existe um BPEL Engine, que é um "Service Engine", responsável pela hospedagem e execução dos processos de negócios no formato BPEL (é claro).

É lógico que estes processos não saberão quais protocolos os clientes irão utilizar para acioná-los. Com isto, faz-se necessário a utilização de "Binding Components" que irão converter estes protocolos heterogênios em uma forma normalizada, ou seja, uma mensagem XML em conformidade com um dado WSDL, adicionar nesta mensagem normalizada, meta-dados tais como: segurança, transação, dentre outras. E a partir daí, repassar para o ambiente JBI.

Logo após, o ambiente JBI determinará qual componente, ou melhor "Service Engine", poderá atuar como um serviço qua atenda à requisição, que neste caso é o próprio BPEL Engine. Assim, a mensagem normalizada será repassada para BPEL Engine, para que o mesmo possa instanciar o processo de negócio requisitado pelo cliente.

Vale destacar que, se o processo instanciado precisar de algum tipo de serviço complementar (tal como alguma transformação), o JBI irá determinar qual componente proverá este serviço, e redirecionará a requisição para o mesmo (no caso de transformação, XSLT engine, por exemplo), que responderá de volta para o BPEL Engine.

Obs1: O BPEL Engine é um consumidor e provedor de serviços, porém ele trabalha apenas com mensagens normalizadas.

Obs2: A escolha de quais componentes atuarão como um dado serviço, é feita através de componentes inteligentes (smart components), configurados para fazer estas escolhas. Inclusive, podem ser customizados.