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:

Wednesday, May 31, 2006

Microsoft Web Administration Summit (nastavak)
Debug Diagnostics

Debug Diagnostics je alat koji se dobija uz IIS Diagnostics Toolkit i pomaže administratorima u rešavanju problema (i na) produkcionim serverima. Besplatan je i radi na više verzija IIS-a. Do sada smo morali da koristimo različite alate za različite probleme. Debug Diagnostics bi trebao da ih sve zameni i da sve bude još bolje, sam analizira svoje trace log-ove i pronalazi problem ili nas upućuje u dobrom pravcu. Najpre se vrši trace-ovanje na serveru. Impresivna je činjenica da (po rečima predavača) to prikupljanje podataka uzima oko 3% procesorskog vremena. Analiza tih podataka je zahtevna u smislu procesorske snage, pa je ne treba pokretati na serveru, već prikupljene podatke snimiti u fajl i prebaciti na poseban kompjuter za dalje analiziranje. Alatka pomaže u otkrivanju grešaka koje je MS podelio u 3 grupe: crashes, hangs i memory leaks.
Osim ovog alata, u toolkit-u se nalazi još pomoćnih programa među kojima i WFetch (za praćenje HTTP zahteva i odgovora).
Download link: http://www.microsoft.com/downloads/details.aspx?FamilyID=9bfa49bc-376b-4a54-95aa-73c9156706e7&DisplayLang=en

Labels:

Microsoft Web Administration Summit (nastavak)
Log Parser 2.2

Log Parser je alat koji se besplatno može skinuti sa microsoft-ovog sajta a služi za univerzalan pristup tekstualnim logovima (CSV, XML,...), registry-u, fajl sistemu, event log-u i aktivnom direktorijumu. Pretraga se vrši korišćenjem SQL upita. Jedno od ograničenja jeste da se tek u verziji 3.0 očekuje mogućnost korišćenja JOIN-ova, pa se za sada to mora prevazilaziti spajanjem više logova u jedan. Izlazni format birate sami. Korišćenjem ovog alata možete dobiti i podatke o tome kada je najviše korišćen Vaš sajt, koje su stranice najviše tražene, koliko je bilo odgovora sa greškom 404 i sl. Izlazni podaci (rezultat upita) se mogu predstaviti grafikonom ukoliko je instaliran Office Web Components.

Labels:

Microsoft Web Administration Summit

Vreme: utorak 30.05.2006.
Mesto: Svečana sala Upravne zgrade Beogradskog sajma, Beograd

Izlazak konačne verzije IIS-a (7.0) Microsoft je iskoristio da predstavi administratorima i developerima svoj novi web server i da ih upozna sa svojim manje poznatim alatima. Stranica sa najavom događaja više ne postoji, sada se na njoj nalazi spisak prezentacija sa linkovima za download:
Predavači su bili Wade Hilmo (Rukovodilac IIS razvoja) i Chris Adams (IIS program menadžer).

Interesantan je potez Microsoft-a da samo jedno predavanje posveti IIS-u 7.0. Ostatak vremena je posvećen IIS-u 6.0, ASP.-NET-u 2.0, Log Parser-u 2.2 i Debug Diagnostics-u na IIS 6.0. Po prvobitnom planu trebali smo da slušamo o MOM-u, ali je suviše malo ljudi znalo šta je to, tako da se Microsoft odlučio (!?) da kod nas i na dalje, umesto te prezentacije, pojasni proveru identiteta na IIS 6.0. Verujem da je to bila najkorisnija prezentacija, iako me čudi zašto MS nije gurao MOM. Chris je objavio i puštanje u rad sajta posvećenog IIS-u: http://www.iis.net. Pored foruma, blog-ova i drugih očekivanih sekcija, na sajtu se nalaze i tehnička dokumenta i webcast-ovi. S obzirom da IIS 7.0 može da se instalira samo na Windows 2003 ili Vista-u, na tom sajtu možete naći i IIS7 Virtual Labs gde možete do mile volje isprobavati IIS 7.0 na virtuelnim serverima.

Labels: