app/Http/Ork/DODAWANIE_DO_SYNCHRONIZACJI_ORK.md 0 → 100644
+
128
−
0
Viewed
## Dodawanie do synchronizacji ORK
Wybierz poniżej: dodajesz **pole do istniejącej tabeli** czy **nową tabelę**.
Ścieżki plików są podane względem `app/Http/Ork/`.
## Dodaję pole do istniejącej tabeli
Na przykład: chcesz wysyłać kolejne pole z `KLIENCI`.
1. Otwórz `Infrastructure/LocalObjects/Omega/Clients.php`. Dopisz pole do `getSyncColumnList()`. `KlienciTriggerTable` pobierze je automatycznie — tam niczego nie dopisujesz.
2. W `Domain/OrkObjects/` otwórz klasę obiektu, do którego ma trafić pole. W `fillAttribute()` dodaj obsługę tej kolumny i przypisanie wartości do odpowiedniego pola ORK.
3. Wykonaj kroki z sekcji **„Wgraj zmiany do bazy”** poniżej.
Używaj faktycznych nazw kolumn z bazy. Dla innej tabeli edytuj jej klasy zamiast `KlienciTriggerTable` i `Clients`.
## Dodaję nową tabelę Omegi
### 1. Przygotuj listę pól
Zapisz nazwę tabeli, kolumnę z ID i kolumny, które chcesz wysyłać.
Na ten moment wybierz tabelę z **jednym identyfikatorem liczbowym** — inne klucze wymagają rozszerzenia kodu.
### 2. Dodaj plik z ustawieniami triggera
W `Infrastructure/Triggers/Tables/` utwórz nową klasę na wzór `KlienciTriggerTable.php`.
Zmień:
- **Nazwę klasy i pliku** — na pasującą do Twojej tabeli.
- **Import, wywołania `Clients::...` i `new Clients()`** — na klasę swojej tabeli, którą utworzysz w kroku 4.
Nazwę tabeli, ID i listę pól wpiszesz tylko w tej klasie z kroku 4. Klasa triggera pobierze je stamtąd, tak jak `KlienciTriggerTable` pobiera je z `Clients`.
`self::trackedColumnsFrom(new Clients())` pobiera listę pól z `Clients` i dołącza pole anonimizacji, jeśli jest używane. Nie musisz dopisywać go ręcznie.
Możesz też podać kolumny ręcznie jako trzeci argument `parent::__construct()`, zamiast wywoływać `trackedColumnsFrom()`. Jeśli jednak ta sama lista jest już w klasie obiektu lokalnego, korzystaj z niej — inaczej każdą zmianę trzeba będzie robić w dwóch miejscach.
### 3. Dopisz tabelę do serwisu Omegi
Otwórz `Infrastructure/Triggers/OrkOmegaFirebirdTriggerService.php`.
Dodaj import swojej klasy i dopisz `new TwojaTriggerTable()` do listy w `tables()`.
Zostaw dotychczasowe pozycje.
### 4. Dodaj obsługę tabeli po stronie aplikacji
W `Infrastructure/LocalObjects/Omega/` utwórz klasę na wzór `Clients.php`.
Uzupełnij w niej:
- **`getTabletName()`** — nazwę tabeli.
- **`getIdColumnName()`** — nazwę kolumny ID.
- **`getSyncColumnList()`** — kolumny do synchronizacji.
- **`getDataOriginObjectType()`** — właściwy typ z `DataOriginObjectType`.
- **`getParentObjectType()`** — typ rodzica albo `null`.
- **`isAnonymizable()`** — `false`, chyba że tabela ma korzystać z obsługi kolumny `anonimizacja_zakonczona_o`.
Następnie otwórz `Infrastructure/LocalObjects/LocalObjectProvider.php`.
W `findTableInOmega()` dopisz przypadek dla swojej tabeli, zwracający nową klasę.
### 5. Wskaż, co wysłać do ORK
Jeśli dodajesz nowy typ źródłowy:
1. Dopisz go w `Domain/Dictionaries/DataOriginObjectType.php`, na wzór istniejących wpisów. Dla Omegi użyj wartości z prefiksem `omega_`.
2. W `Domain/Factories/OrkObjectFactory.php` dodaj dla niego `case` i wskaż klasy obiektów ORK, które mają powstać.
W wybranych klasach w `Domain/OrkObjects/` uzupełnij `fillAttribute()`, żeby obsługiwało kolumny nowej tabeli.
Jeżeli potrzebujesz nowego rodzaju obiektu ORK, najpierw uzgodnij z odbiorcą jego pola i format.
### 6. Wgraj zmiany do bazy
Wykonaj instrukcję poniżej. Samo dopisanie plików PHP nie utworzy triggera.
## Wgraj zmiany do bazy
Polecenia wykonuj z katalogu głównego projektu. Najpierw na środowisku testowym.
**1. Podejrzyj SQL — to niczego nie zmienia w bazie:**
```bash
php artisan ork:install-triggers --connection=omega --show-sql
```
Sprawdź, czy widzisz swoją tabelę, właściwe ID i dopisane pola.
**2. Zainstaluj triggery — to już zmienia bazę:**
```bash
php artisan ork:install-triggers --connection=omega
```
Przed uruchomieniem sprawdź, na którą bazę wskazuje `omega`.
Komenda nie pyta o potwierdzenie i obsługuje wszystkie tabele dopisane do tego połączenia.
Tabela `ORK_SYNC_QUEUE` musi już istnieć.
Nie cofaj migracji ani nie usuwaj kolejki, żeby odświeżyć trigger.
**3. Sprawdź wynik:**
```bash
php artisan ork:check-triggers --connection=omega
```
Twoje triggery powinny mieć status **`AKTYWNY`**.
**4. Zmień testowy rekord i sprawdź efekt:**
- [ ] Zmiana dodanego pola pojawia się w `ORK_SYNC_QUEUE`.
- [ ] Wpis ma właściwą nazwę tabeli, ID rekordu i nazwę pola.
- [ ] Pole z prawidłową wartością trafia do wysyłanego obiektu ORK.
Instalacja obejmuje przyszłe zmiany — nie wysyła automatycznie istniejących rekordów. Triggery obsługują dodawanie i aktualizację rekordów, nie ich fizyczne usuwanie.
## Dodaję tabelę Oracle FL / PCM / ML
W `Infrastructure/Triggers/Tables/` utwórz klasę dziedziczącą po `OrkTriggerTable`.
Do `parent::__construct()` przekaż nazwę tabeli, listę kolumn ID i listę śledzonych kolumn. Nie korzystaj z `Clients` — dotyczy Omegi.
Potem dopisz jego instancję do `tables()` w serwisie wybranej firmy:
| Firma | Plik w `Infrastructure/Triggers/` | Wartość `--connection` |
| --- | --- | --- |
| FL | `OrkFlOracleTriggerService.php` | `oracle_fl` |
| PCM | `OrkPcmOracleTriggerService.php` | `oracle_pcm` |
| ML | `OrkMlOracleTriggerService.php` | `oracle_ml` |
Do podglądu, instalacji i sprawdzenia użyj tych samych komend co wyżej, zastępując `omega` odpowiednim połączeniem.
**Uwaga: to przygotuje tylko zapisywanie zmian w kolejce Oracle. Wysyłanie ich do ORK nie jest jeszcze gotowe.**
Trzeba osobno dodać odczyt kolejki, obsługę tabel ADH i mapowanie danych. Nie kopiuj w tym celu klas Omegi bez dostosowania.