U přepočítávače je absolutně nejdůležitější první přihlášení k databázi. To je hlavní proces PrepocetFinanci. Když se hlavnímu procesu nepodaří připojit, pak přepočet neproběhne vůbec.
Hlavní proces najde absolutní počet neukončených exekučních spisů k přepočtu pomocí dotazu:
<nowiki>SELECT ID, Číslo_smlouvy FROM SmlouvyProdukt WHERE Produkt = N'EXEKUCNI_SPIS' AND exUkonceno is null Order by right(Číslo_smlouvy,2), Číslo_smlouvy</nowiki>

Od verze 7.5.16 lze výše zmíněný SQL dotaz změnit na libovolný SQL dotaz, jehož výsledkem budou záznamy z tabulky SmlouvyProdukt, a to tak, že dotaz umístíte do textového souboru (můžete přímo z Management studio pro SQL server) a pak pomocí argumentu předáte Přepočítávači financí cestu k tomuto souboru. Argument s cestou k souboru musí být umístěn před argument "Logovat". Pokud není přítomen argument "Logovat", pak Argument s cestou k souboru dejte na konec.
Argument se píše ve tvaru SQL=CESTA_K_SOUBORU (např SQL=dotaz.sql).
Hlavní proces pak rozdělí množinu spisů do skupin po 50-ti spisech. V cyklu prochází pak prochází skupiny. V 1 kroku vezme vždycky 4 skupiny.
Každou skupinu serialzuje na disk do C:\Users\WINDOWS_USER_NAME\Documents\PrepocetFinanciTemp do temp souboru (např. PripadyPrepocet_2010-11-15_10-17-15.5376450_tmpCF08.tmp). Soubor se skládá z prefixu PripadyPrepocet_ a vygenerovaného času na 10mil-tiny sekundy pomocí
<nowiki>DateTime.Now.ToString("yyyy-MM-ss_HH-mm-ss.fffffff")</nowiki>
a náhodně vynegerovaného názvu temp souboru. Název temp souboru vzniká pomocí
<nowiki>System.IO.Path.GetTempFileName()</nowiki>
To vytvoří fyzicky temp soubor v C:\Users\WINDOWS_USER_NAME\AppData\Local\Temp, ten hlavní proces hned vymaže a použije název temp souboru.
Pro každý takto vzniklý soubor s dávkou 50-ti spisů spustí podproces PrepocetPripadu. V každém 1 kroku cyklu tedy spustí paralelně 4 podprocesy PrepocetPripadu. A každý z těchto podprocesů má svojí jedinečnou dávku 50-ti spisů k prepočtu.
Aby podproces dokázal dávku přepočítat musí se taktéž přihlásit do databáze. Když se mu to nepodaří přepočet této dávky v tom okamžiku neproběhne. Pokud se podprocesu podaří přihlásit a bezchybně se dostat k souboru s dávkou. Dávku deserializuje do paměti. Soubor s dávkou vymaže a přepočte spisy, které byly v této dávce.
Hlavní proces vždy čeká až všechny 4 podprocesy skončí, aby mohl provést další 1 krok a spustit tak nové 4 podprocesy s novými 4 dávkami.
Až hlavní proces projde v cyklu všechny skupiny spisů, pak na konci zkontroluje obsah temp adresáře C:\Users\WINDOWS_USER_NAME\Documents\PrepocetFinanciTemp, jestli se tam nachází nějaké soubory s dávkou. Pokud se tam nějaké soubory s dávkami nachází, znamená to, že podprocesy pro něž byly dávky určeny, se ukončily dříve, než stihli zpracovat pro ně určenou dávku. Pak tedy hlavní proces prochází jeden po druhém všechny soubory z C:\Users\WINDOWS_USER_NAME\Documents\PrepocetFinanciTemp a spouští ke každému nový podproces. Zde je tedy vždy spuštěn právě jeden podproces s právě jednou dávkou. Na konci průchodu těmito soubory s dávkami, smaže hlavní proces celý temp adresář C:\Users\WINDOWS_USER_NAME\Documents\PrepocetFinanciTemp i s jeho případným obsahem. Přečte obsah všech chybových logů a umístí ho do C:\Users\WINDOWS_USER_NAME\Documents\Evolio.Log\CHYBOVY_LOG_PrepocitavacFinanci_AKTUALNI_CAS_VYTVORENI_NA_10MIL-TINY_SEKUNDY.err.
Poté hlavní proces přečtě hodnoty ze všech logů typu *.pns, *.pzs, *.pps a postupně je sečte do třech různých proměnných, které pak použije do celkového Sumáře. Po ukončení této činnosti přejde hlavní proces ke generování Sumáře. Tedy souboru SUMAR_LOG_PrepocitavacFinanci_AKTUALNI_DATUM_A_CAS_VYTVORENI.SumLog uloženého v C:\Users\WINDOWS_USER_NAME\Documents\Evolio.Log.
Poté provede archivaci logů (*.txt, *.err) vygenerovaných podprocesy a uloží ho do C:\Users\WINDOWS_USER_NAME\Documents\Evolio.Log do ZIP souboru nazvaného Archiv_Log_PrepocitavacFinanci_AKTUALNI_DATUM_A_CAS_VYTVORENI.zip.
Každý podproces PrepocetPripadu generuje 5 typů logovacich souboru:
  1. Log_PrepocitavacFinanci_ID_PROCESU_AKTUALNI_CAS_VYTVORENI_NA_10MIL-TINY_SEKUNDY.txt - seznam přepočtených spisů
  2. Log_PrepocitavacFinanci_ID_PROCESU_AKTUALNI_CAS_VYTVORENI_NA_10MIL-TINY_SEKUNDY.err - výpis chyby konkrétního přepočítávaného spisu. Tudíž během 1 přepočtu dávky, může v extrémním případě vzniknout 50 takovýchto souborů.
  3. ID_PROCESUAKTUALNI_CAS_VYTVORENI_NA_10MIL-TINY_SEKUNDY.pns - obsahuje jedno 1 číslo reprezentující počet nezměněných spisů
  4. ID_PROCESUAKTUALNI_CAS_VYTVORENI_NA_10MIL-TINY_SEKUNDY.pzs - obsahuje jedno 1 číslo reprezentující počet změněných spisů
  5. ID_PROCESUAKTUALNI_CAS_VYTVORENI_NA_10MIL-TINY_SEKUNDY.pps - obsahuje jedno 1 číslo reprezentující počet přepočtených spisů

    Hlavní proces PrepocetFinanci a jeho podporcesy se při neúspěšném prvním přihlášení pokus opakovat 5x. Poprvé čekají 30s, pak 60s, pak 90s, pak 120s a při posledním pokusu 180s.
    Je jasné, že vždy přibude 30s k původní čekací době a že se celková čekací doba sčítá. Takže při druhém opakovaném příhlášení trvalo připojení k databázi 90s, u třetího 180s a u posledního 480s (8 minut).
    ==Doporučení==
    Nespouštějte na SQL serveru žádnou jinou úlohu, pokud stále běží nebo má začít běžet přepočet spisů.
    ==Struktura sumáře==
    <nowiki>Přepočet financí ze dne DATUM
    Přepočet začal DATUM_CAS_VYTVORENI_NA_10MIL-TINY_SEKUNDY
    Přepočet skončil DATUM_CAS_VYTVORENI_NA_10MIL-TINY_SEKUNDY
    Počet spuštěných procesů: CISLO
    Počet spisů k přepočtu: CISLO
    Počet přepočtených spisů: CISLO
    Počet změněných spisů: CISLO
    Počet nezměněných spisů: CISLO
    Počet chyb: CISLO
    Počet doplňujích procesů mělo být spuštěno: CISLO
    Počet doplňujích procesů skutečně spuštěno: CISLO
    Začátek spuštění doplňujících procesů: DATUM_CAS_VYTVORENI_NA_10MIL-TINY_SEKUNDY (v případě nespuštění se zobrazí 0001.01.01 00-00-00.0000000)
    </nowiki>



