Dystrybucja słowników czasopism - instrukcja dla redaktorów

Informacje ogólne na temat działania skryptu:

Skrypt journalDistributionFromXmlFiles umożliwia wgranie słownika Czasopisma i Serie z Centralnej bazy czasopism (w całości lub w części) na środowisko klienckie z uwzględnieniem następujących założeń:

Założenia:

  1. Dane źródłowe (rekordy czasopism) zapisane w pliku XML.

  2. Identyfikatory zewnętrzne takie jak Identyfikator MNiSWid oraz identyfikator PBN_mongoID są nadpisywane podczas procesu dystrybucji.

  3. Pozostałe identyfikatory np. ScopusID, WoSID uzupełniane tylko jeżeli są puste (jeśli lokalnie będzie uzupełnione, a w bazie centralnej nie - to nie zostanie to nadpisane).
    Przykłady:

    1. na środowisku lokalnym mamy np. identyfikator ScopusId inny niż w bazie centralnej → scheduler nie nadpisze wartości i nic nie zmieni

    2. w bazie centralnej mamy ScopusId natomiast nie mamy na środowisku lokalnym → scheduler uzupełni wartość na środowisku lokalnym wartością z Centralnej bazy czasopism

    3. mamy inne identyfikatory Identyfikator MNiSW i PBN MongoId na środowisku lokalnym niż w bazie centralnej → zostanie podmienione i nadpisane jak w bazie centralnej, aby była zgodność

  4. Rekordy, które zostały scalone w Centralnej bazie czasopism ze względu na duplikaty, podczas procesu dystrybucji są również scalane na środowiskach lokalnych.
    Przykład:

    1. jeśli w rekordzie czasopisma z bazy centralnej znajduje się pole field/merged_entity_id

    2. wyszukiwane są one na środowisku lokalnym poprzez journalseries/id = field/merged_entity_id

    3. jeśli istnieją uruchomia się scalanie rekordów czasopism w bazie lokalnej i w publikacjach

    4. usunięty (miękko) zostaje rekord, którego ID znajduje się w field/merged_entity_id

W przypadku scalania należy pamiętać, aby w shedulerze ustawić parametr DELETE_MERGE_JOURNALS na true

Konfiguracja

Sekcja konfiguracyjna w skrypcie wygląda następująco:

/*-----CONFIGURATION-----*/ var XMLS_PATH = "/data/distribution/journalseries" var PARTS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]; var IDS = []; var DELETE_MERGED_JOURNALS = false; /*-----------------------*/

Opis parametrów konfiguracyjnych

XMLS_PATH [String]

ścieżka, w której znajdują się wgrane pliki XML na środowisku klienta

PARTS [Array<Integer>]

nazwy plików XML znajdujące się w zdefiniowanej powyżej ścieżce; zmiana tego parametru pozwala na częściową dystrybucję; aktualnie wyeksportowanie całego słownika czasopism z Centralnej bazy czasopism skutkuje utworzeniem ok. 14 plików XML

IDS [Array<String>]

parametr pozwalający na migrację jedynie rekordów o podanych identyfikatorach, wartości podajemy w '…' oddzielone przecinkami, np. var IDS = ['WUT4', 'WUT2', 'WUT0'];

DELETE_MERGED_JOURNALS [Boolean]

parametr decydujący o tym, czy skrypt powinien usuwać także czasopisma zmerdżowane (znajdujące się w polu field['merged_entity_id'])

Rozpoczęcie dystrybucji:

Dystrybucję możemy przeprowadzić samodzielnie na dwa sposoby:

  1. Aktualizacja słownika czasopism z pliku XML - plik zapisany na serwerze

    1. wgranie rozpakowanych plików XML na środowisko klienta do odpowiedniego katalogu (eksport ze środowiska https://omega-uat.ii.pw.edu.pl/ , Pełny XML ZIP, pliki po ~100MB max.) - wymagana pomoc osób z uprawnieniami do logowania do serwera, na którym zainstalowana jest Omega

    2. upewniamy się, że na środowisku lokalnym w Funkcje administracyjne → Scheduler znajduje się zadanie journalDistributionFromXmlFiles (dla Omegi w wersji > 3.6.0 )

    3. (opcjonalnie) możemy wskazać, które konkretnie czasopisma (rekordy) mają być aktualizowane z całej paczki XML, wówczas należy wpisać ID rekordów w parametrze IDS (jeżeli kilka to wklejamy po przecinku i w pojedynczym apostrofie)
      var IDS = ['WUT8f29626d1af74aefb1e236bce37f77e5', 'WUT8f29626d1af74aefb1e236bce37f77e5'];
      lub pozostawić pusty parametr
      var IDS = [];

    4. sprawdzamy poprawność, zapisujemy, przeładowujemy schedulery i uruchamiamy zadanie

    5. po zakończeniu należy zweryfikować logi znajdujące się w schedulerze

(opcjonalnie) Przed uruchomieniem migracji można wyłączyć zadania powodujących nadmierne obciążenie systemu (generujących dużo zapisów np. consistencyFix)

 

  1. Aktualizacja wybranych czasopism z pliku XML - plik dołączony do zadania

    1. wyszukujemy rekordy czasopism na UAT i eksportujemy do pliku XML

    2. dodajemy wygenerowany plik XML do zadania

    3. WAŻNE! parametry PARTS oraz IDS powinny być puste

    4. sprawdzamy poprawność, zapisujemy, przeładowujemy schedulery oraz uruchamiamy zadanie

    5. po zakończeniu należy zweryfikować logi znajdujące się w schedulerze

Możemy skonfigurować dwa osobne zadania dla aktualizacji całej bazy i wybranych rekordów. Najprostszy sposób to: wykonać kopię oryginalnego zadania journalDistributionFromXmlFiles, zmienić nazwę oraz odpowiednio zmodyfikować parametry.

 

Śledzenie postępu, weryfikacja działania

Przykładowe logi podczas uruchomienia zadania cyklicznego:

  • zaktualizowano jedno czasopismo z załączonego pliku XML (w przypadku aktualizacji wszystkich czasopism czy pojedynczych ID log z uruchomionego zadania wygląda tak samo)

  • zostało zaktualizowane jedno czasopismo, a usunięte dwa duplikaty tego czasopisma (nastąpił proces scalania)