Linguagem de Execução de Processos de Negócios

Da Wikipédia, a enciclopédia livre
Ir para a navegação Saltar para pesquisar

WS-BPEL
Linguagem de Execução de Processos de Negócios de Serviços da Web
AbreviaçãoWS-BPEL ou BPEL
StatusPublicados
Ano de início2001 (2001)
Publicado pela primeira vezabril de 2003 ; 19 anos atrás (2003-04)
Última versão2.0
11 de abril de 2007 ; 15 anos atrás (2007-04-11)
OrganizaçãoOÁSIS
ComitêOASIS Web Services Business Process Execution Language (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 web services . Os processos em BPEL exportam e importam informações utilizando exclusivamente interfaces de webservices.

Visão geral

Pode-se descrever as interações de serviços da 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ócio 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. Processos abstratos têm um papel descritivo, com mais de um caso de uso possível , incluindo comportamento observável e/ou modelo de processo .

O WS-BPEL visa modelar o comportamento dos processos, [2] através de uma linguagem para a especificação de processos de negócios executáveis ​​e abstratos. Ao fazer isso, ele estende o modelo de interação de Web Services e permite que ele suporte transações de negócios. Ele também define um modelo de integração interoperável que deve facilitar a expansão da integração automatizada de processos dentro e entre os negócios. Seu desenvolvimento surgiu da noção [3] de que programar em grande escala e programar em pequena exigia diferentes tipos de linguagens.

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

Programação no grande/pequeno

Os conceitos de programação em grande escala e programação em pequena distinção entre dois aspectos da escrita do tipo de processos assíncronos de longa duração que normalmente são vistos em processos de negócios:

  1. A programação em grande escala 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 observáveis ​​publicamente 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 no small , em contraste, lida com o comportamento programático de curta duração, muitas vezes executado como uma única transação e envolvendo acesso à lógica local e recursos como arquivos , bancos de dados , etc.

História

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

Em 2001, IBM e Microsoft definiram suas próprias linguagens bastante semelhantes, " programação nas grandes " linguagens: WSFL [4] ( Web Services Flow Language ) e Xlang , [5] respectivamente. A Microsoft até 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 essa linguagem "é proprietária e não está totalmente documentada". [6]

Com o advento e popularidade do BPML , e o crescente sucesso do BPMI.org e o 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, a 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 Web Services. [7] Embora o BPEL4WS tenha aparecido como uma versão 1.0 e 1.1, o comitê técnico OASIS WS-BPEL votou [8]em 14 de setembro de 2004 para nomear sua especificação "WS-BPEL 2.0". (Esta mudança no nome alinhou BPEL com outras convenções de nomenclatura padrão de serviço da web que começam com "WS-" (semelhante a 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 uma 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 nos processos BPEL pode ser implementada.

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ço 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 ou forneça qualquer metodologia de projeto específica para processos.
  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. Esse processo de negócios define o comportamento de uma única entidade autônoma, normalmente operando em interação com outras entidades semelhantes. Reconhece-se 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 usos padrões.
  4. Forneça regimes de controle hierárquicos e gráficos e permita que seu uso seja combinado da maneira mais perfeita possível. Isso deve reduzir a fragmentação do espaço de modelagem do processo.
  5. Forneça funções de manipulação de dados para a manipulação simples dos dados necessários para definir os dados do processo e controlar o fluxo.
  6. Suporta um mecanismo de identificação para instâncias de processo que permite a definição de identificadores de instância no nível de mensagem do aplicativo. Os identificadores de instância devem ser definidos pelos parceiros e podem ser alterados.
  7. Dê suporte à criação e finalização implícitas de instâncias de processo como o 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 gerenciamento aprimorado 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 escopo para dar suporte à recuperação de falhas para partes de processos de negócios de longa duração.
  9. Use Web Services como modelo para decomposição e montagem de processos.
  10. Construa o máximo possível em padrões de serviços da Web (aprovados e propostos) de maneira combinável e modular.

A linguagem BPEL

BPEL é uma linguagem de orquestração , e não uma coreografiaLíngua. 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 de 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 é executável diretamente, 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 par envolvido nela. A orquestração e as distinções coreográficas são baseadas em analogias:

O foco da BPEL em processos de negócios modernos, somado às histórias de WSFL e XLANG, levou 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 as mensagens de saída e de entrada.

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 ​​tipadas 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, sequence (para habilitar a execução de comandos em ordem) e flow (para habilitar 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 .

Relação de BPEL para BPMN

Não há 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 tiram vantagem do fato de que a maioria das construções em BPEL são estruturadas em blocos (por exemplo, sequência, enquanto, escolha, escopo, etc. ) uma reminiscência de um diagrama de Nassi-Shneiderman .

Outros propuseram o uso de uma linguagem de modelagem de processos de negócios substancialmente diferente, a saber , Modelo e Notação de Processos de Negócios (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 [9] de BPMN para BPEL 1.1. Um mapeamento mais detalhado de BPMN para BPEL foi implementado em várias ferramentas, incluindo uma ferramenta de código aberto conhecida como BPMN2BPEL. [10] 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, gerarCódigo BPEL de modelos BPMN. Ainda mais difícil é o problema da engenharia de ida e volta 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. [ citação necessária ]

Adicionando suporte 'programação no pequeno' 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 'programação nas linguagens pequenas' para fornecer lógica. Todas as implementações BPEL devem suportar XPath 1.0 como idioma padrão. Mas o design do BPEL prevê extensibilidade para que os construtores de sistemas também possam usar outras linguagens. BPELJ [11] é um esforço relacionado ao JSR 207 [12] que pode permitir que Java funcione como uma linguagem de 'programação no pequeno' dentro do BPEL.

BPEL4Pessoas

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

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

Objetivos

No contexto de um processo de negócio BPEL4People

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

estendendo BPEL com sintaxe e semântica independentes adicionais.

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

A especificação BPEL4People introduz uma extensão WS-BPEL para abordar as interações humanas no WS-BPEL como um cidadão de primeira classe . Ele define um novo tipo de atividade básica que usa tarefas humanas como uma 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 atividade: repeatUntil, validar, forEach (paralelo e sequencial), relançar, extensionActivity, compensarScope
  • Atividades renomeadas: switch/case renomeado para if/else, finalizado renomeado para exit
  • Manipulador de rescisão adicionado às atividades do 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 de 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)
  • Ativar substituições de idioma 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 (5 de maio de 2003)
  3. ^ "Os membros do OASIS formam o comitê técnico do Business Process Execution Language (WSBPEL) dos serviços da Web" . Comitê Técnico OASIS WSBPEL. 29 de abril de 2003.
  4. ^ "Capas: Web Services Flow Language (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. ^ "Língua XLANG/s" . Microsoft . Recuperado em 9 de outubro de 2014 .
  7. ^ Comitê técnico de BPEL dos serviços da Web .
  8. ^ "coreologia.com" . coreology. com. Arquivado a partir do original em 27 de fevereiro de 2012 . Recuperado em 17 de abril de 2013 .
  9. ^ "Cópia arquivada" (PDF) . Arquivado a partir 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)
  10. ^ BPMN2BPEL .
  11. BPELJ Arquivado em 16 de maio de 2005 no Wayback Machine
  12. ^ JSR 207

Leitura adicional

Livros em BPEL 2.0