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
- Moduly : local
- Specialni zakaznicky : Logic MODUL > Zpracovává data, parametry a říká světu kolem sebe, že data zpracoval nebo se o ně hlásí. QUICK-MODUL > Kontroly a rychlé akce * nic složitého nemá HANDLED_DATA
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