A integração BPMS e SOA

Propaganda
: : www.mundoj.com.br : :
Glauco dos Santos Reis
([email protected]): é bacharel e mestrando em Ciências da Computação.
Trabalha com Java desde 1996 e é especialista em orientação para objetos,
utilizando linguagens OO há mais de 24 anos (C++ e Java). Tem as certificações SCJP
1.1 e 1.5, SCWCD 1.4, e é certificado em Websphere pela IBM. Atuou em dezenas
de projetos Java, SOA e BPM, e tem mais de 160 artigos publicados em revistas
do segmento de informática. É especialista em BPM e publicou um livro sobre a
notação BPMN (www.glaucoreis.com.br). Também é mantenedor do site PortalBPM
(www.portalbpm.com.br), que trata dos assuntos SOA, BPM, BPMS e CEP. Atuou
na criação da arquitetura e implementação da primeira solução CEP do mercado
nacional. Atua como consultor em projetos e implantação SOA e de soluções BPMS.
A integração BPMS e SOA
Como o SOA se integra com BPMS?
Atualmente existe um rico arsenal de
ferramentas que favorecem o aumento
de produtividade no desenvolvimento de
sistemas, muitas delas sob a denominação
de soluções SOA e/ou BPM. Quando
são apresentadas ao negócio, quase
sempre são aceitas e incorporadas como
ferramentas corporativas, não partindo de
uma decisão de TI, mas sim uma solução
de negócio que a TI deve suportar. Isso faz
com que os desenvolvedores precisem se
adapatar a esta nova realidade, tendo que
assimilar estas novas tecnologias e atender
aos requisitos dos sistemas. Vamos explorar
o que significa a mudança para este novo
paradigma SOA/BPM nas empresas, e
como esta subdivisão deve acontecer.
44
uase todas as grandes empresas de software comercializam
hoje no mercado soluções BPMS e SOA. Elas utilizam a
ideia de aumento de produtividade baseada em geradores de códigos, que acabou ficando popular no Brasil lá pela década
de 80, com as ferramentas geradoras de código e posteriormente as
soluções RAD. Infelizmente, naquela época, os avanços da OO, componentização e paterns não eram tão populares e as soluções acabavam
por gerar códigos ineficientes e de difícil manutenção. O processo de
amadurecimento deste tipo de gerador de códigos fez com que hoje
fosse possível a construção de aplicações de produtividade, e por isso a
ideia retorna ao cenário atual. Na verdade, este tipo de solução costuma
ser chamada de DSL (Domain specific Language), um termo bastante
explorado por Martin Fowler. Uma DSL é uma linguagem para um
domínio específico, mantendo características que aumentam imensamente a produtividade no nicho para o qual ela foi criada. Talvez a
mais conhecida linguagem DSL seja o Cobol. Neste quesito, ferramentas programáticas como o Mathematica e Matlab também poderiam
ser consideradas DSL. Muitas vezes engenheiros e matemáticos têm
dificuldades na manipulação de linguagens de programação. O que
as DSL fazem é trazer a programação para um linguajar mais próximo
do domínio destes profissionais. Como este profissional normalmente
sabe resolver o problema específico do domínio (calcular uma estrutura de concreto, por exemplo), ele acaba solucionando o problema com
uma linguagem DSL, sem o auxílio de um programador. Normalmente
os programadores não dominam o conhecimento do negócio, e isto é
tão verdade quanto mais profundo for o conhecimento do programador na linguagem. Ou seja, é muito difícil encontrar um programador
com profundos conhecimentos em Java e sua diversidade de APIs, e
também com conhecimentos específicos sobre o mercado financeiro,
de capitais, engenharia ou outro qualquer. O conhecimento específico
vai sendo adquirido com o tempo de experiência no domínio em ques-
tão, e normalmente quanto mais este conhecimento se destaca, mais
longe da programação o profissional acaba por se posicionar. Ou seja,
conhecimentos específicos são mais valorizados do que conhecimentos genéricos (se é que podemos considerar dominar uma linguagem
de programação com a complexidade do Java como genérico). Mas
o que eu quis dizer neste caso é que utilizar STRUTS é o mesmo em
qualquer empresa. Os mecanismos são os mesmos, e um programador
que souber programar bem em Struts o faz em qualquer ambiente. Já
um profissional que conhece como funciona o mercado financeiro, por
exemplo, é mais escasso (até pela limitação do número de empresas
neste segmento) e acaba sendo mais valorizado. É neste sentido que
se aplica o genérico. No caso dos DSL, é como que o oposto de uma
linguagem de uso geral, como o Java e o C++, que mantém uma abrangência grande, sem uma especialização em um domínio específico. Eles
costumam resolver problemas específicos, como a modelagem e execução de processos de negócios, no caso de uma solução BPMS. Poderíamos imaginar que Java seria um DSL, já que mais de 90% do mercado
a utiliza para construção de aplicativos Web. Na verdade o que faz o
Java ser popular para aplicativos Web não é a linguagem em si, mas sim
a integração entre os servidores de aplicação e um framework de mais
alto nível (as APIs de Servlets e JSP), que proporciona um conjunto
de alta produtividade para este tipo de aplicação (muito maior ainda
se considerarmos frameworks como Struts e JSF). Neste artigo, vamos
mostrar como a implementação do SOA está atrelada ao uso de um
BPMS e aos desafios que os programadores deverão enfrentar para se
adequar a este novo paradigma.
evolução da tecnologia, já que ciclos de treinamento seriam necessários para preparar os desenvolvedores a cada nova solução que fosse
utilizada. O histórico também demonstrou que o uso de soluções
proprietárias tendia a ser um problema, quando o fabricante da solução evoluía sua arquitetura.
O realinhamento rápido do negócio
Por exemplo, pode-se armazenar o desenho em alguma variação de
XML, sendo a mais famosa e utilizada o BPEL. O BPEL é uma linguagem DSL, já que permite a orquestração de serviços em um nível
mais alto de programação, e poderia ser desenhado por especialistas
com conhecimentos mais próximos ao negócio. Entretanto, como é um
padrão formal para execução, têm regras rígidas sua criação, e muitas
das representações que poderiam ser modeladas em BPMN não têm a
contrapartida em BPEL. Ou seja, ou se utiliza o set completo BPMN e
um formato para armazenamento proprietário, ou a opção é armazenar
em BPEL, que é apropriado para execução, mas limita as variações do
desenho a ser criado. Este é um dos desafios que se tenta superar neste
momento. A solução da IBM utiliza uma extensão do BPEL (BPEL4People) que agrega o elemento humano como parte do desenho. No
caso do Oracle BPM, por exemplo, o padrão utilizado foi o XPDL (veja
figura 1). Este é um padrão que permite um leque de representações
muito mais amplo, mas a um custo mais alto. O XPDL representa
os elementos visuais e sua dimensão na tela de forma padronizada,
mas permite que outros elementos sejam agregados, extendendo-se
a notação com particularidades que o set padrão não contempla. Foi
exatamente o que a Oracle fez. Agregou outros elementos que fazem
com que a execução do fluxo fosse possível no seu contexto. Com isto,
outras ferramentas de desenho que conseguem visualizar a notação
XPDL têm difuldades em ler e escrever um arquivo para a solução da
Oracle. O programador deve desenhar os fluxos na ferramenta que o
próprio fabricante disponibiliza.
Existe uma premissa (um tanto quanto subjetiva), normalmente atribuida às soluções BPMS, que é permitir algo chamado de realinhamento rápido do negócio, o que acontece quando temos um mercado competitivo, estratégias agressivas de vendas e de marketing que forçam a
mudanças nos sistemas. Grandes lojas de varejo, por exemplo, estão
constantemente competindo pelos mercados. Isto acontece na forma
de promoções que alteram a forma de negociação durante um período
muito curto de uma promoção, retornando logo após ao funcionamento normal, até que uma nova campanha seja aplicada. Metodologias
tradicionais demandam grandes períodos de análise e redesenho, para
alterações de durabilidade muito curtas. O retorno ao estado original
também demanda um ciclo de desenvolvimento e testes que também
demanda tempo. Os ciclos longos de desenvolvimento, proporcionados pelas metodologias tradicionais, como RUP, não se aplicam nestes
casos, pois demoram a surtir efeito. A demora na geração de resultados
fez surgir um conjunto de técnicas e metodologias mais recentes, como
as metodologias ágeis e scrum, que prometem resultados mais rápidos
sem perda na qualidade. Esta é uma premissa de uma solução BPMS,
ou seja, gerar resultados rápidos em prazos mais curtos. Na verdade, a
maneira como se atinge este objetivo é diferente nos dois casos. No caso
das metodologias ágeis, se buscam formas de tornar os artefatos mais
simples, ou aumentando a comunicação entre as pessoas. Por outro
lado, a abordagem das soluções BPMS é criar representações gráficas
que facilitam alterações, tornando o processo de criação e manutenção
algo visual e, portanto, mais rápido. Na maioria das vezes, o que se
tenta fazer é criar soluções nas quais muito pouco código precise ser
criado, e a maioria das tarefas seja feita com o arrastar de imagens e
conexões de linhas na tela.
Uma vez que a aceleração na geração de resultados é conseguida através
de algum artefato normalmente visual, houve um estudo no sentido
de produzir e amadurecer algum padrão que fosse qualificado para a
representação de processos de negócios, e que ainda fosse padronizada
entre os fabricantes. Embora possamos utilizar diagramas de atividades
para representação de fluxos de negócios, se mostrou necessária a criação de um artefato específico e mais adequado para a representação de
todo tipo de situação, que é a notação BPMN. Esta notação pode ser
vista como um superset dos elementos gráficos existentes em um diagrama de atividades da UML, e este provavelmente foi utilizado como
base para sua criação. Infelizmente, embora a representação visual das
soluções BPMS sejam hoje relativamente padronizadas (quase todos
migraram ou estão migrando para o BPMN), o formato de armazenamento ainda não é. É verdade que hoje se trabalha na especificação
BPMN 2.0, cujo principal diferencial é a criação de um padrão universal de armazenamento. Todos os fabricantes deverão suportá-la quando
estiver consolidada. Isto vai favorecer a migração de aplicativos entre
as soluções BPMS. O problema não é tão simples, já que este não é o
único artefato necessário para descrever completamente um desenho
de processo que se pretende executar.
Sobre o BPMN (Business Process Modeling
Notation)
Figura 1. Desenho de processos no OBPM.
Nas versões mais antigas das soluções BPMS, cada fabricante optou
por criar uma notação para o desenho que tivesse adequação com
a implementação da própria ferramenta, gerando ferramentas de
desenho específicas por produto. Isso repercutiu negativamente na
De uma forma mais clara, o BPMN é apenas uma representação gráfica,
e permite uma riqueza no desenho que não é acompanhada pelo BPEL
ou qualquer formato de execução atualmente conhecido. O BPEL, por
45
: : www.mundoj.com.br : :
outro lado, é um formato apropriado e com rigidez necessária para
execução, mas tem estruturas definidas e que não permitem muita
variação. Já o XPDL é mais abrangente e permite a representação de
todo o BPMN, mas sua definição agrega extensões que torna difícil a
leitura por várias soluções, já que cada fabricante implementa estas
extensões de uma forma diferente, além de não ser apropriado para
execução (embora a Oracle tenha implementado esta característica
neste formato).
Como as soluções BPMS resolvem estas
questões
Como dito no caso do Oracle BPM, a escolha foi pelo XPDL enquanto
que o IBM utiliza o BPEL4WS. Na verdade, o problema da notação e
representação do fluxo de processos é apenas um dos problemas que
devemos enfrentar quando pretendemos ter uma solução que execute
como um programa. O BPMN apenas representa a sequência de passos
para execução de um processo. Um programa ou processo para ser
executável ainda precisa de telas, informações, acessos a serviços remotos, regras de negócio etc. Aqui realmente não existe consenso entre
os fabricantes. Cada fabricante acabou adotando uma abordagem para
suprir o BPMN com um conjunto de artefatos auxiliares que representam cada um destes aspectos citados.
A IBM tem uma visão mais voltada para isolamento entre o perfil criador de códigos e o perfil orquestrador. As ferramentas utilizadas pelo
desenvolvedor de serviços são programáticas e não escondem particularidades da linguagem de programação (Java, claro). A ferramenta
para orquestração dos serviços, ainda está dividida em dois perfis,
sendo um para desenho puro e outro mais próximo da execução, com
elementos específicos do BPEL. O ponto positivo desta abordagem é
uma divisão de papéis mais clara, que tem como ponto negativo uma
estrutura de TI maior, com papéis específicos para cada atividade. Já
no caso da Oracle (estamos falando do OBPM, já que frequentemente
os fabricantes têm mais de uma solução BPMS adquirida ao longo do
tempo) ao menos na versão atual, se tentou criar um ambiente de mais
alto nível que tivesse a representação tanto do fluxo em BPMN quanto
elementos visuais que tornassem possível a criação de telas e objetos
de informação. Isto tornou a ferramenta trivial na utilização, mas que
obriga grandes esforços por parte dos programadores, quando se deseja
características mais avançadas no sistema. Como a ferramenta de desenho é única e simplificada, certas atividades que deveriam ser simples,
como a criação de uma página JSP customizada ou a depuração de um
fluxo de processos acabam sendo bastante difíceis.
Este conjunto de arquivos e/ou códigos criados são exportados para
uma plataforma de execução (um motor que faz efetivamente a execução dos fluxos). Neste processo de publicação, muito dos elementos
representados em XML são convertidos para classes Java (que ficam
escondidas e não podem ser alteradas) para facilitar a execução do desenho. Esta característica torna este tipo de produto muito interessante.
Como a publicação é feita em um formato intermediário, o servidor
tem a liberdade de criar versões distintas da execução (as classes podem
ter nomes diferentes). E ainda várias versões podem estar em execução
de forma concorrente. Isto seria complicado de implementar, e principalmente gerenciar em Java para Web, pois implicaria a existência
de classes diferentes. Este tipo de implementação é contemplada em
orientação para objetos através de patterns como State, Decorator,
Proxy etc., mas demandam maior análise, e o código que irá receber o
pattern precisa ser identificado e preparado para recebê-lo. Na maioria
das vezes, não se tem esta visibilidade, e qualquer código é candidato a
se modificar com o tempo.
Embora seja uma vantagem, provavelmente esta é uma das fontes de
reclamações por parte dos programadores java, pois se tem acesso
apenas aos códigos intermediários, e não aos códigos finais. Normal46
mente as ferramentas de depuração neste tipo de implementação são
limitadas. É difícil colocar break points ou mesmo saber por que o
código não está executando corretamente. Com frequência o programador é obrigado a compreender os códigos gerados pela solução, e
até mesmo desassemblando-os para poder depurar efetivamente. As
soluções BPMS fazem com que o processo de criação seja algo limitado,
reduzido ao arrastar de componentes sobre um desenhador visual. O
processo criativo de sistemas orientados para Objeto, com definição de
padrões e códigos reaproveitáveis desaparecem sob uma implementação visual, o que de certa forma proporciona também a velocidade
de prototipação desejada (isto pode ser discutível). Mas anteriormente
utilizamos o discurso de que a linguagem DSL permite que usuários de
outras áreas se tornassem programadores. Isto infelizmente parece não
estar acontecendo com as soluções BPMS.
Linguagens como o VBA (Visual Basic for Applications), que foi originalmente criada para que os usuários comuns de planilhas tivessem
um poder programático à sua disposição, na realidade acabaram criando novos nichos de programadores (que o usuário final contrata para
fazer os códigos). O mesmo parece acontecer com os desenhadores de
fluxos das soluções BPMS. Normalmente um programador vindo do
mercado Java acaba trabalhando em conjunto com um especialista em
modelagem, e a atividade de programação, que no Java seria algo rico,
acaba por ser algo limitado a um desenhador visual com regras fixas.
Por outro lado, qualquer solicitação que saia do domínio de atuação da
ferramenta acaba por ser imensamente complicado de se implementar
utilizando a solução BPMS, sendo muitas vezes mais complicado do
que seria se o sistema fosse totalmente em Java, causando grandes
esforços de programação para proporcionar contornos que a solução
não possue nativamente.
Como isto se encaixa com SOA?
Se as soluções BPMS são o nicho de trabalho dos profissionais mais
próximos ao negócio, o SOA por outro lado é onde as atividades de
programação acabam acontecendo (embora existam também soluções
SOA que tornam o desenvolvimento de serviços puramente visual).
Cada uma das atividades de um desenho BPMN irá acionar um ou
mais serviços e estes, por sua vez, talvez sejam codificados em Java. Na
verdade, como a interface entre o desenho e os códigos acaba sendo
um XML, os serviços podem ser criados em qualquer linguagem de
programação que se deseje. E ainda há um desacoplamento entre a
camada de serviços e a orquestração dos serviços em si. Desta forma,
a TI pode se encarregar da criação de serviços, que normalmente se
procura que sejam o mais genérico possível, enquanto que o negócio
orquestra a chamada destes serviços gerando produtos que são mais
ágeis na criação e refatoramento. Bom, na prática, tanto o SOA quanto
as soluções BPMS parecem se aproximar da orquestração. Normalmente orquestrações de mais alto nível (aquelas que envolvem usuários no
processo) acontecem nas camadas BPMS, entretanto serviços mais
complexos podem ser criados pela chamada em sequência de outros
serviços. Este mecanismo normalmente acaba recebendo o nome de
coreografia, e cria alguns transtornos entre a TI e a camada de negócios. Isto porque se reduz a visibilidade do negócio. Uma alteração em
uma coreografia pode fazer com que um processo publicado apresente
problemas, embora nada tenha se alterado em termos de desenho, ao
menos o desenho que o negócio visualiza. Isto tudo na teoria é muito
interessante, e provavelmente estamos próximos de conseguir estes
efeitos com a atual evolução das ferramentas. A questão é como contornar os problemas das soluções atuais, de forma a continuar mantendo a
agilidade na criação. Na verdade, as soluções BPMS atuais não obrigam
a adoção de SOA para sua implantação. Mas se uma empresa estiver
madura em relação ao uso do SOA, a implantação acaba se tornando
mais simples. O mesmo pode-se dizer em relação ao SOA. A implantação do SOA não precisa visar a utilização de uma solução BPMS para
orquestração. Mas é uma preparação natural para sua implementação.
Quem toma a decisão?
Uma questão não tão óbvia, é que se a TI implementa serviços reutilizáveis e genéricos, como as decisões ao longo do processamento são
tomadas? Afirmamos que o desenho do processo deveria ser o mais
genérico possível, e preferencialmente com poucos elementos programáticos. Bom, aqui temos algumas possibilidades.
Algumas soluções procuram reduzir ao mínimo a geração de códigos
do lado BPMS, e entre as soluções que fazem isto estão principalmente
aquelas que utilizam BPEL (as decisões são mais simples, basicamente
aquelas proporcionadas pelos XMLSchemas). A maior parte das decisões acontece do lado serviço, ou melhor, dentro da implementação do
serviço, que fica sob controle da TI. Isto pode ser uma desvantagem, já
que nas regras do TI a história tem mostrado que a agilidade é menor
na tomada de decisão (também pode ser discutível). Como se pretende
agilidade, quanto maior for o controle estas regras também não ficam
visíveis no desenho de processos, que é o artefato que o negócio consulta. Como a decisão fica implementada como parte dos serviços, os
ciclos de desenvolvimento acabam se tornando mais demorados. A
vantagem desta abordagem é uma clara divisão entre papéis.
Mas existem também soluções que levam a capacidade de geração de
códigos para o mundo BPMS, que é o caso do Oracle BPM. Nele foi
incorporado um engine de scripts que permite a criação de códigos
atrelados ao desenho do processo (figura 2). Estes scripts permitem manipular dados retornados pelos serviços e efetuar tomadas de decisão,
inclusive alterando dados e reenviando às camadas de serviços. Como
principal vantagem está a praticidade e maior controle da decisão nas
camadas de negócios. Por outro lado, exigem um conhecimento maior
de programação, o que deveria estar distante do negócio. Uma desvantagem desta abordagem é que os desenhos de processos e os serviços
acabam ficando mais acoplados, ou seja, alterações nas informações
retornadas pelos serviços podem exigir refatoramento dos desenhos de
processos. Atualmente a Oracle trabalha na nova versão de sua suite
que deve estar disponível em alguns meses. Uma das linhas que parece
ser seguida é cada vez mais desacoplar a camada de serviços da camada
de orquestração, até mesmo desaparecendo com este recurso de scripts
da próxima geração, permanecendo apenas como legado.
Figura 2. Como o OBPM atrela códigos ao desenho de processos.
Bem, e qual é o modelo que resolve a maior parte dos problemas?
Certamente esta resposta ainda não existe hoje, e as ferramentas vão
amadurecendo a cada nova abordagem que se tenta implementar.
ou mesmo influência nestas áreas de negócios, para não funcionar
como uma “fábrica indiscriminada de serviços sob demanda”. Este
certamente seria o pior cenário existente, retirando a inteligência da
área que tradicionalmente têm tomado as decisões em informática. Da
mesma forma, as soluções BPMS deveriam estar 100% sob domínio do
negócio, mas isto também não deve acontecer porque as soluções BPMS
necessitam das áreas de TI para execução. Existe todo um controle de
versionamento, instalação de novas versões, e mais uma série de atividades que a TI já está habituada a lidar no dia-a-dia. A melhor forma
de implementar uma campanha de marketing, por exemplo, precisa
do aval da TI para se tornar assertiva. Creio que o desenho mais realista
de que tenho conhecimento é aquele em que SOA vai aumentando sua
influência quanto mais próximo está da TI (figura 3), enquanto o BPM
tem mais influência quanto mais próximo está do negócio.
Figura 3. Relacionamento entre SOA e BPM em uma corporação.
Na verdade a influência (ou relevância) do SOA se reduz quando
caminhamos para as áreas de negócio e a influência das soluções
BPMS diminuem quando caminhamos para as áreas de TI. Nunca
nenhuma das duas é completamente independente da outra.
Considerações finais
Como seria de se esperar, os processos evolutivos das linguagens de
programação estão fazendo com que cada vez menos programação
seja necessária. Inicialmente, os programas eram criados em Assembly.
Com o advento das linguagens descritivas, de mais alto nível, como
Cobol, Fortran e ADA, os programadores aprenderam linguagens de
mais alto nível. Isto não tornou os sistemas mais simples de serem codificados. Na verdade as regras ficaram mais complicadas. Nem as APIs
e frameworks de mais alto nível tornaram as atividades mais simples
ou demandando menor quantidade de programadores. Mas cada vez
mais a linguagem Java será utilizada como infraestrutura de criação dos
produtos, e menos codificação de sistemas. Na maioria das situações,
teremos que lidar com editores gráficos que irão abstrair a implementação na maioria dos casos. Continuar insistindo nos modelos atuais
de implementação seria o mesmo que implementar uma folha de
pagamentos hoje em assembly (totalmente inviável). O plugin WTP do
eclipse, por exemplo, permite uma grande parte das atividades de codificação de um aplicativo Web com pouco acesso aos códigos. Soluções
específicas dos fabricantes aumentam ainda mais este patamar. Entretanto, quando uma destas soluções inevitavelmente falhar, as pessoas
que tiverem conhecimento profundo das bases de funcionamento do
+BWBFTUBSÍPNBJTBEBQUBEBTBSFTPMWFSPTQSPCMFNBTt
SOA é atrelado ao negócio ou à TI ?
Bem, esta é uma discussão que normalmente gera polêmica. Parece-me
que se seguirmos a linha de pensamento deste artigo, SOA está muito
relacionado à TI. Mas como a abordagem do SOA proporciona uma
criação de serviços mais genéricos, e que atendam a várias demandas
de várias das áreas de negócios, a TI precisaria de algum conhecimento
Referências
http://www.oracle.com/us/technologies/bpm/index.html
http://www-01.ibm.com/software/br/websphere/info/bpm/
http://www.bpmn.org/
http://www-01.ibm.com/software/solutions/soa/
47
Download