KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ Wykład 2 Katedra Inżynierii Komputerowej Jakub Romanowski jakub.romanowski@kik.pcz.pl
Budowanie biblioteki DLL Projekt typu Class Library Zmiana właściwości projektu innego typu niż Class Library
Zmiana właściwości projektu innego typu niż Class Library Właściwości projektu => Properties Zakładka Application => wartość pola Output Type ustawiamy na Class Library Kolejno w tej samej zakładce klikamy Assembly Information Pojawia się okno konfiguracyjne gdzie należy zaznaczyć opcję Make assembly COM-Visible
Projekt typu Class Library (1) W wypadku występowania błędów kompilacji należy sprawdzić czy ustawienia projektu są takie jak w przypadku zmiany właściwości projektu innego typu. Ewentualnie w wypadku Windows 7 podczas kompilacji może wystąpić błąd próby rejestracji biblioteki.
Projekt typu Class Library (2) Aby uniknąć wyżej wymienionego błędu ponownie wybieramy właściwości projektu => Properties Kolejno zakładkę Build, w której odznaczamy Register for Com interop
Używanie COM-a Dodanie referencji do biblioteki W projekcie klauzulą Using definiujemy zakres przestrzeni nazw z dołączonej biblioteki Tworzymy obiekt klasy zawarte w bibliotece Poprzez instancje obiektu odnosimy się do metod jego klasy
Rejestracja COM-a w systemie Regsvr32.exe Konto administratora Uruchom => net user Administrator /active:yes
Język C/AL C/AL (Client/server Application Language) jest językiem programowania działającym w środowisku C/SIDE. C/SIDE(Client/Server Integrated Development Environment) to zintegrowane środowisko stosowane w Microsoft Dynamics NAV. C/AL z założenia ma zastosowanie bazodanowe głównie do operacji na tabelach aplikacji MS Dynamics NAV
C/AL. (1) W C/SIDE głównym celem języka programowania jest manipulacja danymi. W języku C/AL można tworzyć reguły, które zapewnią spójność danych przechowywanych w tabelach, zgodnie z założeniami i sposobem prowadzenia firmy. W tym środowisku można przenosić dane z jednej tabeli do innej. Jeśli zachodzi potrzeba wyświetlenia danych z wielu tabel w jednej formatce programu lub utworzenia raportu z wielu tabel,trzeba zaprogramować to w C/AL.
C/AL. (2) Do pisania programów służy edytor C/AL udostępniany w środowisku Dynamics NAV. Po wybraniu obiektu, który chcemy edytować pojawi się okno edytora podzielone na segmenty nazwane tutaj triggerami (wyzwalaczami). Pod każdym z triggerów umieszczany jest kod określający jego funkcjonalność. Przestrzeń dla poszczególnych wyzwalaczy nie musi być wypełniona kodem. Trigger nie zawierający kodu nazywany jest pustym.
C/AL. (3) Wyróżnia się trzy rodzaje wyzwalaczy: Documentation() w rzeczywistości nie jest to typowy trigger i zawartość jego kodu nie jest wykonywana. Pełni on rolę dokumentacji lub części opisowej dla edytowanego obiektu. Jest to element pomocniczy i każdy obiekt posiada taki wyzwalacz. On triggery tego typu służą do obsługi zdarzeń. Przykładowo OnRun() kod takiego obiektu wykonywany jest przy jego uruchomieniu. Jeśli taki wyzwalacz nie zawiera kodu to podczas uruchomienia obiektu po prostu nic się nie wydarzy. Każdy obiekt posiada szereg możliwych do oprogramowania wyzwalaczy obsługujących zdarzenia.
C/AL. (4) Wyzwalacz Funkcji to ostatni rodzaj wyzwalacza. Ten typ triggera tworzony jest w momencie, gdy dla danego obiektu zostaje utworzona nowa funkcja. Kod tego wyzwalacza wykonywany jest w momencie wywołania funkcji
C/AL. (5)
C/AL. (6) W momencie zamknięcia okna edytora C/AL, pod warunkiem, że były dokonywane jakieś zmiany w kodzie, pojawi się okienko umożliwiające zapis zmian, anulowanie lub ich pominięcie. Ważnym elementem, w omawianym okienku, jest możliwość zaznaczenia pola Compiled, które odpowiada za kompilacje kodu danego obiektu w momencie jego zapisu. W wypadku wystąpienia jakichś błędów pojawi się kolejne okienko MessageBox ze wskazówkami o błędach w kodzie.
C/AL. (7) Dane i typy danych C/AL nie odbiega typami danych od innych języków programowania. W skład zestawu danych wchodzą typy numeryczne, dane typu String, data, czas, dane typu Bool. Na zamienną w C/AL składa się nazwa, typ oraz wartość. Zgodnie z zasadami składni tego języka nie można używać szeregu nazw jako nazwy zmiennych, przykładowo, nie można używać nazw jak BEGIN lub END określających blok kodu w programie. Nawy zmiennych muszą być unikatowe, ponadto nie ma znaczenia wielkość liter.
C/AL. (8) Zakres zmiennych Możemy wyróżnić dwa podstawowe rodzaje zakresu widoczności zmiennej, mianowicie zmienne o zakresie globalnym i lokalnym. Te pierwsze widoczne są dla wszystkich obiektów działających w środowisku Dynamics NAV. Drugi rodzaj zmiennych widoczny jest jedynie w obrębie wybranego obiektu i istnieje jedynie podczas działania tego obiektu.
C/AL. (9) Istnieje jeszcze jeden typ zmiennych - Zmienne Systemowe, czyli zmienne definiowane przez system automatycznie. Każdy obiekt ma zestaw zdefiniowanych automatycznie tylko dla niego zmiennych systemowych. Programista może używać tych zmiennych, ale bez operacji, inicjalizacji czy przypisania wartości.
C/AL. (10) Jak definiujemy dane w tym środowisku? Nie robi się tego jak w językach typu C# czy C++, czyli przez utworzenie zmiennej, przypisanie jej wartości w kodzie programu, ale przez menu C/AL Global. Po wybraniu tej opcji pojawia się okno, którego wnętrze zbudowane jest jako lista w postaci tabelki. Dwie pierwsze kolumny są najważniejszymi w kwestii definicji nowej zmiennej oraz jej typu. Pierwsza kolumna to Name, czyli nazwa zmiennej, natomiast druga, to DataType, czyli określenie typu dla naszej zmiennej. Po dodaniu zmiennych w tym oknie edycyjnym, możemy używać ich w naszym obiekcie, jak i we wszystkich innych dostępnych obiektach.
C/AL. (11) Po wyedytowaniu kodu w C/AL należy zapisać i skompilować projekt i kolejno w Object designer wybrać opcje Run.
C/AL. (12) Jak używać zewnętrznej biblioteki w Dynamics NAV? Rejestracja zmiennej dokonywana jest w C/AL Globals lub w C/AL Locals. Jako typ tej zmiennej wymagany jest Automation kolejno w celu wyboru podtypu (Subtype) wskazany jest wybór w polu Subtype co spowoduje wyświetlenie nowego okna, a oczekiwany element w tym oknie to Automation Server. W polu Automation Server kolejnym wyborem jest strzałka, powodująca wyświetlenie wszystkich zarejestrowanych w systemie komponentów typu COM
C/AL. (13) Po odnalezieniu interesującego elementu, wybierając go, przedstawiona zostanie lista jego klas i metod. Po dokonaniu wyboru odpowiedniej klasy możemy używać metod zawartych w bibliotece dll bazując na zmiennej zadeklarowanej jako Automation.
C/AL. Typy danych (1) - rozwinięcie Char Składuje pojedyncze znaki Może być swobodnie konwertowany między cyframi a znakami (można dokonywać operacji jak na zmiennych numeycznych) Zastosowania C := "A"; C := S[2]; C := 65;
C/AL. Typy danych (2) Decimal Odpowiada typowi znanemu z MS SQL DateTime i Duration Duration prezentuje różnicę między dwoma obiektami DateTime w milisekundach Prrzykad: DateTime1 := CREATEDATETIME(010109D, 080000T); // Styczeń 1, 2009 08:00:00 AM DateTime2 := CREATEDATETIME(050509D, 133001T); // Maj 5, 2009 1:30:01 PM Duration := DateTime2 - DateTime1; MESSAGE(FORMAT(Duration)); //Rezultat : 124 days 4 hours 30 minutes 1 second
C/AL. Typy danych (3) Integer Od -2,147,483,647 do 2,147,483,647 Code Specyficzna odmian typu string Wszystkie litery przypisane to tego typu zmiennej zamieniane są na duże litery Wycinane są spacje na końcu i początku ciągu znaków
C/AL. Typy danych (4) Code przykład c := 'AbC'; 'ABC' Długość 3 c := '1'; '1' Długość 1 c := ''; '' (pusty string) Długość 0 c := '2'; '2' Długość 1 c := '1 2'; '1 2' Długość 3
C/AL. Typy danych (5) Text Odpowiednik typu string Długość od 1 do 1024 znaków Zakładamy że max długość zmiennej t to 6. t := 'AbC' t := '123456abx'; Zmienna zawiera "AbC" Zwróci: run-time error ponieważ długość 9 przekracza dopuszczaną, która wynosi 6
Text przykład C/AL. Typy danych (6) t := 'AbC'; STRLEN(t); // Zwróci 3. MAXSTRLEN(t); // Zwróci 6. t := '12345'; STRLEN(t); // Zwróci 5. MAXSTRLEN(t); // Zwróci 6.
C/AL. Typy danych (6) Boolean Wartości TRUE/FALSE BLOB -Binary Large Object. Mają zmienną długość Mogą przechowywać duże teksty, obrazy, i typy definiowane przez użytkowników. Maksymalny rozmiar tego typu zależny jest od wielkości dysku, ale domyślnie wynosi 2GB
C/AL. Słowa kluczowe ASSERTERROR BEGIN CASE DO DOWNTO ELSE END EXIT FOR IF OF REPEAT THEN TO UNTIL WHILE WITH Obok słów kluczowych istnieje lista nazw rezerwowanych przez zmienne systemowe, funkcje, procedury itp. Pełna lista słów kluczowych dostępna jest na: http://msdn.microsoft.com/en-us/library/ee414230.aspx
C/AL. Operatory (1) [ ] indeksy :: - przestrzeń nazw +,-,*,/ - operacje matematyczne MOD modulo <, >, <=, >=, =, <> -znaki porównań AND, OR, NOT, XOR operacje logiczne
C/AL. Operatory (2) number + number string + string 2 + 3 * 4 // wynik 14 (2 + 3) * 4 // wynik 20
C/AL. Funkcje (1) FUNCTION([Optional1] [, Optional2] [, Optional3]) Dopuszczalne wywołania tej funkcji to: FUNCTION(Optional1, Optional2) FUNCTION(, Optional2, Optional3)
C/AL. Funkcje (2) Funkcje mogą zwracać rezultaty ReturnVal := Function(Param1); Można umieszczać je w instrukcjach warunkowych IF (Function(Param1)) THEN <operacja 1> ELSE <operacja 2>
C/AL. Instrukcje programu (1) Operacje złożone w języku C/AL. Wymagają znaczników BEGIN i END BEGIN <Operacja 1>; < Operacja 2>;.. < Operacja n>; END
C/AL. Instrukcje programu (2) IF (x = y) AND (a = b) THEN BEGIN x := a; y := b; END;
C/AL. Instrukcje programu (3) IF (xxx = yyyyyyyyyy) AND (aaaaaaaaaa = bbb) THEN BEGIN x := a; END x := y; a := y; ELSE BEGIN y := x; y := a; END;
C/AL. Instrukcje warunkowe IF IF <Warunek1> THEN <Operacja1> [ELSE < Operacja 2>] IF <Warunek1> THEN IF <Warunek2> THEN < Operacja 1> ELSE < Operacja 2>
C/AL. Instrukcje warunkowe IF (2) IF (xxxxxxxxxx = yyy) AND (aaa = bbbbbbbbbb) THEN x := a ELSE y := b; IF x < y THEN EXIT(TRUE) ELSE BEGIN x := x * 2; y := y - 1; END;
C/AL. Instrukcja FOR FOR <Control Variable> := <Start Number> TO <End Number> DO <Operacja> FOR Count := 1000 TO 100000000000000 DO..
C/AL. Instrukcja WHILE WHILE <Warunek> DO <Operacje> WHILE <Warunek> DO BEGIN <Operacja 1>; < Operacja 2>; END;
Bibliografia Microsoft Dynamics NAV 2005 Application Designer s Guide Microsoft Dynamics NAV Programming Guide Microsoft Official Training Materials for Microsoft Dynamics C/AL. Functions http://msdn.microsoft.com/enus/library/dd355277.aspx