IT-Voice

Thursday, June 15, 2006

BPEL - primer

Za potrebe ovog teksta sam koristio Oracle BPEL Process Manager, Eclipse sa plugin-om koji se može skinuti sa Oracle-ovog sajta i primer iz prvog posta o BPEL-u.


Na slici je overview jednog BPEL poslovnog procesa. Sa leve strane se nalazi klijent koji vidi proces kao web servis sa metodom process. U navedenom slučaju su ulazni parametri ProductID i Amount. Nisam se previše trudio da nađem način da preko designer-a promenim input parametar tako da bude složen; intervenisao sam u samom wsdl-u koji, naravno, generiše okruženje.
Sa desne strane se nalaze servisi koje će koristiti naš poslovni proces. Prema primeru, postoji dva servisa (Partner Links):
  1. naš ws StockWS sa metodama:
    • Order – pomoću koje su korisnici naručivali proizvode pre integracije sistema, a sada ovu metodu poziva BPEL poslovni proces
    • NeedSupplies – odgovara da li je potrebno nabaviti nove količine naručenog proizvoda
  2. dobavljačev ws SupplierWS sa metodom:
    • Order – pomoću nje naručujemo nove proizvode automatski

U sredini se nalaze promenljive. Input i output predstavljaju ulaz i izlaz (respektivno) našeg procesa. Ostale promenljive su ulazi i izlazi partnerskih ws-ova kojima se dodeljuju i iz kojih se čitaju vrednosti pomoću assign naredbe.

Process map, tj. gotov BPEL proces za navedeni primer bez kontrole grešaka:

BPEL mogućnosti

Tolike godine čekamo interoperabilnost da sam od početka sumnjao u primenljivost BPEL-a. Međutim, za primer iz prethodnog posta je dovoljan skup dalje navedenih funkcionalnosti (ikone su preuzete iz BPEL Designer-a - plugin-a za Eclipse).

Svaki proces počinje sa , a završava sa .
Ulaz u proces (novonastali ws):
Ukoliko postoji potreba za izlazom, koristi se element
Da bi se mogla postići interoperabilnost, svi podaci moraju biti u obliku xml-a. Tako postoje input i output promenljive koje predstavljaju ulazne i izlazne podatke i generiše ih sam Eclipse prilikom inicijalnog pravljenja projekta. Rezultati pozivanja servisa i drugih operacija se moraju čuvati u promenljivama koje su takođe xml podaci. Na taj način je moguće koristiti podatke iz heterogenih sistema, jednostavnim kliktanjem miša u stilu: iz input-a uzmi parametar ProductID i prosledi ga u parametar metode Order web servisa StockWS. Mogu se praviti nove promenljive (lokalne i globalne) proizvoljne strukture, ali treba imati u vidu da tip promenljive zapravo predstavlja ta struktura (šema). BPEL je tipiziran jezik. Naredba kojom se vrši dodela vrednosti promenljivama i izvršavanje operacije nad istim se zove assign. Postoje ugrađene funkcije a mogu se koristiti i XPath i XQuery izrazi.
Naredba assign je predstavljena sa: .
Switch naredba za ispitivanje uslova:
Svaka operacija ima svoja svojstva. Tako naredba invoke koja služi za pozivanje metode ws-a ima svojstva kao što su input i output promenljive. Ukoliko metoda prima samo jedan parametar, jednostavno ćemo popuniti svojstvo input. Ukoliko to nije slučaj, najpre ćemo kreirati promenljivu koja je istog tipa kao i kompleksni tip koji predstavlja ulaz metode, komandom assign popuniti vrednost te promenljive i u input svojstvo upisati naziv promenljive.
Poziv ws-u se prikazuje sa:
Jako korisne su i komponente za petlje. Mogu se koristiti ako u slučaju kada dobijamo niz stavki, gde za svaku pojedinačnu stavku treba izvršiti određene operacije (npr. pozvati ws). Tu su i ekstenzije za notifikaciju (e-mail, sms, fax, ...). Prisutne su i komponente za upravljanje greškama. Ukoliko ovo nije dovoljno, moguće je pisati i Java kod iz kog se može pristupati okruženju (npr. promenljivama)!
Svaki klijent dobija svoju instancu procesa. Svaki proces je perzistentan što znači da se njegovo stanje čuva u bazi podataka. Tako da je moguće napraviti proces koji će 3 meseca mirovati i po isteku perioda proveriti da li je kupac izvršio uplatu!

Saturday, June 10, 2006

BPEL (Business Process Execution Language)

