BizAgi Studio Cz, 5 Stworzeni aplikacji zewn trznej w ASP NET

background image

Projektowanie systemu workflow przy

użyciu narzędzia BizAgi Studio

Część 5

Stworzeni aplikacji zewnętrznej w

ASP.NET

Instytut Systemów Informatycznych, Wydział Cybernetyki, Wojskowa Akademia Techniczna

Paweł Mieteo, Jarosław Koszela

Spis treści

Wprowadzenie .................................................................................................................................... 2

Stworzeni aplikacji zewnętrznej w ASP.NET ........................................................................................ 2

background image

Wprowadzenie

W dzisiejszych czasach jedną z podstawowych funkcji każdego oprogramowania jest możliwośd
integracji z systemami zewnętrznymi. BizAgi studio jest narzędziem, które posiada mechanizmy
integracyjne. Po pierwsze posiada API w postaci WebService, które pozwala zdalnie koordynowad
proces oraz daje możliwośd manipulowania danymi. Z drugiej strony aplikacja stworzona w BizAgi
Studio pozwala wywoływad metody z zewnętrznych WebService’ów lub pozwala synchronizowad
dane z zewnętrznymi bazami danych.

Stworzeni aplikacji zewnętrznej w ASP.NET

W celu stworzenia interakcji tworzonego procesu z systemem zewnętrznym zbudujemy namiastkę
serwisu internetowego. Przyjmiemy, że aplikacja ta będzie dostarczała procesowi informacji o
studencie oraz w aplikacji tej będzie możliwośd potwierdzenia wpłaty pieniędzy przez studenta.

Na zadaniu „Pobranie informacji o studencie” BizAgi odwoła się do wystawionego serwisu i pobierze
ilośd punktów ECTS studenta. Kolejnym punktem interakcji będzie wpłata pieniędzy. BizAgi po
uaktywnieniu zdarzenia „Wpłynięcie pieniędzy” wyśle do serwisu zewnętrznego komunikat, że
oczekuje na potwierdzenie wpłaty. W systemie internetowym zostanie zapisana informacja o
oczekującym zdarzeniu, oraz zostanie zaimplementowana możliwośd potwierdzenia wpłaty. Tym
razem to aplikacja zewnętrzna wywoła odpowiednią metodę na WebSerwice systemu workflow, tak
aby zdalnie wywoład zdarzenie przejścia na kolejny krok procesu.

Do stworzenia aplikacji internetowej użyjemy technologii ASP.NET. Będziemy posługiwad się
Microsoft Visual Studio 2010 oraz bazą danych MS SQL.

background image

Rysunek 1. Utworzenie nowego projektu

W celu utworzenia nowego projektu wybieramy opcję File->New->Project… .

background image

Rysunek 2. Wybranei typu projektu

Naszym oczom pokaże się okno gdzie będziemy mogli wybrad typ projektu, nadad mu nazwę oraz
wskazad lokalizację. Wybieramy ASP. NET Web Application, nazwę wpiszmy
TutorialBizAgi.ExternalSystem oraz zostawmy domyślną lokalizację. W celu potwierdzenia wciskamy
przycisk OK.

VS(Visual Studio) utworzy nam domyślny szkielet aplikacji.

Po prawej stronie mamy okienko o nazwie Solution Explorer, gdzie możemy przejrzed aktualne pliki
projektu.

background image

Rysunek 3. Konfiguracja serwera do uruchamiania aplikacji

Do uruchamiania aplikacji możemy użyd serwera deweloperskiego, w tym celu na solution należy
wybrad opcję właściwości(properties) i w zakładce Web zaznaczyd opcję „Use Visual Studio
Development Server” oraz „Specific port”, co spowoduje, że nasz aplikacja za każdym razem będzie
uruchamiała się na tym samym porcie. Jest to konieczne, ponieważ w BizAgi Studio musimy podad
adres serwera, a więc nie może on się zmieniad. Po wprowadzeni zmian należy wcisnąd Carl+S, co
zapisze ustawienia.

W celu odpalenia aplikacji należy wcisnąd Ctrl+F5, Visual Studio automatycznie odpali serwer
deweloperski pod zdefiniowanym portem oraz otworzy przeglądarkę internetową
(

http://localhost:53229/

).

Kolejnym krokiem jest utworzenie projektu, który będzie pełnił funkcję warstwy dostępu do danych.
W tym celu w oknie Solution Explorer na węźle Solution wybieramy opcję Add->New Project… .

background image

Rysunek 4. Dodanie nowego projektu do Solution

Rysunek 5. Wybranie typu projektu

Z listy projektów wybieramy Class Library oraz nadajemy nazwę
TutorialBizAgi.ExternalSystem.Entities.

