Best practices

1. Nepouzivat custom message , misto nej  custom.debug.message - loguje do souboru zvlast neloguje se do sql
2. Nekopirovat a pojmenovavani - udelat standardy  konvence pojmenovani
3. Osetrovat null expetions  prace s chybama 
4. Kdyz se nekde pripojuji rozlisuji mezi rezimem ze studia a z pracoviste > podminky Session.isStudioSessin
5. Propojovani , pripojovaci moduly, myslet na to ze se restartne pracoviste , uklizet, - SessionFinish.  I pri prepnuti skriptu. 
6. Krome navratove hodnoty je dulezite nastavit I message. Z toho se bere info jak tam ma cekat  a zpet na semboxu - posledni zprava
7. Applikace :  kdyz neco  potrebuju udelat , tak poslu command/objekt. Je to legalnejsi a je tam vsechno zalogovane a bezpecne.
8. V modul chekcer moc nelogovat !!

Nedelat: zavolat primo funkce ze stromecku NE!!!

Base : Core Moduly

Struktura solution

Common Pacemaker - nepoužívá se UnixProxy – nahrazuje tSend na pracovištích IMI – obsahuje i logic, kde je připojení na Oracle TSE – obsahuje i logic, kde je připojení na FireBird, MySQL

Každý zákazník má instalationXML.

NameSpace logiky

Nově je tam namespace logiky, aby se nemusely vyplňovat WorkPlaceCD. Typ logiky se nastavuje přes xTrace studio v monitorování pracovišť. Jak to funguje - popsat

SGCore Forms - odstávky, alarmy, login Hardware – semboxy, porty, pipes, síťové porty, I/O, OPC, komunikační protokoly Něco je modul něco je jen classa Helpers – Dynamic – jede přes to ExpressionCondition Local • DataObjects • Helpers (další) • IOPort • Panel – pro starý pacemaker • Plan – pro starý import (používá se v HNW) • Services ○ Pro práci s DB – jen tahání data a update, jen provádí akce, neuchvovává stav Logic Logiky podle zákazníků Model Objekty se kterými pracují služby Message pro messenger GlobalContext - počitadla, performancedata CycleContext – odstavky, maintanance, jobsetuptime Panels Pro starý pacemaker ViewModel Hlavní viewmodel od kterého dědí každá aplikace

Session Events • Logic_TreeChange ○ Level change ○ Index reset ○ Level reset

Vytvoření modulu – co ne • Part start nevolat přímo, ale dědit. Některé věci se totiž zavolají jen, pokud je to poděděné z part start

Další tipy • Messenger - místo eventů • Nepoužívat moc custom hlášky, akorát debug je dobrá, standardně se neloguje do SQL a dělá zvlášť soubor • Při připojování někam odlišit režim běžný nebo jeslti to běží v xTraceStudiu (Session.IsStudioSession) • Při restartu / přepnutí skriptu dbát na ukončení všech připojení - Session.Finished • Modul - důležité vrátit SGLMState a nastavit Message • Z UI nevolat přímo, ale zařadit do fronty dat - nemusím pak řešit ThreadSafe atd. • Dobrý vzorový modul: Dummy