Business Process Execution Language

Z Wikipedii, wolnej encyklopedii
(Przekierowano z BPEL)

BPEL (ang. Business Process Execution Language for Web Services, pełna nazwa Web Services Business Process Execution Language, WS-BPEL) – oparty na XML język do definiowania procesów biznesowych opartych o usługi sieciowe, będący standardem OASIS. Każdy proces biznesowy zdefiniowany w BPEL również jest usługą sieciową i może wchodzić w skład innych procesów.

Koncepcja[edytuj | edytuj kod]

Interakcje między usługami sieciowymi mogą być rozpatrywane w dwóch kategoriach: abstrakcyjnych procesów oraz wykonywalnych procesów. Proces wykonywalny opisuje wszystkie aspekty interakcji, wliczając w to informacje techniczne niezbędne do ustanowienia połączenia. Proces abstrakcyjny sporządzony jest na wyższym poziomie i może być pozbawiony części detali, z tego powodu nie może być bezpośrednio wykonany przez maszynę. Procesy abstrakcyjne pełnią rolę opisową i mogą stanowić szablon do definiowania rodzin procesów wykonywalnych. Język WS-BPEL może modelować oba rodzaje interakcji.

Rola języka WS-BPEL rozpoczyna się tam, gdzie kończy WSDL, który opisuje interfejs pojedynczej usługi. BPEL opisuje, jak zbiór usług wystawianych przez różne aplikacje może współpracować ze sobą do osiągnięcia konkretnego celu biznesowego. Każdy proces BPEL również jest usługą sieciową, dlatego także opisywany jest przez WSDL i może być używany jako część składowa innych procesów. WS-BPEL jest przede wszystkim językiem do programowania wielkoskalowego (ang. programming in the large), pozwalając na integrację komponentów i aplikacji różnych dostawców oraz na tworzenie długo trwających, asynchronicznych procesów. Posiada jednak również instrukcje proceduralne takie, jak if czy while.

Historia[edytuj | edytuj kod]

IBM oraz Microsoft rozwijały początkowo swoje własne języki do programowania wielkoskalowego, dość podobne do siebie: WSFL oraz XLANG. Wraz ze wzrostem popularności BPML-a, sukcesem inicjatyw BPMI.org oraz otwartego ruchu BPMS prowadzonego przez JBoss i Intalio Inc., obie firmy zdecydowały się na połączenie swoich produktów w nowy język BPEL4WS. W kwietniu 2003 roku, BEA Systems, IBM, Microsoft, SAP oraz Siebel Systems przesłały specyfikację języka BPEL4WS 1.1 do konsorcjum standaryzacyjnego OASIS. Choć BPEL4WS pojawił się w wersjach 1.0 i 1.1, techniczny komitet BPEL zagłosował 14 września 2004 roku za nazwaniem nowej specyfikacji „WS-BPEL 2.0”. Zmiana ta była podyktowana chęcią ujednolicenia nazwy z innymi specyfikacjami dotyczącymi usług sieciowych, stosującymi przedrostek WS-, a także podkreśleniem znaczących usprawnień wprowadzanych przez standard w stosunku do starszych wersji. W czerwcu 2007, firmy Active Endpoints, Adobe Systems, BEA Systems, IBM, Oracle Corporation i SAP AG opublikowały specyfikacje BPEL4People oraz WS-HumanTalk, które uwzględniają możliwość dodawania do procesów interakcji ludzkich (oryginalnie BPEL pozwala na tworzenie wyłącznie w pełni automatycznych procesów).

Zasada działania[edytuj | edytuj kod]

Założenia projektowe[edytuj | edytuj kod]

BPEL posiada dziesięć głównych założeń projektowych:

  1. Definiowane procesy biznesowe komunikują się z systemami poprzez usługi sieciowe zdefiniowane przy pomocy WSDL 1.1 i same są usługami sieciowymi opisanymi przez WSDL 1.1. Interakcje są „abstrakcyjne”, tj. procesy zależą od definicji portType w WSDL-u, a nie od port.
  2. Procesy biznesowe zdefiniowane są w języku bazującym na XML-u. Standard notacji graficznej nie jest przewidziany.
  3. Dostępny jest zbiór pojęć związanych z orkiestracją usług sieciowych, które mogą być używane zarówno w wykonywalnych, jak i abstrakcyjnych spojrzeniach na proces biznesowy.
  4. BPEL musi mieć możliwość definiowania przepływu sterowania zarówno w sposób hierarchiczny, jak i grafowy.
  5. BPEL musi dostarczać funkcji do wykonywania prostych manipulacji na danych, niezbędnych do zdefiniowania przepływu sterowania oraz przetwarzanych danych.
  6. Musi istnieć wsparcie dla identyfikowania instancji procesów.
  7. Musi istnieć wsparcie dla podstawowego cyklu życia procesu.
  8. BPEL musi definiować model transakcyjny zezwalający na tworzenie długo żyjących transakcji, bazujący na sprawdzonych technikach takich, jak akcje kompensacyjne i zakresy, do wspierania odtwarzania stanu systemów w przypadku awarii.
  9. Modelem dekompozycji i składania procesów są usługi sieciowe.
  10. Język musi być zbudowany na bazie już istniejących standardów dotyczących usługi sieciowych oraz Internetu.

Język BPEL[edytuj | edytuj kod]

BPEL jest językiem orkiestracji usług sieciowych, a nie choreografii. Podstawowa różnica polega na tym, że w choreografii usługi współpracują ze sobą bezpośrednio. W orkiestracji usługa komunikuje się wyłącznie z menedżerem orkiestracji (w tym przypadku: maszyna BPEL), który wie, gdzie i jak przekazać dalej komunikaty. Nie musi tym samym znać innych usług biorących udział w procesie. Procesy biznesowe są skryptami interpretowanymi i wykonywanymi przez maszyny procesów biznesowych w środowisku zgodnym ze standardem BPEL.

W pliku BPEL wyróżnionych jest pięć głównych sekcji:

  1. przepływ wiadomości (message flow) – wywoływanie operacji na usługach sieciowych, przesyłanie żądania i oczekiwanie na wynik,
  2. przepływ sterowania (control flow) – w jaki sposób akcje następują po sobie; model hybrydowy: przepływ hierarchiczny lub grafowy,
  3. przepływ danych (data flow) – zmienne używane w procesie biznesowym,
  4. orkiestracja procesów (process orchestration) – ustanawia relacje między usługami,
  5. obsługa błędów i wyjątków (fault and exception handling) – opisuje, jak należy obsługiwać błędy, które mogą się pojawić w trakcie wykonywania procesu.

Narzędzia[edytuj | edytuj kod]

Implementacje BPEL:

Narzędzia do modelowania procesów BPEL:

Zobacz też[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]