==== Synchronizace Google Drive s DMS ESO9 ==== Pro automatické souborové exporty/importy z/do ESO9 lze nově použít Google Drive (GD), který lze pomocí automatu oboustranně synchronizovat s DMS ESO9. Užitečné to může být zejména pro uživatele, kteří nemají přímý přístup k aplikační databázi (tj. typicky provoz aplikace v cloudu). Práce se soubory přitom nemusí probíhat na GD, synchronizované složky si lze namapovat na vlastní lokální disk. Uživatel tak může nahrát požadované soubory na svůj lokální disk a ty se následně automaticky naimportují do ESO9. Nebo naopak spustí v ESO9 export a vyexportované soubory se automaticky uloží na jeho lokální disk.\\ === Synchronizační automat === Základem řešení je automat (program), který se v pravidelných intervalech spouští a dle své konfigurace provádí export z DMS ESO9 na GD či import z GD do DMS ESO9. Pravidelné spouštění lze zajistit přes plánované úlohy ve Windows, časem lze toto nahradit systémovou službou či např.balíčkem v Dockeru.\\ Program //ESO9DMS2GoogleDrive.exe// lze získat na vyžádání v ESO9 international. Pro režijní spouštění je konfigurace uložena v souboru //ESO9DMS2GoogleDrive.exe.config//. Pro servisní režim se spouští s parametry z příkazové řádky (GD pro service account nemá žádné webové rozhraní, nelze tedy ve webovém prohlížeči zobrazit obsah disku; proto servisní režim, který toto umožní z příkazové řádky)\\ == Konfigurace == LOG * logování do souboru zapnuté (1) / vypnuté (0). Pokud je logování zapnuté, vytvoří se ve složce s programem logovací soubor //ESO9DMS2GoogleDrive.log// * standardně se logují akce typu založená/vymazání dokumentu z DMS ESO9 i do LOGovací databáze jako Action=9 (externí akce) CREDENTIAL_FILE * relativní cesta k souboru s credentials k použitému Google Účtu * nejedná se o běžný uživatelský účet, ale o účet službový (service account) - popis na [[https://cloud.google.com/iam/docs/service-accounts?_ga=2.114400130.-443116471.1589793102]] * JSON soubor se generuje na adrese [[https://console.cloud.google.com/iam-admin/serviceaccounts]] ConnStr * connection string k aplikační databázi * na jeho základě se vytváří i connstr k LOGovací a DOCumentové databázi Action * spouštěná akce: 1=Import, 2=Export SQL_SELECT_IDLOGUSER * výběrový SQL dotaz, který vrací ID uživatele, pod nímž se provádí import; pro export není povinný * musí obsahovat alespoň sloupec IDUZIVATEL SQL_SELECT_DOC2EXPORT_GOOGLE_DRIVE * výběrový SQL dotaz, který vrací dokumenty, které se budou exportovat z DMS do GD * musí obsahovat alespoň sloupec DOKUMENTFILEGUID ExportFolder * jméno složky v GD pro export dokumentů z DMS ESO9 * pokud složka neexistuje, založí se v rootu GD pro daný účet (složka není nikde "vidět", je tedy lepší mít exportní složku připravenou) SQL_AFTER_DOC_EXPORTED * SQL dotaz/příkaz, který se spouští po exportu souboru z DMS ESO9 do GD * musí obsahovat parametr %FILEGUID%, který se nahradí GUIDem aktuálně vyexportovaného dokumentu * může obsahovat nastavení hodnoty řádku v DMS, které způsobí, že se dokument nebude uplodovat opakovaně (změní stav, zvedne verzi, ...) * nebo může obsahovat smazání dokumentu v případě, že se DMS používá jen jako TEMP úložiště pro export ImportFolder * složka na GD, odkud se importují dokumenty do DMS ESO9 * musí existovat a musí obsahovat nějaké dokumenty, jinak není co importovat * pokud existuje na GD více složek se stejným jménem (přístupných pod daným účtem), vezme se první nalezená SQL_AFTER_DOC_IMPORTED * SQL dotaz/příkaz, který se spouští po importu souboru z GD do DMS ESO9 * musí obsahovat parametr %FILEGUID%, který se nahradí GUIDem aktuálně naimportovaného dokumentu * může obsahovat nastavení hodnoty řádku v DMS (typ dokumentu, verzi, ...) DeleteDocAfterImport * příznak, zda se má po importu do DMS ESO9 dokument z GD smazat (1) či nikoli (0) * pro mazání zpravidla nejsou pro daný účet dostatečná oprávnění * má přednost před přesunem naimportovaného dokumentu do jiné podsložky (parametr ImportedFolder) ImportedFolder * jméno podsložky v rámci importní složky, kam se po úspěšním importu do DMS ESO9 přesune naimportovaný soubor tak, aby se neimportoval opakovaně * pokud podsložka neexistuje, založí se * pokud není parametr zadán, vytváří se defaultně složka "Imported" \\ Příklad:\\ ..\..\..\eso9-1589890273102-ba2d6bc069e3.json 1 Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=ws021;Initial Catalog=eso9start 1 SELECT IDUZIVATEL FROM UZIVATEL WHERE KOD_UZIV = 'turych' SELECT * FROM QDOKUMENT WHERE version = '1.0' Export update DOKUMENT set VERSION = '2.0' WHERE DOKUMENTFILEGUID = '%FILEGUID%' Import update DOKUMENT set VERSION = '1.0' WHERE DOKUMENTFILEGUID = '%FILEGUID%' 0 Hotovo \\ Parametry z příkazové řádky pro servisní režim (konfigurační soubor musí také existovat, použije se z něj pouze parametr CREDENTIAL_FILE): * parametry se zadávají ve formátu /p Action=xxx * v případě spuštění servisního režimu se neprovádí standardní akce import/export * výsledek spuštění servisního režimu se zapisuje do LOGovacího souboru a do konsole (příkazový řádek) * Action=List - zobrazí obsah GD přístupný pod daným účtem (credentials) * Action=Delete - vymaže obsah GD přístupný pod daným účtem (credentials)