7.5.17

Totální změna logování. Nejsou generovány soubory log, pns, pzs, pps. Ani sumáře čehokoliv. Vše bylo přesunuto do databáze do tabulky LogUlohy.

Přepočítávač a všechny jeho podprocesy do sloupce NazevUlohy vkládají hodnotu Přepočet Financí. Přepočítávač na začátku každého hromadného přepočtu smaže soubor guid.guid v adresáři uživatele Windows pro dočasné soubory. Vygeneruje nový GUID, který uloží do nového souboru guid.guid v adresáři uživatele Windows pro dočasné soubory. Tento Guid si pak načítají všechny další podprocesy hromadného přepočtu. Tento Guid, pak používá hlavní proces i podprocesy pro logování a jeho hodnotu ukládají vždy do sloupce Klic1. To proto, aby se dalo jednoduše říci, které záznamy jednoznačně souvisí s právě 1 hromadným přepočtem.

Logování hlavního procesu


Start hromadného přepočtu

TypZaznamuUlohy obsahuje START a Klic2 obsahuje GLOBAL
V ObsahZaznamuUlohy je Start přepočtu

Konec hromadného přepočtu

TypZaznamuUlohy obsahuje HOTOVO a Klic2 obsahuje GLOBAL

Počet spisů k přepočtu

TypZaznamuUlohy obsahuje POCET a Klic2 obsahuje SPISY_K_PREPOCTU_CELKEM{BR}
Počet spisů je uveden v ObsahZaznamuUlohy

Vyjímka v hlavním procesu

TypZaznamuUlohy obsahuje CHYBA případně v Klic2 obsahuje GLOBALNI_CHYBA{BR}
Text vyjímky je v ObsahZaznamuUlohy

Sumář hlavního procesu

Počet spuštěných procesů

TypZaznamuUlohy obsahuje POCET a Klic2 obsahuje POCET_SPUSTENYCH_PROCESU a Klic3 obsahuje SUMA{BR}
Počet spuštěných procesů je uveden v ObsahZaznamuUlohy

Počet spisů k přepočtu

TypZaznamuUlohy obsahuje POCET a Klic2 obsahuje POCET_SPISU_K_PREPOCTU a Klic3 obsahuje SUMA{BR}
Počet spisů k přepočtu je uveden v ObsahZaznamuUlohy

Počet začátek přepočtu

TypZaznamuUlohy obsahuje POCET a Klic2 obsahuje ZACATEK_PREPOCTU a Klic3 obsahuje SUMA{BR}
Začátek přepočtu je uveden v ObsahZaznamuUlohy ve formátu data (dd.MM.yyyy).

Počet začátek doplňujícího přepočtu

TypZaznamuUlohy obsahuje POCET a Klic2 obsahuje ZACATEK_DOPLNUJICIHO_PREPOCTU a Klic3 obsahuje SUMA
začátek doplňujícího přepočtu je uveden v ObsahZaznamuUlohy ve formátu data (dd.MM.yyyy).

Počet doplňujících procesů

TypZaznamuUlohy obsahuje POCET a Klic2 obsahuje POCET_DOPLNUJICICH_PROCESU a Klic3 obsahuje SUMA
Počet doplňujících procesů je uveden v ObsahZaznamuUlohy

Počet spuštěných doplňujících procesů

TypZaznamuUlohy obsahuje POCET a Klic2 obsahuje POCET_SKUTECNE_SPUSTENYCH_DOPLNUJICICH_PROCESU a Klic3 obsahuje SUMA
Počet spuštěných doplňujících procesů je uveden v ObsahZaznamuUlohy

Chyba/vyjímka v podprocesu

TypZaznamuUlohy obsahuje CHYBA a v Klic2 je číslo procesu přidělené v dané chvíli OS.
Text chyby/vyjímky je v ObsahZaznamuUlohy

Podproces přešel dalšímu spisu

TypZaznamuUlohy obsahuje DALSI_ZAZNAM a v Klic2 je číslo procesu přidělené v dané chvíli OS a v Klic3 je číslo zpracovávaného spisu.
V ObsahZaznamuUlohy je Zpracovávám spis CISLO_SPISU. AKTUALNI_CAS_DATUM

Podproces změnil data ve spisu

TypZaznamuUlohy obsahuje INFORMACE a v Klic2 je číslo procesu přidělené v dané chvíli OS a v Klic3 je číslo zpracovávaného spisu.
V ObsahZaznamuUlohy je ZMENEN

Podproces nezměnil data ve spisu

TypZaznamuUlohy obsahuje INFORMACE a v Klic2 je číslo procesu přidělené v dané chvíli OS a v Klic3 je číslo zpracovávaného spisu.
V ObsahZaznamuUlohy je NEZMENEN

Podproces uložil úspěšně data ve spisu

TypZaznamuUlohy obsahuje INFORMACE a v Klic2 je číslo procesu přidělené v dané chvíli OS a v Klic3 je číslo zpracovávaného spisu.
V ObsahZaznamuUlohy je Uložení se zdařilo

Podproces neuložil úspěšně data ve spisu

TypZaznamuUlohy obsahuje VAROVANI a v Klic2 je číslo procesu přidělené v dané chvíli OS a v Klic3 je číslo zpracovávaného spisu.
V ObsahZaznamuUlohy je Uložení se NEzdařilo CISLO_SPISU. AKTUALNI_CAS_DATUM

Chyba spisu vyvolaná při přepočtu v podprocesu

TypZaznamuUlohy obsahuje CHYBA a v Klic2 je číslo procesu přidělené v dané chvíli OS a v Klic3 je číslo zpracovávaného spisu.
Text chyby/vyjímky je v ObsahZaznamuUlohy

Sumář podprocesu

Počet nezměněných spisů

TypZaznamuUlohy obsahuje POCET a v Klic2 je číslo procesu přidělené v dané chvíli OS a v Klic3 je NEZMENENE.
Počet nezměněných spisů je uveden v ObsahZaznamuUlohy

Počet změněných spisů

TypZaznamuUlohy obsahuje POCET a v Klic2 je číslo procesu přidělené v dané chvíli OS a v Klic3 je ZMENENE.
Počet změněných spisů je uveden v ObsahZaznamuUlohy

Počet přepočtených spisů

TypZaznamuUlohy obsahuje POCET a v Klic2 je číslo procesu přidělené v dané chvíli OS a v Klic3 je PREPOCTENE.
Počet přepočtených spisů je uveden v ObsahZaznamuUlohy.

Konec přepočtu dávky spisů v podprocesu

TypZaznamuUlohy obsahuje HOTOVO a v Klic2 je číslo procesu přidělené v dané chvíli OS a v Klic3 je KONEC_PREPOCTU_DAVKY.
Počet přepočtených spisů je uveden v ObsahZaznamuUlohy.

Verze 7.10.1

V této verzi došlo k totální změně způsobu přepočtu financí. Žádné podporocesy, žádný zápis na disk nebo čtení z disku. Nic takového.
Máme tu hlavní proces, kterému lze nově říci kolik vláken má spustit najednou a kolik spisů bude v jednom vlákně. Hlavní proces podle příkazové řádky spustí tolik vláken, kolik si uživatel přeje. Po spuštění každého vlákna se čeká 1s. Každé vlákno provádí vlastní přepočet financí na vlastní podmnožině spisů. Množina spisů, které mají jít do přepočtu se provádí tímto SQL {BR}
SELECT ID, Číslo_smlouvy FROM SmlouvyProdukt as sp left outer join FinancePrehled as fp on sp.ID = fp.fsID WHERE Produkt = N'EXEKUCNI_SPIS' AND exUkonceno is null Order by fp.fsFinanceKDatu asc

Logování zůstalo beze změny. Pouze je nově odchytávávana výjimka přímo při samotném přepočtu financí, která je následně uložena jako CHYBA a v textu chyby je prefix CHYBA FINANCE: a za ní potom POPIS_VYJIMKY;VYJIMKA_STACK_TRACE. A v tomto případě není spis uložen.