Přeskočit na hlavní obsah

Synchronizace Google Drive s DMS ESO9

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:

<applicationSettings>
<ESO9DMS2GoogleDrive.My.MySettings>
<setting name="CREDENTIAL_FILE" serializeAs="String">
<value>..\..\..\eso9-1589890273102-ba2d6bc069e3.json</value>
</setting>
<setting name="LOG" serializeAs="String">
<value>1</value>
</setting>
<setting name="ConnStr" serializeAs="String">
<value>Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=ws021;Initial Catalog=eso9start</value>
</setting>
<setting name="Action" serializeAs="String">
<value>1</value>
</setting>
<setting name="SQL_SELECT_IDLOGUSER" serializeAs="String">
<value>SELECT IDUZIVATEL FROM UZIVATEL WHERE KOD_UZIV = 'turych'</value>
</setting>
<setting name="SQL_SELECT_DOC2EXPORT_GOOGLE_DRIVE" serializeAs="String">
<value>SELECT * FROM QDOKUMENT WHERE version = '1.0'</value>
</setting>
<setting name="ExportFolder" serializeAs="String">
<value>Export</value>
</setting>
<setting name="SQL_AFTER_DOC_EXPORTED" serializeAs="String">
<value>update DOKUMENT set VERSION = '2.0' WHERE DOKUMENTFILEGUID = '%FILEGUID%'</value>
</setting>
<setting name="ImportFolder" serializeAs="String">
<value>Import</value>
</setting>
<setting name="SQL_AFTER_DOC_IMPORTED" serializeAs="String">
<value>update DOKUMENT set VERSION = '1.0' WHERE DOKUMENTFILEGUID = '%FILEGUID%'</value>
</setting>
<setting name="DeleteDocAfterImport" serializeAs="String">
<value>0</value>
</setting>
<setting name="ImportedFolder" serializeAs="String">
<value>Hotovo</value>
</setting>
</ESO9DMS2GoogleDrive.My.MySettings>
</applicationSettings>

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)