Skript pro pročištění databáze – XG, DG, LTV a uživatelské tabulky

Tento skript lze použít pro bezpečné odstranění obsahu z instalace FormFlow, tedy obnovení do jeho výchozího stavu dle zadaného parametru. Skript odstraní pouze obsah, netýká se nastavení.

Jedná se o skript umístěný v c:\wwwroot\[FormFlow]\utils\clean_ffs_installation.php.

Použití:

php -f cleanup_ffs_installation.php [-h] [-l logfile] [-d] [-f] [-a]

Tento skript odstraní z instalace FFS všechny objekty určitého typu.

-h

zobrazení nápovědy

-l logfile

tento parametr obsahuje název souboru, do kterého má tento skript zapsat protokol o své práci

-d

vymazat všechny DG dokumenty

-f

vymazat všechny formuláře (procesy)

-a

vymazat všechny záznamy z adresáře

Implementace

Třídy jsou v adresáři htdocs\FS\Common\Cleanup. Hlavní třída je CleanupManager, ověření práv provádí CleanupAuthorizator, operaci provádí třída CleanupService. Konfigurace operace se zadává instancí třídy CleanupConfiguration.

Operace se musí provádět dvoukrokově:

  • V prvním kroku a v databázové transakci se odstraní záznamy, které se mají odstranit: viz metoda CleanupManager::cleanup().

  • Ve druhém kroku a mimo databázovou transakci se restartují sekvence resp. IDENTITY sloupce – viz metoda: CleanupManager::restartSequencesOrIDENTITYColumns() a také skript cleanup_ffs_installation.php, ve kterém je to takto voláno.

Vlastní úpravy obsahu databáze provádějí třídy-moduly.

  • Jsou v adresáři htdocs\FS\Common\Cleanup\Modules.

  • Tyto třídy jsou volány ze třídy: CleanupService

  • Moduly musí implementovat rozhraní: \FS\Common\Cleanup\Modules\IModule

  • Měly by být potomkem třídy: \FS\Common\Cleanup\Modules\BaseModule, protože tato třída poskytuje metody, které se hodí při modifikaci obsahu databáze.

Implementovány jsou dva moduly:

  • \FS\Common\Cleanup\Modules\DGDocumentsModule – maže DG dokumenty.

  • \FS\Common\Cleanup\Modules\FormsModule – maže formuláře.

Všechny výše uvedené třídy jsou službami v systémovém kontejneru – viz soubor: htdocs\configs\DI\config.neon.

Implementace dalšího modulu

  • Zkontrolujte a případně doplňte parametry do třídy CleanupConfiguration.

  • Vytvořte třídu-modul v adresáři htdocs\FS\Common\Cleanup\Modules.

    • Musí implementovat rozhraní \FS\Common\Cleanup\Modules\IModule.

    • Měla by být potomkem třídy \FS\Common\Cleanup\Modules\BaseModule.

    • Přidejte ji do config.neon.

    • Její práci lze logovat pomocí třídy \FS\Common\Cleanup\CleanupLog, jejíž instanci dostávají obě metody cleanup()restartSequencesOrIDENTITYColumns().

  • Upravte třídu CleanupService, což mimo jiné znamená, že CleanupService bude dostávat instanci té nové třídy-modulu ve svém konstruktoru. V metodách cleanup()restartSequencesOrIDENTITYColumns() se musí volat příslušné metody té nové třídy-modulu.