BPEL je xml-like jezik za opisivanje poslovnih procesa kao web servisa i povezivanje različitih servisa u cilju obavljanja određenih zadataka. Praktično, omogućava integraciju različitih servisnih sistema bez pisanja koda, što znači da je konačno moguće povezivanje web servisa bez obzira u kom programskom jeziku su pisani. Time smanjuje troškove i kompleksnost integracionih projekata, kao i vreme i troškove razvoja.

Primer:
  • nasleđen je sistem koji kao spoljašnji interfejs ima web servis
  • dobavljač takođe nudi svoje usluge kroz ws
  • želimo da nakon primljene porudžbine, automatski poručimo nove količine proizvoda ukoliko su zalihe ispod dozvoljene granice
Tradicionalno rešenje bi bilo: prepraviti metodu za naručivanje tako da nakon obrade porudžbine, ukoliko je potrebno, pozove dobavljačev ws i naruči određenu količinu proizvoda. Pored ove izmene, morali bi da pišemo još dodatni kod ukoliko dobavljačev ws nije napisan u istom programskom jeziku u kom je pisan naš ws. BPEL-om bismo jako brzo ostvarili željeni cilj bez pisanja dodatnog koda i bez izmene postojećeg.

BPEL-om se definiše ŠTA treba uraditi a ne i KAKO. Način na koji će se određena aktivnost implementirati je prepušten web servisu. Da sve bude još bolje, za prostije zahteve nije potrebno poznavati BPEL jer postoje grafički alati kojima se BPEL procesi predstavljaju u vidu algoritma. Novonastali poslovni proces je zapravo novi web servis te ga je lako koristiti i eventualno dalje integrisati.

Oracle BPEL Process Manager:
Open Source BPEL Engine:

Saturday, June 03, 2006

Microsoft Web Administration Summit (nastavak)
IIS 7.0

Najpre utisak da je ovo MS-ov potez da nas ubedi da kupimo nov OS (IIS 7.0 radi na Windows-u 2003 i Vista-i). Zato ovaj post kasni za ostalim. Nakon pauze i istraživanja po Internetu, odlučio sam da samo navedem (verovatno nekompletan) spisak novosti:
  • modularna arhitektura - napisan je ponovo i testiran i od strane nezavisnih firmi i po rečima predavača nije nađen nijedan propust; napisan je po sistemu plug-inova, tako da konačno možemo odabrati komponente koje želimo da koristimo i samo će one biti instalirane i kasnije update-ovane; IIS je razbijen na module do te mere da ukoliko ne želimo Basic autentikaciju, jednostavno isključimo taj modul; rezultat je manje zauzete memorije, bolje performanse i veća sigurnost; moduli se isključuju pomoću XML konfiguracionog fajla; moguće je dodati nove module ili postojeće zameniti našim
  • integracija IIS sa ASP.NET - integrisan je i .NET framework, ADO.NET i nova generacija web servisa (Indigo); više se ASP.NET moduli ne pokreću kroz ISAPI ekstenziju, već se koristi pipeline sličan ASP.NET-ovom - postoji podrška za stari model; moduli se mogu pisati i u .NET-u; rezultat je potpuno otvoren web server - ne postoji nešto što MS može da napravi a da to ne mogu i drugi developer-i; NAPOMENA: s obzirom da su osnovni moduli unmannaged, treba pažljivo projektovati i pisati managed module
  • konfigurisanje - spajanje IIS-a i ASP.NET-a omogućava da se sve podešava na jednom mestu (nov GUI); hijerarhija u konfigurisanju - ApplicationHost.config je xml konfiguracioni fajl za ceo server, a svaki sajt i virtuelni direktorijum može imati svoja lokalna, specifična podešavanja u web.config fajlu - rezultat je prebacivanje individualnih podešavanja jednostavnim kopiranjem web.config fajla (za koji neće biti GUI podrške iz sigurnosnih razloga); remote upravljanje preko HTTP-a
  • nov WMI provajder za olakšanu automatizaciju i trace-ovanje
  • znatno unapređena dijagnostika
  • poboljšanje performansi - po rečima predavača novi IIS je brži 15-20%; može se uključiti HTTP kompresija i fino podesiti keširanje izlaznih podataka

Može se reći da je ovo nov web server. Spisak novina je impresivan, i ako zaista bude siguran (a MS kaže da je tome najviše pažnje posvetio), sigurno je da će uskoro biti interesantan izbor i onima koji za svoje web servere ne koriste MS-ovo rešenje.

Labels: