Linguagem de execução de processos de negócios

WS-BPEL
Linguagem de execução de processos de negócios de serviços da Web
AbreviaçãoWS-BPEL ou BPEL
StatusPublicados
Ano começou2001 (2001)
Publicado pela primeira vezAbril de 2003 ; 21 anos atrás (2003-04)
Última versão2,0
11 de abril de 2007 ; 16 anos atrás (2007-04-11)
OrganizaçãoOÁSIS
ComitêLinguagem de execução de processos de negócios de serviços da Web OASIS (WSBPEL) TC
Padrões básicosXML
DomínioIntegração de serviços da Web
Local na rede Internetdocs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.html

A Web Services Business Process Execution Language ( WS-BPEL ), comumente conhecida como BPEL ( Business Process Execution Language ), é uma linguagem executável padrão OASIS [1] para especificar ações dentro de processos de negócios com serviços da web . Os processos em BPEL exportam e importam informações utilizando exclusivamente interfaces de serviços web.

Visão geral

Pode-se descrever as interações de serviços Web de duas maneiras: como processos de negócios executáveis ​​e como processos de negócios abstratos.

  1. Um processo de negócios executável : modela um comportamento real de um participante em uma interação de negócios.
  2. Um processo de negócios abstrato : é um processo parcialmente especificado que não se destina a ser executado. Ao contrário dos Processos Executáveis, um Processo Abstrato pode ocultar alguns dos detalhes operacionais concretos necessários. Resumo Os processos desempenham uma função descritiva, com mais de um caso de uso possível , incluindo comportamento observável e/ou modelo de processo .

O WS-BPEL tem como objetivo modelar o comportamento de processos, [2] através de uma linguagem para especificação de Processos de Negócio Executáveis ​​e Abstratos. Ao fazer isso, amplia o modelo de interação dos Web Services e permite que ele suporte transações comerciais. Define também um modelo de integração interoperável que deverá facilitar a expansão da integração automatizada de processos dentro e entre empresas. Seu desenvolvimento surgiu da noção [3] de que programar em grande escala e programar em pequeno porte exigia diferentes tipos de linguagens.

Como tal, é serializado em XML e visa permitir a programação em grande escala.

Programação em grande/pequeno

Os conceitos de programação em grande escala e programação em pequena escala distinguem entre dois aspectos da escrita do tipo de processos assíncronos de longa execução que normalmente se vê em processos de negócios:

  1. A programação em geral geralmente se refere às interações de transição de estado de alto nível de um processo. BPEL refere-se a este conceito como um Processo Abstrato. Um Processo Abstrato BPEL representa um conjunto de comportamentos publicamente observáveis ​​de forma padronizada. Um Processo Abstrato inclui informações como quando esperar por mensagens , quando enviar mensagens, quando compensar transações com falha, etc.
  2. A programação pequena , por outro lado, lida com comportamento programático de curta duração, muitas vezes executado como uma única transação e envolvendo acesso à lógica e recursos locais, como arquivos , bancos de dados , etc.

História

As origens do WS-BPEL remontam à Web Services Flow Language (WSFL) e ao Xlang .

Em 2001, a IBM e a Microsoft definiram cada uma suas próprias linguagens de " programação nas grandes " bastante semelhantes: WSFL [4] ( Web Services Flow Language ) e Xlang , [5] respectivamente. A Microsoft ainda foi em frente e criou uma variante de script chamada XLANG/s que mais tarde serviria como base para seus serviços de orquestração dentro do BizTalk Server. Eles documentaram especificamente que esta linguagem “é proprietária e não está totalmente documentada”. [6]

Com o advento e a popularidade do BPML e o crescente sucesso do BPMI.org e do movimento BPMS aberto liderado pela JBoss e Intalio Inc., a IBM e a Microsoft decidiram combinar essas linguagens em uma nova linguagem, BPEL4WS. Em abril de 2003, BEA Systems , IBM, Microsoft, SAP e Siebel Systems submeteram o BPEL4WS 1.1 ao OASIS para padronização através do Comitê Técnico BPEL de Serviços Web. [7] Embora o BPEL4WS aparecesse nas versões 1.0 e 1.1, o comitê técnico do OASIS WS-BPEL votou [8] em 14 de setembro de 2004 para nomear sua especificação "WS-BPEL 2.0". (Essa mudança no nome alinhou o BPEL com outras convenções de nomenclatura padrão de serviços da Web que começam com "WS-" (semelhante ao WS-Security) e levou em consideração as melhorias significativas feitas entre BPEL4WS 1.1 e WS-BPEL 2.0.) Se não estiver discutindo um versão específica, o apelido BPEL é comumente usado [ carece de fontes ] .

Em junho de 2007, Active Endpoints, Adobe Systems , BEA, IBM, Oracle e SAP publicaram as especificações BPEL4People e WS-HumanTask, que descrevem como a interação humana em processos BPEL pode ser implementada. [ carece de fontes ]

Tópicos

Objetivos de design

Havia dez objetivos de design originais associados ao BPEL:

  1. Defina processos de negócios que interagem com entidades externas por meio de operações de serviços da Web definidas usando Web Services Description Language (WSDL) 1.1 e que se manifestam como serviços da Web definidos usando WSDL 1.1. As interações são "abstratas" no sentido de que a dependência está nas definições de portType, não nas definições de porta.
  2. Defina processos de negócios usando uma linguagem baseada em XML. Não defina uma representação gráfica de processos nem forneça qualquer metodologia de design específica para processos. [9]
  3. Defina um conjunto de conceitos de orquestração de serviços da Web que devem ser usados ​​pelas visualizações externa (abstrata) e interna (executável) de um processo de negócios. Tal processo de negócios define o comportamento de uma única entidade autônoma, normalmente operando em interação com outras entidades semelhantes. É reconhecido que cada padrão de uso (ou seja, visão abstrata e visão executável) exigirá algumas extensões especializadas, mas essas extensões devem ser mantidas no mínimo e testadas em relação a requisitos como importação/exportação e verificação de conformidade que vinculam os dois padrões de uso. padrões.
  4. Fornece regimes de controle hierárquicos e semelhantes a gráficos e permite que seu uso seja combinado da maneira mais perfeita possível. Isto deve reduzir a fragmentação do espaço de modelagem de processos.
  5. Fornece funções de manipulação de dados para a manipulação simples de dados necessária para definir dados de processo e controlar fluxo.
  6. Apoiar um mecanismo de identificação para instâncias de processo que permite a definição de identificadores de instância no nível da mensagem da aplicação. Os identificadores de instância devem ser definidos pelos parceiros e podem mudar.
  7. Apoie a criação e encerramento implícitos de instâncias de processo como mecanismo básico do ciclo de vida. Operações avançadas de ciclo de vida, como "suspender" e "retomar", podem ser adicionadas em versões futuras para aprimorar o gerenciamento do ciclo de vida.
  8. Defina um modelo de transação de longa duração baseado em técnicas comprovadas, como ações de compensação e definição de escopo, para apoiar a recuperação de falhas em partes de processos de negócios de longa duração.
  9. Use Web Services como modelo para decomposição e montagem de processos.
  10. Baseie-se nos padrões de serviços da Web (aprovados e propostos), tanto quanto possível, de maneira combinável e modular.

A linguagem BPEL

BPEL é uma linguagem de orquestração e não uma linguagem de coreografia . A principal diferença entre orquestração e coreografia é a executabilidade e o controle. Uma orquestração especifica um processo executável que envolve trocas de mensagens com outros sistemas, de modo que as sequências de troca de mensagens sejam controladas pelo designer da orquestração. Uma coreografia especifica um protocolo para interações peer-to-peer, definindo, por exemplo, as sequências legais de mensagens trocadas com o objetivo de garantir a interoperabilidade. Tal protocolo não é diretamente executável, pois permite muitas realizações diferentes (processos que o cumprem). Uma coreografia pode ser realizada escrevendo uma orquestração (por exemplo, na forma de um processo BPEL) para cada colega envolvido nela. As distinções de orquestração e coreografia são baseadas em analogias: orquestração refere-se ao controle central (pelo maestro) do comportamento de um sistema distribuído (a orquestra composta por muitos músicos), enquanto coreografia refere-se a um sistema distribuído (a equipe dançante) que opera de acordo com regras (a coreografia), mas sem controle centralizado.