Warstwę dostępu do danych zrealizujemy wykorzystując bibliotekę ORM Entity Framework.

background image

Rysunek 6. Dodanie modelu danych

W tym celu do nowo utworzonego projektu dodajemy element ADO.NET Entity Data Model nadając
mu nazwę Model. VS uruchomi kreator tworzenia modelu.

background image

Rysunek 7. Kreator tworzenia modelu danych

Entity Framework daje nam możliwośd automatycznego utworzenia modelu na podstawie istniejącej
bazy danych. Drugą możliwością jest utworzenie pustego modelu, ręczne zbudowanie struktury
danych oraz wygenerowanie bazy danych na podstawie modelu. To drugie podejście nazywa się
Model First i niego właśnie skorzystamy, a więc wybieramy opcję Empty model i wciskamy guzik
Finish.

DO przechowywania danych będziemy używad bazy danych MS SQL Server. Aby wygenerowad
strukturę bazy danych musimy, uprzednio utworzyd pustą bazę na SQL serwerze. W tym celu
otwórzmy okno Server Explorer(Główne menu VS->View->Server Explorer).

background image

Rysunek 8. Solution Explorer - Utworzenie nowej bazy danych

Na węźle Data Connections wybieramy opcję Create New SQL Server Database… .

Rysunek 9. Konfiguracja połączenia oraz nadanie nazwy dla bazy

Należy wskazad instancje SQL Serwera oraz podad sposób logowania. W moim przypadku SQL Serwer,
który będzie używany jest instancją domyślną więc wystarczy że podam nazwę MOJEGO
komputera(WDEVPMI). Wybieram opcję autentykacji Windows Authentication oraz wpisuję nazwę
bazy danych TutorialBizAgiDB. Po stworzeniu pustej bazy danych przystąpmy do zamodelowania
struktury danych. Należy otworzyd plik Model.edmx, VS otworzy go w narzędziu do modelowania.

background image

Rysunek 10. Model struktury danych

Na nasze potrzeby dodamy do modelu encję student gdzie będzie przechowywana informacja o ilości
punktów ECTS. Do studenta będzie przypisana dowolna ilośd opłat. Dodatkowo dodamy encję
przedmiot, gdzie będzie lista przedmiotów, na które student będzie mógł zdawad ponownie. Tabela
ta będzie podłączona do systemu work flow.

Rysunek 11. Generacja skryptów tworzących bazę danych

Po zamodelowaniu struktury danych korzystając z menu kontekstowego wybieramy opcję „Generate
Database from Model”.

background image

Rysunek 12. Wybieranie połączenia do bazy danych

Kreator tworzenia skryptu tworzącego poprosi o wybranie połączenia do bazy danych. Wybieramy
uprzednio stworzoną bazę oraz zaznaczamy opcję „Save entity connection setting In App.Config as”.

background image

Rysunek 13. Podgląd wygenerowanego skryptu

W ostatnim kroku podajemy nazwę pliku, do którego zostanie zapisany skrypt DLL. NA tym samym
oknie istnieje możliwośd zweryfikowania otrzymanego rezultatu. Po wciśnięciu przycisku Finish skrypt
zostanie zapisany, a plik zostanie otwarty w VS.

Rysunek 14. Uruchomienie skryptu DLL

background image

Używając menu kontekstowego i opcji „Execute SQL”, należy uruchomid skrypt.

Rysunek 15. Łączenie do bazy danych

W oknie należy podad nazwę serwera oraz dane dostępu. Po wciśnięciu przycisku Connect zostanie
nawiązane połączenie oraz wykonany skrypt tworzący bazę danych.

Rysunek 16. Definicja połączenia do bazy danych

W projekcie Entities można znaleźd plik App.Config, w którym będzie zdefiniowane połączenie do
bazy danych. Aby nasza aplikacja również używała takich danych konfiguracyjnych należy je
skopiowad do apliku Web.Coinfig w głównym projekcie.

Po przygotowaniu projektu pełniącego funkcję warstwy bazy danych, należy dołączyd go do projektu
głównego. Takie połączenie nazywa się referencją.

background image

Rysunek 17. Dodanie referencji

W celu dodania referencji należy wybrad opcję „Add Reference” z menu kontekstowego na węźle
References.

Rysunek 18. Dodawanie referencji do projektu

background image

Po uruchomieniu okna z dostępnymi elementami należy wybrad zakładkę Projects oraz wskazad
projekt Entities i zatwierdzid przyciskiem OK.

Rysunek 19. Dodanie referencji do biblioteki DLL

