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 případů k přepočtu pomocí dotazu:
<nowiki>SELECT ID, Číslo_smlouvy FROM SmlouvyProdukt WHERE exUkonceno is null Order by Číslo_smlouvy</nowiki>

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).
V argumentech musí definovano IDKarty, aby Přepočeítávač věděl, pro kterou kartu má načíst její data a provést nad ní přepočet.
Např.: IDKarta="SpravaPohledavek" . Argument musí být taktéž umístěn před argument "Logovat". Ale už jedno jestli před nebo za SQL argument
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>
{BR}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.

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>

Logování

Vše se loguje 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
Počet spisů je uveden v ObsahZaznamuUlohy

Vyjímka v hlavním procesu

TypZaznamuUlohy obsahuje CHYBA případně v Klic2 obsahuje GLOBALNI_CHYBA
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
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
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
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.{BR}
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.