O foco da BPEL em processos de negócios modernos, somado às histórias de WSFL e XLANG, levaram a BPEL a adotar serviços web como mecanismo de comunicação externa. Assim, os recursos de mensagens do BPEL dependem do uso da Web Services Description Language (WSDL) 1.1 para descrever mensagens enviadas e recebidas.

Além de fornecer facilidades para permitir o envio e recebimento de mensagens, a linguagem de programação BPEL também suporta:

  • Um mecanismo de correlação de mensagens baseado em propriedades
  • Variáveis ​​digitadas XML e WSDL
  • Um modelo de plug-in de linguagem extensível para permitir a escrita de expressões e consultas em vários idiomas: BPEL suporta XPath 1.0 por padrão
  • Construções de programação estruturada, incluindo if-then-elseif-else, while, sequência (para permitir a execução de comandos em ordem) e fluxo (para permitir a execução de comandos em paralelo)
  • Um sistema de escopo para permitir o encapsulamento da lógica com variáveis ​​locais , manipuladores de falhas , manipuladores de compensação e manipuladores de eventos
  • Escopos serializados para controlar o acesso simultâneo a variáveis .

Relacionamento de BPEL com BPMN

Não existe uma notação gráfica padrão para WS-BPEL, pois o comitê técnico do OASIS decidiu que isso estava fora do escopo. Alguns fornecedores inventaram suas próprias notações. Essas notações aproveitam o fato de que a maioria das construções no BPEL são estruturadas em blocos (por exemplo, sequência, while, pick, escopo, etc.). Esse recurso permite uma representação visual direta das descrições do processo BPEL na forma de structogramas , em um estilo reminiscente de um diagrama Nassi–Shneiderman .

Outros propuseram usar uma linguagem de modelagem de processos de negócios substancialmente diferente, nomeadamente Business Process Model and Notation (BPMN), como um front-end gráfico para capturar descrições de processos BPEL. Como ilustração da viabilidade desta abordagem, a especificação BPMN inclui um mapeamento informal e parcial [10] de BPMN para BPEL 1.1. Um mapeamento mais detalhado de BPMN para BPEL foi implementado em diversas ferramentas, incluindo uma ferramenta de código aberto conhecida como BPMN2BPEL. [11] No entanto, o desenvolvimento dessas ferramentas expôs diferenças fundamentais entre BPMN e BPEL, o que torna muito difícil, e em alguns casos impossível, gerar código BPEL legível por humanos a partir de modelos BPMN. Ainda mais difícil é o problema da engenharia de ida e volta de BPMN para BPEL : gerar código BPEL a partir de diagramas BPMN e manter o modelo BPMN original e o código BPEL gerado sincronizados, no sentido de que qualquer modificação em um é propagada para o outro. [ carece de fontes ]

Adicionando suporte de 'programação em pequeno porte' ao BPEL

As estruturas de controle do BPEL, como 'if-then-elseif-else' e 'while', bem como suas facilidades de manipulação de variáveis, dependem do uso de linguagens de 'programação em pequenas' para fornecer lógica. Todas as implementações BPEL devem suportar XPath 1.0 como linguagem padrão. Mas o design do BPEL prevê extensibilidade para que os construtores de sistemas possam usar outras linguagens também. BPELJ [12] é um esforço relacionado ao JSR 207 [13] que pode permitir que Java funcione como uma linguagem de 'programação pequena' dentro do BPEL.

BPEL4People

Apesar da ampla aceitação dos serviços Web em aplicações empresariais distribuídas, a ausência de interações humanas era uma lacuna significativa para muitos processos empresariais do mundo real.

Para preencher essa lacuna, o BPEL4People estendeu o BPEL da orquestração apenas de serviços da Web para também a orquestração de atividades humanas baseadas em funções.