.Net Fremework jest zbiorem bibliotek. Aby w projekcie głównym móc skorzystad z Entity
Framework’a należy dodad referencje do biblioteki System.Data.Entity. W tym celu na oknie wyboru
referencji należy przejśd na zakładkę .NET i wybrad odpowiednią bibliotekę.

Nasza aplikacja musi dad możliwośd zdalnego uruchamiania metod, tak aby workflow mógł
komunikowad się z nią. W tym celu zastosujemy technologii WebServices, która za pomocą protokołu
komunikacyjnego http pozwala wywoływad zdalnie metody. Jest to metoda uniwersalna, mająca
wsparcie praktycznie w każdym liczącym się środowisku programistyczny.

background image

Rysunek 20. Dodanie nowego elementu do projektu

Do projektu dodamy WebService, w tym celu na głównym węźle projektu posługując się menu
kontekstowym wybieramy opcję Add->New Item… .

background image

Rysunek 21.Wybór typu elementu

Wybieramy typ elementu Web Service, nadajemy mu nazwę WebService i potwierdzamy wciskając
przycisk Add. Do projektu doda się plik o nazwie WebService.asmx. Klikając dwukrotnie otworzymy
plik implementujący metody web serwisu. Dodamy do niego następujące dwie metody:

[

WebMethod

]

public

int

PobierzPunktyEcts(

int

numerIndeksu)

{

int

? punktyEcts =

null

;

using

(Entities.

ModelContainer

dbContext =

new

Entities.

ModelContainer

())

{
punktyEcts = dbContext.Studenci.Where(s => s.NumerIndeksu == numerIndeksu)
.Select(s => (

int

?)s.PunktyEcts).FirstOrDefault();


if

(!punktyEcts.HasValue)

{

throw

new

Exception

(

"Nie istnieje student o podanym numerze indeksu"

);

}

}

return

punktyEcts.Value;

}


[

WebMethod

]

public

void

DodajNowaOplate(

int

caseId,

int

numerIndeksu)

{

using

(Entities.

ModelContainer

dbContext =

new

Entities.

ModelContainer

())

{

var

student = dbContext.Studenci.Where(s => s.NumerIndeksu == numerIndeksu)

.FirstOrDefault();

background image


if

(student ==

null

)

{

throw

new

Exception

(

"Nie istnieje student o podanym numerze indeksu"

);

}

var

oplata =

new

Entities.

Oplata

();

oplata.CaseId = caseId;
oplata.Student = student;

dbContext.SaveChanges();
}
}

Metoda o nazwie

PobierzPunktyEcts

pobierze na wejściu numer indeksu studenta i zwróci jego

punkty ECTS. W przypadku jeśli w bazie danych nie zostanie znaleziony student o zadanym numerze
indeksu zostanie wyrzucony wyjątek.

Jeśli w procesie składania wniosku workflow uaktywni zdarzenie pośrednie „Wpłynięcie pieniędzy” to
w naszym systemie odpali się metoda

DodajNowaOplate

z numerem indeksu studenta oraz z

identyfikatorem tego kroku procesu. Metoda doda do bazy danych nową opłatę przypisując do niej
przekazany identyfikator. Jest to potrzebne ze względu, na to że z poziomu strony damy możliwośd
„odpalenia” tego zdarzenia. Dzięki identyfikatorowi workflow będzie jednoznacznie wiedział, o które
zdarzenie nam chodzi.

W powyższych metodach użyliśmy LINQ i Entity Framework w celu odczytu i zapisanie danych do
bazy.

Kolejnym krokiem jest stworzenie interfejsu użytkownika i metody, która pozwoli uruchomid
zdarzenie pośrednie „Wpłynięcie pieniędzy” z poziomu naszej aplikacji zewnętrznej.

Rysunek 22. Interfejs potwierdzania wpłat

Na interfejsie użytkownika w liście rozwijanej będzie można wybrad wpłatę do potwierdzenia a
następnie za pomocą przycisku „Potwierdź wpłatę” wyślemy do workflow odpowiedni komunikat,
który uruchomi zdarzenie. Aby utworzyd taki interfejs otwórz plik Default.aspx i przełącz go w tryb
Design, używając przycisku w lewym dolnym rogu okna.

background image

Rysunek 23. Tryb Design i okno ToolBox

Korzystając z metody drag and drop, przenieś element Button i DropDownList z okna Toolbox na
okno główne. Korzystając z menu kontekstowego wyświetl właściwości listy rozwijanej i zmieniamy
jej nazwę na Wplaty. W drugiej kolejności otwieramy właściwości przycisku i zmieo tekst wyświetlany
na „Potwierdź wpłatę”. Następnie kliknij dwukrotnie na przycisk. VS automatycznie utworzy
zdarzenie dla przycisku oraz otworzy kodem strony. W kodzie strony zaimplementuj następujące
dwie metody:

protected

void

Button1_Click(

object

sender,

EventArgs

e)

{

using

(Entities.

ModelContainer

dbContext =

new

Entities.

ModelContainer

())

{

int

oplataId =

int

.Parse(Wplaty.SelectedValue);

var

oplata = dbContext.Oplaty.Where(o => o.Id == oplataId)

.FirstOrDefault();

string

sXml =

"<BizAgiWSParam>"

;

sXml +=

"<ActivityData>"

;

sXml +=

"<idCase>"

+ oplata.CaseId +

"</idCase>"

;

sXml +=

"<taskName>WpYniCiePieniDzy</taskName>"

;

sXml +=

"</ActivityData>"

;

sXml +=

"</BizAgiWSParam>"

;


XmlDocument

xDoc =

new

XmlDocument

();

xDoc.LoadXml(sXml);

WorkflowEngineSOA.

WorkflowEngineSOA

ws =

new

WorkflowEngineSOA.

WorkflowEngineSOA

();


XmlNode

xn = ws.performActivity(xDoc);

var

t = xn.SelectSingleNode(

"process/processError/errorMessage"

);


oplata.CzyDokonana =

true

;

dbContext.SaveChanges();
}
}

protected

override

void

OnPreRender(

EventArgs

e)

{

using

(Entities.

ModelContainer

dbContext =

new

Entities.

ModelContainer

())

{
Wplaty.DataSource = dbContext.Oplaty

background image

.Where(o => o.CzyDokonana ==

false

)

.Select(o =>

new

{
Opis = o.Student.Imie +

" "

+ o.Student.Nazwisko +

" - CaseID: "

+

SqlFunctions

.StringConvert((

decimal

)o.CaseId),

Id = o.Id
}).ToList();
Wplaty.DataBind();
}
}

Metoda

Button1_Click

to automatycznie wygenerowane zdarzenie, w którym odwołamy się do

workflow. W tym celu do naszej aplikacji musimy dodad Web Referencje do WebSerwisu który jest
wystawiany przez workflow. Na głównym projekcie z menu kontekstowego wybieramy opcję „Add
Web Reference…”.

Rysunek 24. Dodawanie referencji do usługi sieciowej

W pole URL wpisujemy adres serwisu naszego workflowa
(

http://localhost:1024/TutorialBizAgi/webservices/WorkflowEngineSOA.asmx

) i wciskamy zieloną

strzałkę. VS wyświetli listę dostępnych metod. W polu „Web reference name” wpisujemy
WorkflowEngineSOA i wciskamy przycisk “Add Reference”.

background image

Rysunek 25. Podgląd dodanych referencji do usług sieciowych

Powracając do implementacji metody

Button1_Click,

możemy zobaczyd tam przykład skorzystania z

dodanej usługi.

Drugą metodą w kodzie strony jest

OnPreRender,

w której jest zaimplementowane dodanie opłat do

listy rozwijanej. Jest to nadpisanie metody z klasy bazowej, która to metoda jest zawsze odpalana
przy wyświetlaniu strony.


Wyszukiwarka

Podobne podstrony:
BizAgi Studio Część 5 Stworzeni aplikacji zewnętrznej w ASP NET
BizAgi Studio Cz, 6 Integracja z systemem zewn trznym
BizAgi Studio Cz 6 Integracja z systemem zewn trznym
BizAgi Studio Cz 4 ?finiowanie regu biznesowych
BizAgi Studio Cz 3 Projektowanie formularzy
BizAgi Studio Cz, 3 Projektowanie formularzy
BizAgi Studio Cz, 2 Definiowanie modelu danych
BizAgi Studio Cz 2 ?finiowanie modelu?nych
ASP NET Web Forms Kompletny przewodnik dla programistow interaktywnych aplikacji internetowych w Vis
ASP NET Web Forms Kompletny przewodnik dla programistow interaktywnych aplikacji internetowych w Vis
ASP NET Web Forms Kompletny przewodnik dla programistow interaktywnych aplikacji internetowych w Vis
ASP NET Web Forms Kompletny przewodnik dla programistow interaktywnych aplikacji internetowych w Vis
BizAgi Studio czesc 1 Definiowanie procesu w notacji BPMN
Podstawy ASP NET 2 0 – tworzenie stron WWW oraz aplikacji Web
Kondensacja i wysychanie wilgoci w [cianie zewn$trznej
BizAgi Studio Część 4 Definiowanie reguł biznesowych
BizAgi Studio czesc 1 Definiowanie procesu w notacji BPMN

więcej podobnych podstron