Zarządzanie zainstalowaną aplikacją
VSoft archITekt umożliwia mechanizm zmiany konfiguracji istniejącej aplikacji. Zmiana jest możliwa w zakresie większości parametrów. Nie obsługiwane są zmiany poniższych parametrów:
| Parametr | Opis |
|---|---|
technicalName | Techniczna nazwa środowiska. |
pathProjectFolder | Katalog instalacji projektu. Uwaga! Możliwa ręczna zmiana - należy ręcznie przenieść katalog projektu w nową lokalizację. |
runtimeFolder | Katalog, w którym są zainstalowane komponenty aplikacji. Uwaga! Możliwa ręczna zmiana – należy odinstalować komponenty aplikacji, i zmienić wartość w pliku default.runtime.json. |
versionProvider | Rodzaj serwera wersji. |
applicationDbAuthentication | Sposób autentykacji podczas połączenia z bazami danych. |
dbServer | Adres serwera baz danych. Uwaga! Możliwa jest ręczna zmiana. W tym celu należy przenieść bazy danych oraz użytkowników baz danych na nowy serwer i zmienić wpisy w plikach project.json (ProjectVersionServerServerInstance) i default.runtime.json (DatabaseServerInstance). |
failoverCluster, failoverClusterGroup | Nazwa klastra failover oraz grupa (rola), w której dodane są usługi aplikacji. Uwaga! Możliwa jest ręczna zmiana. W tym celu należy odinstalować komponenty środowiska (skrypt InstallOnPremises.ps1 z opcją ClusterUninstall), zmienić wpisy w pliku project.json(FailoverCluster, FailoverClusterGroup) i ponownie uruchomić instalację komponentów środowiska. |
W zależności od zakresu zmian na środowisku po uruchomieniu procedury aktualizacji wymagana jest aktualizacja komponentów środowiska lub ich reinstalacja. Reinstalacja jest wymagana w przypadku, gdy dokonana zmiana wymaga uruchomienia poleceń systemowych zmieniających konfigurację.
Aktualizacja obrazu VSoft archITekt
Aktualizacja już zainstalowanej aplikacji do nowej wersji platformy realizowana jest w następujących krokach:
- Na wszystkich serwerach, na których są zainstalowane komponenty aplikacji (WWW, APP), oraz na komputerze administratora (w przypadku gdy instalacja była wykonywana zdalnie) należy zainstalować nową wersję obrazu VSoft archITekt.
- Należy uruchomić skrypt aktualizujący komponenty, który dokona automatycznej aktualizacji aplikacji:
cd "C:\Program Files\VSoft\archITekt\Images\[nazwa obrazu]"
.\InstallOnPremises.ps1 `
-PathProjectFolder [katalog środowiska] `
-SetupCommand [komenda: ClusterInstallOrUpdate / lub ClusterForceReinstall]
Aktualizacja pliku licencji dla aplikacji
W przypadku posługiwania się licencją dostarczoną w postaci pliku XML jest ona przechowywana w katalogu [katalog projektu]\License skąd podczas instalacji / aktualizacji komponentów systemu jest przekopiowywana do katalogów poszczególnych komponentów.
W celu aktualizacji pliku licencji należy:
- Umieścić aktualny plik licencji w katalogu [katalog projektu]\License
- Uruchomić procedurę aktualizacji komponentów środowiska
Uruchomienie skryptu rekonfigurującego środowisko
cd "C:\Program Files\VSoft\archITekt\Images\[nazwa obrazu]"
.\Reconfigure.ps1 `
-pathProjectFolder "[katalog projektu]" `
-envName "[(opcja) nowa nazwa środowiska]" `
-securityMode "[(opcja) nowy rodzaj zabezpieczenia]" `
-reservedPortsBlockBegin "[(opcja) początek nowego obszaru zarezerwowanych portów]" `
-licenseFilePath "[(opcja) ścieżka do pliku z nową licencją dla środowiska]" `
-appServerFQDNAddress "[(opcja) nowa publiczna nazwa serwera WWW]" `
-webServerFQDNAddress "[(opcja) nowa publiczna nazwa serwera aplikacyjnego]" `
-targetAppServers "[(opcja) nowa lista serwerów aplikacyjnych na których ma być zainstalowana aplikacja]" `
-targetWebServers "[(opcja) nowa lista serwerów WWW, na których ma być zainstalowana aplikacja]"
-appServer\_HttpsCertificate "[(opcja) nowy odcisk certyfikatu serwera aplikacyjnego]" `
-webServer\_HttpsCertificate "[(opcja) nowy odcisk certyfikatu serwera WWW]" `
-applicationCredentialPassword "[(opcja) nowe hasło użytkownika domenowego]"
-configKeys "[(opcja) Hashtable zawierająca zmienione lub usuwane parametry do zapisania w konfiguracji technicznej]"
-sensitiveConfigKeys "[(opcja) lista kluczy, które mają być od teraz traktowane jako wrażliwe]"
-notSensitiveConfigKeys "[(opcja) lista kluczy, które mają przestać być traktowane jako wrażliwe]"
-FeatureSSO "[(opcja) włączenie / wyłączenie funkcji logowania SSO (Single Sign On)]"
-SecurityPassword "[(opcja) Hasło bezpieczeństwa środowiska]"
-ResetDbPasswords [opcjonalny przełącznik wykonujący reset haseł użytkowników baz danych]
-SetVipPasswords [(opcja) ustawienie nowych haseł użytkownikom providera VIP]
-ClusterServerCredential "[(opcja) podanie poświadczeń (PSCredential) do instalacji na klastrze – jeśli użytkownik uruchamiający skrypt nie ma prawa administratora na maszynach klastra]"
-ServiceStartupType [(opcja) tryb uruchamiania serwisów archITekta("Automatic", "AutomaticDelayedStart", "Disabled", "Manual"). Domyślna wartość = "Automatic"]
-UsePluginMySql [(opcja) czy włączyć plugin umożliwiający łączenie się z bazami MySQL(„On”, „Off”). Domyślna wartość = „Off”]
-SecurityPassword "[(opcja) Hasło bezpieczeństwa środowiska]" `
-NewSecurityPassword "[(opcja) Nowe hasło bezpieczeństwa środowiska]" `
-RemoveSecurityPassword "[(opcja) Usunięcie szyfrowania konfiguracji środowiska]" `
-LockedImageVersion [(opcja) zablokować podmianę wersji obrazu („On”, „Off”). Domyślna wartość = „Off”]
-WhatIf [(opcja) sprawdza poprawność parametrów, nie uruchamia operacji rekonfiguracji środowiska]
Uruchamiając skrypt rekonfiguracyjny jedynym obowiązkowym do podania parametrem jest katalog projektu (środowiska). Pozostałe parametry podajemy jedynie w przypadku gdy chcemy zmienić daną opcję.
Poniżej lista parametrów opcjonalnych wraz z opisem. W kolumnie „Reinstalacja” znajduje się informacja opisująca, czy wymagana jest reinstalacja komponentów środowiska.
Reinstalacja:
- nie jest wymagana w przypadku, gdy zmiana dotyczy wyłącznie zmiany konfiguracji aplikacji,
- jest wymagana, gdy zmiana wymaga uruchomienia serii komend systemowych rekonfigurujących komponent.
| Parametr | Opis | Reinstalacja |
|---|---|---|
envName | Nazwa środowiska prezentowana na stronie logowania aplikacji. Może zawierać dowolny zestaw znaków. | Nie |
securityMode | Rodzaj zabezpieczenia dla instalowanej aplikacji. Dopuszczalne wartości: • SSL • NONE. W przypadku podania wartości SSL komunikacja z aplikacją WWW i usługami WebService będą zabezpieczone certyfikatami SSL (będzie wymagane podanie odcisków palca certyfiaktow). | Tak |
reservedPortsBlockBegin | Pierwszy z przedziału portów wykorzystywanych na wewnętrzne potrzeby aplikacji: • Aplikacja wykorzystuje 2 porty ( reservedPortsBlockBegin, reservedPortsBlockBegin+1) do komunikacji pomiędzy komponentami. Ruch pomiędzy serwerami na tych portach musi być otwarty.• Aplikacja wykorzystuje kolejne porty ( reservedPortsBlockBegin+2 i następne) do uruchamiania LibreOffice w trybie serwerowym (komunikacja z tymi portami odbywa się wyłącznie w obrębie serwera). Ilość zajętych portów jest równa ilości uruchomionych konwerterów LibreOffice. | Tak |
licenseFilePath | Ścieżka do pliku licencji dla tego środowiska. Operacja kopiuje plik do katalogu [katalog projektu]\Licences (nie usuwa starych plików licencji z katalogu). | Nie |
appServerFQDNAddress | Nazwa pod jaką będą dostępne serwery aplikacyjne środowiska w sieci. Nazwa musi być zgodna z nazwą podaną w certyfikacie wskazanym w zmiennej appServer\_HttpsCertificate. | Tak |
targetWebServers | Nazwa pod jaką będą dostępne serwery WWW środowiska w sieci. Nazwa musi być zgodna z nazwą podaną w certyfikacie wskazanym w zmiennej webServer\_HttpsCertificate | Tak |
applicationCredentialPassword | Nowe hasło użytkownika w przypadku logowania domenowego. | Tak |
configKeys | Hashtable zawierająca nazwy zmiennych z wartościami, które zostaną uzupełnione w konfiguracji aplikacji (mechanizm konfiguracji aplikacji opisany jest w kolejnym rozdziale tej dokumentacji).Parametr powinien mieć postać:@{"nazwa zmiennej 1"="wartość zmiennej 1";"nazwa zmiennej 2"="wartość zmiennej 2"; itd.}Przykład wywołania: configKeys @{ "common.connection.provider_ad" = "LDAP://my.server.local:389"; "custom.myvariable" = CODESPANPLACEHOLDER0END"}"Na potrzeby skomplikowanych przypadków wdrożeniowych udostępniona została możliwość ustawienia innych wartości parametru wyłącznie dla wybranych NODE. W tym celu jako nazwę zmiennej należy podać wartość nazwa zmiennej@nazwa node.Wartości kluczy wrażliwych są zapisywane w sposób zaszyfrowany i nie trafiają do logu skryptu. Patrz: Klucze wrażliwe. | Tak |
sensitiveConfigKeys | Lista nazw kluczy konfiguracyjnych, które od teraz mają być traktowane jako wrażliwe: ich wartości w plikach projektu zostaną zaszyfrowane, a przy najbliższej aktualizacji komponentów zostaną zapisane w tabeli CONFIG_KEYS z flagą CK_SENSITIVE = 1. Klucz może już mieć wartość w projekcie albo otrzymać ją w tym samym wywołaniu w parametrze configKeys. Podaje się wyłącznie nazwy kluczy, bez wskazania węzła.Przykład wywołania: sensitiveConfigKeys "custom.api.token"Szczegóły: Klucze wrażliwe. | Nie |
notSensitiveConfigKeys | Lista nazw kluczy konfiguracyjnych, które mają przestać być traktowane jako wrażliwe: ich wartości w plikach projektu zostaną odszyfrowane (dla wszystkich węzłów), a przy najbliższej aktualizacji komponentów flaga CK_SENSITIVE zostanie zdjęta. Nie można podać klucza wrażliwego z definicji ani klucza podanego jednocześnie w sensitiveConfigKeys. | Nie |
FeatureSSO | Parametr określa czy w aplikacji ma być włączona funkcjonalność logowania SSO (Single Sign On). Dopuszczalne wartości: „On”, „Off”. | Tak |
ResetDbPasswords | Użycie tego parametru powoduje reset (wygenerowanie nowych) haseł użytkownika i administratora aplikacji. | Nie |
SetVipPasswords | Umożliwia awaryjną zmianę haseł użytkownikom VIP. Dane użytkowników i nowych haseł przekazujemy w postaci HashTable:@{"user1" = "newPassword1"; "user2" = "newPassword2"}Operacja zmiany haseł ustawia ważność hasła na 30 dni od daty zmiany, resetuje licznik dopuszczalnych błędnych logowań na wartość 4 i resetuje licznik dopuszczalnych logowań po dacie wygaśnięcia hasła na wartość 4. | Nie |
SecurityPassword | Aktualne hasło bezpieczeństwa którym zaszyfrowana jest konfiguracja techniczna danego środowiska. | Nie |
ClusterServerCredential | Poświadczenia administratora klastra – w przypadku, gdy instalację/rekonfigurację wykonuje użytkownik, nie posiadający uprawnień administracyjnych na klastrze. Jest to obiekt typu System.Management.Automation.PSCredential | Tak |
ServiceStartupType | Sposób uruchamiania usług archITekta. Możliwe wartości: "Automatic", "AutomaticDelayedStart", "Disabled", "Manual". Brak podania warości parametru zainstaluje serwisy z wartością „Automatic” Uwaga: W przypadku instalacji na klastrze Failover wybranie wartości "Automatic", "AutomaticDelayedStart" zostanie w trakcie instalacji zmienione na wartość „Manual”. | Tak |
NewSecurityPassword | Nowe, zmienione hasło bezpieczeństwa do zaszyfrowania konfiguracji technicznej na środowisku. Wartości kluczy wrażliwych są przeszyfrowywane nowym hasłem w obu plikach projektu (project.json, custom.project.json) i w tabeli CONFIG_KEYS; jeśli środowisko nie miało dotąd hasła bezpieczeństwa, wartości kluczy wrażliwych zostaną zaszyfrowane. | Tak |
RemoveSecurityPassword | Użycie tego przełącznika powoduje odszyfrowanie konfiguracji technicznej środowiska, w tym wartości kluczy wrażliwych (oznaczenie kluczy jako wrażliwych pozostaje). | Tak |
UsePluginMySql | Włączenie pluginu umożliwiającego łączenie się z bazami MySQL. Wybranie wartości „On”, wymaga podczas instalacji obrazu archITekta wybrania instalacji pluginu MySQL. Możliwe wartości: „On”, „Off”. Brak podania wartości parametru zainstaluje serwisy z wartością „Off”. | Nie |
LockedImageVersion | Blokuje/odblokowuje możliwość aktualizacji obrazu dla tego środowiska. Możliwe wartości: „On”, „Off”. | Nie |
WhatIf | Dodając ten przełącznik do parametrów skryptu zmieniamy sposób jego działania – wykonanie skryptu zostanie przerwane zaraz po fazie weryfikacji parametrów niezależnie od jej wyniku. Użycie tego parametru umożliwia weryfikację poprawności parametrów użytych do rekonfiguracji środowiska bez uruchamiania właściwej rekonfiguracji. |
Przykład skryptu z parametrami:
cd "C:\Program Files\VSoft\archITekt\Images\dev"
.\Reconfigure.ps1 `
-pathProjectFolder " C:\VSoft\Projects\SAMPLE1" `
-envName "My new name" `
-reservedPortsBlockBegin "49000" `
-securityMode NONE `
-licenseFilePath "C:\My.new.license.xml" `
-configKeys "{ `"custom.myvariable`": `"specyfic value`" }" `
-sensitiveConfigKeys "custom.api.token" `
-FeatureSSO "On" `
-ResetDbPasswords `
-SetVipPasswords @{ "admin": "newpassword" }
Po uruchomieniu skryptu rekonfiguracyjnego:
- należy uruchomić skrypt aktualizujący środowisko. Można użyć w tym celu komendy
ClusterInstallOrUpdatelubClusterForceReinstall.
Uwaga! Skrypt każdorazowo weryfikuje spójność konfiguracji projektu, i w przypadku wykrycia zmian wymagających reinstalacji – wykonuje ją automatycznie.
cd "C:\Program Files\VSoft\archITekt\Images\[nazwa obrazu]"
.\InstallOnPremises.ps1 `
-PathProjectFolder [katalog środowiska] `
-SetupCommand [komenda: ClusterInstallOrUpdate / lub ClusterForceReinstall]
Jeśli w ramach zmian konfiguracji jakiś serwer został usunięty z obu grup serwerów app i web należy na nim ręcznie odinstalować komponenty aplikacji poprzez uruchomienie skryptu odinstalowującego komponenty aplikacji: cd "C:\VSoft\[technicalName]\"
.\UninstallOnPremisesComponents.ps1
PackageImport – Wdrożenie nowej wersji aplikacji
W celu wdrożenia nowej wersji aplikacji na środowisku wywoływany jest skrypt PackageImport.ps1
Sposób wywołania skryptu:
cd "C:\Program Files\VSoft\archITekt\Images\[nazwa obrazu]"
.\PackageImport.ps1 `
-PathProjectFolder - [ścieżka do folderu z aplikacją]
-PackagePath - [ścieżka do paczki z nową wersją aplikacji]
-SecurityPassword [(opcja)hasło bezpieczeństwa]
-Override [(opcja)nadpisz całkowicie nową wersją]
Parametry:
PathProjectFolder– katalog projektu (środowiska)PackagePath– ścieżka do paczki - archiwum z nową wersją aplikacjiSecurityPassword– hasło bezpieczeństwa środowiska (wymagane do podania jeśli środowisko korzysta z zaszyfrowanej konfiguracji technicznej)Override- opcja nadpisuje wersję aplikacji usuwając wszystkie istniejące definicje przed wykonaniem importu. Zachowanie analogiczne jak podczas zaznaczenia opcji Replace current version podczas importu plików z poziomu VSoft arhcITekt Launcher. Patrz: Importowanie plików do projektu.
Po uruchomieniu procedury wgrania nowej wersji aplikacji do projektu należy wykonać operację aktualizacji komponentów aplikacji (za pomocą skryptu InstallOnPremise.ps1 z parametrem Upgrade/ClusterUpgrade).
Przykład skryptu z parametrami:
cd "C:\Program Files\VSoft\archITekt\Images\dev"
.\PackageImport.ps1 `
-PathProjectFolder "C:\VSoft\Projects\SAMPLE1" `
-PackagePath – "C:\MyApplication\_v1.0.1.arch.zip"
Usunięcie projektu
Uruchomienie skryptu DestroyProject.ps1 powoduje usunięcie baz danych projektu z serwera bazodanowego oraz komponentów projektu z klastra.
Sposób wywołania skryptu:
cd "C:\Program Files\VSoft\archITekt\Images\[nazwa obrazu]"
.\ DestroyProject.ps1 `
-PathProjectFolder [ścieżka do folderu z aplikacją]
-dbUser [(opcja) użytkownik serwera bazodanowego]
-dbPassword [(opcja) użytkownik serwera bazodanowego]
-clusterServerCredential "[(opcja) podanie poświadczeń (PSCredential) do instalacji na klastrze
– jeśli użytkownik uruchamiający skrypt nie ma prawa administratora na maszynach klastra]"
-force [opcjonalny przełącznik]
Parametry:
PathProjectFolder– katalog projektu (środowiska).dbUser,dbPassword– użytkownik i hasło serwera baz danych. W przypadku logowania domenowego nie należy podawać tych parametrów.ClusterServerCredential- poświadczenia administratora klastra – podawane w przypadku, gdy instalację wykonuje użytkownik nie posiadający uprawnień administracyjnych na klastrze. Jest to obiekt typu System.Management.Automation.PSCredential.Force– użycie tego przełącznika powoduje, że procedura usuwania projektu będzie kontynuowana nawet w przypadku braku połączenia z częścią jego komponentów (np. którymś z serwerów, lub z serwerem baz danych). W takim przypadku może być wymagane późniejsze ręczne usunięcie komponentów, których nie udało się usunąć automatycznie.
Warto wiedzieć:
Skrypt usuwający projekt wywołuje deinstalację komponentów na serwerach, na których zainstalowana jest aplikacja. W przypadku wystąpienia problemów z połączeniem z danym serwerem można usunąć komponenty z serwera, uruchamiając skrypt UninstallOnPremisesComponents.ps1 znajdujący się w katalogu aplikacji na serwerach.
Uruchomienie skryptu UninstallOnPremisesComponents.ps1 możliwe jest zarówno przed jak i po wywołaniu operacji usunięcia projektu.
W przypadku wystąpienia problemów z usunięciem obiektów bazodanowych projektu, można usunąć je ręcznie. Są to: bazy danych z prefixem „technicalName_” projektu oraz loginy z prefixem „technicalName_” (lub loginy dla użytkowników domenowych aplikacji, jeśli ten tryb był wykorzystywany).
Przykład skryptu z parametrami:
cd " C:\Program Files\VSoft\archITekt\Images\dev"
.\ DestroyProject.ps1 `
-PathProjectFolder "C:\VSoft\Projects\SAMPLE1" `
-dbUser "superadmin" `
-dbPassword "superadmin_password"
Naprawa projektu
Uruchomienie skryptu Repair.ps1 powoduje odtworzenie brakujących baz danych projektu. Skrypt ma zastosowanie głównie na środowiskach deweloperskich / testowych, gdzie z dowolnego powodu chcemy usunąć bazę danych i zastąpić nową. Skrypt analizuje, których baz danych środowiska brakuje i je odtwarza. Skrypt nie ingeruje w istniejące bazy danych.
Sposób wywołania skryptu:
cd "C:\Program Files\VSoft\archITekt\Images\[nazwa obrazu]"
.\Repair.ps1 `
-PathProjectFolder [ścieżka do folderu z aplikacją]
-dbUser [(opcja) użytkownik serwera bazodanowego]
-dbPassword [(opcja) użytkownik serwera bazodanowego]
-elasticPoolName "[(opcja) nazwa puli w przypadku instalacji na Azure SQL]"
-initialAdminUser "[nazwa administratora środowiska]"
-initialAdminPassword "[hasło administratora środowiska]"
-SecurityPassword "[(opcja) Hasło bezpieczeństwa środowiska]"
-WhatIf [(opcja) sprawdza poprawność parametrów, nie uruchamia operacji tworzenia środowiska]
Parametry:
PathProjectFolder– katalog projektu (środowiska).dbUser,dbPassword– użytkownik i hasło serwera baz danych. W przypadku logowania domenowego nie należy podawać tych parametrów.elasticPoolName– nazwa puli w przypadku instalacji na Azure SQL.initialAdminUser,initialAdminPassword– wymagane w przypadku odtworzenia bazy VIP na środowisku innym niż deweloperskieSecurity password- Hasło bezpieczeństwa.WhatIf- dodając ten przełącznik do parametrów skryptu, zmieniamy sposób jego działania – wykonanie skryptu zostanie przerwane zaraz po fazie weryfikacji parametrów niezależnie od jej wyniku. Użycie tego parametru umożliwia weryfikację gotowości środowiska do instalacji przed uruchamianiem właściwej instalacji.
Przykład skryptu z parametrami:
cd " C:\Program Files\VSoft\archITekt\Images\dev"
.\Repair.ps1 `
-PathProjectFolder "C:\VSoft\Projects\SAMPLE1" `
-dbUser "superadmin" `
-dbPassword "superadmin_password"
Opis skryptu do administracyjnego przesuwania wskaźnika wykonania skryptu użytkownika
W czasie wdrożenia aplikacji może okazać się konieczne administracyjne wymuszenie ponownego uruchomienia serii skryptów aplikacji lub pominięcia kilku skryptów aplikacji
W celu administracyjnej zmiany numeru skryptu aplikacji, od którego powinno nastąpić wykonanie skryptów należy użyć skryptu powershell RewindApplicationSqlScript.ps1
Uruchamiając skrypt należy podać nazwę skryptu aplikacji, przed który chcemy przesunąć wskaźnik (inaczej: nazwę skryptu, od którego chcemy kontynuować wykonanie procedury aktualizacji aplikacji).
Tak naprawdę to kluczowe znaczenie ma tutaj NUMER skryptu (nazwa użytkownika zastosowana w nazwie skryptu może być dowolna), ze względu na to, że każdy skrypt SQL aplikacji musi posiadać unikalny numer sterujący kolejnością jego wykonania.
Polecenie wykonujemy przekazując następujące parametry:
.\RewindApplicationSqlScript.ps1 `
-pathProjectFolder [ścieżka do katalogu projektu] `
-runtimeFileName [(opcja) nazwa runtime w przypadku stosowania niestandardowego] `
-nameOfScriptToRewind [nazwa skryptu przed który chcemy przesunąć wskaźnik wykonania] `
-SecurityPassword [(opcja) hasło bezpieczeństwa dla zaszyfrowanego środowiska]
Przykład użycia:
.\RewindApplicationSqlScript.ps1
-pathProjectFolder 'C:\vsoft\Projects\T01\'
-nameOfScriptToRewind 'U.0004.sample\_script.sql'
Powyższe polecenie da projektu „T01” przestawia wykonanie skryptów SQL aplikacji przed skrypt o numerze „U.0004” (nazwa ma charakter wyłącznie informacyjny). Kolejne uruchomienie procedury aktualizacji projektu w VSoft archITekt Launcher wykona wszystkie zastane skrypt począwszy od numeru „U.0004”.
Od strony technicznej wykonanie komendy skutkuje powstaniem wpisu w tabeli _DATABASE_JOURNAL, który wskazuje, od którego skryptu mają być uruchamiane kolejne skrypty aplikacji.
![]()
Automatyczne wykonywanie skryptów aktualizujących strukturę danych
Platforma archITekt w standardowym przypadku użycia sama aktualizuje strukturę danych aplikacji po każdym zaimportowaniu paczki.
Technicznie:
Podczas procedury eksportu paczki platforma archITekt generuje w sposób automatyczny skrypty SQL aktualizujące strukturę bazy danych i tabele słownikowe. W czasie importu paczki składuje te pliki w katalogu projektu (a podkatalogu Init_Sql!FINISH), a w trakcie wykonywania procedury aktualizacji komponentów aplikacji automatycznie uruchamia te skrypty aktualizując strukturę bazy danych.
Wykonywanie własnych skryptów rozszerzających strukturę danych
W przypadku chęci uruchomienia na bazie danych własnych skryptów, użytkownik może skorzystać z możliwości dodawania własnych skryptów do definicji struktury danych bezpośrednio w archITekt Studio. Patrz: Skrypty SQL użytkownika.
W takim przypadku platforma archITekt potraktuje dodatkowe skrypty użytkownika jako integralną część konfiguracji i zadba o ich automatyczne uruchomienie po każdym zaimportowaniu paczki.
Technicznie:
Platforma archITekt traktuje skrypty użytkownika jako integralną część automatycznie generowanych skryptów aktualizujących strukturę danych; są one uruchamiane podczas standardowej operacji aktualizacji bazy danych
Wykonywanie dowolnych skryptów na bazach danych aplikacji
Poniższa funkcjonalność jest funkcjonalnością eksperymentalną i może ulec zmianie w przyszłości
W przypadku gdy przy okazji instalacji nowej wersji aplikacji istnieje potrzeba wykonania własnych dedykowanych skryptów SQL (np. aktualizujących dane w bazie lub wykonujących inne specyficzne operacje na dowolnej z baz danych aplikacji) wówczas muszą być umieszczone w odpowiednim folderze, tak by były wykonane na bazie danych.
- Wykonywanie dedykowanych skryptów SQL na początku procedury aktualizacji. Chcąc wykonać własne skrypty na początku procedury aktualizacji struktury bazy danych użytkownik powinien umieścić je w katalogu
!BEGIN - Wykonywanie dedykowanych skryptów SQL na końcu procedury aktualizacji. Chcąc wykonać własne skrypty na końcu procedury aktualizacji struktury bazy danych użytkownik powinien umieścić je w katalogu
!FINISH
Skrypty umieszczane w katalogach są wykonywane w kolejności naturalnej (tak jak posortowane w Exploratorze Windows). Dobrą praktykę jest prefixowanie nazw skryptów liczbami „001_”, „002_” w celu zagwarantowania odpowiedniej kolejności wykonania.
W katalogu !FINISH umieszczane są również skrypty automatycznie generowane przez platformę VSoft archITekt zawierające operacje aktualizacji struktury bazy danych i tabel słownikowych. Należy założyć, że skrypty archITekta będą dostarczane z nazwami plików pomiędzy 100_ a 200_.
Przykładowo:
- Skrypty 001_ oraz 050_ wykonają się przed automatycznie wygenerowanymi przez platformę skryptami.
- Skrypty 110_ oraz 120_ - automatycznie generowane przez platformę wykonają się w następnej kolejności.
- Skrypty 250_ oraz 300_ wykonają się po skryptach automatycznie wygenerowanych przez platformę.
Uwaga!
W specyficznych przypadkach użytkownik może dostarczyć skrypty o nazwach identycznych jak generowane automatycznie przez platformę. Wówczas platforma nie nadpisze tych plików tylko wykorzysta je traktując je jako swoje skrypty.
W tym momencie automatycznie generowane są pliki:
- 110_EDMX.sql – zawiera skrypty aktualizujące strukturę danych - o zawartości identycznej jak z narzędzia archITekt Studio - Patrz: Aktualizacja struktury danych.
- 120_DICT.sql – zawiera skrypty aktualizujące słowniki (o zawartości identycznej jak z narzędzia Studio - Patrz: Aktualizacja słowników.)
Zabezpieczenie przed wielokrotnym wykonaniem skryptu użytkownika
Fakt uruchomienia na bazie danych skryptu użytkownika jest odnotowywany w tabeli _DATABASE_UPDATE_JOURNAL występującej w każdej bazie danych platformy. Tą informację możemy wykorzystać do sterowania krotnością wykonania naszego skryptu.
Na przykład, gdy chcemy ograniczyć wykonanie naszego skryptu umieszczonego w katalogu !FINISH do jednokrotnego wykonania wówczas na jego początku powinniśmy umieścić polecenie SQL:
IF (EXIST (SELECT ID FROM _DATABASE_UPDATE_JOURNAL WHERE
DJ_DB_UPDATE_PHASE = ‘FINISHING’
AND DJ_SCRIPT_NAME = ‘[nazwa naszego skryptu]’
AND DJ_SCRIPT_EXECUTION_STATUS=’OK’)
RETURN
Zaawansowany użytkownik może również zmodyfikować paczkę instalacyjną archITekta dodając skrypty do katalogów Init_Sql!BEGIN lub Init_Sql!FINISH – zostaną one wykonane jednorazowo przy okazji najbliższej podmiany.
Więcej informacji o sposobie budowy skryptów można zdobyć z dokumentacji DBUpgrader.
Usuwanie istniejących skryptów użytkownika z poprzednich wersji aplikacji
W trakcie aktualizacji wersji aplikacji nowe pliki z paczki importu zastępują dotychczasowe pliki z katalogów SQL i Files.
Jeśli chcemy by w trakcie kolejnych aktualizacji aplikacji nie był wykonywany już nasz skrypt SQL należy go usunąć z najbliższej paczki aktualizującej aplikację.
Zobacz również
Konfiguracja techniczna aplikacji