Objetivos

No contexto de um processo de negócio BPEL4People

  • apoia a interação baseada em funções de pessoas
  • fornece meios de atribuir usuários a funções humanas genéricas
  • tem o cuidado de delegar a propriedade de uma tarefa apenas a uma pessoa
  • suporta cenário como

estendendo o BPEL com sintaxe e semântica independentes adicionais.

A especificação WS-HumanTask introduz a definição de tarefas humanas e notificações, incluindo suas propriedades, comportamento e um conjunto de operações usadas para manipular tarefas humanas. É introduzido um protocolo de coordenação para controlar a autonomia e o ciclo de vida das tarefas humanas habilitadas para serviços de forma interoperável.

A especificação BPEL4People introduz uma extensão WS-BPEL para abordar as interações humanas no WS-BPEL como cidadão de primeira classe . Ele define um novo tipo de atividade básica que utiliza tarefas humanas como implementação e permite especificar tarefas locais para um processo ou usar tarefas definidas fora da definição do processo. Esta extensão é baseada na especificação WS-HumanTask.

WS-BPEL 2.0

A versão 2.0 introduziu algumas mudanças e novos recursos:

  • Novos tipos de atividades: repetirUntil, validar, forEach (paralelo e sequencial), relançar, extensionActivity, compensaScope
  • Atividades renomeadas: switch/case renomeado para if/else, término renomeado para exit
  • Manipulador de rescisão adicionado às atividades de escopo para fornecer comportamento explícito para rescisão
  • Inicialização de variável
  • XSLT para transformações de variáveis ​​(nova função de extensão XPath bpws:doXslTransform)
  • Acesso XPath a dados variáveis ​​(sintaxe da variável XPath $variable[.part]/location)
  • Variáveis ​​de esquema XML em atividades de serviço da Web (para interações de serviço de estilo WS-I doc/lit)
  • MessageExchange declarado localmente (correlação interna de atividades de recebimento e resposta)
  • Esclarecimento de Processos Abstratos (sintaxe e semântica)
  • Habilitar substituições de linguagem de expressão em cada atividade

Veja também

Referências

  1. ^ Padrão OASIS WS-BPEL 2.0
  2. ^ Business Process Execution Language for Web Services, versão 1.1 Arquivado em 3 de dezembro de 2020 na Wayback Machine (5 de maio de 2003)
  3. ^ "Membros do OASIS formam o comitê técnico da linguagem de execução de processos de negócios de serviços da Web (WSBPEL)" . Comitê Técnico OASIS WSBPEL. 29 de abril de 2003.
  4. ^ "Páginas de rosto: Linguagem de fluxo de serviços da Web (WSFL)" . xml.coverpages.org/. 6 de junho de 2001 . Recuperado em 9 de outubro de 2014 .
  5. ^ "XLANG" . xml.coverpages.org/. 2001 . Recuperado em 9 de outubro de 2014 .
  6. ^ "Linguagem XLANG/s" . Microsoft . Recuperado em 9 de outubro de 2014 .
  7. ^ Comitê Técnico de Serviços Web BPEL.
  8. ^ "coreologia.com" . coreology. com. Arquivado do original em 27 de fevereiro de 2012 . Recuperado em 17 de abril de 2013 .
  9. ^ Chinosi, Michele (1º de janeiro de 2009). “Representando processos de negócio: modelo conceitual e metodologia de design”. {{cite journal}}: Citar diário requer |journal=( ajuda )
  10. ^ "Cópia arquivada" (PDF) . Arquivado do original (PDF) em 15 de setembro de 2012 . Recuperado em 17 de abril de 2013 .{{cite web}}: CS1 maint: archived copy as title (link)
  11. ^ BPMN2BPEL.
  12. ^ BPELJ arquivado em 16 de maio de 2005 na Wayback Machine
  13. ^ JSR 207

Leitura adicional

Livros sobre BPEL 2.0
Retrieved from "https://en.wikipedia.org/w/index.php?title=Business_Process_Execution_Language&oldid=1189662744"