Documente Academic
Documente Profesional
Documente Cultură
AggreGate Documentation
Table of Contents
Foreword 0
Part I Introduction
1 About ................................................................................................................................... This Manual 2 About ................................................................................................................................... Tibbo Technology Inc. 3 Copyright ................................................................................................................................... Notice 4 Documentation ................................................................................................................................... Feedback 5 Quick ................................................................................................................................... Start Guide 6 License ................................................................................................................................... Issues
27
27 28 28 28 28 29
30
30 31 34 35 36 37 39 39
40
40 43
Installing ......................................................................................................................................................... AggreGate Server 43 Installation.................................................................................................................................................. 43 Upgrade .................................................................................................................................................. 43 Uninstallation .................................................................................................................................................. 44 Startup and ......................................................................................................................................................... Shutdown 44 Service Mode .................................................................................................................................................. 46 Command.................................................................................................................................................. Line Parameters 47 Shutting Down .................................................................................................................................................. The Server 47 Net Admin.................................................................................................................................................. 49 Net Admin ........................................................................................................................................... and Startup Script Command Reference 49 Startup Scripts .................................................................................................................................................. 50 Configuration ......................................................................................................................................................... 51 Server Configurator .................................................................................................................................................. 51 Client-based .................................................................................................................................................. Configuration 51 File-based.................................................................................................................................................. Configuration 52 Global Configuration .................................................................................................................................................. Options 53 General Settings ........................................................................................................................................... 53 Database ........................................................................................................................................... 55 Cluster ........................................................................................................................................... 59 Web Applications ........................................................................................................................................... 59
Contents
Dynamic DNS ........................................................................................................................................... 61 Mail Settings ........................................................................................................................................... 63 Advanced Mail ........................................................................................................................................... Settings 65 SMS Sending ........................................................................................................................................... 69 Event Processing ........................................................................................................................................... Rules 70 Custom Event ........................................................................................................................................... Writers 72 Default User ........................................................................................................................................... Permissions 73 Additional Permissions ........................................................................................................................................... For New Users 73 Default Synchronization ........................................................................................................................................... Options 73 Statistics ........................................................................................................................................... 73 Active Plugins ........................................................................................................................................... 74 Logging ......................................................................................................................................................... 74 Logging Configuration .................................................................................................................................................. File 74 Logging Categories .................................................................................................................................................. 76 Logging Levels .................................................................................................................................................. 79 Logging Framework .................................................................................................................................................. Documentation Sources 80 Database ......................................................................................................................................................... 80 Switching .................................................................................................................................................. To Another Database Engine 81 Switching Database ........................................................................................................................................... To MySQL 82 Switching Database ........................................................................................................................................... To Microsoft SQL Server 84 Switching Database ........................................................................................................................................... To Oracle 84 Switching Database ........................................................................................................................................... To PostgreSQL 84 Switching Database ........................................................................................................................................... To Firebird 85 Database .................................................................................................................................................. Converter 85 Database Schema .................................................................................................................................................. and Interaction 85 Database Performance .................................................................................................................................................. Tuning 87 Failover Cluster ......................................................................................................................................................... 87 Database Failover .................................................................................................................................................. 89 AggreGate-Based ........................................................................................................................................... Database Replication 91 Database...................................................................................................................................... Cluster Configuration File 92 Native Database ........................................................................................................................................... Replication 93 Sharing Single ........................................................................................................................................... Database 94 AggreGate .................................................................................................................................................. Server Failover 95 Distributed ......................................................................................................................................................... Operations 99 Distributed .................................................................................................................................................. Architecture Contepts 100 Distributed .................................................................................................................................................. Architecture Configuration 101 Configuring .................................................................................................................................................. Providers 102 Configuring .................................................................................................................................................. Consumers 103 Distributed .................................................................................................................................................. Server Status 103 Permissions .................................................................................................................................................. in Distrubuted Environment 103 Data Backup ......................................................................................................................................................... and Restoration 104 Moving AggreGate ......................................................................................................................................................... Server Installation 105 Safe Mode ......................................................................................................................................................... 106 Managing ......................................................................................................................................................... Pre-Built Resources 107 System Tray ......................................................................................................................................................... Menu 108 Dealing with ......................................................................................................................................................... Time Zones 108
3 Users ...................................................................................................................................
108
Default Administator ......................................................................................................................................................... 109 User Account ......................................................................................................................................................... Management 109 User Self-Registration ......................................................................................................................................................... 109 User Account ......................................................................................................................................................... Configuration 110 Properties .................................................................................................................................................. 110 Account Settings .................................................................................................................................................. 111 Resources .................................................................................................................................................. 111
AggreGate Documentation
User Photo .................................................................................................................................................. 111 Permissions .................................................................................................................................................. 111 Alerts .................................................................................................................................................. 112 User Account ......................................................................................................................................................... Status 112 Resetting......................................................................................................................................................... User Account Password 112 Suspending ......................................................................................................................................................... User Accounts 112 Users in ......................................................................................................................................................... Distributed Architecture 112
4 Devices ...................................................................................................................................
113
Device Metadata ......................................................................................................................................................... 113 Device Assets ......................................................................................................................................................... 113 Device Variables ......................................................................................................................................................... (Settings) 114 Device Snapshots .................................................................................................................................................. (Settings Cache) 115 Settings Synchronization .................................................................................................................................................. Options 115 Settings Synchronization .................................................................................................................................................. Status 117 Device Setting .................................................................................................................................................. Statistics 117 Master Values .................................................................................................................................................. of Device Settings 120 Device Functions ......................................................................................................................................................... (Operations) 120 Device Events ......................................................................................................................................................... 121 Adding New ......................................................................................................................................................... Devices 121 Generic Device ......................................................................................................................................................... Properties 123 Synchronization ......................................................................................................................................................... 126 Device Status ......................................................................................................................................................... 127 Device Location ......................................................................................................................................................... Tracking 128 Device Performance ......................................................................................................................................................... 129
129
AggreGate ......................................................................................................................................................... Agent 130 BACnet ......................................................................................................................................................... 133 URL Monitor ......................................................................................................................................................... (HTTP) 139 JMX (Java ......................................................................................................................................................... Management Extensions) 140 Local File ......................................................................................................................................................... 143 Local Folder ......................................................................................................................................................... 144 Modbus ......................................................................................................................................................... 145 Modem ......................................................................................................................................................... 148 Network ......................................................................................................................................................... Host 150 Ping Monitoring .................................................................................................................................................. 153 Ping Settings ........................................................................................................................................... 153 Ping Monitoring ........................................................................................................................................... Results 153 SNMP Monitoring .................................................................................................................................................. 154 Generic TCP .................................................................................................................................................. Service Monitoring 154 Generic TCP ........................................................................................................................................... Service Settings 154 Generic TCP ........................................................................................................................................... Service Monitoring Results 155 Generic UDP .................................................................................................................................................. Service Monitoring 155 Generic UDP ........................................................................................................................................... Service Settings 155 Generic UDP ........................................................................................................................................... Service Monitoring Results 155 HTTP Server .................................................................................................................................................. Monitoring 156 DNS Server .................................................................................................................................................. Monitoring 156 DNS Service ........................................................................................................................................... Settings 156 DNS Monitoring ........................................................................................................................................... Results 156 POP3 Server .................................................................................................................................................. Monitoring 157 POP3 Service ........................................................................................................................................... Settings 157 POP3 Monitoring ........................................................................................................................................... Results 157 IMAP Server .................................................................................................................................................. Monitoring 158 IMAP Service ........................................................................................................................................... Settings 158 IMAP Monitoring ........................................................................................................................................... Results 158
Contents
SMTP Server .................................................................................................................................................. Monitoring 158 SMTP Service ........................................................................................................................................... Settings 159 SMTP Monitoring ........................................................................................................................................... Results 159 E-mail Round-Trip .................................................................................................................................................. Monitoring 159 E-mail Round-Trip ........................................................................................................................................... Service Settings 159 E-mail Round-Trip ........................................................................................................................................... Monitoring Results 160 FTP Server .................................................................................................................................................. Monitoring 160 FTP Service ........................................................................................................................................... Settings 160 FTP Monitoring ........................................................................................................................................... Results 161 Traceroute .................................................................................................................................................. Monitoring 161 Traceroute ........................................................................................................................................... Service Settings 162 Traceroute ........................................................................................................................................... Monitoring Results 162 SSH Server .................................................................................................................................................. Monitoring 163 SSH Service ........................................................................................................................................... Settings 163 SSH Monitoring ........................................................................................................................................... Results 164 SSH Operations ........................................................................................................................................... 164 DHCP Monitoring .................................................................................................................................................. 164 DHCP Service ........................................................................................................................................... Settings 164 DHCP Monitoring ........................................................................................................................................... Results 165 LDAP Monitoring .................................................................................................................................................. 165 LDAP Service ........................................................................................................................................... Settings 165 LDAP Monitoring ........................................................................................................................................... Results 165 Radius Monitoring .................................................................................................................................................. 166 Radius Service ........................................................................................................................................... Settings 166 Radius Monitoring ........................................................................................................................................... Results 166 WMI Monitoring .................................................................................................................................................. 166 NMEA 0183 ......................................................................................................................................................... 166 OPC (OLE ......................................................................................................................................................... for Process Control) 168 SMB/CIFS ......................................................................................................................................................... (Shared Resource Monitoring) 171 SNMP (Simple ......................................................................................................................................................... Network Management Protocol) 173 Network Host .................................................................................................................................................. SNMP Polling 175 SNMP Polling ........................................................................................................................................... Settings 176 SNMP Polling ........................................................................................................................................... Results 176 SNMP Notifications .................................................................................................................................................. Monitoring 178 SNMP Notifications ........................................................................................................................................... Monitoring Global Configuration 178 SNMP Notifications ........................................................................................................................................... Sources Automatic Discovery 178 SNMP Global .................................................................................................................................................. Settings 178 MIB Files Directory ........................................................................................................................................... 178 SNMP User ........................................................................................................................................... Table 179 SQL Database ......................................................................................................................................................... 180 Virtual Device ......................................................................................................................................................... 182 WebSphere ......................................................................................................................................................... MQ 184 WMI (Windows ......................................................................................................................................................... Management Instrumentation) 186 Configuring .................................................................................................................................................. Remote Access to WMI 189 Mass-enabling .................................................................................................................................................. Remote Access to WMI 190 WMI Configuration ........................................................................................................................................... Script 200 WMI Network ........................................................................................................................................... Scanning 203
206
Filter Expressions ......................................................................................................................................................... 207 Event Highlighting ......................................................................................................................................................... 210 Event Filter ......................................................................................................................................................... Configuration 211 Filter Properties .................................................................................................................................................. 211 Filter Rules .................................................................................................................................................. 211 Primary Visible .................................................................................................................................................. Fields 212
AggreGate Documentation
Additional .................................................................................................................................................. Visible Fields 212 Custom Highlighting .................................................................................................................................................. 213 History Browser .................................................................................................................................................. Settings 213 Parameterized ......................................................................................................................................................... Filters 213 Build-In Filters ......................................................................................................................................................... 215 Event Filters ......................................................................................................................................................... in Distributed Architecture 216
7 Alerts ...................................................................................................................................
216
Variable ......................................................................................................................................................... Triggers 217 Event Triggers ......................................................................................................................................................... 222 Alert Event ......................................................................................................................................................... 224 Notifications ......................................................................................................................................................... 225 Corrective ......................................................................................................................................................... Actions 227 Action Parameter .................................................................................................................................................. Processing 228 Alert Acknowledgement ......................................................................................................................................................... 228 Alert Configuration ......................................................................................................................................................... 229 Alert Properties .................................................................................................................................................. 229 Event Triggers .................................................................................................................................................. 230 Variable Triggers .................................................................................................................................................. 230 Notification .................................................................................................................................................. Settings 231 Escalation .................................................................................................................................................. Settings 232 Automatic .................................................................................................................................................. Corrective Actions 232 Interactive .................................................................................................................................................. Corrective Actions 233 Alert States ......................................................................................................................................................... 233 Alert Lifecycle ......................................................................................................................................................... 234 Active Instances ......................................................................................................................................................... 235 Pending ......................................................................................................................................................... Instances 236 Alert Escalation ......................................................................................................................................................... 237 Alerts Security ......................................................................................................................................................... 237 Alerts Performance ......................................................................................................................................................... 238 Alert Examples ......................................................................................................................................................... 238 Alerts in ......................................................................................................................................................... Distributed Architecture 240
8 Reports ...................................................................................................................................
241
Source Data ......................................................................................................................................................... Expression 241 Report Template ......................................................................................................................................................... 242 Report Types ......................................................................................................................................................... 242 Launching ......................................................................................................................................................... Reports 242 Viewing ......................................................................................................................................................... Reports 244 Report Configuration ......................................................................................................................................................... 245 Report Properties .................................................................................................................................................. 245 Additional .................................................................................................................................................. Report Parameters 245 Parameterized ......................................................................................................................................................... Reports 246 Reports ......................................................................................................................................................... Security 246 Reports ......................................................................................................................................................... Performance 247 Built-in Reports ......................................................................................................................................................... 247
9 Groups ...................................................................................................................................
248
Managing ......................................................................................................................................................... Group Members 249 Group Types ......................................................................................................................................................... 249 Batch Member ......................................................................................................................................................... Operations 249 Dynamic ......................................................................................................................................................... Groups 250 Group Status ......................................................................................................................................................... 250 Member ......................................................................................................................................................... Properties Replication 252 Group Member ......................................................................................................................................................... Context Masks 252 Group Configuration ......................................................................................................................................................... 253
Contents
Group Properties .................................................................................................................................................. 253 Group Status .................................................................................................................................................. 253 Replication .................................................................................................................................................. Options 254 Groups Security ......................................................................................................................................................... 254 Groups ......................................................................................................................................................... Performance 255 Master Values ......................................................................................................................................................... of Member Properties 255 Groups in ......................................................................................................................................................... Distributed Architecture 256
10 Trackers ...................................................................................................................................
257
Tracker Status ......................................................................................................................................................... 257 Tracker ......................................................................................................................................................... Configuration 258 Tracker Properties .................................................................................................................................................. 258 Status Table .................................................................................................................................................. 258 Tracker Statistics ......................................................................................................................................................... 259 Trackers ......................................................................................................................................................... Security 259 Trackers ......................................................................................................................................................... Performance 259 Tracker Examples ......................................................................................................................................................... 260 Built-In Trackers ......................................................................................................................................................... 260 Trackers ......................................................................................................................................................... in Distributed Architecture 260
260
Uses of Common ......................................................................................................................................................... Data 261 Custom Data .................................................................................................................................................. Storage 261 Custom Properties .................................................................................................................................................. 261 Master Properties .................................................................................................................................................. of Devices 262 Master Properties .................................................................................................................................................. of Group Members 263 Common ......................................................................................................................................................... Table Contents 263 Common ......................................................................................................................................................... Table Configuration 264 Common.................................................................................................................................................. Table Properties 264 Common.................................................................................................................................................. Table Fields 264 Custom Properties .................................................................................................................................................. 265 Common ......................................................................................................................................................... Table Record Permissions 265 Common ......................................................................................................................................................... Data Performance 266
266
Job Triggers ......................................................................................................................................................... 267 Action Parameter ......................................................................................................................................................... Processing 269 Job Configuration ......................................................................................................................................................... 270 Job Properties .................................................................................................................................................. 270 Simple Schedule .................................................................................................................................................. 270 Advanced .................................................................................................................................................. Schedule 270 Jobs Security ......................................................................................................................................................... 271 Jobs Performance ......................................................................................................................................................... 271
13 Queries ...................................................................................................................................
271
Context ......................................................................................................................................................... References 274 Field References ......................................................................................................................................................... 277 Query Configuration ......................................................................................................................................................... 278 Debugging ......................................................................................................................................................... Queries 278 Query Executor ......................................................................................................................................................... Widget 280 Editable Query ......................................................................................................................................................... Results 280 Parameterized ......................................................................................................................................................... Queries 282 Queries ......................................................................................................................................................... Performance 283 Query Examples ......................................................................................................................................................... 284 Query Language ......................................................................................................................................................... Syntax 299 Query Language ......................................................................................................................................................... Functions 300
Model Types ......................................................................................................................................................... 304 Model Lifecycle ......................................................................................................................................................... 305 Model Rules ......................................................................................................................................................... 305 Rule Set .................................................................................................................................................. Types 306 Sequential ........................................................................................................................................... Rule Sets 306 Dependent ........................................................................................................................................... Rule Sets 307 Referring .................................................................................................................................................. Rule Sets 307 Model Bindings ......................................................................................................................................................... 307 Model Configuration ......................................................................................................................................................... 307 Model Properties .................................................................................................................................................. 307 Model Variables .................................................................................................................................................. 308 Model Variable ........................................................................................................................................... Statistics 309 Model Functions .................................................................................................................................................. 309 Model Events .................................................................................................................................................. 309 Rule Sets .................................................................................................................................................. 310 Bindings .................................................................................................................................................. 311 Models Security ......................................................................................................................................................... 311 Models ......................................................................................................................................................... Performance 312
15 Widgets ...................................................................................................................................
312
Creating ......................................................................................................................................................... Widgets 314 Widget Template ......................................................................................................................................................... 314 Widget Types ......................................................................................................................................................... 314 Widget Default ......................................................................................................................................................... Context 315 Widget Configuration ......................................................................................................................................................... 315 Launching ......................................................................................................................................................... Widgets 316 Widget Input .................................................................................................................................................. Parameters 317 Widget Execution .................................................................................................................................................. 317 Widget Layout ......................................................................................................................................................... 318 Grid Layout .................................................................................................................................................. 318 Absolute.................................................................................................................................................. Layout 322 Components ......................................................................................................................................................... 322 Label .................................................................................................................................................. 323 Text Field .................................................................................................................................................. 325 Password .................................................................................................................................................. Field 326 Formatted .................................................................................................................................................. Text Field 328 List .................................................................................................................................................. 331 Text Area .................................................................................................................................................. 332 HTML Area .................................................................................................................................................. 334 Button .................................................................................................................................................. 334 Toggle Button .................................................................................................................................................. 337 Radio Button .................................................................................................................................................. 339 Check Box .................................................................................................................................................. 340 Combo Box .................................................................................................................................................. 340 Date/Time .................................................................................................................................................. Picker 341 Data Table .................................................................................................................................................. Editor 344 Event Log .................................................................................................................................................. 345 Slider .................................................................................................................................................. 347 Spinner .................................................................................................................................................. 348 Progress.................................................................................................................................................. Bar 349 Image .................................................................................................................................................. 350 Vector Drawing .................................................................................................................................................. 352 Creating Dynamic ........................................................................................................................................... Vector Images 355 Video Player .................................................................................................................................................. 358
Contents
Meter .................................................................................................................................................. 360 Compass .................................................................................................................................................. 362 Map .................................................................................................................................................. 364 Device .................................................................................................................................................. 367 Graph .................................................................................................................................................. 369 LED Display .................................................................................................................................................. 374 Button Group .................................................................................................................................................. 375 Containers ......................................................................................................................................................... 376 Root Panel .................................................................................................................................................. 376 Panel .................................................................................................................................................. 378 Tabbed Panel .................................................................................................................................................. 379 Split Panel .................................................................................................................................................. 381 Layered Panel .................................................................................................................................................. 382 Subwidget .................................................................................................................................................. 382 Charts ......................................................................................................................................................... 384 Building Chart .................................................................................................................................................. Dataset 385 Custom Data ........................................................................................................................................... 388 Events-based ........................................................................................................................................... Charts 392 Variables-based ........................................................................................................................................... Charts 393 Variable...................................................................................................................................... Series Propagation 393 Variable...................................................................................................................................... Series Types 393 Statistics-Based ...................................................................................................................................... Series 394 Trending ........................................................................................................................................... 395 Debugging .................................................................................................................................................. Charts 397 Category.................................................................................................................................................. Charts 397 Line Chart ........................................................................................................................................... 397 Area Chart ........................................................................................................................................... 401 Bar Chart........................................................................................................................................... 404 Interval Bar ........................................................................................................................................... Chart 415 Statistical........................................................................................................................................... Chart 417 Gantt Chart ........................................................................................................................................... 419 Mixed Category ........................................................................................................................................... Chart 422 Combined ........................................................................................................................................... Domain Category Chart 425 Combined ........................................................................................................................................... Range Category Chart 427 XY Charts .................................................................................................................................................. 429 XY Line Chart ........................................................................................................................................... 429 XY Area Chart ........................................................................................................................................... 436 XY Bar Chart ........................................................................................................................................... 440 Interval Chart ........................................................................................................................................... 449 Error Chart ........................................................................................................................................... 450 Deviation ........................................................................................................................................... Chart 453 Vector Chart ........................................................................................................................................... 455 Bubble Chart ........................................................................................................................................... 457 Financial Chart ........................................................................................................................................... 459 Block Chart ........................................................................................................................................... 463 Mixed XY........................................................................................................................................... Chart 469 Combined ........................................................................................................................................... Domain XY Chart 472 Combined ........................................................................................................................................... Range XY Chart 475 Other Charts .................................................................................................................................................. 478 Spider Chart ........................................................................................................................................... 478 Polar Chart ........................................................................................................................................... 481 Pie Chart ........................................................................................................................................... 485 Ring Chart ........................................................................................................................................... 486 Composite .................................................................................................................................................. Charts 488
10
AggreGate Documentation
Chart Common .................................................................................................................................................. Properties 489 Axis ........................................................................................................................................... 490 Category ...................................................................................................................................... Axis 491 Extended ...................................................................................................................................... Category Axis 493 Value Axis ...................................................................................................................................... 493 Number...................................................................................................................................... Axis 495 Date Axis ...................................................................................................................................... 495 Period Axis ...................................................................................................................................... 496 Logarithmic ...................................................................................................................................... Axis 497 Symbol Axis ...................................................................................................................................... 497 Block Frame ........................................................................................................................................... 498 Image Subtitle ........................................................................................................................................... 498 Item Label ........................................................................................................................................... Position 499 Legend ........................................................................................................................................... 500 Legend Item ...................................................................................................................................... 501 Marker ........................................................................................................................................... 501 Category ...................................................................................................................................... Marker 504 Value Marker ...................................................................................................................................... 505 Interval Marker ...................................................................................................................................... 505 Rectangle ........................................................................................................................................... Insets 506 Title ........................................................................................................................................... 506 Chart Common .................................................................................................................................................. Events 507 Chart Plots .................................................................................................................................................. 509 Category Plot ........................................................................................................................................... 511 Line Annotation ...................................................................................................................................... 517 Text Annotation ...................................................................................................................................... 518 Pointer Annotation ...................................................................................................................................... 519 Item Label ...................................................................................................................................... Generator 520 Tool Tip ...................................................................................................................................... Generator 520 XY Plot ........................................................................................................................................... 521 Box Annotation ...................................................................................................................................... 528 Data Image ...................................................................................................................................... Annotation 529 Image Annotation ...................................................................................................................................... 529 Item Label ...................................................................................................................................... Generator 530 Legend Annotation ...................................................................................................................................... 530 Line Annotation ...................................................................................................................................... 531 Pointer Annotation ...................................................................................................................................... 532 Polygon...................................................................................................................................... Annotation 533 Shape Annotation ...................................................................................................................................... 534 Text Annotation ...................................................................................................................................... 534 Title Annotation ...................................................................................................................................... 535 Tool Tip ...................................................................................................................................... Generator 535 Pie Plot ........................................................................................................................................... 536 Chart Renderers .................................................................................................................................................. 542 Category Renderer ........................................................................................................................................... 548 Category ...................................................................................................................................... Bar Renderer 549 Category ...................................................................................................................................... Line Renderer 552 XY Renderer ........................................................................................................................................... 554 XY Line ...................................................................................................................................... Renderer 556 Gauges ......................................................................................................................................................... 557 Simple Gauge .................................................................................................................................................. 558 Simple Arc .................................................................................................................................................. Gauge 563 Radial Gauge .................................................................................................................................................. 568 Radial Bargraph .................................................................................................................................................. Gauge 568
Contents
11
Arc Gauge .................................................................................................................................................. 569 Half-Round .................................................................................................................................................. Gauge 570 Quarter-Round .................................................................................................................................................. Gauge 570 Linear Gauge .................................................................................................................................................. 571 Linear Bargraph .................................................................................................................................................. Gauge 572 Counter Gauge .................................................................................................................................................. 573 Gauge Common .................................................................................................................................................. Properties 573 Radial Gauge ........................................................................................................................................... Common Properties 584 Component ......................................................................................................................................................... Properties 586 Custom Properties .................................................................................................................................................. 588 Border .................................................................................................................................................. 588 Font .................................................................................................................................................. 590 Paint .................................................................................................................................................. 590 Stroke .................................................................................................................................................. 593 Shape .................................................................................................................................................. 594 Component ......................................................................................................................................................... Events 595 Mouse Event .................................................................................................................................................. 598 Keyboard .................................................................................................................................................. Event 599 Bindings......................................................................................................................................................... 604 Binding Properties .................................................................................................................................................. 604 Binding Target .................................................................................................................................................. 605 Binding Expression .................................................................................................................................................. 606 Binding Activator .................................................................................................................................................. 607 Binding Condition .................................................................................................................................................. 607 Binding Performance .................................................................................................................................................. 607 Binding Examples .................................................................................................................................................. 608 Widget Scripts ......................................................................................................................................................... 610 Widget Event ......................................................................................................................................................... Log 613 Widgets ......................................................................................................................................................... Security 614 Widgets ......................................................................................................................................................... Performance 614 Widget Examples ......................................................................................................................................................... 614 Widget Player ......................................................................................................................................................... 614 Web Widget ......................................................................................................................................................... Player 615 Device Maps ......................................................................................................................................................... 616 Touchscreen ......................................................................................................................................................... Support 616
16 Dashboards ...................................................................................................................................
617
Dashboard ......................................................................................................................................................... Layouts 618 Dashboard ......................................................................................................................................................... Types 619 Dashboard ......................................................................................................................................................... Elements 619 Opening ......................................................................................................................................................... Dashboards 621 Dashboard ......................................................................................................................................................... Configuration 623 Dashboard .................................................................................................................................................. Properties 623 Dashboard .................................................................................................................................................. Elements 624 Dashboards ......................................................................................................................................................... Security 624
625
Auto-Run......................................................................................................................................................... Action Configuration 626 Auto Run ......................................................................................................................................................... in Distributed Architecture 626
18 Favourites ...................................................................................................................................
626
19 Scripts ...................................................................................................................................
628
12
AggreGate Documentation
Script Examples ......................................................................................................................................................... 630 Scripts Security ......................................................................................................................................................... 631
631 632
Accessing ......................................................................................................................................................... Web Desktop 632 Login and ......................................................................................................................................................... Logout 633 User Interface ......................................................................................................................................................... 634 Toolbar .................................................................................................................................................. 635 System ......................................................................................................................................................... Tree 636 Context Menu .................................................................................................................................................. 636 Event Log ......................................................................................................................................................... 637 Current Events .................................................................................................................................................. 637 Event History .................................................................................................................................................. 638 Context Menu .................................................................................................................................................. 638 Acknowledging .................................................................................................................................................. Events 639 Exporting .................................................................................................................................................. Events 640 Properties ......................................................................................................................................................... Editor 640 Data Table ......................................................................................................................................................... Editor 643 Editing Data .................................................................................................................................................. 645 Context Menu .................................................................................................................................................. 649 Sorting and .................................................................................................................................................. Filtering 649 Data Export/Import .................................................................................................................................................. 649 Report Creation .................................................................................................................................................. 649 Entity Selector ......................................................................................................................................................... 649 Favourites ......................................................................................................................................................... 651 Trackers......................................................................................................................................................... 651
651
Administration ......................................................................................................................................................... 652 Alerts ......................................................................................................................................................... 654 Alert ......................................................................................................................................................... 656 Auto Run ......................................................................................................................................................... 662 Action: Add .................................................................................................................................................. Action to Auto Run 664 Auto Run......................................................................................................................................................... Action 664 Common ......................................................................................................................................................... Data 666 Action: Create .................................................................................................................................................. Common Table from Variable 668 Common ......................................................................................................................................................... Data Table 668 Config ......................................................................................................................................................... 671 Dashboards ......................................................................................................................................................... 672 Dashboard ......................................................................................................................................................... 673 Devices ......................................................................................................................................................... 675 Device ......................................................................................................................................................... 677 Drivers/Plugins ......................................................................................................................................................... Configuration 685 Driver/Plugin ......................................................................................................................................................... Configuration 686 Event Filters ......................................................................................................................................................... 687 Event Filter ......................................................................................................................................................... 688 Action: Parameterize .................................................................................................................................................. 692 Events ......................................................................................................................................................... 693 Favourites ......................................................................................................................................................... 697 Action: Add .................................................................................................................................................. Action to Favourites 698 Favourite ......................................................................................................................................................... 699 Groups ......................................................................................................................................................... 701 Group ......................................................................................................................................................... 702 Action: Create .................................................................................................................................................. Group Status Tracker 707
Contents
13
Models ......................................................................................................................................................... 708 Model ......................................................................................................................................................... 709 Queries ......................................................................................................................................................... 714 Action: Execute .................................................................................................................................................. Native Query 716 Query ......................................................................................................................................................... 716 Action: Execute .................................................................................................................................................. Query 718 Reports ......................................................................................................................................................... 719 Report ......................................................................................................................................................... 721 Action: Preview .................................................................................................................................................. Source Data 725 Action: Schedule .................................................................................................................................................. Report 725 Action: Send .................................................................................................................................................. Report by E-mail 725 Root Context ......................................................................................................................................................... 726 Scheduled ......................................................................................................................................................... Jobs 742 Scheduled ......................................................................................................................................................... Job 744 Scripts ......................................................................................................................................................... 747 Script ......................................................................................................................................................... 748 Trackers......................................................................................................................................................... 750 Action: Build .................................................................................................................................................. Tracker 752 Tracker ......................................................................................................................................................... 753 Users ......................................................................................................................................................... 756 Action: New .................................................................................................................................................. User Account 759 Action: View .................................................................................................................................................. User Summary 759 User ......................................................................................................................................................... 759 Utilities ......................................................................................................................................................... 763 Widgets ......................................................................................................................................................... 770 Widget ......................................................................................................................................................... 774
776
776 777 777 778 778 779 780
Main Menu ......................................................................................................................................................... 780 Status Bar ......................................................................................................................................................... 781 Customizing ......................................................................................................................................................... Dockable Windows 781 Simple Mode ......................................................................................................................................................... 784
784
Context ......................................................................................................................................................... Menu 786 Drag and......................................................................................................................................................... Drop Operations 787 Copy and ......................................................................................................................................................... Paste Operations 788 Node Reordering ......................................................................................................................................................... 788 Node Searching ......................................................................................................................................................... and Filtering 789 Custom ......................................................................................................................................................... Nodes 789 Workspace .................................................................................................................................................. Configuration Node 789 Server Node .................................................................................................................................................. 789 Servers Node .................................................................................................................................................. 791 Local Server ......................................................................................................................................................... Auto-connection 791
14
Current Events ......................................................................................................................................................... 793 Event History ......................................................................................................................................................... 793 Context ......................................................................................................................................................... Menu 794 Acknowledging ......................................................................................................................................................... Events 794 Exporting ......................................................................................................................................................... Events 795
795 801
Editing Data ......................................................................................................................................................... 803 Context ......................................................................................................................................................... Menu 808 Sorting and ......................................................................................................................................................... Filtering 809 Row Grouping ......................................................................................................................................................... 810 Data Export/Import ......................................................................................................................................................... 810 Report Creation ......................................................................................................................................................... 812 Editing Bindings ......................................................................................................................................................... 813
12 Report ................................................................................................................................... Viewer 13 Entity ................................................................................................................................... Selector 14 Expression ................................................................................................................................... Builder 15 Text ................................................................................................................................... Editor 16 Code ................................................................................................................................... Editor 17 Favourites ................................................................................................................................... 18 Trackers ................................................................................................................................... 19 Device ................................................................................................................................... Browser 20 Report ................................................................................................................................... Editor 21 GUI ................................................................................................................................... Builder
814 815 817 819 820 824 824 825 826 827
Main Menu ......................................................................................................................................................... 828 Toolbar ......................................................................................................................................................... 829 Work Form ......................................................................................................................................................... 830 Resources ......................................................................................................................................................... Window 833 Entity Selector ......................................................................................................................................................... 834 Component ......................................................................................................................................................... Palette 834 Component ......................................................................................................................................................... Properties 835 Editing Widget ......................................................................................................................................................... Layout 836 Editing Grid .................................................................................................................................................. Layout 836 Editing Absolute .................................................................................................................................................. Layout 842 Managing ......................................................................................................................................................... Bindings 842 Drag and......................................................................................................................................................... Drop Operations 844
848
850 850 851 852
Contents 5 Agent ................................................................................................................................... Contexts 6 Communications ................................................................................................................................... Between Agent and AggreGate Server
15 852 853
854
854
Table Format ......................................................................................................................................................... 855 Editors/Renderers ......................................................................................................................................................... 857 Data Table ......................................................................................................................................................... Bindings 860 Data Tables ......................................................................................................................................................... Smart Copy 861 Building ......................................................................................................................................................... a Data Table From a Parameters List 862 Naming Expression ......................................................................................................................................................... Resolution Environment 863
2 Contexts ...................................................................................................................................
863
Context ......................................................................................................................................................... Masks 865 Context Copy ......................................................................................................................................................... Operations 866 Visible and ......................................................................................................................................................... Real Context Trees 868
3 Variables ...................................................................................................................................
869
Common ......................................................................................................................................................... Variables 871 info (Context .................................................................................................................................................. Information) 871 children (Context .................................................................................................................................................. Children) 872 variables.................................................................................................................................................. (Context Variables) 872 functions.................................................................................................................................................. (Context Functions) 873 events (Context .................................................................................................................................................. Events) 873 actions (Context .................................................................................................................................................. Actions) 874 contextStatus .................................................................................................................................................. (Context Status) 874 activeAlerts .................................................................................................................................................. (Active Alerts) 875 groupMembership .................................................................................................................................................. (Group Membership) 875 validity (Validity) .................................................................................................................................................. 876 Processing ......................................................................................................................................................... Historical Values 876 Variables......................................................................................................................................................... Performance 878
4 Functions ...................................................................................................................................
878
Common ......................................................................................................................................................... Functions 879 makeCopy .................................................................................................................................................. (Make Copy) 879 delete (Delete) .................................................................................................................................................. 880 Functions ......................................................................................................................................................... Performance 880
5 Events ...................................................................................................................................
880
Event Parameters ......................................................................................................................................................... 881 Event Levels ......................................................................................................................................................... 882 Event Listeners ......................................................................................................................................................... 882 Event History ......................................................................................................................................................... 882 Event Acknowledgement ......................................................................................................................................................... 882 Event Enrichment ......................................................................................................................................................... 883 Event Management ......................................................................................................................................................... 884 Event Filtering .................................................................................................................................................. 884 Event Aggregation .................................................................................................................................................. 884 Event Masking .................................................................................................................................................. 884 Event Correlation .................................................................................................................................................. 885 Root Cause .................................................................................................................................................. Analysis 885 Event Lifecycle ......................................................................................................................................................... 885 Common ......................................................................................................................................................... Events 885 info (Information) .................................................................................................................................................. 885 childAdded .................................................................................................................................................. (Child Added) 886
16
AggreGate Documentation
childRemoved .................................................................................................................................................. (Child Removed) 886 variableAdded .................................................................................................................................................. (Variable Added) 887 variableRemoved .................................................................................................................................................. (Variable Removed) 887 functionAdded .................................................................................................................................................. (Function Added) 887 functionRemoved .................................................................................................................................................. (Function Removed) 888 eventAdded .................................................................................................................................................. (Event Added) 888 eventRemoved .................................................................................................................................................. (Event Removed) 888 actionAdded .................................................................................................................................................. (Action Added) 889 actionRemoved .................................................................................................................................................. (Action Removed) 889 actionStateChanged .................................................................................................................................................. (Action State Changed) 889 infoChanged .................................................................................................................................................. (Info Changed) 890 contextStatusChanged .................................................................................................................................................. (Status Changed) 890 updated (Variable .................................................................................................................................................. Updated) 890 change (Variable .................................................................................................................................................. Changed) 891 Events Performance ......................................................................................................................................................... 891
6 Actions ...................................................................................................................................
892
Action Execution ......................................................................................................................................................... Modes 893 Interactive .................................................................................................................................................. Actions 893 Headless .................................................................................................................................................. Actions 893 Action Grouping ......................................................................................................................................................... 894 Drag and......................................................................................................................................................... Drop Actions 895 Variable-Related ......................................................................................................................................................... Actions 895 Event-Related ......................................................................................................................................................... Actions 895 Execution ......................................................................................................................................................... Parameters 896 UI Procedures ......................................................................................................................................................... 896 Edit Data .................................................................................................................................................. 896 Edit Properties .................................................................................................................................................. 897 Edit Text .................................................................................................................................................. 898 Show Event .................................................................................................................................................. Log 898 Show Message .................................................................................................................................................. 899 Show Error .................................................................................................................................................. 899 Show Report .................................................................................................................................................. 900 Show System .................................................................................................................................................. Tree 900 Confirm .................................................................................................................................................. 901 Browse .................................................................................................................................................. 902 Select Entities .................................................................................................................................................. 902 Start Interactive .................................................................................................................................................. Tutorial 902 Common ......................................................................................................................................................... Actions 902 Call Function .................................................................................................................................................. 903 Configure .................................................................................................................................................. 904 Create .................................................................................................................................................. 905 Create From .................................................................................................................................................. Template 905 Delete .................................................................................................................................................. 905 Edit Context .................................................................................................................................................. Permissions 906 Export .................................................................................................................................................. 907 Import .................................................................................................................................................. 908 Make Copy .................................................................................................................................................. 908 Monitor Related .................................................................................................................................................. Events 909 Search/Filter .................................................................................................................................................. 909 Replicate.................................................................................................................................................. 909 Replicate.................................................................................................................................................. To Children 910 View Status .................................................................................................................................................. 910
911
Contents
17
Expression ......................................................................................................................................................... Syntax 912 Literals .................................................................................................................................................. 912 Operators .................................................................................................................................................. 913 Functions .................................................................................................................................................. 914 References .................................................................................................................................................. 921 Comments .................................................................................................................................................. 922 Expression ......................................................................................................................................................... Evaluation Environment 922 Expression ......................................................................................................................................................... Examples 922 Expression ......................................................................................................................................................... Debugging 923 Expressions ......................................................................................................................................................... Security 924 Expressions ......................................................................................................................................................... Performance 924
8 References ...................................................................................................................................
925
931
Permission ......................................................................................................................................................... Levels 932 Default Context ......................................................................................................................................................... Permission Level 933 Permissions ......................................................................................................................................................... Table 933 Default Permissions ......................................................................................................................................................... Table 934 Permission ......................................................................................................................................................... Checking 935
10 Statistics ...................................................................................................................................
936
Statistics......................................................................................................................................................... Channel Properties 938 Working With .................................................................................................................................................. Keys 942 Channel Types .................................................................................................................................................. 942 Data Processing ......................................................................................................................................................... Sequence 943 Charting ......................................................................................................................................................... Statistical Data 944 Statistics......................................................................................................................................................... Configuration Examples 944 RRD Technology ......................................................................................................................................................... 945 Rates, normalization .................................................................................................................................................. and consolidation 945 Server-side ......................................................................................................................................................... vs Device-side Aggregation 947
Server Bindings ......................................................................................................................................................... 952 Binding Target .................................................................................................................................................. 952 Binding Expression .................................................................................................................................................. 953 Binding Activator .................................................................................................................................................. 954 Binding Condition .................................................................................................................................................. 954
14 Window ................................................................................................................................... Location 15 Parameterization ................................................................................................................................... Engine 16 Enabling ................................................................................................................................... Serial Communications
960
960
AggreGate ......................................................................................................................................................... Server API 961 Error Reporting ......................................................................................................................................................... 963 Driver Development ......................................................................................................................................................... Kit (DDK) 963 Implementing .................................................................................................................................................. a Driver 964 Working .................................................................................................................................................. with Device Assets 967 Synchronization .................................................................................................................................................. Sequence 967
18
AggreGate Documentation
Handling.................................................................................................................................................. Asynchronous Variable Updates 968 Managing .................................................................................................................................................. Incoming Device Connections 968 Plugin SDK ......................................................................................................................................................... 969 Plugin Descriptor .................................................................................................................................................. 971 Agent SDK ......................................................................................................................................................... 972 Implementing .................................................................................................................................................. a Java Agent 972
974 976
Accessing ......................................................................................................................................................... Web Service 976 Web Service ......................................................................................................................................................... Functions 977 Web Service ......................................................................................................................................................... Examples 979
980
Basic Concepts ......................................................................................................................................................... 980 Essential......................................................................................................................................................... Classes and Interfaces 981 Finding and ......................................................................................................................................................... Accessing Arbitrary Data 982 Logging ......................................................................................................................................................... 983 Working ......................................................................................................................................................... with Data Tables 983 Creation .................................................................................................................................................. 984 Manipulation .................................................................................................................................................. 985 Working ......................................................................................................................................................... with Contexts 986 Manipulating .................................................................................................................................................. Variables 987 Calling Functions .................................................................................................................................................. 989 Listening.................................................................................................................................................. and Processing Events 990 Declaring......................................................................................................................................................... Variables, Functions, Events and Actions 992 Defining and .................................................................................................................................................. Implementing Variables 992 Defining and .................................................................................................................................................. Implementing Functions 994 Defining and .................................................................................................................................................. Implementing Events 995 Defining and .................................................................................................................................................. Implementing Actions 996 Dealing with ......................................................................................................................................................... Access Permissions 997
998
998 999 1000 1002 1003 1009
Transparent ......................................................................................................................................................... Data Routing (Link Service) 1010 Dynamic ......................................................................................................................................................... DNS 1010 HTTP Proxy ......................................................................................................................................................... 1011
7 External ................................................................................................................................... Device Servers 8 Tools ................................................................................................................................... 9 Troubleshooting ................................................................................................................................... Device Server Connections 10 Setting ................................................................................................................................... Definition Files 11 Contexts ...................................................................................................................................
Device Server ......................................................................................................................................................... 1018 Device ......................................................................................................................................................... Servers 1024 External......................................................................................................................................................... Device Server 1027 External......................................................................................................................................................... Device Servers 1030
Contents
19
1033
1033 1033
AggreGate ......................................................................................................................................................... Network Manager Installation 1034 Configuring ......................................................................................................................................................... 1034 Monitoring ......................................................................................................................................................... 1035 Managing ......................................................................................................................................................... 1036
1036
Network......................................................................................................................................................... Management Concepts 1037 Management .................................................................................................................................................. Subjects 1037 Management .................................................................................................................................................. Tasks 1037 Management .................................................................................................................................................. Participants 1038 Management .................................................................................................................................................. Interactons 1039 AggreGate ......................................................................................................................................................... Network Manager Architecture 1042 Metrics ......................................................................................................................................................... 1043 Availability .................................................................................................................................................. And Operability Metrics 1044 Performance .................................................................................................................................................. Metrics 1045 Data Processing ......................................................................................................................................................... 1045 Protocols ......................................................................................................................................................... And Technologies 1046 Network......................................................................................................................................................... Management Tools 1047
1047
Configuring ......................................................................................................................................................... Drivers and Plugins 1048 SNMP Configuration .................................................................................................................................................. 1048 Discovery .................................................................................................................................................. Configuration 1048 Syslog Configuration .................................................................................................................................................. 1048 NetFlow .................................................................................................................................................. Configuration 1049 Configuring/Administering ......................................................................................................................................................... Devices and Services 1049 Manually .................................................................................................................................................. Adding and Configuring Devices And Services 1050 Network........................................................................................................................................... Host Device Configuration 1051 Local File ........................................................................................................................................... Configuration 1051 Local Folder ........................................................................................................................................... Configuration 1051 SQL Database ........................................................................................................................................... Configuration 1052 JMX Configuration ........................................................................................................................................... 1052 Discovering .................................................................................................................................................. Devices and Services 1052 Administering .................................................................................................................................................. Devices and Services 1052 Administering ......................................................................................................................................................... AggreGate Network Manager Tools 1052 Setup Monitoring ......................................................................................................................................................... Profile Action 1052 Configuring ......................................................................................................................................................... Environment 1053 Configuring .................................................................................................................................................. SNMP Devices 1053 Configuring .................................................................................................................................................. WMI Devices 1054 Receiving .................................................................................................................................................. Windows Log Events 1054 TCP/IP .................................................................................................................................................. limitations of desktop versions of Windows 1054
1055
Discovery ......................................................................................................................................................... Process 1055 Search .................................................................................................................................................. Stage of Discovery 1056 Service Selection ........................................................................................................................................... and Setup 1056 Host Addresses ........................................................................................................................................... Specification 1058 Discovery ........................................................................................................................................... Tuning 1059 Scanning ........................................................................................................................................... 1060 Result Processing .................................................................................................................................................. 1060
20
AggreGate Documentation
Discovery ........................................................................................................................................... Results Review 1060 Applying........................................................................................................................................... Discovery Results 1061 Discovery ........................................................................................................................................... Status Report 1061 Using Discovery ......................................................................................................................................................... 1061 Interactive .................................................................................................................................................. Multiple-Device Discovery 1062 Interactive .................................................................................................................................................. Single-Device Discovery 1062 Headless .................................................................................................................................................. Multiple- and Single-Device Discovery 1062 Rediscovering .................................................................................................................................................. Device Services 1063 Automatic .................................................................................................................................................. Discovery 1063 Default ......................................................................................................................................................... Discovery Settings 1063
1063
Network......................................................................................................................................................... Topology Discovery 1063 Editing ......................................................................................................................................................... Network Topology 1064 Browsing ......................................................................................................................................................... Network Topology 1065
7 Network ................................................................................................................................... Mapping 8 Event ................................................................................................................................... Masking and Device Dependencies 9 SNMP ................................................................................................................................... Monitoring and Management
SNMP Basics ......................................................................................................................................................... 1068 SNMP Versions .................................................................................................................................................. 1069 Structure .................................................................................................................................................. of Management Information 1069 SNMP Operations .................................................................................................................................................. 1070 SNMP Security .................................................................................................................................................. 1070 Using SNMP ......................................................................................................................................................... in AggreGate Network Manager 1070 Configuring .................................................................................................................................................. SNMP 1071 Configuring ........................................................................................................................................... SNMP Agents 1071 SNMP ...................................................................................................................................... Setup on Windows Systems 1072 Enabling ...................................................................................................................................... SNMP Agent on Windows Systems 1072 Configuring ...................................................................................................................................... SNMP Agent on Windows Systems 1074 SNMP ...................................................................................................................................... Setup on Linux Systems 1075 Enabling ...................................................................................................................................... SNMP Agent on Linux Systems 1075 Configuring ...................................................................................................................................... SNMP Agent on Linux Systems 1076 SNMP ...................................................................................................................................... Setup on Solaris Systems 1076 Enabling ...................................................................................................................................... SNMP Agent on Solaris Systems 1076 Configuring ...................................................................................................................................... SNMP Agent on Solaris Systems 1077 SNMP ...................................................................................................................................... Setup on Cisco Devices 1077 SNMP ...................................................................................................................................... Setup on Microsoft SQL Server 1078 SNMP ...................................................................................................................................... Setup on Lotus Domino Server 1078 SNMP ...................................................................................................................................... Setup on Oracle Servers 1078 Configuring ........................................................................................................................................... SNMP in AggreGate Network Manager 1079 Global SNMP ...................................................................................................................................... Configuration 1079 Managing ...................................................................................................................................... MIB Files 1080 Configuring ...................................................................................................................................... SNMP Devices 1081 SNMP Monitoring .................................................................................................................................................. 1084 SNMP Polling ........................................................................................................................................... 1084 Receiving ........................................................................................................................................... SNMP Traps and Informs 1085 SNMP ...................................................................................................................................... Trap Sources Automatic Discovery 1086 Using SNMP ........................................................................................................................................... Data 1086 Managing .................................................................................................................................................. Devices Using SNMP 1086 Sending .................................................................................................................................................. SNMP Traps and Informs 1087
1088
WMI Use ......................................................................................................................................................... Cases 1089 Controlling .................................................................................................................................................. Windows Services 1090
Contents
21
Managing .................................................................................................................................................. Printers 1090 Windows .................................................................................................................................................. Event Log Monitoring via WMI 1091
1091 1092
CPU Performance ......................................................................................................................................................... Monitoring 1092 Storage ......................................................................................................................................................... Monitoring 1093 Process......................................................................................................................................................... Monitoring 1094 Process .................................................................................................................................................. Instance Count Chart 1095 Generic ......................................................................................................................................................... Service Performance Monitoring 1096
1096
Network......................................................................................................................................................... Interface Traffic Chart 1097 Network......................................................................................................................................................... Interface Bandwidth Utilization 1098 Network......................................................................................................................................................... Interface Errors Chart 1098 Network......................................................................................................................................................... Interface Discards Chart 1098 Network......................................................................................................................................................... Interface Utilization Alert 1098 Network......................................................................................................................................................... Interface Down Alert 1098 Network......................................................................................................................................................... Interface Administrative Shutdown Alert 1098 Network......................................................................................................................................................... Interface State Change Alert 1098 Interface ......................................................................................................................................................... Traffic Summary Report 1099 Interface ......................................................................................................................................................... Traffic Top 10 And 50 Reports 1099 Interface ......................................................................................................................................................... Bandwidth Utilization Over 50% And 90% Reports 1099 Interface ......................................................................................................................................................... Bandwidth Utilization Top 10 And 50 Reports 1099
1100
NetFlow......................................................................................................................................................... Basics 1100 Supported ......................................................................................................................................................... NetFlow Versions 1101 System ......................................................................................................................................................... Requirements 1101 Configuring ......................................................................................................................................................... Flow Exporters 1101 Configuring ......................................................................................................................................................... Flow Processing 1102 Configuring .................................................................................................................................................. NetFlow Plugin 1102 Configuring .................................................................................................................................................. DNS and NetBIOS Resolution 1102 Configuring .................................................................................................................................................. Device Accounts of NetFlow Sensors 1102 Viewing ......................................................................................................................................................... NetFlow Processing Statistics 1102 Flow Data ......................................................................................................................................................... Aggregation 1102 Visualizing ......................................................................................................................................................... Traffic Flows 1102 Optimizing ......................................................................................................................................................... NetFlow Processing Performance 1103
1103
MySQL ......................................................................................................................................................... Monitoring 1103 Oracle Monitoring ......................................................................................................................................................... 1104 Microsoft ......................................................................................................................................................... SQL Server Monitoring 1104 PostgreSQL ......................................................................................................................................................... Monitoring 1104
1104
Local File ......................................................................................................................................................... Monitoring 1104 Local Folder ......................................................................................................................................................... Monitoring 1104 Log File......................................................................................................................................................... Monitoring 1105
1105
Syslog ......................................................................................................................................................... 1105 Syslog Events .................................................................................................................................................. Monitoring and Consolidation 1105 Syslog Alerts ........................................................................................................................................... 1106 Syslog Message ........................................................................................................................................... Source Automatic Discovery 1107 Syslog Messages .................................................................................................................................................. Sending 1107 SNMP Notifications ......................................................................................................................................................... 1107 SNMP Notification .................................................................................................................................................. Alerts 1107
22
AggreGate Documentation
WMI Events ......................................................................................................................................................... 1108 Windows ......................................................................................................................................................... Log Events 1108
1108
Web Server ......................................................................................................................................................... Monitoring 1109 Web Page .................................................................................................................................................. Monitoring 1109 Apache.................................................................................................................................................. Web Server Monitoring 1109 Apache ........................................................................................................................................... Dashboard 1110 Apache ........................................................................................................................................... Alerts 1110 Microsoft .................................................................................................................................................. IIS Monitoring 1111 Application ......................................................................................................................................................... Server Monitoring 1111 JBoss Monitoring .................................................................................................................................................. 1111 Tomcat .................................................................................................................................................. Monitoring 1111 Oracle Application .................................................................................................................................................. Server Monitoring 1111 Lotus Domino .................................................................................................................................................. and Lotus Notes Monitoring 1111 Microsoft .................................................................................................................................................. SharePoint Monitoring 1111 WebSphere ......................................................................................................................................................... MQ Monitoring 1111 FTP Server ......................................................................................................................................................... Monitoring 1112 E-mail Server ......................................................................................................................................................... Monitoring 1112 POP3 Monitoring .................................................................................................................................................. 1112 IMAP Monitoring .................................................................................................................................................. 1112 SMTP Monitoring .................................................................................................................................................. 1112 E-mail Round-Trip .................................................................................................................................................. Monitoring 1112 Postfix Monitoring .................................................................................................................................................. 1113 Active Directory ......................................................................................................................................................... (LDAP) Monitoring 1113 SSH Server ......................................................................................................................................................... Monitoring 1113 Radius ......................................................................................................................................................... Server Monitoring 1113 DNS Server ......................................................................................................................................................... Monitoring 1113 DHCP Server ......................................................................................................................................................... Monitoring 1113 Generic ......................................................................................................................................................... TCP Service Monitoring 1113 Generic ......................................................................................................................................................... UDP Service Monitoring 1113
1114 1114
VMware ......................................................................................................................................................... Alerts 1114 Virtual Machine .................................................................................................................................................. State Alert 1115 Virtual Machine .................................................................................................................................................. CPU Load Alert 1115 Virtual Machine .................................................................................................................................................. Absolute Memory Utilization Alert 1115 Virtual Machine .................................................................................................................................................. Relative Memory Utilization Alert 1115 Virtual Machine .................................................................................................................................................. HDD Read Rate Alert 1115 Virtual Machine .................................................................................................................................................. HDD Write Rate Alert 1116 VMware ......................................................................................................................................................... Charts 1116 Virtual Machine .................................................................................................................................................. CPU Utilization Chart 1117 Virtual Machine .................................................................................................................................................. Memory Usage Charts 1117 Virtual Machine .................................................................................................................................................. Disk Performance Charts 1117 Virtual Machine .................................................................................................................................................. Network Performance Charts 1117 VMware ......................................................................................................................................................... Reports 1117 VMware ......................................................................................................................................................... Information Widget 1118
1119
State ......................................................................................................................................................... Alert 1120 ......................................................................................................................................................... Marker Alert 1120 Cover ......................................................................................................................................................... Status Alert 1120 ......................................................................................................................................................... Information Widget 1120
Contents 22 Wireless ................................................................................................................................... Device Monitoring 23 Java ................................................................................................................................... Monitoring and Management 24 .NET ................................................................................................................................... Monitoring 25 Configuration ................................................................................................................................... and Change Management
Configuration ......................................................................................................................................................... Management Setup 1125 Configuration ......................................................................................................................................................... Backup and Restoration 1125 Managing .................................................................................................................................................. Historical Configurations 1125 Baseline .................................................................................................................................................. Configurations 1125 Viewing.................................................................................................................................................. Configuration Differences 1125 Scheduling ......................................................................................................................................................... Configuration Backups 1125 Automatic ......................................................................................................................................................... Backups Upon Changes 1125 Compliance ......................................................................................................................................................... Management 1125 Configuration ......................................................................................................................................................... and Command Scripts 1126
1126
IP SLA Monitoring ......................................................................................................................................................... Concepts 1126 IP SLA Test ......................................................................................................................................................... Types 1126 Understanding ......................................................................................................................................................... IP SLA Technology 1127 Latency.................................................................................................................................................. 1127 Jitter .................................................................................................................................................. 1128 Packet Loss .................................................................................................................................................. 1128 Mean Opinion .................................................................................................................................................. Score (MOS) 1128 Test Topology .................................................................................................................................................. 1128 Configuring ......................................................................................................................................................... IP SLA Tests 1129 Preparing .................................................................................................................................................. for IP SLA Monitoring 1129 Importing .................................................................................................................................................. Existing Tests 1129 Updating .................................................................................................................................................. Tests 1129 Creating .................................................................................................................................................. New Tests 1130 Deleting .................................................................................................................................................. Tests 1130 Synchronizing .................................................................................................................................................. Tests 1130 IP SLA Test .................................................................................................................................................. Properties 1130 IP SLA Test .................................................................................................................................................. Schedule 1138 IP SLA Test .................................................................................................................................................. Reactions 1139 IP SLA Test .................................................................................................................................................. Statistics 1140 IP SLA Test .................................................................................................................................................. History 1141 IP SLA Alert .................................................................................................................................................. Thresholds 1142 Understanding .................................................................................................................................................. Polling Frequency 1142 Browsing ......................................................................................................................................................... IP SLA Status and Statistics 1142 IP SLA Test .................................................................................................................................................. Groups 1143 IP SLA Dashboards .................................................................................................................................................. 1143 IP SLA Alerts .................................................................................................................................................. 1143
1143 1143
SNMP Management ......................................................................................................................................................... 1144 Control ......................................................................................................................................................... via WMI 1144 Remote ......................................................................................................................................................... Script Execution 1144 Network......................................................................................................................................................... Management Actions 1144 Execute .................................................................................................................................................. Remote Script 1144 Send SNMP .................................................................................................................................................. Trap 1144 Send Syslog .................................................................................................................................................. Message 1144 Wake-on-LAN .................................................................................................................................................. 1145
29 Alerting ...................................................................................................................................
1145
24
AggreGate Documentation 30 Reporting ................................................................................................................................... 31 Dashboards ................................................................................................................................... 32 Charts ................................................................................................................................... 33 Trackers ................................................................................................................................... 34 Widgets ................................................................................................................................... 35 Event ................................................................................................................................... Filters 36 Models ................................................................................................................................... 37 Helpdesk ................................................................................................................................... / Trouble Ticketing System Integration 38 Asset ................................................................................................................................... Management 39 Network ................................................................................................................................... Management Context Reference 1149 1151 1151 1154 1154 1154 1155 1156 1156 1157
Compliance ......................................................................................................................................................... Policies 1158 Compliance ......................................................................................................................................................... Policy 1158 Discovery ......................................................................................................................................................... 1159 IP SLA Tests ......................................................................................................................................................... 1160 IP SLA Test ......................................................................................................................................................... 1160 Network......................................................................................................................................................... Management 1160
Part X SCADA/HMI
1 Overview ................................................................................................................................... 2 Architecture ................................................................................................................................... 3 Getting ................................................................................................................................... Started 4 Connecting ................................................................................................................................... to PLCs 5 Creating ................................................................................................................................... HMIs 6 Trending ................................................................................................................................... and Charting 7 SCADA ................................................................................................................................... Security 8 OPC ................................................................................................................................... Server Discovery 9 Maintenance ................................................................................................................................... 10 Demo ................................................................................................................................... HMIs
1162
1163 1163 1164 1165 1165 1167 1168 1168 1168 1169
1171
1171 1171 1173 1174
5 Managing ................................................................................................................................... Cards/Badges 6 Managing ................................................................................................................................... Shifts 7 Managing ................................................................................................................................... Raw Attendance Events 8 Attendance ................................................................................................................................... Data Processing
25 1186 1189
Attendance ......................................................................................................................................................... 1189 Cardholders ......................................................................................................................................................... 1191 Cardholder ......................................................................................................................................................... 1193 Departments ......................................................................................................................................................... 1197 Department ......................................................................................................................................................... 1198 Divisions ......................................................................................................................................................... 1200 Division......................................................................................................................................................... 1201 Organizations ......................................................................................................................................................... 1203 Organization ......................................................................................................................................................... 1204 Shifts ......................................................................................................................................................... 1206 Shift ......................................................................................................................................................... 1207
1210
1211 1213 1215 1217 1224 1230 1233 1239 1244 1250 1254 1258 1263 1267 1269 1270 1272 1276 1279 1281 1283 1289
1297
1297 1298 1299
26
AggreGate Documentation 4 AggreGate ................................................................................................................................... Server Connection Problems 5 AggreGate ................................................................................................................................... Client Runtime Errors 6 Performance ................................................................................................................................... Optimization 1301 1301 1301
1303
1303 1306 1312 1318 1321 1322 1324 1325 1325 1327 1330
Index
Introduction
27
1 Introduction
Last update: 08/29/2013
Tibbo AggreGate is a complete device management solution that employs modern network technologies to control, configure and monitor different electronic devices. It also helps you to aggregate device data into a common database, where you can "slice and dice" it according to your needs, as well as let other enterprise applications transparently access it. The AggreGate saves costs and simplifies setup when trying to create a large network of devices and computers which are spread over a wide-area network (WAN) or the Internet. It introduces new concepts in M2M (Machine-2-Machine) technology, also known as Industrial Control or SCADA. In a complex WAN environment your devices may be distributed over multiple network segments, located behind firewalls, routers, bridges, etc. The core part of AggreGate, called AggreGate Server, solves the problem of communication between devices installed within various protected local networks and networks with dynamic addressing by acting as a middle-man. AggreGate Server provides a rich set of features for managing device networks and routing data. The core components are Java-based and may be deployed on most present-day hardware and operating systems. AggreGate provides two user interfaces: a graphical, cross-platform client application and a web interface. Both can be used for system administration and normal operation activities. Connecting your devices to the system is easy and cost-effective. Any existing device may work with AggreGate regardless of its communication protocol even if it's not network-enabled. You can bridge your existing devices into the system using programmable hardware modules (Agents), or by protocol conversion via software device drivers. When designing a new device from scratch, you could include Agent right into your original design. This would allow your device to act autonomously even when the central server is not available. Being a hardware manufacturer, Tibbo has vast experience of creating custom solutions for different types of devices - we can help. AggreGate provides industry-specific solutions for many vertical markets: Network Management, SCADA/HMI, Time and Attendance, Access Control, Building Automation, Fleet Management, Vending Machines, Remote Monitoring, and more.
28
AggreGate Documentation
Above all, we strive to provide easy-to-read, easy-to-follow documentation, which is accurate yet friendly. We recognize our users are real people who want to get something done with the system, and we hope this manual will help. Good luck.
AggreGate. The distribution bundle includes both AggreGate Server and AggreGate Client.
Download, install
and run
779
778
AggreGate Client.
Create a server connection 779 for your AggreGate Server (AggreGate Client will do that automatically if it detects a AggreGate Server running on the same machine). Username of default administrator
109 's
113
to AggreGate Server.
When these steps are complete, AggreGate is running in normal operations mode. At that point you may start controlling, configuring and monitoring system operators, etc.
37
108
for
If this procedure did not work as planned for some reason, please read the rest of the manual before contacting Support. Tibbo AggreGate is a complex product and has a learning curve.
Introduction
29
AggreGate Server.
108
icon and select View Activation Key. The Activation Key dialog will pop up:
3. Click Copy To Clipboard. 4. Paste the Activation Key into an e-mail message and send it to Tibbo.
Activation Procedure
Activating your AggreGate License is very simple. Once you've purchased a commercial AggreGate license and sent your Activation Key to Tibbo, we send you your Named License file by e-mail. This file is called server.license. To activate your license, just put this file into your AggreGate Server installation directory (overwrite any existing Trial License file) and restart AggreGate Server.
A file manager used to copy the license file under Windows must be started in elevated mode (i.e. with Administrator permissions). Failure to do so will cause the license file to be written to a wrong folder due to a "File and Registry Virtualization" feature of latest Windows versions. In this case AggreGate Server will not be able to access the new license and will use the old one, likely failing to start with License Expired and similar errors. To open Windows Explorer in elevated mode, find the Explorer in the Start menu, right-
30
AggreGate Documentation
2 System Basics
AggreGate is made up from a central server, one or more devices, and one or more web-based or GUI clients. The server and clients are connected to an IP network. Devices may be connected to AggreGate Server via IP network, serial ports, or any other method. The central server is actually a Java application running on Windows, Linux/Unix, Mac OS, or any other Java-enabled operating system. It is the only component of the system that attempts to stay online and connected to the network permanently. Network-enabled devices may use a wired or wireless connection to the network, such as WiFi, GPRS, or any other suitable wireless communications media. Some devices may be permanently connected to the network, while some may only connect to the network periodically. For example, devices may be configured to only turn themselves on at predefined time intervals or connect to the network when they detect an event that needs to be reported to the server. Unstable connection of other devices to the network may be caused by inherent unreliability of communications media being used. For example, WiFi and GPRS networks do not guarantee a constant connection to the network. The client (AggreGate Client) is a Java application running on a computer. The clients do not need to be permanently connected to the network for the system to function properly. The network may be a local-area network, wide-area network, or the Internet. Different segments of the network may use different communications media, such as Ethernet, WiFi, GPRS, or any other suitable media that is available now or will be available in the future.
Hardware Controllers. Almost all present-day electronic devices may be connected to the system using programmable controllers (Agents 848 ). Software Device Drivers. Devices that are already network-enabled may be connected using a custom device driver 129 . Modular, scalable system architecture. New data processing/aggregation modules may be installed into server core as plug-ins 950 . The special Device Normalization technology ensures generic flexible approach for controlling, configuring and monitoring different types of hardware devices. Automatic discovery 1012 and provisioning of devices. Remote configuration Device data caching server.
677
of devices. and synchronization allows to configure devices that are temporarily disconnected from the
182
115
931 .
is available, along with a legacy web client of device status and events capabilities.
882 880 .
Real-time monitoring
791 206
supporting different types of notifications (sound, popup messages, e-mail, SMS etc.).
232 .
Alert-to-action bindings 227 allow to execute corrective actions when alert is raised. Corrective actions may be controlled by operator or execute in non-interactive mode with pre-defined user input. Advanced reporting
241
812
System Basics
Charting, support for many chart types, including dynamically updated charts. Integrated SQL-based query language
257 271
31
Trackers for monitoring mission-critical data. Every tracker has an unlimited number of user-defined states, indicated by color highlighting. Advanced job scheduler
248 266
Grouping and group operations are available for different system objects (user accounts, alerts, event filters, queries etc.) and hardware devices. Advanced replication 909 of configuration between any similar system objects and devices. Configuration may be copied even between devices that use different firmware versions. Common data 260 tables store any custom data in a user defined format. System-wide or users personal common tables may contain master-copies of device settings that are used to configure multiple devices. Favorites Auto-run
626 625
allow access to commonly used actions. facility to start actions automatically upon operator login.
847
Interactive guides
1000
greatly that help new users to become familiar with basic system operations.
Link Service transparently routes data through the server between devices and computers located in private networks and hidden from each other by firewalls. Dynamic DNS Service
999
HTTP Proxy Service 998 provides global access to the web pages that are stored on the web servers embedded into devices located in private networks.
for flexible alert triggering rules, event filtering, and other data processing. Interactive
Support for server-side pure-Java scripts for fine-grained real-time server control and custom operations. Multiple time zones 108 support. Automatic time conversion in the case when server, users and devices are located in different time zones. Export/import any system or device data to numerous formats, including XML, HTML, CSV, XLS, PDF, RTF etc. Embedded Web-service Java and .NET software.
960 974 976
API's are available for easy integration with the customers CRM, ERP and other legacy
39
options, support for internationalization, localization and user-provided graphical and text
Java-based architecture, key system components work under most modern operating systems. Server component supports headless remote installation and administration. Compatible with most present-day database servers. An embedded database fast deployment. Failover clustering
87 80
Distributed architecture
32
AggreGate Documentation
If your device supports one of the standard communication protocols (e.g. SNMP), it may be directly connected to AggreGate using a bundled device driver 129 . No software or hardware protocol conversion is required in this case. Just set up all necessary physical connections and your device is ready to communicate with AggreGate Server.
Note that if for some reason you are unable to embed a device into your existing circuit, you can always use an external BASIC-Programmable Controller (such as the DS1202, the stand-alone version of the EM1202) running the Agent application.
System Basics
33
device's operation. In effect, you will be taking the Agent 848 application and greatly expanding and customizing it. You would be saving the cost of a CPU for your device, and still be able to connect to AggreGate and enjoy all of its benefits.
34
AggreGate Documentation
This mode doesn't use the full power of AggreGate's data processing functions, but can be useful in several situations: When devices are located in different LANs protected by firewalls and thus cannot connect to each other. In this case AggreGate Server acts as a middle-man and routes data between these devices.
When devices don't have static IP addresses. In this case they can be registered in DNS by the AggreGate Server and can be accessed by their host names instead of IP addresses. Sometimes devices located in protected networks have embedded web-servers. These web-servers cannot be accessed directly, but AggreGate Server provides an HTTP proxy service that allows to establish a secure HTTP connection with the server instead of connecting to the device directly. AggreGate Server forwards this connection to the device. See Device Server Management
998
System Basics
35
LONG-TERM BENEFITS:
Reduced operational costs: By using reports and alerts you will know exactly what goes on in your distributed system. Points of waste (of time, money or other resources) will 'pop out'. Optimizing becomes obvious and easier. Reduced number of human errors: Manual alert acknowledgements increase operator accountability. Also, automated business rules and non-interactive actions performed on alerts allow the system to auto-correct some errors. High ROI: With reduced downtimes, your revenue-generating infrastructure will be working harder and more efficiently. Increased customer satisfaction, due to increased overall efficiency : With your system working as a concerted whole, customers enjoy a unified experience. Reduced number of field service visits and support call: Reduced number of field service visits and support calls: You could troubleshoot your devices remotely. Reboot your device, change its internal settings, and perform many other operations that normally require an on-site technician. Improved mean time to repair (MTTR): Not only will you get immediate notice when something goes wrong, you will also know exactly what went wrong. Get error codes, run diagnostics and perform other needed operations so that when your technician gets to the site, he knows exactly what the problem is. Eliminate the guesswork!
- the core component that is responsible for data routing and aggregation, business-rules - a GUI front-end application to control and monitor all other components.
776
AggreGate Agent 848 - a programmable gateway for converting device native protocol into AggreGate protocol and network-enabling the device. Device 113 - this is a general designation for any intelligent device that provide configurable settings and operations and can generate events. These are the machines you control with AggreGate.
36
AggreGate Documentation
Contexts
The heart of the AggreGate data model is the context tree. The context tree is hierarchical structure of data containers called contexts 863 . The purpose of context is providing unified access to a certain system resource or hardware device. Thus, context exposes several objects:
Variables 869 (also called properties or settings ) for browsing or altering the configuration of underlying objects. Functions
878 (also called operations or methods) for performing operations with underlying objects by passing input and getting back output
Events 880 that are asynchronously generated by underlying objects and event routed listeners to that were previously registered within the context by someone wishing to receive event no Actions
892 that combine internal operations of underlying object and interaction with the human system operator within a single dynamic workflow
We might say that context acts as a "proxy" for a certain resource that is a subject for control or monitoring.
Data Tables
Another core concept of AggreGate data model is a standard data item called Data Table
854 .
System Basics
37
structure used for representing: Values of variables Input and output values of functions Data associated with certain event instances Any other pieces of data flowing inside AggreGate Data Tables are very similar to the database tables since they have zero or more rows and several fields of certain format 856 . Here are several important facts about Data Tables: 1. For the sake of unification, scalar values (numbers, strings, booleans, dates) are represented as single-cell Data Tables, i.e. tables having one row and one field
2. Lists of diverse values are usually represented as single-row tables with multiple fields of diffe
formats, while arraysare better represented by single-field tables with multiple rows.
3. If type of Data Table's field is also Data Table, each cell in this field contains a nested Data Table. There could be an unlimited level of table nesting. 4. Data Table format descriptor 855 contains comprehensive information about field types, their meanings, value validation and presentation rules, cell cross-dependencies, etc.
38
AggreGate Documentation
any changes are written back to the cache. The actual hardware device is reconfigured according to the new settings next time it synchronizes with the server. Browsing event history. Events received from devices are stored in the server database. Old events may be viewed even when the device is offline. Event history may be filtered and sorted according to different rules. Managing historical events. Events stored in the event history may be acknowledged and deleted by users that have access to the device which originated the event.
Group Operations
System operators may execute batch actions with several devices, as a group. Such grouped operations have several benefits: Device groups . Device groups facilitate selection of several devices to execute some operation with them. Devices may either be added to permanent groups or be dynamically grouped to execute just a single action. A device may belong to several groups. Reuse of input. If the operation executed requires input parameters, you specify them just once. The same parameters will be used for every device in the group. Aggregation of output . The output of all grouped operations is accumulated and presented to the user in a single "status report".
Alerting Services
Multi-functional alerts help detect and resolve device problems. Primary features of alerts: Different types of notifications. Support for visual, sound, e-mail and other types of notifications for alert owner and other system operators. Event and state triggers. Every alert may be triggered by device events, or by certain operating conditions or device status. Pending alerts. Pending alerts require operator acknowledgement. Support for pending alert instances may be enabled or disabled for any single alert. Alert escalation. Customizable escalation rules, including time-based escalation and escalation activated by a certain number of pending alert instances. Corrective actions. When an alert is raised, AggreGate Server may execute some corrective actions in automatic mode or request the system operator to execute some actions interactively.
System Basics
39
Aggregated status report. Replication results are shown as a single status report containing a list of all errors (if any) in the replication action.
960
for Java,
40
AggreGate Documentation
Substitution of images . This includes changing product logos, splash screens, different icons etc. Further User Interface customization. Custom graphical components, themes, etc. Custom alerts 216 , reports 241 , event filters 206 , widgets 312 and other system objects. A customized AggreGate distribution may include any number of these objects that are created specifically for your needs. For example, if you are creating a system to monitor water tanks, it may include an Overflow Detected alert and Water Volume in Tank (per-hour) report. Custom plugins. Custom AggreGate Server plugins may allow connecting new intelligent hardware devices to the system, introduce new server contexts 863 of add new actions 892 to existing contexts. Custom Web-Services and Application Programming Interfaces (APIs) for interaction with different third-party systems. Such APIs act as a bridge between AggreGate and third-party systems such as billing, video surveillance and other enterprise-grade software. Database conversion scripts. These scripts may be helpful for importing/exporting data from different systems. Personalized startup scripts. Such scripts perform non-standard data processing operations that can't be easily requested from user interface components, such as changing alert settings en-masse. These scripts are usually launched on server startup and perform one-time actions. Contact Tibbo for more information about available customization options.
3 AggreGate Server
This chapter covers AggreGate Server, the core component of Tibbo AggreGate. It is responsible for data routing and aggregation, business-rules processing, etc. AggreGate is a complex system, containing many data processing modules. The interplay between these modules - the way the are used together - is what gives AggreGate its great flexibility and power. By getting to know each of these modules, you will eventually form an understanding of the system as a whole, and will be able to "cook up" solutions to whatever real-time scenario comes your way.
3.1 Requirements
AggreGate Server can potentially run under virtually any Java-enabled OS. It has been tested and verified to correctly run under the following Operating Systems: Windows 2000, XP, Vista, 2003 Server, 2008 Server, and 7 (32-bit and 64-bit versions) Linux (32-bit and 64-bit versions) Mac OS X
Hardware Requirements
AggreGate is a comprehensive device management solution capable of monitoring device networks of all sizes. Most AggreGate Server installations perform well on desktop-class systems. However, when managing larger networks or devices that generate significant amount of data, you need to give additional consideration to the hardware and system configuration used. Several factors can impact system scalability. The first is the number of devices that you will be monitoring with AggreGate. Performance tuning may be required when there are more than 100 devices. The second is the amount of data you collect from each device. The third factor to consider is monitoring time intervals. For example, if you set your synchronization time intervals to collect data every second instead of the default time intervals, AggreGate Server will have to work harder and system requirements will increase. Finally, the number of simultaneous operators accessing the system will directly impacts performance. When planning your AggreGate installation, keep in mind that CPU and memory usage is highly dependent to the types of managed devices and device drivers. In situations where many devices are controlled, it is recommended to use a dedicated, faster server. Server RAM usage depends on: Number of connected devices Number of device settings, operations and event types Number and complexity of data processing tools (alerts, reports and, especially, widgets) Number of concurrent client connections If you have additional questions or are experiencing performance problems, please contact Tibbo to speak with one of
AggreGate Server
our system engineers or visit AggreGate website.
41
Comments Such configuration is compatible with embedded environments (e.g. ARM Linux) Such configuration is compatible with embedded environments (e.g. ARM Linux)
1.5 GHz 1 3 GHz 2*3 GHz 2*3 GHz 4*3 GHz 4*3 GHz 8*3 GHz 2 4 8 16 24
32+
64 GB or more
4000 GB
1.5 GHz 1 3 GHz 2*3 GHz 2*3 GHz 4*3 GHz 4*3 GHz 2 4 8 16 24
42
AggreGate Documentation
99
64-bit operating system and dedicated database server are required, using multiple servers within distributed architecture is highly recommended
99
Comments
32+
64 GB or more
4000 GB
Software Requirements
AggreGate Server requires the following software to work:
AggreGate Server
43
51
3.2.1.1 Installation
Tibbo supplies pre-packaged installation files for the following operating systems: Windows 98, NT, 2000, XP, 2003 Server, Vista, 2008 Server, and 7 Different versions of Linux Mac OS X Installers for the other Java-enabled operating systems (FreeBSD and other unices, Solaris, etc.) are available on demand. To install the product, just run the installer executable file and follow the instructions. On some systems, you need to make the installation package 'executable' before running it.
Installation Modes
Installation can run in GUI, console or silent mode. GUI mode is selected by default. Console mode installation is activated by launching installer with '-i console' command line option, for silent mode user '-i silent'. Console mode is suitable for installation on systems that have no graphical user interface (this is the case with most UNIX servers).
Database Selection
By default, AggreGate uses an embedded database engine 80 that is not intended for production use. The server should be switched 81 to an enterprise class database as soon as possible after the installation. However, some distributions of AggreGate Server include pre-configured MySQL bundle 80 . If you are not planning to use another enterprise database (MS SQL, PostgreSQL, Oracle, or any other), it's recommended to enable MySQL package during installation. This will auto-configure AggreGate Server to use MySQL database right after the installation.
3.2.1.2 Upgrade
Upgrade is a complex procedure. Make sure to backup all data according to the below instructions to minimize system downtime if it fails.
To upgrade AggreGate Server to the new version, please follow this instructions carefully in order to protect server
44
AggreGate Documentation
database from being corrupted: 1. Stop all AggreGate Clients 2. Stop AggreGate Server or service if server is running in the Windows Service Mode 3. Backup the database! Refer to Data Backup and Restoration
104 46
Database backup is an important operation. Failing to backup the database before upgrade may result to data loss!
4. Backup AggreGate Server installation folder. Refer to Data Backup and Restoration
104
Server installation folder backup is an important operation that should not be skipped in the production environment.
5. Upgrade server by running the installer of the new version 6. Upgrade all installations of AggreGate Client. Make sure to backup AggreGate Client installation folders before backup. 7. Upgrade firmware of all Devices 8. Start server or service 9. Check server log
74 113
if necessary
to make sure that server has been started successfully and database was upgraded
10.Start AggreGate Clients If the upgrade fails or the system does not work as expected, roll back to the previous version of AggreGate Server and AggreGate Client by restoring their installation folders and AggreGate Server database from backup. Contact Tibbo technical support for solving the problem.
3.2.1.3 Uninstallation
AggreGate Server is uninstalled by running uninstall executable file from AggreGate Server installation directory. It's recommended to stop the server manually before uninstallation. AggreGate Server uninstaller does not remove files created or modified by the AggreGate Server itself during its operation (configuration files, database, logs, etc.). To completely wipe out all AggreGate Server data, delete its installation once the uninstaller has finished working. This may be necessary to perform a "clean" reinstallation.
Under Unix , it's the AggreGate_server shell script, for example. AggreGate Server installer creates three launchers whose extension depends on the operating system: ag_server for a normal startup
AggreGate Server
ag_server_console for starting server and showing its output in the console window (note, that logging and other destinations is not disabled in this case) ag_server_service for starting server as a service
46 74
45
to files
AggreGate Server may access privileged ports, i.e. port numbers below 1024. For example, it listens for SNMP Traps on UDP port 162. Therefore in most cases on Linux and Mac OS, it should be run with the root user privileges.
On Mac OS X for instance, AggreGate Server can be started from command line with the following command (assuming the application is installed in the /Application/AggreGate/ folder):
sudo
/Applications/AggreGate/ag_server.app/Contents/MacOS/JavaApplicationStub
It's absolutely necessary to add newline character (i.e. press ENTER when finished entering line text) in the end of every line of .vmoptions file. If there is no newline character in the end of line, it will be ignored! For example, is you have a one-line .vmoptions file, the only line must also end with new line character: -classpath/a jdbc-driver.jar<newline_character>
CHANGING LANGUAGE
Default launcher properties file contains -Duser.language=XX option that is used to define language used by AggreGate Server. Default language is selected during AggreGate Server installation process.
If the language was changed after the first launch of AggreGate Server, database 80 will contain data (system resource descriptions, events, etc.) in the language that was active during previous launches.
MODIFYING THE CLASSPATH
The following options may be added to the *.vmoptions files to modify the classpath of the AggreGate Server's Java Virtual Machine:
Replace the classpath of the generated launcher. Append to the classpath of the generated launcher. Prepend to the classpath of the generated launcher.
It's necessary to put exactly one space between -classpath parameter and its value.
46
AggreGate Documentation
NEW TERM: A class path is the directory path specifying where compiled Java files are located on the local
system.
Append to classpath option of Launcher Properties File may be useful when making new Java libraries available to AggreGate Server. For example, Java Database Connectivity (JDBC) driver file path should be appended to the classpath when switching to another database engine 81 .
-Xms
Initial amount of memory used by AggreGate Server. This parameter should be followed by the number of megabytes and m character, no spaces are allowed inside. For example, Xms200m parameter instructs the AggreGate Server to use 200 megabytes of memory at startup. Default value is 100 megabytes.
-Xmx
Maximum amount of memory that can be used by AggreGate Server. This parameter should be followed by the number of megabytes and m character, no spaces are allowed inside. For example, -Xmx1024m parameter allows AggreGate Server to use a maximum of 1 gigabyte. Default value is 800 megabytes.
Too high value of -Xmx parameter may cause AggreGate Server startup to fail because Java Virtual Machine needs this amount of memory to be available in a single contiguous block. In this case, switch to a 64-bit operating system and install 64-bit version of AggreGate Server. -Xss
Stack size of a single server thread, 128 kilobytes by default. Stack size should be decreased if thread creation failures caused Out Of Memory errors appear in AggreGate Server log file. Increase stack size is some device drivers or system components produce Stack Overflow errors.
Microsoft Windows
When the service is installed, it can be controlled through Start > Control Panel > Administration > Services.
AggreGate Server
47
To start or stop the service, the /start and /stop options are available. In addition, a /status argument shows if the service is already running. The exit code of the status command is 0 when the service is running, 3 when it is not running and 1 when the state cannot be determined (for example, when service is not installed on Windows).
Linux/Unix
For Unix service executables, the start, stop, restart and status arguments are available for the control script ( ag_server_service). This script is located in AggreGate Server installation directory, but a symlink to it is also created in services initialization directory ( /etc/init.d or /etc/rc.d/init.d). The stop command waits for the service to shut down. The exit code of the status command is 0 when the service is running and 3 when it is not running.
-a -c
Create database 80 structure. This option instructs AggreGate Server to try (re-)creating its database schema including all tables and indexes. No existing tables or indexes will be affected by this operation.
50
<filename>.
<user>.
files%\AggreGate\Server\AggreGate_server.exe -
p admin 12345
This command will start AggreGate Server and change password of user admin to 12345.
50
Update database 80 structure after upgrading AggreGate Server to newer version. This option forces AggreGate Server to create missing database tables add missing fields into existing tables. Note, that no indexes are ever created by this operation. When migrating to a new database engine 81 , it's always necessary to use -c command line option for creating all tables with indexes.
48
AggreGate Documentation
49
interface.
46
By manually killing all server processes if the server is not responding to any other shutdown attempts.
In some cases, it may take up to several minutes for the AggreGate Server to complete the shutdown sequence and save cached data to the database. Terminating server process during shutdown by using operating system tools can cause data loss.
When shutting down the virtual machine the AggreGate Server is running on, the AggreGate Server shutdown sequence is automatically executed as well.
784
726
726
46
Under Windows, go to Start Menu > Control Panel > Administration > Services, find AggreGate Server service, right-click on it and select Stop. Under Linux, open a console and type service ag_server_service stop.
AggreGate Server
49
Under Windows, the processes to kill are ag_server.exe, ag_server_service.exe, ag_server_console.exe. Kill all instances of these processes using the Task Manager (Ctrl+Shift+Esc under Windows). Under Unix , the processes to kill are ag_server, ag_server_service, ag_server_console and java. There are many Java processes active at any one time. Kill the process with the lowest PID (Process ID). This is important. Killing another process will not resolve the problem. There are specific instances where one should kill another process than the one with the lowest PID, but these are special cases, which depend on specific server configurations. Killing the process with the lowest PID will most likely resolve this situation.
50
processing engine.
Command arguments are separated by the "/ " character. Every line in a startup script may contain just one command.
Executing Net Admin and Startup Script commands that change the state of server context tree may put server into the inconsistent state or corrupt the database. Backup your database before executing
SUPPORTED COMMANDS
E R W Stop server Restart server Restart Web Server embedded into the AggreGate Server
S/ context_mask /variable/value_for_row1_column1/ Set value of a context 863 variable 869 . Sets a value of variable ' value_for_row1_column2/... variable' in every context corresponding 865 to 'context_mask ' to the Data Table 854 created 50 from the subsequent command parameters. C/context_mask/function/value_for_row1_column1/ Calls function 'function ' from every context corresponding value_for_row1_column2/... 'context_mask ' passing data table created 50 from the subsequent command parameters as an input value. F/context_mask/variable/setField/setValue[/ searchField/searchValue]
865
to
Set field 'setField' of first record of value of variable 'variable' in every context corresponding 865 to 'context_mask ' to 'setValue'. If 'searchField' and 'searchValue' parameters are specified, value is changed in the records where value of field ' searchField' equals ' searchValue'.
50
AggreGate Documentation
If an argument value is surrounded with "$" characters, AggreGate Server will take the data for that parameter from the filename specified. The filename should be in the AggreGate Server installation directory. For example, if the parameter value is "$parameterizer.xml$", AggreGate Server will obtain the data for that parameter from " parameterizer.xml".
Commands Scripts
A Command script may contains the same commands that are accepted by the Net Admin 49 , one per line. These commands are described in the Net Admin and Startup Script Command Reference 49 . Commands that are not applicable during the startup of the server (i.e. " stop server", "restart server ") are not executed. Any output provided by the executed commands is discarded. Commands Scripts may be used to repair damaged AggreGate Server installations or pre-create system objects (Event Filters 206 , Alerts 216 etc.) in custom installations. Command scripts may include comments: Lines beginning with # will not be processed. To execute a command script, run AggreGate Server with the with a -e <filename> command line option. (Where filename is the name of the script file).
# Create new event filter called "Keytroller Events" for every user in the system C/users.*.filters/create/keytroller/Keytroller # Show some additional fields in Event Log S/users.*.filters.keytroller/additionalFields/description/Description/Keytroller Events/1/timestamp/Description/Keytroller Events/1/userid/Description/Keytroller Events/1/username/Description/Keytroller Events/1/machine/Description/Keytroller Events/1/data/Description/Keytroller Events/1 # Do not show event names in Event Log F/users.*.filters.keytroller/shownFields/event/0 # Do not show event data in Event Log F/users.*.filters.keytroller/shownFields/data/0 # Do not show event acknowledgements in Event Log F/users.*.filters.keytroller/shownFields/ack/0 # Set default Device Driver to Keytroller F/config/general/defaultDevicePlugin/com.tibbo.linkserver.plugin.device.keytroller Events
SQL Scripts
SQL Script contains SQL commands that are executed directly on the AggreGate Server database during server startup, one per line. To execute a command script, run AggreGate Server with the with a -s <filename> command line option. (Where filename is the name of the script file). SQL scripts may include comments: Lines beginning with # will not be processed. Executing SQL commands may corrupt your AggreGate Server database. Backup your database before executing any SQL scripts.
# Emergency removal of user account 'john' and all associated data: (may be useful if account was # corrupted) # Removing user account
AggreGate Server delete from ag_users where ag_username = 'john' # Removing Device Server accounts delete from ag_deviceservers where ag_owner = 'john' # Deleting all persistent properties in all contexts delete from ag_properties where ag_context like 'users.john.%' # Deleting persistent events in contexts owner by John delete from ag_events where ag_context like 'users.john.%'
51
3.2.3 Configuration
There are several basic ways to perform configuration of AggreGate Server: Using Server Configurator
51
utility.
51
Using AggreGate Client software (see Client-based configuration Through the Web Desktop
632
).
By editing an XML configuration file (see File-based configuration 52 ). This is for troubleshooting, and can be used to correct one or two settings when AggreGate Server can't start and other methods are not available.
Once you save the new settings, the Configure Server asks for a confirmation and then reboots AggreGate Server. Some settings are system-critical, and providing them with incorrect values may prevent AggreGate Server from starting correctly after reboot. In this case, client-based configuration may not be available. You're going to have to manually edit the configuration file to fix it (see file-based configuration 52 ). So make sure you know what you're doing when editing these global settings. Here is what the AggreGate Server Global Settings dialog looks like in AggreGate Client:
52
AggreGate Documentation
AggreGate Server <locale>ru</locale> <usersSelfRegistration>true</usersSelfRegistration> <configGuiMode>auto</configGuiMode> <netAdminPort>6440</netAdminPort> <netAdminEnabled>true</netAdminEnabled> <databaseDriver>org.apache.derby.jdbc.EmbeddedDriver</databaseDriver> <databaseUrl>jdbc:derby:database;create=true</databaseUrl> ... </config>
53
The file is generated automatically by AggreGate Server, and there's no need to manually add options to it. When troubleshooting, you might have to change the value of some settings. You can find detailed description of available settings under Global configuration
53
See AggreGate
Database Cluster
59
92
Database
80 52
Configuration File
70 72 73
80 80 80 80
80
Database Database
80 80
Active Plugins
54
AggreGate Documentation
Possible values: Any printable string Default value: Textual description of this AggreGate Server instance.
Server IP Address
Key name in the configuration file: serverIp Value type: String Possible values: Any valid IP address or empty string Default value: "" (empty) If this setting is set to a valid IP address, AggreGate Server listens for incoming connections of Devices, AggreGate Clients and Web Desktop 632 users only on this IP address. This setting may be useful to run multiple instances of AggreGate Server on a single hardware server that has several IP addresses. In this case, every instance of AggreGate Server will accept incoming connections on the same ports, but on different IP addresses. Set this setting to a non-empty value only if it's absolutely necessary to accept connections only on a single IP or network interface. For example, if Server IP is set to 192.168.1.5, the AggreGate Client running on the same machine won't be able to connect to the server using localhost address.
Other system services that accept incoming network connections, such as SNMP Trap Listener setting to listen for connections on a certain IP address only.
178 ,
use this
This IP address is also written as a Destination IP to the External Device Servers 1012 that are being connected AggreGate Server.
1014
to the
Also, it is used to access Device Servers that work through HTTP Proxy
AggreGate Server
Possible values: yes, no, auto Default value: auto
55
This option defines whether the AggreGate Server will make any output to the GUI (Graphical User Interface) of the server. GUI output used includes: Splash Screen at startup, icon 108 in the System Tray, and error message boxes. When this option is disabled, no output to the GUI will be made.
data storage.
3.2.3.4.2 Database
Options in this group control how AggreGate Server stores its data in the database
80
Database Clustering
Key name in the configuration file: databaseCluster Value type: Boolean Possible values: true or false Default value: false If this option is disabled, AggreGate Server works with a single database, that is the "classic" behaviour. If enabled, the server works with multiple databases by replicating all write operations to each database and loadbalancing all read operations. In this case: Database URL
56
setting is disabled
56
AggreGate Documentation
56
Cluster Databases
Database Driver
Key name in the configuration file: databaseDriver Value type: String Possible values: Any Java class name corresponding to a JDBC driver Default value: org.apache.derby.jdbc.EmbeddedDriver This option defines which JDBC (Java Database Connectivity) database driver will be used. Technically, it's a name of the driver's main java class. For example, to use MySQL database for data storage set this option to com.mysql. jdbc.Driver. Consult JDBC driver documentation to find out the proper value. To allow AggreGate Server load any third-party JDBC database driver, a JAR (Java Archive) file containing this driver must be added to the server classpath by putting it into /lib subdirectory of AggreGate Server installation or using AggreGate Server Launcher Properties File 45 .
Database URL
Key name in the configuration file: databaseUrl Value type: String Possible values: Database-dependent path string Default value: jdbc:derby:database;create=true This is a database-specific string that defines the database type, the file system path (local or network) to a database containing AggreGate Server data tables and any additional options. To figure out the correct value for your selected JDBC database driver, please consult its documentation. The default value for this option makes AggreGate Server use its embedded Apache Derby database to store data in ordinary text files in the database/ subdirectory of the AggreGate Server installation.
Cluster Databases
Key name in the configuration file: N/A, value is stored in Database Cluster Configuration File Value type: Data Table Possible values: N/A Default value: N/A The Cluster Databases table allows to view status and configure all databases in the Database Failover Cluster by AggreGate Server. Each database in the cluster is configured by the following settings: Database ID . A unique user-defined string identifier of the database in the cluster. Database URL. The address of the database. See Database URL specific notes 81 for more information.
56 91 92
used
Weight. The greater is database weight in the cluster, the more read requests it will get. Local. This flag should be set if the database is located on the same server machine with this AggreGate Server instance. Active. This is a read-only field that shows whether a database is currently being used by the cluster.
Data is being synchronized between new/changed database and other databases in the cluster Since data synchronization may take significant time, saving Cluster Databases table may hang for several minutes.
AggreGate Server
57
93
Database Username
Key name in the configuration file: databaseUsername Value type: String Possible values: Any username suitable for the database server Default value: sa This option defines which username is used to log on to the database server. The default value allows connection to AggreGate Server's embedded database engine.
Database Password
Key name in the configuration file: databasePassword Value type: String Possible values: Any password suitable for the database server Default value: "" (empty) This option defines which password is used to log on to the database server. The default value allows connection to AggreGate Server's embedded database engine.
Cache71Dialect DB2Dialect DB2400Dialect DB2390Dialect DerbyTenSevenDialect FirebirdDialect FrontbaseDialect H2Dialect HSQLDialect InformixDialect IngresDialect InterbaseDialect JDataStoreDialect MckoiDialect MimerSQLDialect MySQL5InnoDBDialect MySQLInnoDBDialect OracleDialect Oracle9Dialect PointbaseDialect
58
AggreGate Documentation
PostgreSQL Progress SAP DB Microsoft SQL Server Sybase 11 Sybase Sybase Anywhere
This option defines the Java class name for the database SQL dialect. For example, use MySQLDialect if you use MySQL database to store data. If your database server is not listed in the table above, please contact the technical support team.
AggreGate Server
Possible values: true or false Default value: false When connection pooling is disabled, all database connection errors are logged connectivity, for example when switching to a new database engine 81 .
74
59
This option should be turned on only temporarily, for debugging purposes. It greatly reduces server performance.
3.2.3.4.3 Cluster
Options in this group are responsible for the AggreGate Server failover cluster
87
node configuration.
Cluster Role
Key name in the configuration file: clusterRole Value type: Integer Possible values: 0 for None, 1 for Master and 2 for Failover Default value: 0 Defines role of this AggreGate Server installation in the failover cluster.
Failover Mode
Key name in the configuration file: clusterFailoverReadonly Value type: Boolean Possible values: true or false Default value: false Defines whether this failover node works in read-only mode, i.e. its database write operations are disabled.
Web Service
60
AggreGate Documentation
Key name in the configuration file: webDesktopEnabled Value type: Boolean Possible values: true or false Default value: true Defines if the Web Desktop
632
application is loaded during AggreGate Server startup and available for connections.
AggreGate Server
61
Zone name
Key name in the configuration file: ddnsZone Value type: String Possible values: Any valid DNS domain name Default value: "" (empty) This option defines DNS zone (domain) name to which AggreGate Server will add hosts corresponding to Device Servers. This can be a domain name in your company's local DNS (within your LAN or Intranet) or a global Internet domain name like "company.com" (if you own one).
62
AggreGate Documentation
Defines the name of the key to be used for Transaction Signatures (TSIG).
AggreGate Server
63
64
AggreGate Documentation
AggreGate Server
65
Example: To enable mail sending via an SSL-secured SMTP server, set the following advanced options: mail.smtp.port=465 mail.smtp.auth=true mail.smtp.ssl.enable=true Example: To enable mail sending via Google Mail (@gmail.com) server, use the following advanced options: mail.smtp.port=587 mail.smtp.auth=true mail.smtp.ssl.enable=true mail.smtp.ssl.protocols=TLSv1
Generic Parameters
Name mail.debug mail.from mail.mime. address.strict mail.host Type Description boole an Strin g boole an Strin g The initial debug mode. Default is false. The return email address of the current user. Enables strict parsing of message headers. The default is true. The default host name of the mail server. Used if the mail.protocol .host property isn't set. Specifies the default message access protocol ("pop3", "pop3s", "imap" or "imaps"). Specifies the default message transport protocol ("smtp" or "smtps"). The default user name to use when connecting to the mail server. Used if the mail.protocol .user property isn't set. The default password to use when connecting to the mail server. Used if the mail.protocol . password property isn't set. The host name of the mail server for the specified protocol. Overrides the mail.host property. The port number of the mail server for the specified protocol. If not specified the protocol's default port number is used.
mail.store.protocol Strin g mail.transport. protocol mail.user mail.password mail.protocol .host mail.protocol .port Strin g Strin g Strin g Strin g int
66
AggreGate Documentation
Strin g Strin g
The user name to use when connecting to mail servers using the specified protocol. Overrides the mail.user property. The password to use when connecting to mail servers using the specified protocol. Overrides the mail.password property.
SMTP Parameters
Note that if you're using the "smtps" protocol to access SMTP over SSL, all the properties would be named "mail.smtps.*".
Name mail.smtp.port
Type int
Description The SMTP server port to connect to. Defaults to 25. Socket connection timeout value in milliseconds. Default is infinite timeout. Socket I/O timeout value in milliseconds. Default is infinite timeout. Local host name used in the SMTP HELO or EHLO command. Should not normally need to be set if your name service are configured properly. Local address (host name) to bind to when creating the SMTP connection. Should not normally need to be set, but useful with multi-homed hosts where it's important to pick a particular local address to bind to. Local port number to bind to when creating the SMTP connection.
mail.smtp. int connectiontimeout mail.smtp.timeout mail.smtp. localhost mail.smtp. localaddress mail.smtp. localport mail.smtp.ehlo int String
String
int
boolea If false, do not attempt to sign on with the EHLO command. Defaults to true. Normally n failure of the EHLO command will fallback to the HELO command; this property exists only for servers that don't fail EHLO properly or don't implement EHLO properly. boolea If true, attempt to authenticate the user using the AUTH command. Defaults to false. n String If set, lists the authentication mechanisms to consider, and the order in which to consider them. Only mechanisms supported by the server and supported by the current implementation will be used. The default is "LOGIN PLAIN DIGEST-MD5 NTLM", which includes all the authentication mechanisms supported by the current implementation.
mail.smtp.auth. login.disable mail.smtp.auth. plain.disable mail.smtp.auth. digest-md5. disable mail.smtp.auth. ntlm.disable mail.smtp.auth. ntlm.domain mail.smtp.auth. ntlm.flags mail.smtp. submitter mail.smtp.dsn. notify mail.smtp.dsn.ret mail.smtp. allow8bitmime
boolea If true, prevents use of the AUTH LOGIN command. Default is false. n boolea If true, prevents use of the AUTH PLAIN command. Default is false. n boolea If true, prevents use of the AUTH DIGEST-MD5 command. Default is false. n boolea If true, prevents use of the AUTH NTLM command. Default is false. n String int String The NTLM authentication domain. NTLM protocol-specific flags. See http://curl.haxx.se/rfc/ntlm.html#theNtlmFlags for details. The submitter to use in the AUTH tag in the MAIL FROM command. Typically used by a mail relay to pass along information about the original submitter of the message. Mail clients typically do not use this. The NOTIFY option to the RCPT command. Either NEVER, or some combination of SUCCESS, FAILURE, and DELAY (separated by commas). The RET option to the MAIL command. Either FULL or HDRS.
String String
boolea If set to true, and the server supports the 8BITMIME extension, text parts of messages n that use the "quoted-printable" or "base64" encodings are converted to use "8bit" encoding if they follow the RFC2045 rules for 8bit text.
AggreGate Server
67
mail.smtp. sendpartial
boolea If set to true, and a message has some valid and some invalid addresses, send the n message anyway, reporting the partial failure with an exception. If set to false (the default), the message is not sent to any of the recipients if there is an invalid recipient address. boolea If set to true, attempt to use SASL to choose an authentication mechanism for login. n Defaults to false. String String String A space or comma separated list of SASL mechanism names to try to use. The authorization ID to use in the SASL authentication. If not set, the authentication ID (user name) is used. The realm to use with DIGEST-MD5 authentication.
mail.smtp.quitwait boolea If set to false, the QUIT command is sent and the connection is immediately closed. If set n to true (the default), causes the transport to wait for the response to the QUIT command. mail.smtp.ssl. enable boolea If set to true, use SSL to connect and use the SSL port by default. Defaults to false for the n "smtp" protocol and true for the "smtps" protocol.
mail.smtp.ssl. boolea If set to true, check the server identity as specified by RFC 2595. These additional checks checkserveridentit n based on the content of the server's certificate are intended to prevent man-in-the-middle y attacks. Defaults to false. mail.smtp.ssl.trust String If set to "*", all hosts are trusted. If set to a whitespace separated list of hosts, those hosts are trusted. Otherwise, trust depends on the certificate the server presents. Specifies the port to connect to when using SSL. If not set, the default port will be used.
mail.smtp.ssl. socketFactory. port mail.smtp.ssl. protocols mail.smtp.ssl. ciphersuites mail.smtp. mailextension mail.smtp.starttls. enable
int
string
Specifies the SSL protocols that will be enabled for SSL connections. The property value is a whitespace separated list of tokens. Allowed values are SSLv3 and TLSv1. Specifies the SSL cipher suites that will be enabled for SSL connections. The property value is a whitespace separated list of tokens. Extension string to append to the MAIL command. The extension string can be used to specify standard SMTP service extensions as well as vendor-specific extensions. See RFC 1869 and other RFCs that define specific extensions.
string
String
boolea If true, enables the use of the STARTTLS command (if supported by the server) to switch n the connection to a TLS-protected connection before issuing any login commands. Note that an appropriate trust store must configured so that the client will trust the server's certificate. Defaults to false. boolea If true, requires the use of the STARTTLS command. If the server doesn't support the n STARTTLS command, or the command fails, the connect method will fail. Defaults to false. boolea If set to true, use the RSET command instead of the NOOP command to check connection n state. In some cases sendmail will respond slowly after many NOOP commands; use of RSET avoids this sendmail issue. Defaults to false. boolea If set to true (the default), insist on a 250 response code from the NOOP command to n indicate success. The NOOP command is used to determine if the connection is still alive. Some older servers return the wrong response code on success, some servers don't implement the NOOP command at all and so always return a failure code. Set this property to false to handle servers that are broken in this way. Normally, when a server times out a connection, it will send a 421 response code, which the client will see as the response to the next command it issues. Some servers send the wrong failure response code when timing out a connection. Do not set this property to false when dealing with servers that are broken in this way.
mail.smtp.noop. strict
POP3 Parameters
Note that if you're using the "pop3s" protocol to access POP3 over SSL, all the properties would be named "mail.pop3s.*".
Name
Type
Description
68
AggreGate Documentation
mail.pop3.port
int
The POP3 server port to connect to. Defaults to 110. Socket connection timeout value in milliseconds. Default is infinite timeout. Socket I/O timeout value in milliseconds. Default is infinite timeout.
boolea Send a POP3 RSET command when closing the folder, before sending the QUIT command. n Useful with POP3 servers that implicitly mark all messages that are read as "deleted"; this will prevent such messages from being deleted and expunged unless the client requests so. Default is false. String Local address (host name) to bind to when creating the POP3 socket. Should not normally need to be set, but useful with multi-homed hosts where it's important to pick a particular local address to bind to. Local port number to bind to when creating the POP3 socket.
mail.pop3. localaddress mail.pop3. localport mail.pop3.apop. enable mail.pop3.ssl. enable mail.pop3.ssl. checkserveridenti ty mail.pop3.ssl. trust mail.pop3.ssl. socketFactory. port mail.pop3.ssl. protocols mail.pop3.ssl. ciphersuites
int
boolea If set to true, use APOP instead of USER/PASS to login to the POP3 server, if the POP3 n server supports APOP. APOP sends a digest of the password rather than the clear text password. Defaults to false. boolea If set to true, use SSL to connect and use the SSL port by default. Defaults to false for the n "pop3" protocol and true for the "pop3s" protocol. boolea If set to true, check the server identity as specified by RFC 2595. These additional checks n based on the content of the server's certificate are intended to prevent man-in-the-middle attacks. Defaults to false. String If set to "*", all hosts are trusted. If set to a whitespace separated list of hosts, those hosts are trusted. Otherwise, trust depends on the certificate the server presents. Specifies the port to connect to when using SSL. If not set, the default port will be used.
int
string
Specifies the SSL protocols that will be enabled for SSL connections. The property value is a whitespace separated list of tokens. Specifies the SSL cipher suites that will be enabled for SSL connections. The property value is a whitespace separated list of tokens.
string
mail.pop3.starttls. boolea If true, enables the use of the STLS command (if supported by the server) to switch the enable n connection to a TLS-protected connection before issuing any login commands. Note that an appropriate trust store must configured so that the client will trust the server's certificate. Defaults to false. mail.pop3.starttls. boolea If true, requires the use of the STLS command. If the server doesn't support the STLS required n command, or the command fails, the connect method will fail. Defaults to false. mail.pop3. disabletop mail.pop3. disablecapa mail.pop3. forgettopheaders boolea If set to true, the POP3 TOP command will not be used to fetch message headers. This is n useful for POP3 servers that don't properly implement the TOP command, or that provide incorrect information in the TOP command results. Defaults to false. boolea If set to true, the POP3 CAPA command will not be used to fetch server capabilities. This is n useful for POP3 servers that don't properly implement the CAPA command, or that provide incorrect information in the CAPA command results. Defaults to false. boolea If set to true, the headers that might have been retrieved using the POP3 TOP command n will be forgotten and replaced by headers retrieved as part of the POP3 RETR command. Some servers, such as some versions of Microsft Exchange and IBM Lotus Notes, will return slightly different headers each time the TOP or RETR command is used. To allow the POP3 provider to properly parse the message content returned from the RETR command, the headers also returned by the RETR command must be used. Setting this property to true will cause these headers to be used, even if they differ from the headers returned previously as a result of using the TOP command. Defaults to false. boolea If set to true, the POP3 provider will cache message data in a temporary file rather than in n memory. Messages are only added to the cache when accessing the message content. Message headers are always cached in memory (on demand). The file cache is removed when the folder is closed or the Server is stopped. Defaults to false. String If the file cache is enabled, this property can be used to override the default directory used for temporary files.
mail.pop3. filecache.enable
mail.pop3. filecache.dir
AggreGate Server
69
mail.pop3. boolea The content of a message is cached when it is first fetched. Normally the cached content is keepmessagecont n purged if memory is low, in which case the content will be fetched again if it's needed. If ent this property is set to true, all cached content will be kept intact, preventing the memory from being reused until the folder is closed. Defaults to false.
To start using Clickatell SMS sending service: 1. Register at http://www.clickatell.com. 2. Log in to Clickatell Central. 3. Go to Manage My Products. 4. Add an HTTP/S connection. 5. Enter only connection name and leave all settings at the defaults (you may want to customize some settings, e.g. lock the IP from which SMS messages are accepted). 6. Enter your Clickatell settings in AggreGate Server SMS Sending configuration and enable SMS sending.
70
AggreGate Documentation
882 .
The format of the Event Processing Rules table: Context Mask Every record in the table defines processing rules for an event in every context matching this mask 865 . For example, if we specify Expiration Period of 1 month for the "login" event (in the Event column) and set the Context Mask to "users.admin" (matches the User 759 context of the admin user), information about the logins of the system administrator will be stored for a period of one month. If Context Mask is set to "users.*", successful logins of all users will be stored for the same custom time period. If the mask is not specified (i.e. NULL), the rule is applied to events in all contexts. Event Pre-filter Name of the event whose processing rules are defined by this record. Expression 911 used to suppress events that do not match certain criteria. Suppressed events won't be stored in database, delivered to listeners, and processed by any system module. If pre-filter expression is defined, events will be suppressed if it returns FALSE. Pre-filter Expression Resolution Environment Default Context
927 922
Default Data Table 927 Default Row Environment Variables 930 Deduplication ID Expression
927
0 Standard
931
variables only.
Expression 911 used to calculate deduplication IDs of events. The expression will be evaluated into a String. If the RAM-based events queue (whose size is defined by Number of Events to Store in RAM parameter) contains an event with the same deduplication ID, the current event will be treated as a duplicate of this event: Number of previous event's duplicates will be increased by 1.
AggreGate Server
71
Creation time of previous event will be updated to match creation time of the duplicate. Thus, creation time of the most recent duplicate is preserved. The event will be delivered to subscribed listeners only if Duplicate Dispatching is enabled Number of Events to Store in RAM Duplicate Dispatching Expiration Period Number of events to keep in memory and use for finding duplicates according to Deduplication ID Expression. Defines whether an event those duplicates were found in memory should be further routed and delivered to subscribers (listeners). Duration of persistent storage. Default duration is 100 days, after which events are permanently deleted from the history records. You can customize the duration of storage ("time-to-live") for different events. Note that in practice events may be available in event history a little bit longer than specified by this setting, because the cleanup process (removing expired events) runs every several minutes. Zero expiration period value disables persistent storage of events pointed by the rule. Enrichments A table defining what enrichments two columns: Enrichment Name Enrichment value Expression One a newly created event instance matches this rule, each value expression is evaluated to a string. A new enrichment with name taken from this table and value equal to the expression result is added to the event instance. Enrichment Expression Resolution Environment Default Context
927 922 883
0 Standard
931
variables only.
When an event occurs, AggreGate Server processes the Event Processing Rules table from the the first to the last record. If the context in which an event has occurred matches the mask defined by a record, the server uses parameters defined in this record to store the event and stops going over the list. I.e, the first match applies, even if masks in later lines also match the context. Thus, rules with narrower context masks should generally precede rules with wider masks. If this context doesn't match any mask defined in the table, default parameters defined in the event definition will be used to store and process the event. Example: assuming we have the following table of event processing rules: Context Mask users.admin users.* Event login login Expiration Period 1000 hours 200 hours
According to this table, AggreGate Server will store logins of "admin" user for 1000 hours, logins of all other users will be stored for 200 hours. Example: let's say we have the following event processing rule: Context Mask Event Pre-filter Deduplication ID Number of Events to Expression Store in RAM Expiration Period
72
AggreGate Documentation
event 1
{int} < 10
{int}
10
3 Months
According to this table, AggreGate Server will process event event1 originated from a certain Virtual Device 182 with context path users.admin.devices.virtual1. This event has, among the others, an Integer int field. The above rule will work as follows: All events having value of int field greater or equal to 10 will be suppressed; For other events, the deduplication ID will be calculated. This ID will match value of int field. According to the above rule, events with the same value of int field will be filtered out as duplicates of the first event with such int field value. Once the number of events in memory will exceed 10 , the oldest events will be removed and no longer eligible for duplicates search. Note, that copies of these events stored in database (and preserving information about duplicates) will be kept intact.
Any third-party applications may execute selection of modification queries over this table to get access to AggreGate Server events. It's possible to access this table even during AggreGate Server operation. Custom events table structure: Field ag_id ag_datetime ag_context ag_event ag_level ev_* Type Long (bigint) Timestamp (datetime) String (varchar) Ttring (varchar) Integer (int) Different type Comments Event ID Event timestamp Event context Event name Event level
882
(numeric value)
AggreGate Server
may be parsed by any application. CSV file fields: Event ID Event timestamp (formatted according to yyyy-MM-dd Event context Event name Event level
882
73
(numeric value)
Permission level
Context masks may contain a special % character. It will be replaced by the new user's username during account creation. Example: If the context mask field of the additional permissions table contains users.%.alerts and the new user's name is john , his permissions table will contain a record for users.john.alerts . Additional Permissions is very similar to Default User Permissions 73 table. The difference is that Default User Permissions help to quickly set up permissions of new users just by clicking on several check boxes while Additional Permissions provide a more fine-grained control based on direct specification of user permission table records. Additional permissions table has higher priority than Default User Permissions 73 . Records from additional permissions table are added into permissions table of a new user before records that are specified by Default User Permissions.
3.2.3.4.14 Statistics
This tabular property is used to globally set up default statistical channels 936 for Device settings. These channels are created for newly added Devices and may be re-created upon device driver reset 678 . Existing Devices use their own copies of statistical channel properties 938 and do not inherit values from this global table.
74
AggreGate Documentation
Disabling plugins may cause incorrect or inconsistent behaviour of the system. For example, disabling a device driver plugin 129 will bring down all Devices 113 using this driver.
3.2.4 Logging
As with most server software, the primary method to report all events and activities of AggreGate Server is logging. AggreGate Server employes an advanced logging facility which is easily configurable through an ordinary text file. Logging configuration can be changed at runtime without restarting the AggreGate Server. AggreGate Server uses Apache Log4J logging library for log output. It is highly customizable and allows multiple levels and sources of logging information along with numerous log destinations. Logging output can be redirected to: Console Text files XML files Windows event logs UNIX syslog Database Remote network server E-mail messages Java Message Service (JMS) And many other destinations.. The AggreGate Server logging configuration file is located in the installation directory and is called logging.xml. The structure of this file is briefly described in logging configuration file 74 section. It also contains a list of logging categories used by different components of AggreGate to produce logging output. Default Logging Configuration File 74 defines two logging destinations: console and log file called server. log that is located in AggreGate Server installation directory. Logging is performed at Info level 79 .
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration debug="false" xmlns:log4j="http://jakarta.apache.org/log4j/">
75
<appender name="file" class="org.apache.log4j.DailyRollingFileAppender"> <param name="threshold" value="debug"/> <param name="file" value="server.log"/> <param name="append" value="true"/> <param name="DatePattern" value=".yyyy-MM-dd"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{dd.MM.yyyy HH:mm:ss,SSS} %-5p %-25c %m [%t] %C.%M (%F:%L)%n"/>
</layout> </appender>
<logger name="ag" additivity="false"> <level value="warn"/> <appender-ref ref="file"/> <appender-ref ref="console"/> </logger>
</log4j:configuration>
The default logging configuration is represented by a root configuration element, two appenders (destinations for log output) and several named logging categories. The root element (<root>) defines the global logging level as warning (<priority value="warn"/>) (see logging levels 79 for more information). It applies to all messages coming from the system libraries used by the server core. Logging of the server itself is performed using info level. This is specified by the <level value="info"/> tag that is located in <logger name="ag.*">. To switch the server to debug-level logging in a certain category 76 , change this tag to <level value="debug"/>. The <logger> elements define which level is used for logging from each subsystem of AggreGate Server.
76
AggreGate Documentation
This logging configuration also defines two appenders named CONSOLE and FILE. An Appender is a destination for logging output. It can be a text file, e-mail message etc (see below for a complete listing of all available appenders). Each appender is configured by its own <appender> element. This element must also specify a name of Java class responsible for this appender. In the listing above both appenders include a <layout> elements, that defines how the logged information will be formatted. The FILE appender includes several other <param> elements containing some additional options. For more information, consult manuals or books mentioned in logging framework documentation sources 80 chapter.
More About Appenders (An Edited Excerpt From The Log4j Manual)
Log4j allows logging requests to print to multiple destinations. In log4j speak, an output destination is called an appender. Currently, appenders exist for the console, files, GUI components, remote socket servers, JMS, NT Event Loggers, and remote UNIX Syslog daemons. More than one appender can be attached to a logger. Here is a brief list of available appenders:
COMMON APPENDERS
FileAppender , appends log events to a file. RollingFileAppender, extends FileAppender to backup the log files when they reach a certain size. DailyRollingFileAppender , extends FileAppender so that the underlying file is rolled over at a user-specified frequency. ConsoleAppender, appends log events to System.out or System.err using a layout specified by the user. The default target is System.out.
NETWORK APPENDERS
SocketAppender, sends LoggingEvent objects to a remote a log server, usually a SocketNode. SocketHubAppender, sends LoggingEvent objects to a set of remote log servers, usually a SocketNodes . JMSAppender, a simple appender that publishes events to a JMS Topic. The events are serialized and transmitted as JMS message type ObjectMessage. NTEventLogAppender, appends to the NT event log system.
THIRD-PARTY APPENDERS
JDBCAppender SNMPTrapAppender
SPECIAL APPENDERS
AsyncAppender, lets users log events asynchronously. It uses a bounded buffer to store logging events. ExternallyRolledFileAppender, listens on a socket on the port specified by the PORT_OPTION for a "RollOver" message. When such a message is received, the underlying log file is rolled over and an acknowledgment message is sent back to the process initiating the roll over. JDBCAppender, provides for sending log events to a database. SMTPAppender, sends an e-mail when a specific logging event occurs, typically on errors or fatal errors. SyslogAppender, sends messages to a remote syslog daemon. TelnetAppender is a log4j appender that specializes in writing to a read-only socket. WriterAppender, appends log events to a Writer or an OutputStream depending on the user's choice.
and other
Category Name
ag.alerts
Description
Messages related to Alerts
216 .
AggreGate Server
77
ag.autorun ag.bindings
625 . 951 .
ag.commands
Logging of command exchange between different components of the system. Most logging in this category is performed at Debug level. Device Server 1003 commands are logged at Debug level in this category.
ag.commands. device_server ag.commands. agent ag.commands. client ag.commands. distributed ag.commondata ag.clients ag.cluster ag.config ag.context
Agent
848
Client
776
99
260 . 776 . 87
Messages related to Failover and Load Balancing Cluster Messages related to Global Configuration Generic messages related to Contexts level. Info
885 51
of AggreGate Server.
863 .
ag.context.info ag.context.children
events in AggreGate Server context are logged at Info level in this category.
Messages related to context tree structure management. Most logging in this category is performed at Debug level. Messages related to context Variables (Properties) performed at Debug level. Messages related to context Functions level. Messages related to context Events level. Messages related to context Actions level.
878 . 869 .
880 .
ag.context.actions
892 .
ag.core
This category is used for logging messages from core of AggreGate Server and AggreGate Client. Miscellaneous messages that can be hardly categorized are also related to this category. Thread management messages. Messages related to Dashboards
617 .
Logging related to database interaction. Most logging in this category is performed at Debug level. Generic messages related to interaction between AggreGate Server and hardware devices. Messages related to discovery of hardware devices.
126
78
AggreGate Documentation
Other messages produced by different device drivers Messages related to Device Browser Messages related to Device Servers Messages related to Device Servers level in this category Messages related to Data Tables level.
825
129 .
1003 . 1003
854 .
ag.data_table.filter
Messages related to Data Tables 854 filtering (used by Event Filters) category is performed at Debug level. Messages related to Data Table Editor
801
206 .
Messages related to Domain Name System servers interaction. Specifically used by Dynamic DNS 1010 device driver. Messages related to Entity Selector Messages related to Event Filters Messages related to Event Log
791 815
ag.entity_selector ag.eventfilters ag.event_log ag. expression_builder ag.expressions ag.favourites ag.groups ag.gui ag.gui_builder ag.guide ag.mail
206 .
911
processing.
626 .
248 .
Generic messages related to Graphics User Interface (GUI). Messages related to GUI Builder
827
Messages related to processing of outgoing and incoming E-mail messages and interaction with mail servers. Messages related to Models
303 . 49
Messages related to system performance issues, such as operations that take longer than expected. Minor performance decrease is logged at Debug level, while serious degradations are reported using higher levels. Generic messages related to Plugins Messages related to Properties Editor
950 . 795
Messages related to AggreGate Communications Protocol performed at Debug level. Messages related to AggreGate Communications Protocol this category is performed at Debug level. Messages related to Queries Messages related to Reports
271 . 241 .
1303 .
ag.protocol.caching
1303
ag.queries ag.reports
AggreGate Server
79
ag.resource
Messages related to resources management. Most logging in this category is performed at Debug level. Messages related to Scheduled Jobs Messages related to Scripts
628 266 . 610 .
Messages related to security and permission checking. Most logging in this category is performed at Debug level. Messages related to statistics collection (Statistical Process Control). Standard output of different AggreGate libraries and components is redirected to this logging category. All logging in this category is performedat Debug level. Standard error output of different AggreGate libraries and components is redirected to this logging category. All logging in this category is performed at Info level. Messages related to the System Tree Messages related to Trackers Messages related to Users
257 . 784
ag.statistics ag.stdout
ag.stderr
108 . 632 .
Generic messages related to AggreGate Server Web Desktop Messages related to Widgets
312 .
80
AggreGate Documentation
The string priority value= appears in other sections of the file. Most importantly, it appears under the section </root>. Modifying this value under the section root (especially to higher logging levels, such as debug) may affect performance considerably, and even cause the AggreGate Server to halt or freeze.
Log4j official site The Complete Log4j Manual Logging in Java with the JDK 1.4 Logging API and Apache log4j
3.2.5 Database
AggreGate Server uses a relational database to store persistent data, such as: 1. Information about User Accounts 2. Values of all persistent context objects) 3. History of persistent events
880 108
1003
in dedicated tables
863
variables
AggreGate Server communicates with the database engine using a JDBC driver, so it can work with most modern Relational Database Management Systems. JDBC stands for the Java DataBase Connectivity API. It is a standardized way for Java-based applications to interact with a wide range of databases and data sources. JDBC differs from ODBC (Microsoft's Open DataBase Connectivity standard) primarily in the fact that JDBC is written in Java, and thus can be used without modification in cross-platform environments. Additionally, whereas ODBC is a complex standard that is becoming technically out-dated, JDBC is a modern, clean specification for cross-vendor database access.
Embedded Database
The AggreGate Server distribution package includes an embedded database engine (Apache Derby) that is used by default. This database can be used for system testing.
Embedded database is not suitable for long-term production usage! Using embedded database in production installations will cause high memory usage and performance troubles. It's necessary to switch to any enterprise-grade database once the system was switched into production mode.
See switching to another database engine
81
for more information on how to change the database used by the server.
55
The embedded database's data is located in /db subfolder of AggreGate Server installation folder.
AggreGate Server
Find MySQL for AggreGate service Right-click on it to see the list of control function in context menu If the MySQL service fails to start, see its error log file (mysql/error.log) to find out failure details.
81
Write -classpath/a <JDBC_Driver_File_Path> in the first and only line of this file. JDBC_Driver_File_Path is the full path of JDBC database driver file (or name of this file, if it is located in the AggreGate Server installation directory). 8. Start Server Configurator 51 utility, or start AggreGate Server and launch Configure Server Database tab in the server configuration dialog.
726
action. Switch to
9. Change the Database Driver Global Configuration Setting 55 setting to the name of Java class representing the database driver. This name is provided by the JDBC driver manufacturer. For example, MySQL database driver class is called com.MySQL.jdbc.Driver. More information on Global Configuration Settings may be found here 53 . 10. Set the Database URL Global Configuration Setting to point to your database engine. Its format is also provided by the JDBC driver manufacturer. For MySQL it has the following format: jdbc:MySQL://[host][:port]/ [database], where [host] is the IP or hostname of the MySQL server (can also be an empty string or localhost), [port] is the port number on which the MySQL server is running (optional - the default port is used if it's not specified), and [database], which is the name the of database containing AggreGate Server data. You can use AggreGate Server for the database name. For example, if your MySQL server runs on 192.168.0.1, on the default port, use the following URL: jdbc:MySQL://192.168.0.1/AggreGate Server. 11. Specify the correct Database Username and Database Password Global Configuration Settings. These credentials are used to access the database specified by the Database URL setting. 12. Set the Database Dialect Global Configuration Setting to the predefined value corresponding to the type of your database. See Database Dialect 57 global configuration setting for more info. 13. Save the new settings. Do not restart the server, even if you're prompted to do that. 14. Stop the server configurator (or AggreGate Server). 15. Run database converter
85
utility that is located in AggreGate Server installation folder to move data from the old
82
AggreGate Documentation
database to the new one. 16. Wait for the converter to finish working. depending on the database size, it may take from several seconds to several hours. 17. Start the AggreGate Server. 18. Voila! All done, you're now using the new database. The maximum number of parallel connections allowed by your database server must be greater than the value of Maximum Connection Pool Size 58 global property of AggreGate Server. In most cases, the default number of parallel connections allowed by the database server is lower and should be adjusted. Refer to your database server documentation to find out how to increase this limit.
MySQL Setup
AggreGate requires several configuration changes to be made in MySQL configuration. These changes are normally applied using MySQL configuration file ( my.ini by default). 1. Add max_allowed_packet=100M to the configuration to allow large queries. 2. Set max_connections to the value higher than Maximum Connection Pool Size configuration setting (e.g. max_connections=1000).
58
3. Set innodb_buffer_pool_size to maximum amount of RAM that MySQL should use. In the case of dedicated database server, set this option to 80% of available RAM. 4. Set innodb_log_file_size to 25-50% of innodb_buffer_pool_size.
83
socket = /tmp/mysql.sock default-storage-engine = INNODB datadir = /d a ta/mysql innodb_data_home_dir = /data/mysql innodb_log_group_home_dir = /data/my sq l
key_buffer_size = 384M sort_buffer_size = 20M read_buffer_size = 20M read_rnd_buffer_size = 20M query_cache_size = 100M
84
AggreGate Documentation
AggreGate Server
85
db_converter executable file accepts two arguments: path of the old AggreGate Server configuration file (that
contains old database configuration) and path of the new configuration file. So, the command to execute is: db_converter server_old.xml server.xml.
1306
using invisible
Contains all server context events 880 except for ones that are stored in other (custom) tables. See Context Event Storage section below for details. Fields: context - full path of context
863
name - name of the event (i.e. event type) creationtime - timestamp of event occurrence (or last event occurrence if multiple duplicates
86
AggreGate Documentation
were registered) expirationtime - future timestamp of planned event expiration time level - event level permissions - custom permissions required to access the event instance or null if permissions specified by event definition should be used count - number of registered event's duplicates
70 882 883
format - an encoded format of the event or null if format specified by event definition should be used data - a data table separators ag_data
854
881
1306
using invisible
Contains binary data blocks 857 that are embedded into context variable 869 values. Those blocks are extracted into this separate table when variable value is being persisted in ag_properties table. However, binary blocks are not loaded once variable value is loaded from ag_properties. The blocks are only loaded on-demand, i.e. by explicit requests of AggreGate Server modules, clients of external applications. Used for interaction between failover cluster
87
ag_heartbeat
nodes.
task
The number of SELECT queries performed to event tables is relatively low. The events are loaded in the following cases: If an Event Log
791
206
If variable history is explicitly loaded by variableHistory() During initial visualization of a widget chart In several similar cases
384
Despite events are rarely loaded, the number of events loaded by a single query is not limited by the platform since certain installations require millions of events to be loaded at once. System architects designing AggreGate-based solutions should take care of this and consider maximum number of loaded events when building server-side data processing chains and visualization dashboards. An attempt to load too large number of events at once will cause AggreGate Server memory depletion and and reproduce itself as severe performance degradation caused by Java Virtual Machine garbage collection, possibly causing full server freeze or internal memory errors. The event tables list available in this documentation is not complete. Diverse AggreGate Server modules and plugins may request creation of other dedicated event tables that are not mentioned here. All events that weren't explicitly configured to use a custom table are written to ag_events table. Table ag_info ag_alerts Description Contains Info Contains Alert
885 224
events. events.
AggreGate Server
87
ag_xxx _change
Contains all Change 891 events representing changes of variables in a single device context 677 (matching device xxx ). Note, that the table name can be truncated due server-wide database table name length restriction.
Size
58
869 containing large binary blocks (sounds, images, firmware files) are stored in the database, AggreGate Server saves them using a single INSERT/UPDATE transaction. Thus, the maximum size of data transferred in one transaction should not be limited, or should be limited by a sufficiently large value (we recommend the limit of 100 MB).
4. For large installations, we recommend disabling synchronous flushing of INSERT'ed or UPDATE'd data
to the disk upon transaction commit. This may bring significant performance improvements.
5. If database server is running on the same machine with AggreGate Server, we recommend allow it
using 25-40% or RAM, leaving the rest for AggreGate. Also, avoid swapping.
88
AggreGate Documentation
one or more Failover Nodes . During normal operation, the master node is servicing all operations. All failover nodes are running in standby mode and monitoring the state of master node. The failover nodes are automatically switched to Failover Master mode (i.e. activated) in the following cases: Network or power outage of the master node Major hardware or software failure of the master node Both master and failover nodes are full installations of AggreGate Server that can work on its own. However, master and all failover nodes share the same database.
of one failover server to the Normal. Change mode of the other failover servers to Read-
AggreGate Server
89
46
The master node should start normal operations, while failover nodes should switch to standby mode, showing "Monitoring Master Server Status" message on the splash screens.
(not recommended)
90
AggreGate Documentation
93
The second way of AggreGate Server database replication is using native replication technology server to build a database failover cluster.
of the database
Non-replicated Database
Some AggreGate Server installation may also share a single non-clustered database 94 between Master and Failover servers. However, this method doesn't protect the whole system from database server failures.
AggreGate Server
91
92
AggreGate Documentation
Configuration
Below is the list of configuration changes required to set up AggreGate database replication.
DATABASE SERVERS
Set up two or more identical database servers. Configure all servers to accept connections from IP addresses or host names of AggreGate Master and Failover servers.
.
55
Edit the Cluster Databases 56 table by adding a record for each of the database servers. Make sure that you've specified correct URL of each database. Make sure that Database Username, Database Password and Database Dialect settings in the Database tab match your databases. Save global configuration and start the server. It should now connect to the database cluster. All databases in the cluster must use the same username/password pair for accepting AggreGate Server connections.
AggreGate Server
Database load balancing rules Synchronization strategy for the recovered database cluster nodes In most cases, this file should not be edited directly. Use Cluster Databases Configurator 51 utility to make changes to database cluster settings.
56
93
Make sure that number of <database/> blocks matches the number of databases in the failover cluster. Add/ remove blocks if necessary. Assign a unique ID to every database by editing id attribute of every <database/> block. Set value in every <driver> tag to the name of your JDBC driver class name. See Database Driver 56 for details about driver class names. Also, check database-specific notes 81 to find out where to get the driver and what is its class name. Put your database driver file into /lib subfolder of AggreGate Server installation folder. Check database-specific notes 81 for details. Set the <url> tag to your database connection URL. URLs will likely be different for all databases in the cluster, since URL usually includes database server address. See Database URL 56 and database-specific notes 81 for details. Properly set <username> and <password> tags for each database. All databases in the cluster must use the same username/password pair for accepting AggreGate Server connections.
94
AggreGate Documentation
Configuration
Below is the list of configuration changes required to set up native database clustering.
DATABASE SERVERS
Refer to your database server documentation for details on how to build a cluster.
Refer to your JDBC driver documentation for details on how to configure the addresses of failover servers. In most cases this is performed by specifying failover server addresses in the Database URL 56 .
Configuration
Below is the list of configuration changes required to set up Master and Failover nodes to use the single non-clustered database.
DATABASE SERVER
Allow your database server to accept incoming connections from IP addresses of Master and all Failover nodes. Allow firewall running on the database server host to accept connections on the database port (e.g. port 3306 for MySQL database) from IP addresses of Master and all Failover nodes.
AggreGate Server
95
Clustered or replicated database shared between all servers The failover servers are activated when the master server fails, e.g. due to: Network outage Hardware failure Operating System crash AggreGate Server failure Shortage of disk space Any other reason
Make a Read-only Failover node new Normal Failover node by editing its Failover Mode setting
global cluster
The above operations will take mere minutes, however cluster reliability will be preserved for the case of new Master node failure. It is now possible to set up a new Read-only Failover node without any rush.
Only one Normal Failover node is allowed within a high availability cluster. Other failover nodes must work in Read-Only Mode.
Failover Scenarios
This section describes several common Failover Cluster configurations. Note that database cluster
89
is shown as a
96
AggreGate Documentation
"cloud" on the below images. In practice, databases participating the database cluster will run on the same physical servers with AggreGate Server installations.
TWO NODES
The most common failover cluster configuration includes two servers: Master Server and Normal Failover Server. Once the Master fails, the Failover switches to Failover Master mode, taking over Master's operations.
THREE NODES
The three nodes failover cluster helps to maintain system reliability even when the Master server has failed.
AggreGate Server
97
If the Master server fails, three nodes cluster will work similar to two nodes cluster. This allows to protect from Failover Master's failure and gives system administrators spare time to restore three nodes operation.
98
AggreGate Documentation
Failover Alert
Once a Master Server of AggreGate failover cluster fails, the Failover node raises a Failover Alert 217 . This helps to quickly notify system administrators of the situation. By default, an e-mail message is sent to the administrators. It is however recommended to configure an SMS message to be sent in case of Failover alert. See Alert SMS Notifications for details.
227
AggreGate Server
Restart the new Master node
99
Create two or more server connections 779 in your workspace: first one for the Master Server and others for the Failover servers. Specify addresses or Master and Failover servers in the connection settings. Disable connections to the Failover servers to suppress startup connection errors. This is necessary since Failover nodes won't accept AggreGate Client connections while working in standby mode.
Once the Master node fails (and you'll get connection errors), just enable one of the failover connections
100
AggreGate Documentation
Layer 4: urban district servers (the final destination for escalated lower-level alerts, real-time monitoring by human operators, integration with CRM systems) Layer 5: HQ server (supervision of area-wide servers, collection of overall reports and alerts) Any particular AggreGate server in the above schema may, indeed, be a multi-node failover cluster
87
Architecture plugin
950 .
The
AggreGate Server
101
Once a consumer server has imported a context sub-tree from another server, the server's own contexts may interact with imported contexts. Here are several examples: If server B imports a device context 677 from server A , it may declare an alert that checks certain metric of this device and fire an alert if threshold is exceeded. In this case, the physical device will be polled by server A, but the alert will be processed by server B. If server B imports a user account context 759 from server A , the system operators may fully control all devices and resources of this user by connecting to server B. However, all modifications will be redirected to server A and saved in its database 80 . This may be useful if operators have no direct access to the server A, e.g. if it's installed in the private LAN. Finally, server B may import the whole context tree from server A . In this case, any resource from server B may access all resources of server A, allowing any type of interaction.
102
AggreGate Documentation
Architecture
Connection Type . For Incoming connection, this consumer awaits and accepts TCP connections from providers. For Outgoing connections, the consumer establishes its own TCP connection to provider. Address. Address of provider server. Valid for Outgoing provider connections. Port. Port number on provider server to connect to. Valid for Outgoing provider connections. Username. Name of user account
108
Password. Password for the above user account. Mount Points. The list of remote context sub-trees or individual contexts that will be attached to the local context tree. Properties of a mount point are described below.
EXAMPLE
Imagine that provider server has the following contexts:
AggreGate Server
103
The root context name substitution also helps to import remote root context (whose context path equals to empty string).
Architecture plugin's
Address. Address of consumer server. Port. Port number on consumer server to connect to.
Providers Status
Providers status table has the following fields: Name . Name of provider. Connection Type . Incoming or outgoing. Active. Shows whether provider is active. Connected. Shows whether provider is connected. Address. The IP address of provider server.
Consumers Status
The list of consumer status table fields: Name . Name of local provider the consumer is connected to. Connection Type . Incoming or outgoing. Active. Shows whether consumer is active. Address. The IP address of consumer server.
However, if the operators of CS want to access contexts imported from PS, they must connect to the CS and authenticate as a certain CS user first. Let's resume the above. Imagine that server B (the consumer) imports context "context123" from server A (the provider). The local path of this context at server B is "mount.context123" (according the provider configuration). The server B authenticates at server A as user "userA" (defined on server A). Human operator connects to server B and
104
AggreGate Documentation
wants to perform an operation with imported context. He authenticates at server B as user "userB" (or course, defined on server B). Here are the required permissions: User "userB" on server B must have permissions to access the context "mount.context123" at server B. User "userA" on server A must have permissions to access the context "context123" at server A.
If the server is going to be upgraded, the following backup operations are obligatory before the upgrade: Server Installation Folder Backup External Database Backup
29
. Make sure
AggreGate Server
105
Statistics Backup
The statistical channels 936 store data in the /statistics subfolder of AggreGate Server installation folder. This folder should be backed up to preserve statistical archives. Location of the statistics storage folder can be changed in the global server configuration you're backing up the proper folder.
55
Location of the embedded database can be changed in the global server configuration you're backing up the proper folder.
55
106
AggreGate Documentation
A fresh copy of AggreGate Server should be installed on a new server machine. Version of AggreGate Server installed on a new machine must be same (recommended) or newer than AggreGate Server version of a moved installation. The new installation should include the same set or vertical market extensions (and, thus, AggreGate Server plugins and drivers 129 ) as the old installation.
950
Database Replication
Third step is moving server database
80
1. By installing a fresh copy of database engine on the new server and manually moving database files according to database server's database relocation instructions. 2. By installing a fresh copy of database engine on the new server, creating an empty database, and following Switching to Another Database Engine 81 instruction set to move data from the old database to the new one. 3. If the new AggreGate Server installation should use same standalone database that was used by the old one, just check/modify databaseUrl parameter in the copied server configuration file (server.xml) to make sure IP address or host name of the database server is the correct one that should be used from the new server location. If AggreGate Server uses a bundled MySQL or Apache Derby database, the database relocation should be very simple: For bundled MySQL database, just copy /mysql subfolder of old AggreGate Server installation folder to the new server. Make sure both servers are stopped during this process! When the copy is created, make sure MySQL autostarted during startup of the new server machine. For example, on a Windows machine it's possible to use mysqld --install command to install MySQL as a service. See details here: http://dev.mysql.com/doc/refman/4.1/en/ windows-start-service.html For bundled Apache Derby database, just copy /db subfolder of old AggreGate Server installation folder to the new server. Make sure both servers are stopped during this process!
Statistics Replication
To relocate a Round-Robin Database used by statistical process control Make sure both old and new servers are stopped Move /statistics folder from the old installtion to the new one. Check statisticsFolder parameter the old configuration file ( server.xml) to locate statistics folder in the old installation (it's located in AggreGate Server installation folder by default). Check or modify statisticsFolder parameter in the new installation's configuration file to find out the proper destination of copies statistics folder.
936
module:
266
628
AggreGate Server
107
Creating Resources
To create resources provided by AggreGate core or plugins, run Create Resources ( 726 . You will be prompted to select resources to be created: ) action from the root context
Resource list can be sorted, filtered and grouped by resource types and categories.
Once the resources were created, you can easily modify them. If a certain resource was corrupted and you didn't make a backup, just delete it and run Create Resources action again to restore it.
Deleting Resources
It's possible to delete built-in resources like any other AggreGate Server resources. However, to simplify batch removal of multiple resources, Delete Resources ( be used. ) action from the root context
726
can
108
AggreGate Documentation
Clicking this icon will bring up menu with the following items: Open AggreGate Server Control Center. Opens AggreGate Server Control Center Open AggreGate Client Download Page. Forwards to a AggreGate Client Open Help in Browser. Opens the online version of this manual. View Activation Key. Allows to view and copy the activation key View Server Log . Opens Event Log events.
791 29 776 631
download page.
.
74
652
context
Restart Server . Restarts the server. Note, that restart is available only if server runs in service mode Stop Server. Stops the AggreGate Server.
3. The Time Zone for every Device is defined in the Device account settings 4. By default, the time zone for new users is undefined. 5. By default, the time zone for new Devices is undefined.
6. When the Device synchronizes 126 its internal clocks with the Server, time is converted from Server's time zone to the Device's time zone. If Device's time zone is undefined, it's assumed to be located in owning user's time zone. If owning user's time zone is undefined too, no time conversion occurs. 7. When events are loaded from the Device and stored in the event history, the event's internal time is converted from the Device's time zone to the Server time zone. If Device's time zone is undefined, it's assumed to be located in owning user's time zone. If owning user's time zone is undefined too, no time conversion occurs. 8. Internally, AggreGate Server stores all date/time values in UTC. 9. When timestamps are shown to the user in AggreGate Client 776 or Web Desktop 632 , the local time in the User's time zone is used. If user's time zone is undefined all timestamps in Web Desktop 632 are shown using Server Time Zone; all timestamps in AggreGate Client 776 are shown using default time zone of the PC running AggreGate Client. 10. The Time zone defined in the operating system running AggreGate Server is used only once: to set a default time zone for the AggreGate Server. Once that's done, only the time zone defined in the server settings is used.
3.3 Users
The AggreGate Server is built as a multi-user server . Ordinarily, one person installs and manages the AggreGate Server itself, and numerous other people use it to access their Device Servers 1003 , Devices 113 and other objects like Alerts 216 , Event Filters 206 etc. These users (i.e. system operators) can all belong to the same company, or they can be paying customers who purchase AggreGate Server access from a vendor who installed AggreGate Server on his own servers. Users access the server through user accounts . Immediately following AggreGate Server installation, only a single account exists in the system, default administrator 109 . For someone to gain access to AggreGate Server using one of its User Interfaces (AggreGate Client 776 , Web Service 976 , etc), they must be authenticated and authorized by the server. The only operation that does not require prior authentication is self-registration 109 .
AggreGate Server
109
1215
Ownership
Every user account owns different system objects: Alerts 216 , Widgets 312 etc. The Contexts 863 of all these objects always exist, but a user's permission table may prevent him from accessing his own objects. Objects that are accessible by newly created users are defined by Default User Permissions 73 global AggreGate Serversetting.
Administering Users
Two contexts are used to administer users: One is the general Users 756 context, for actions related all users accounts. The other is the User 759 context, corresponding to a single user account.
The default administrator has permissions to do everything. Technically speaking, his permissions table a single record that grants him Administrator -level 932 access to all AggreGate Server contexts 863 : Context Mask * Permissions Administrator
933
contains just
The default administrator account cannot be deleted, and its permissions table cannot be edited.
alerts
216 ,
110
AggreGate Documentation
Self-registration may be securely used only in private networks where no untrusted users may access the AggreGate Server. User accounts are removed using the Delete 759 action of a User 759 context. When an account is removed, all associated Device Server Accounts, Device Accounts, Alerts and other objects are also destroyed. Account removal is a permanent operation which may not be undone. User cannot delete his own account. One of your users lost his password? See User Forgot His Password
112 !
The Users 756 context that allows to manage users is visible in AggreGate Server User Interfaces (e.g. in AggreGate Client) only if a user's permissions allow him access to more than one user account.
759 .
3.3.4.1 Properties
This property defines the basic options of a user account. Username First Name Last Name Password Country Region/State/Province/ Area ZIP Code City Address 1 Address 2 Comments Company Department E-mail Address Phone No. Fax No. Time Zone Name of user account, and also name of User 759 context. This is a read-only property which may not be changed once the account is created. First name of the account owner. Last name of the account owner. Account password that is used by user to log in. User's country. User's region. User's postal code. User's city. User's address. Second line of user's address. Additional info about the account. User's company. User's department. User's E-mail address. User's phone number. User's fax number. User's time zone settings, used to show correct time for this user. Also, Devices 113 registered under account are assumed to be located in this time zone if no time zone is explicitly specified in the Device Account. See Dealing with Time Zones 108 for more info. User's locale setting identified by a two-letter country code that affects various user interface parameters. Date pattern 1321 defines how date values are formatted when shown to the user.
AggreGate Server
111
Time pattern 1321 defines how time values are formatted when shown to the user. Controls the first day of week displayed in calendar. Possible options are Sunday and Monday.
760
variable.
761
variable.
3.3.4.3 Resources
The Resources table defined what types of resources (such as alerts, widgets, or reports) does the user have. If a certain type of resources it disabled in this table, the user's account will not have a container context 863 for resources of this type, i.e. it won't be possible to create and manage such resources. If a user already had some resources of a certain type and this type of resources was disabled in Resources table, the existing resources will not be deleted. However, those resources won't be available until the resource type will be reenabled. Disabling resources differs from disabling access 111 to these resources. If a access to certain resource or resource container is not granted in user's permissions table, other users will still be able to access and manage these resources. However, if a certain resource type is disabled in Resources table, the container and its child resources will be unavailable for all AggreGate Server users. The default availability for all resources types is globally configurable through the Default User Permissions The resources table may be accessed via the resources
762 73
table.
variable.
3.3.4.5 Permissions
This tabular property contains user's permissions table found in Security and Permissions 931 topic. Context Mask Permissio ns Mask
865 111 .
Permission level
A user may not change his own permissions. User permissions can be accessed via the permissions
761
variable.
112
AggreGate Documentation
3.3.4.6 Alerts
This property defines that popup alert notifications Notifications of alerts that are owned by the user Notifications of all alerts accessible by the user
225
759 .
Last Account Update Time Read-only property, shows when the account's basic properties
So, assuming the user johndoe forgets his password and alerts the administrator, here's what the administrator would do to reset johndoe's password to foobar: Shut down AggreGate Server (see Shutting Down the Server
47
).
Run AggreGate Server once more, with the command line argument -p johndoe foobar. johndoe's password would now be foobar and he would be able to login.
To disable user's access only to certain resources or operations, edit the User Permissions Table specify a None permission level for necessary contexts.
and
of AggreGate.
If a user account from a provider server is connected to a context tree on a consumer server, the user account itself and all resources owned by the user become available for users of the consumer server. However, users of the provider server cannot login to the consumer server using their login credentials. If consumer server users access resources of a connected provider server's user account, their effective permission level 932 for a certain provider server's resource is defined by: The provider-server-side permission level of a user the consumer server as logged in as The consumer-server-side permission level of a user that performs the operation See permissions in distributed environment
103
AggreGate Server
113
3.4 Devices
A device is any electronic equipment or other data source configured and controlled by Tibbo AggreGate. The "representation" of device within AggreGate Server is called Device Account . AggreGate Server works with different types of Devices using Device Drivers 129 . These drivers know how to "talk" to a certain device using its native protocol. Every Device Driver provide a normalized representation of one or more Device as Contexts 863 . This normalization process involves several steps: Creation of one Device Context
677
Conversion of Device internal settings and configuration options into context Variables (Properties) Conversion of control operations supported by the Device into context Functions helping to execute these functions interactively (Call Function 903 actions). Conversion of events generated by Device into context Events
880 . 878
All these operations help to provide unified methods of Device configuration, control and monitoring within AggreGate infrastructure. When a Device is represented as a context with variables, functions, and events, you can use all of AggreGate's management and monitoring features (Alerts 216 , Reports 241 , Widgets 312 etc.) to work with it.
Administering Devices
Two contexts 863 are used to administer Devices: One is the general Devices 675 context that acts as a container of all Device or a single user 108 . The other is the Device 677 context, corresponding to a single Device. There are two additional contexts related to Devices: All Devices context under the User 759 context and All Devices under the Root 726 context. These contexts provide access to grouped actions 894 for all Devices belonging to a particular user account 108 , and all Devices in the system, respectively. Related tutorials: Creating a Widget to Monitor a Device
1217 1233
Creating a Dashboard to Monitor Your Devices in Real-Time Monitoring Device Parameters Using a Chart 1239 Building a Device Status Report 1250 Adding Custom Properties
1258 1269
869 . 892
Device operations 120 available as functions 878 of Device context. AggreGate Server also creates one action every device operation for convenient interactive or non-interactive execution of them. Device events Device assets
121 113
per
, i.e. events
880
of Device context.
for building logically grouping settings, operations and events into hierarchical group tree.
The unified name of these objects is device metadata. The metadata is retrieved from a device during a full synchronization 126 .
114
AggreGate Documentation
For SNMP 173 devices, an asset is a MIB file supported by device. Disabling it disables reading of all OIDs defined in the MIB file. Each asset of a WMI 186 device is a single WMI class. If the asset is enabled, system exposes properties/methods/ events of all instances of this class. For BACnet 133 devices, root assets represent BACnet object types, while child assets match object instances. Thus, it's possible to disable processing of both whole object types and individual instances. Every group of OPC Server
168
Assets of existing device accounts may be managed via Edit Device Properties
action
property of device account is set to Read all , the assets are re-read on every
It's important to discern device setting variables from variables of a device context that match configuration properties of the device account, such as device IP address and port number. Device setting variables are read/written from/to the actual hardware device or data source, while account property variables just define server-side device communication parameters. Device setting variables some peculiarities: During initial device synchronization 126 server creates a device snapshot 115 , i.e. server-side settings cache that contains most recent values of device settings received from the hardware device or data source. Each device setting variable may have custom synchronization (polling) period, history storage duration, and other per-setting synchronization options 115 . Each device setting variable has an associated synchronization status aggregated synchronization status of the whole device account 128 .
117 .
Once a device setting variable is read by any system module or an external application, its value is retrieved from the server-side device settings cache 115 and returned. No device I/O is performed unless the setting uses direct synchronization mode 115 . Once a device setting variable is written any system module or an external application, new value is written to the server-side device settings cache and a partial synchronization 127 is requested. No synchronous device I/O is performed. In addition to configuring database 80 storage period for "raw" historical values of device setting variables, it's possible to create statistical channels 117 for aggregating them in a round-robin database to ensure compact storage and fast access. Examples of device settings: "Temperature" read-only setting of thermometer supporting Modbus TCP protocol. Tabular read-only setting of an SNMP-capable network host that represents the table of device's network interfaces. Writable "Orientation" setting of an access control terminal. The setting could be set to "Desktop" or "Wall mount".
AggreGate Server
115
677
NEW TERM: A cache is a collection of data duplicating original values stored elsewhere or computed earlier.
A cache is used when the original data is expensive (usually in terms of access time) to fetch or compute, while reading the cache is "cheap" (i.e, easy and quick). When you're viewing or editing Device settings, you're actually working with the server's cache. There is no way to edit the actual Device settings directly. New settings are written to the Device on synchronization. The Settings Cache is periodically synchronized
126
When a Device connects to the AggreGate Server; When setting values are changed in the cache (using AggreGate Client for example) while a Device is connected to the server; Periodically, as defined by the Synchronization Period
123
setting.
Every setting is synchronized according to the following algorithm: If the setting value does not exist in the server cache, it is cached (i.e. its value is read from the Device and stored in the server cache); If the setting value in the server cache was changed later than in the Device, the cached value is written to the Device; If the setting value in the Device was changed later than in the server cache, the cached value is replaced by the current value of the Device setting; Otherwise, no action is performed.
Synchronization Mode There are several synchronization modes available: Normal Synchronization . Value of setting is synchronized between AggreGate Server and Device during every synchronization cycle. Synchronization Disabled. No synchronization is performed for this setting.
Device to Server Only . Forces the server to make server-side value read-only and disable device write operations for this setting. This is useful when a device/driver report setting as writable, but the actual write operations fail (e.g. due to insufficient permissions). Direct Device Access . Value of setting is read directly from Device when it is requested by system components. If some system component tries to modify system values, changes are also written directly to the Device. With this setting, read/write operations may fail if Device I/O fails or Device returns an error. Direct Device Writes. Same as above, but applies only to write operations. Value reading is performed from the settings cache 115 , same as in Normal Synchronization mode. Use Server-Side Master Value. In this mode server-to-device synchronization is always performed for this setting. Data contained in common table specified by Master Value setting (see below) is used instead of Device-level cached value. More information is available here 262 .
116
AggreGate Documentation
Ignore Modification Time. Ignores both server-side and device-side setting modifications timestamps. Setting is synchronized from server to device if value was changed on the server and from device to server otherwise. Custom . Uses a custom synchronization handler provided by the system, if any. This mode is usually enabled automatically by the system if custom handler is available, but may be overridden by a human. Update History Storage Time If this option is set to a non-zero value (i.e. update history saving is enabled) a persistent Updated 890 event will be generated every time when setting value is modified in the server cache. This may happen if new value differing from the previous one is read from remote device or some system component modifies the cache. Updated event contains value of the variable, so its history 882 may be used as a source data for reports 241 and charts 384 . Saving of history is disabled by default to prevent avalanche-like increase of database size. If set to Changes if value read from value. All Values synchronization of Only (-1), historical value is saved (and Updated event is generated) only a device during current synchronization differs from the previous (cached) (0) option causes a historical value to be stored during every the Device setting.
History Rate
If set to any positive integer number, historical values will be saved to database only every Nth synchronization cycle, where N is value of History Rate. However, Update events are generated on every synchronization cycle and interested parties will be notified about all value changes. This option may also affect collection of statistics 936 . If Changes Only mode is active or rate is set to a high value, the statistical channel will receive few data items, and it can mark certain aggregation periods (hours, days, etc.) as "data unavailable". If Update History Storage Time is not set (i.e. history is not stored), the synchronization period is rather short and the setting itself has complex format (e.g. many fields or nested tables), setting History Mode to All Values may improve performance, since server won't load old cached value and compare it with a new one during every synchronization. Custom Synchronization Period Filter This option may be used to define a custom synchronization period for a certain setting. Default value is NULL (<Not set>), so setting value is synchronized during the full synchronization cycle. Custom period is useful when it's necessary to read some fast-changing data from the Device. If this filter expression device and server:
911
If value is being synchronized from device to server and filter expression returns FALSE, value won't be written into server cache 115 . This helps to treat some device-provided values as "bad" and drop them out. If value is being changed by system operator, server component or external system and filter expression returns FALSE, the change request fails with an error. Filter Expression Evaluation Environment
922
Current value, either taken from device or provided by system operator, server module or external system.
Standard
931
variables only.
AggreGate Server
117
Example: abs({.:temperature$celsius} - {celsius}) > 0.5 This filter expression compares celsius temperature retrieved during previus synchronization with the new value just received from a device. The synchronization is performed only if their difference exceeds 0.5 degrees, allowing to avoid chattering of server-side value. Master Value Common table
260
variable.
Ico n
Description Indicates that value was arrived from a Device and stored in the server cache.
Synchronized from Server Indicates that value was changed in the server cache and written to the Device. to Device Waiting for Synchronization Synchronization Error Synchronization Disabled Direct Device Access Indicates that the value in the server cache was changed since last synchronization but was not written to Device yet. Indicates that an error has occurred when synchronization was last attempted for this setting. Synchronization Mode
115
is set to Synchronization
Managing Channels
118
AggreGate Documentation
677
The device's statistical channels may be managed using Edit Device Properties Statistics ( ) table containing channel definitions. Each definition comprise:
Channel Name. This is a unique ID of the channel that is used to refer it, e.g. when building charts
384 .
Variable. Name of variable 869 the channel is based on. Simply speaking, AggreGate Server generates a new Primary Data Point 945 for the channel each time this variable is changed. Enabled. Controls whether the channel is active and collects data. Default channels should be disabled instead of deleting them in order to prevent their re-creation. Properties. These are parameters
938
942 ,
the Dataset summary dialog will be shown first, allowing to select a Dataset (key) to view
AggreGate Server
119
). The list of channels associated with the variable will pop up first:
937 :
And finally, select an Archive to view its detailed statistics grouped by time periods:
120
AggreGate Documentation
An alternative way of viewing device setting statistics is using global View Statistics
729
action.
Global Channels
Global server configuration defines the list of default statistical channels 73 that are applied for newly created devices. Each global channel configuration includes name of variable. If a new device has variable with such name, a new channel is created to store variable's value for this device. Channel properties are copied from the default channel definition and may be fine-tuned manually later on.
262
in Common Data
260
Once a system module or an external application requests a device function (operation) execution, the driver takes
AggreGate Server
121
function input, converts it to device's native format and sends to the hardware device with a request to execute the operation. Once the operation is complete, the driver converts device-provided reply into function output and returns this output back to the calling side. Examples of device operations: "Open door" operation of an access control terminal that activates a door relay. "Perform garbage collection" operation of a Java application connected to AggreGate using JMX protocol. "Schedule self-test" operation of a vehicle control terminal. This operation may accept a "self-test time" parameter and return a tabular test report if self-test time was set to "now".
once
Now you need to enter unique Name and Description for Device Account and specify connection parameters:
122
AggreGate Documentation
Click OK to test connection with the device. If connection cannot be established, you'll see the error dialog:
In case of error the system will allow to correct connection parameters and retry connecting. To skip connection testing and force account creation, just click on Cancel when connection properties dialog is shown for the second time. You will be able to correct connection parameters later. Once connection with device is established, the system reads definitions of assets several seconds. provided by device. It may take
113
If asset selection is not supported by device driver, this step will be skipped.
When asset reading is finished, the system shows device asset tree to the operator, allowing to select which assets will be controlled by AggreGate:
AggreGate Server
123
Click OK in the asset selector to save your choice and finish device creation. After the end of creation process new Device Context 677 representing this device in the system will be created. Here is how it looks like in System Tree 784 of AggreGate Client:
Now you will be prompted to specify synchronization device properties dialog and finish registration.
Once account registration is over, the device will be synchronized 126 with the server. After first full synchronization all device settings, operations and events will be cached 115 and made available for other system facilities, such as alerts or widgets. Device will switch into Online, Synchronized status
127 ,
Field Description
Device Name. Name of the device context 677 , required to refer to this Device from other parts of the system. It should satisfy the context naming conventions 863 . Device Description. Textual description of the Device. It may indicate Device type, location, purpose or other important characteristics. Device Type . Type of the Device. In most cases the type is auto-detected, but sometimes it may be necessary to specify it manually to enable proper processing of device data. Generic device type instructs AggreGate Server that no special processing of device data or custom communication activities are necessary. Synchronization Period. This setting defines how often full Device synchronization the server is performed. However, individual Device settings may have custom synchronization period defined by Device Settings Synchronization Options 115 .
126
Field Name
name
description
type
with
syncPeriod
124
AggreGate Documentation
Interrupt Synchronization And Reconnect On Error. Causes the synchronization process to stop if an error occurs during the synchronization of any setting. This also forces AggreGate Server to disconnect from the device and reconnect before the next synchronization. Enabling this option may be very useful when I/O or device error during synchronization of one setting will most likely repeat during synchronization of the the remaining settings. Suspend Device. Suspended Devices are never synchronized with the server. Enable Extended Status. Enables/disables extended device synchronization status
128 .
interruptOnError
Time Zone. Time zone the Device is located in. May be used by device driver for timestamp conversions, e.g. when synchronizing device internal clock with the server. Metadata Reading Mode. Defines when the server should read definitions of device settings, operations, events and assets. There are three modes: Do not read. All definitions are read just once, after the connection of the device. This mode is suitable for improving performance if the definitions of already-connected devices never change. Read definitions of settings, operations and events. This is a default mode that is suitable for most cases. Server re-reads all metadata except for assets on every synchronization cycle, reflecting changes found in the device. Asset 113 definitions are not read. Read all . In this mode, server will read full device metadata, including assets 113 , on every synchronization cycle. This mode is suitable if assets of the connected device may change at any time. This may slow down the performance if device has large number of assets. Settings Cache Mode. Defines the location of settings cache In the database
80 115 :
metadata
cache
In memory (settings will not be available after server restart until the end of first device synchronization 126 ) Device Dependency Expression. This expression 911 is evaluated before every synchronization 126 . If evaluation result is false , synchronization is not performed. dependency
922
None.
Standard
931
variables only.
It's a common practice to make device dependency expression referring to the online status of some other Device. For example, in a network management system it may be useful to disable synchronization for a group of devices that are connected to AggreGate Server through a router if the router itself is offline (i.e. not accessible). In this case, the following dependency expression may be used for each of these devices:
{users.admin.device.router:status$connectionStatus} == 0
It's possible to find out the numeric value of the Offline connection status (zero above) by browsing the selection values in the variable information for the status 682 variable of a Device context.
AggreGate Server
125
Status Expression. The expression is recalculated in the end of every synchronization 126 cycle. It should return textual description of current device status. This status can be displayed on device maps 616 , dashboards 617 , etc. To see the resulting status, check Status 682 variable of Device context.
status
922
None.
Standard
931
variables only.
Color Expression . The expression is recalculated in the end of every synchronization 126 cycle. It should return result of Color type. This color will be used to color-code the device on device maps 616 , dashboards 617 , etc. To see the resulting color, check Status 682 variable of Device context.
color
922
None.
Standard
931
variables only.
128
for details.
latitude
922
None.
Standard
931
variables only.
126
AggreGate Documentation
128
for details.
longitude
922
None.
Standard
931
variables only.
Location History Storage Period . Defines how long to keep the history of latitude/ longitude changes. Enable Offline Alert. Flag that controls whether or not a Device Offline alert generated if the Device stays in disconnected state for some time. These may be accessed via the genericProperties
680 217
locationStoragePerio d offlineAlert
will be
variable.
3.4.8 Synchronization
Device Synchronization is a periodic process allowing AggreGate Server to create and maintain a server-side Device "image" by reading Device metadata and reading/writing Device settings. Synchronization helps the following: Allow internal modules, operators and third-party systems to browse available device settings, operations and events; Enable quick access and manipulation of Device settings values. All changes to the device configuration are stored in the server-side cache 115 and written to the device on the "best effort" basis. The actual algorithm of synchronization depends on the Device driver primary steps: Establishing a connection between AggreGate Server and Device; Reading Device metadata , i.e. information about available settings, operations and events and creating appropriate variables, functions and events in Device Context 677 to access them; Synchronizing setting values between Device and server cache
115 . 129
Fully synchronized devices that doesn't have any synchronization troubles have checkmark icons: Devices with server-side configuration changes that are pending to get written into hardware have clock icons:
AggreGate Server
127
If Extended Device Status 124 setting of device account is enabled or current synchronization was explicitly requested by a system operator, device status 128 icon will show the progress of current synchronization: Connection stage is indicated by lightning icons: Metadata reading stage is indicated by looking glass icons: Setting values synchronization stage is indicated by arrow icons:
Enable Extended Device Status if you have trouble detecting current state of your device
Synchronization Types
There are three types of synchronization:
FULL SYNCHRONIZATION
This is the "standard" type of synchronization, and it includes all three steps:
Connection (only if connection isn't yet established) Device metadata acquisition Reading/writing device settings Full synchronization is performed once per device Synchronization Period
123 .
PARTIAL SYNCHRONIZATION
Partial synchronization is performed for reading/writing device settings that have Custom Synchronization Period 116 . This type of synchronization is pretty fast since is doesn't include connection (if it's already established), metadata acquisition, and reading/writing values of all device settings. Just one setting is read from or written to the device.
Partial synchronization occurs every time Custom the Synchronization Period of a certain setting elapses.
CONNECT-ONLY SYNCHRONIZATION
Connect-only synchronization forces the server to establish a connection to the device and pass authentication/ authorization. No data is usually read from or written to the device. Such synchronization helps the server to detect device connection status
127 .
This type of synchronization is performed only at server startup, and only if time passed since previous full synchronization doesn't exceed the Synchronization Period 123 .
677 .
Custom textual and color statuses (calculated according to Status Expression and Color Expression settings of device account 123 ) A combination of current connection and synchronization status is represented by Device Context state icon).
678
(context
Connection Status
Connection status indicates the whether AggreGate Server is able to communicate with the Device. Connection statuses: Unknown. Connection has not yet been tested since device account creation or server startup. Online. Connection between AggreGate Server and Device is established.
128
AggreGate Documentation
882
Offline. There is no connection between AggreGate Server and Device. Check event history of connection failure. Suspended. Device is suspended by server-side configuration or dependency attempts are performed.
124
Synchronization Status
Synchronization status shows: Overall result of last synchronization. Progress of current synchronization, if Extended Status is enabled in Device Generic Properties Synchronization statuses: Synchronized. Waiting for synchronization . Synchronization Error.
123 .
Not synchronized or synchronization in progress. Extended synchronization statuses: Connecting. AggreGate Server is attempting to connect to Device. Reading Metadata. AggreGate Server is reading information about device settings, operations and events. Synchronizing Settings. AggreGate Server is synchronizing setting values between Device and server cache
115 .
Date/time of last synchronization. I/O duration for last synchronization, i.e. time elapsed by device driver for reading/writing settings value from the hardware. Updated on Server flag that is true if setting value was updated in the server cache and new value is not yet written to the hardware. Textual description of current setting synchronization status.
AggreGate Server
129
To manually specify device position, write Latitude Expression and Longitude Expression that return floating point constants, e.g. 12.4459.
123
of the
Device settings history storage period and rate in combination with performance of the server database Number and complexity of statistical channels based on device variables The frequency of device operation
120 117 .
Number of events received from the device and stored in the server database, as well as complexity of their processing chains (such as model rules 305 processing triggered by these events).
See Device Server Plugins 1009 for the list of drivers processing Device Server data streams.
963
Driver Reference
The subsections of current section are devoted to different device drivers that are bundled w AggreGate core and diverse vertical market solutions.
Description of every driver includes the following: Section Driver Information Global Settings Notes Driver details, such as driver plugin ID, etc. Global configuration
130
of driver plugin.
130
User-level Settings User-level configuration Device Properties Device Assets Device Settings
of driver plugin.
Device-level configuration 130 of driver plugin. This includes connection settings, manually configured definitions of device resources, etc. Description of method used by the driver to define device assets
113 .
Description of method used by the driver to create variables corresponding to the hardware
130
AggreGate Documentation
device's settings. Device Operations Device Events Description of method used by the driver to create functions/actions corresponding to the hardware device's operations. Description of method used by the driver to create event definitions corresponding to the types of events provided by hardware device. This sections also illustrates how and when are the event instances received from the hardware and converted into AggreGate events. Details on how and when the driver switches the device between Online and Offline status Any information on the driver-specific peculiarities of Device synchronization process
126 . 127 .
Setting Levels
Every driver has up to three levels of settings: Global Settings. These affect the default behaviour of drivers. Global settings may be edited only by users with sufficient permissions. User-level Settings . These affect the behaviour of a driver only if it is assigned to a Device that belongs to a certain user account 108 . When the driver is communicating with a certain Device, it uses the user-level settings stored in the Device owner's account. Device-level Settings (Device Properties). These settings define how the device driver connects to the Device, communicates with it, and processes Device data. Many drivers do not use all three setting levels.
context, where they contain global settings context, where they contain user-level settings
If a given driver doesn't contain settings on one of these levels, the corresponding Device Driver Configuration context will not be created (i.e, won't exist in the System Tree). Device Level settings for a driver may be accessed using the Edit Device Properties action of a Device 677 context.
677
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.agent
Global Settings
Port number to listen for Agents. Incoming connections from Agents will be accepted on this port. Command Timeout. Timeout for commands sent using AggreGate communication protocol. Broadcast Command Timeout . Timeout for commands sent via broadcast during Agents discovery. Automatically register device accounts for new Agents . Allows Agents to tell their passwords to AggreGate
AggreGate Server
Server, and forces the server to auto-register Agent accounts if new Agents try to connect.
131
Device Properties
Password. Agent's password.
Connection Handling
This driver makes the device Online if: An Agent is currently connected to the server and passed login sequence Basic Agent operations has completed successfully
Synchronization Details
Agent driver performs synchronization following algorithm:
126
1. Reads the list of available contexts and their parent-child relationship from the Agent. 2. Creates a server context for every context found in Agent. This context allows AggreGate users to interact with Agent directly or through a variable cache 115 . 3. Synchronizing Agent's internal real-time clock with the time on the server. Time is converted to the time zone specified for the Device. 4. Reads definitions of variables, functions and events from every context available in Agent. It doesn't read the values contained within these Data Tables yet -- just their format. More about variable definitions here 870 . 5. Finds common tables settings).
120
that may be used as a "master values" for variables found in Agent (such as Device
6. Creates a property cache 115 (if this is the first time this Device is connecting) or updates it according to variable definitions read on the previous step. Only variables that belong to the group 870 named default are synchronized with the server and available for editing by users. The property cache is created only in server contexts corresponding to Device contexts in Agent. Variables corresponding to internal Agent settings are modified by the server directly, without a cache. 7. Sets up a Configure Device
677
8. Creates an appropriate action 892 for every Device context function within the default group. Such an action allows users to call the Agent function, specify its parameters and view its output. 9. Sets up a Monitor Related Events action in every context corresponding to a Device context in Agent to show all events arriving from Agent which belong to the default group. 10. Synchronizes variable values between the server cache and Agent for every context corresponding to a Device context in Agent. The exact structure of communications between Agent and AggreGate Server during synchronization is described under Communications Between Agent and AggreGate Server 853 .
CONFIGURE AGENT
This Configure 904 action is used to configure Agent itself, i.e. set parameters of defining how Agent communicates with hardware devices connected to it, how it converts the native protocol of these devices to AggreGate Communications Protocol 1303 and what variables, functions and events are provided by Agent in Device contexts 677 corresponding to these devices.
132
AggreGate Documentation
REBOOT AGENT
This action reboots programmable module that runs the Agent BASIC application. Technically, this is a Call Function action that calls reboot function from Agent's root context.
903
Agent Discovery
Agent Discovery is the process of locating all hardware Agents in the local network segment and automatically creating Discovered Agent Accounts for them. A local network segment means there are only network hubs (no routers, bridges, firewalls, etc.) between the PC and all other devices on that segment. Hardware Agents which are located behind a router (i.e, you have the computer running AggreGate Server, and to actually get to the Agent its packets need to go via a router) cannot be auto-discovered by AggreGate Server because the broadcast UDP datagrams used to find them on the network are not forwarded by the router. However, it is still sometimes possible to connect such Agents to the AggreGate Server, if they can be accessed by their IP addresses (in other words, if there is a network path to them). Each discovered Agent is uniquely identified by its MAC-address. Discovery will detect all local Agents even if some of them have the same IP-address or an IP-address which is invalid or unreachable. A correctly configured IP-address is not required for the AggreGate Server to be able to access Agents in the discovery mode. During the discovery process, AggreGate Server creates a new Discovered Agent context (account) for every Agent detected. All Discovered Agent contexts that were created during previous executions of discovery are destroyed before any new contexts are created. There's no way to "manually" create a Discovered Agent Account, only using the discovery process. If automatic discovery of Agents is not enabled and it was not launched manually, the Discovery context will not contain any Agent accounts. Discovery may be initiated by one of the two actions in Discovery context: Agents Discovery Agents Discovery and Auto-Connection
2. Automatically connecting all discovered Agents to AggreGate Server without user interaction. 3. Manually configuring discovered a Agent that was not successfully connected by the above functions. 4. Manually connecting a Agent that was not detected by the discovery process but may be accessed by AggreGate Server.
Login Password. Required if a password is defined in the settings of the hardware Agent. This password will be used by AggreGate Server to access the settings of the hardware Agent. Owner Name. Name of the AggreGate Server user 108 who will own (or already owns) an Agent Account that will be used to authenticate this hardware Agent during its login to AggreGate Server. The "Owner name" setting of the hardware Agent will be set to this value. Device Name. Name of the above Device Account this value.
113 .
Force connection even if Agent is already configured for AggreGate Server or has incompatible firmware. By default, the connection procedure fails with an error message if the Agent is already configured to connect to the AggreGate Server or has an outdated firmware version (one that doesn't fully support automated configuration for AggreGate Server). This option disables checking of the Agent setting values and its version number. The forced connection operation will complete successfully, but Agent may not be able to actually connect to the AggreGate Server or log in. If the Agent does not login to the AggreGate Server within several seconds after the forced connection procedure has been completed, configure the Agent manually (depending on the device type, this can be done using keypad/LCD or web interface).
AggreGate Server
133
3.5.2 BACnet
The BACnet Device Driver 129 allows AggreGate Server to communicate with devices supporting BACnet/IP Protocol. The BACnet is widely used in building automation and control systems for applications such as heating, ventilating, and air-conditioning control, lighting control, access control, and fire detection systems. The BACnet driver provides connectivity to equipment using the BACnet protocol over IP networks (often referred to as BACnet/IP or Annex J).
SUPPORTED SERVICES
The below list contains all BACnet services that may be accessed using the driver.
BACnet Interoperability Building Block (BIBB) DM-DDB-A DS-RP-A DS-RPM-A DS-WP-A DS-COV-A DS-COVP-A
BACnet Interoperability Building Block (BIBB) describe the services supported by a BACnet device or application ( Annex K of BACnet specification).
SEGMENTATION SUPPORT
134
AggreGate Documentation
The BACnet Device Driver 129 supports segmented requests and segmented responses. Both requests and responses support window sizes between 1 and 127 bytes.
Driver Information
Driver Plugin com.tibbo.linkserver.plugin.device.bacnet 129 ID:
Global Settings
To participate in a BACnet network, AggreGate Server emulates a BACnet device that communicates with other devices in the network. This device is called Local Device in terms of the driver. Global settings are used to set up this Local Device. Property Device ID Description The Device ID is used to uniquely identify Local BACnet device, it can be in the range of 0 to 4194304. There cannot be more than one device using the same Device ID in one network. Broadcast address mask for Who-Is request. The amount of time (in milliseconds) that the driver will wait for an I-Am response after sending a Who-Is service request. Specifies the local UDP port that the driver will bind to for all communications on the channel. The default setting is 47808 (0xBAC0). Typically, all BACnet/IP devices on an Ethernet network use the same port. This parameter specifies the time that the driver will wait for an expected response from the device before retrying or going on to the next request. The valid range is 100 to 9999 milliseconds. Stands for the same timeout as above, but for segmented requests. This parameter specifies the number of message segments that can be sent before a segment acknowledge message must be returned by the receiving party. The sender proposes a window size, and the receiver determines the actual size (which will be no larger than the proposed size). Thus, the driver will use this setting as the proposed window size for requests, and as the actual window size limit for responses from the device. Larger settings will likely increase performance on a reliable network, though smaller settings will allow communications problems to be detected earlier and corrected with fewer segments being resent. The valid range is 1 to 127. Specifies the number of times that the driver will retry a confirmed request before giving up. This parameter specifies the overall length or number of bytes of message segments that the driver will accept. The driver will attempt to read the maximum APDU length allowed by the target device on startup, and will use the smallest of the local or remote limits when sending requests. A smaller setting may be needed in order to accommodate the limitations of hardware between the driver and target device. Options include 50, 128, 206 (fits LonTalk frame), 480 (fits ARCNET frame), 1024, and 1476 (fits ISO 8803-3 frame). The largest value 1476 is generally the best choice. Limits the number of items that can be packed into Read Property Multiple requests. The actual number of items packed into a request can vary depending on how many items are due for reads or writes at a given time. Generally, the higher the value, the better the performance. For large requests or responses, however, performance gain may be diminished by message segmentation. Unfortunately, there are no general rules for determining the optimum setting. To refine a particular application, users should experiment with this setting. Devices that do not support read property multiple or write property multiple services should be set to 1. Same as above, but for devices with no transmit segmentation supported.
Timeout
Device Properties
AggreGate Server
135
CONNECTION SETTINGS
Connection settings define how AggreGate Server communicates with a certain BACnet device. The following connection properties are available:
Description There are three ways to address a BACnet device: By address/port. In this case device Instance Number is detected by sending Who-Is request to specified address/port. By device instance number. In this case IP address and port of device with specified Instance Number is detected by sending a broadcast Who-Is request to an IP range specified by Broadcast Address global setting. Combined. May be used for communicating with devices that do not support Who-Is identification. In this case, both address/port and instance number must be specified.
Address of a BACnet device to connect to. An IP port of device to connect to. An identifier of a remote device.
Device Assets
The driver creates one root asset for every BACnet object type supported by the device. Each asset's children match to the individual instances of this object found in the device.
Device Settings
The BACnet Device Driver 129 creates one Device setting variable per every discovered property of every BACnet Device's object. The variables are divided into several groups. Properties of the Device Object are put in a Basic Properties group. All other settings are divided into groups by Object Type: Analog Input, Analog Output, etc. In every Object Type group, a new subgroup is created for every Object Instance if it has properties of corresponding type.
Device Operations
The BACnet Device Driver
129
SUBSCRIBE COV
This function allows to subscribe/unsubscribe from object's Change of Value (COV) notifications. COV facility allows the driver to receive notifications upon changes of remote BACnet object's property. If an object provides COV reporting, then changes of certain object's properties trigger sending COV notifications to subscribed clients. After successful subscription the Device Driver a COV notification.
129
115
upon receiving
There are some risks related to using COV subscriptions. These are problems intrinsic to event-based systems, such as unexpected link failure problems, lost subscriptions on device reset, etc. Critical data items should be periodically polled in addition to receiving their updates via COV notifications. Format of the function input parameters has the following fields: Name subscribe Type Boolea n Long Description Flag indicating whether subscription or unsubscription should be performed.
subscriberProces sIdentifier
It is a numeric "handle" meaningful to identify the subscription within the driver. Do not use the same process identifier for different subscriptions. The same identifier should be used later to unsubscribe from COV notifications.
136
AggreGate Documentation
monitoredObjectI dentifier
DataTa ble
Holds the identifier of the object within the receiving device for which a subscription is desired. There are two fields: objectType instanceNumber
Boolea n Long
Defines whether the device should issue ConfirmedCOVNotifications or UnconfirmedCOVNotifications when changes occur. The desired lifetime of the subscription. A value of zero shall indicate an indefinite lifetime, meaning no automatic cancellation. A non-zero value indicates the period of time before the subscription will be automatically canceled.
The function has no output parameters. For more information about COV subscriptions see ALARM AND EVENT SERVICES: SubscribeCOV Service section of BACnet specification.
subscriberProcess Identifier
It is a numeric "handle" meaningful to identify the subscription within the driver. Do not use the same process identifier for different subscriptions. The same identifier should be used later to unsubscribe from COV notifications.
monitoredObjectI dentifier
DataTa ble
Holds the identifier of the object within the receiving device for which a subscription is desired. There are two fields: objectType instanceNumber
Boolea n Long
Defines whether the device should issue ConfirmedCOVNotifications or UnconfirmedCOVNotifications when changes occur. The desired lifetime of the subscription. A value of zero shall indicate an indefinite lifetime, meaning no automatic cancellation. A non-zero value indicates the period of time before the subscription will be automatically canceled. Identifies the property whose changes should be tracked.
Integer
Float
The minimum change in the monitored property that will cause a COVNotification to be issued by a BACnet device. This parameter is ignored if the BACnet type of the monitored property is not REAL.
READ PROPERTY
This function is used to request value of a single property of a certain BACnet Object. The function has the following input parameters: Name Type Description
AggreGate Server
137
objectIdentifier
DataT able
Identifies the object whose property is to be read and returned in the response. There are two fields: objectType instanceNumber
propertyIdentifier
Intege r Long
propertyArrayInde x
If the referred property is an array, this optional parameter indicates the array index. If it is omitted (i.e. NULL) the entire array should be read.
The function output is value of a referenced property. Its format depends on property type. You can use Read Property and Read Property Multiple functions to read proprietary propertyIdentifier parameter to desirable property index. properties. Simply set
WRITE PROPERTY
The function is used to modify the value of a single property of a BACnet object. Format of the function input parameters:
138
AggreGate Documentation
Name objectIdentifier
Description Identifies the object whose property is to be read and returned in the response. There are two fields: objectType instanceNumber
propertyIdentifier
Integ er Long
propertyArrayInd ex valueType
If the referred property is an array, this optional parameter indicates the array index.
String
BACnet value type. This parameter makes sense only in interactive function call mode. It is used to set the format for the parameter below. New property value.
value
priority
An integer in the range 1-16, which indicates the priority assigned to this write operation. For more information about priorities see BACnet PROCEDURES: Command Prioritization section of BACnet specification.
Device Events
No events provided by the driver.
Connection Handling
This driver makes the device Online if: Local BACnet Device successfully created and initialized. A remote BACnet device identified itself during Who-Is/I-Am exchange (if Addressing Method device connection setting is not Combined). The following properties of the remote Device Object were successfully read: Max APDU Length Accepted, Segmentation Supported, Vendor Identifier (if Addressing Method device connection setting is Combined)
Synchronization Details
Synchronization between AggreGate Server and BACnet Device includes the following steps: Reading remote device's supported services and creating appropriate device operations. Recognizing all objects present in the remote device by reading Object List property of Device object of remote BACnet unit. Discovering properties of all found objects. The BACnet driver combines two strategies for discovering object properties: requesting the Object to return all its properties; reading every property defined in BACnet specification for the appropriate Object Type. The first strategy allows to discover proprietary object properties if a device has them, while the second one will discover only standard BACnet properties. Proprietary properties can be discovered during synchronization if a device supports special property identifier ALL in ReadPropertyMultiple service. All device settings have read/write access, but the device itself can restricts write access to them. In case of trying to
AggreGate Server
set a write-protected variable, a Write Access Denied error will be generated by the device.
139
allows AggreGate Server to monitor web servers and web pages (URLs).
A web server is a computer program that delivers (serves) content, such as web pages, using the Hypertext Transfer Protocol (HTTP), over the World Wide Web. HTTP driver provides monitoring of any web server (Apache, IIS, etc.) by checking whether a monitored device accepts HTTP(S) requests and responds with correct pages. The driver supports GET and POST requests, authorization and other options for HTTP(S) requests.
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.http
Global Settings
None defined.
Device Properties
CONNECTION PROPERTIES
Connection settings define how AggreGate Server communicates with a certain HTTP server. These settings can be accessed using Edit Device Properties 677 action of the Device Context. Here is a list of available connection properties: Setting Address Protocol Port URL Request Type Post Data Enable Authorization Username Password Use Client Certificates Keystore File Keystore Type Keystore Password Additional HTTP Headers Description IP address or host name of the HTTP server. HTTP or HTTP Secure (HTTPS). Port the HTTP server is running on. Path to a monitored resource located on the specified HTTP server. Two HTTP request methods are currently supported: GET and POST. Data to be submitted with POST request, in the string form. Enables realm authorization (if it's required). User name to be used for authorization. Password for authorization. Enables usage of client certificates to authenticate on the server if HTTPS protocol is used. Path to keystore file contaning the client certificates. This is a local filesystem path on the machine running AggreGate Server. Keystore file type: JKS or PKCS12. Password decrypting keystore file (optional). Additional information to be included in request header. Specified as a table with the following fields: Header Name Header Value Agent Timeout User agent string. HTTP server operations timeout.
140
AggreGate Documentation
Device Settings
HTTP device driver creates the only Device setting variable indicating the result of HTTP request. This variable includes the following fields that may be analyzed using different AggreGate modules:
Property Successful Response Time, milliseconds Reply Code Headers Reply Error
Description Indicates that web server monitor had no error during last page read. Server response time. HTTP response code. HTTP response headers table. HTTP response body, i.e. web page contents. Error text, or NULL if request was successful (even if HTTP response code is not 200/OK).
Device Operations
Execute HTTP Request. This operations sends a raw HTTP GET or POST request to the device and returns the output. Input values include URL, request method, POST data and additional HTTP headers. Values returned are success flag, response time, HTTP reply code, headers, returned page text and error text.
Device Events
No events provided by the driver.
Connection Handling
HTTP device is deemed Online if no error occurred during connection and HTTP request execution, and valid HTTP response was obtained.
Synchronization Details
HTTP monitor connects to the IP host, sends an HTTP request built using provided configuration (port, URL, request type and data, HTTP headers, agent, timeout) and analyzes the response. If authentication is enabled in the settings and Basic Access Authentication is required to access a web page the driver also sends an authorization request.
MBean Queries
MBean queries allow selecting multiple MBeans of the equal format. Each query results to a table that lists all properties of selected MBeans in its columns, one MBean instance per row.
AggreGate Server
141
asterisk (*) or question mark (?). The asterisk matches any sequence of zero or more characters, while the question mark matches any single character. If the domain is empty, it will be replaced in certain cases by the default domain of the MBean server. The key properties are an unordered comma-separated set of keys and associated values. Each key is a nonempty string of characters which may not contain any of the characters comma (,), equals (=), colon, asterisk, or question mark. The same key may not occur twice in a given query. The key properties list may contain a single asterisk element (*) which means that MBeans selected by the query may contain any number of other (unspecified) properties. Example: java.lang:type=GarbageCollector,* This MBean query lists all MBeans in java.lang domain that have type property those value equals to GarbageCollector. Those MBeans may have any number of other properties with any values. Each value associated with a key is a string of characters that is either unquoted or quoted. An unquoted value is a possibly empty string of characters which may not contain any of the characters comma, equals, colon, quote, asterisk, or question mark. A quoted value consists of a quote ("), followed by a possibly empty string of characters, followed by another quote. Within the string of characters, the backslash (\) has a special meaning. It must be followed by one of the following characters: o Another backslash. The second backslash has no special meaning and the two characters represent a single backslash. o The character 'n'. The two characters represent a newline ('\n'). o A quote. The two characters represent a quote, and that quote is not considered to terminate the quoted value. An ending closing quote must be present for the quoted value to be valid. o A question mark (?) or star (*). The two characters represent a question mark or star respectively. Some other MBean query examples:
*:type=Foo,name=Bar to match names in any domain whose exact set of keys is type=Foo,name=Bar. d:type=Foo,name=Bar,* to match names in the domain d that have the keys type=Foo,name=Bar
plus zero or more other keys.
*:type=Foo,name=Bar,* to match names in any domain that has the keys type=Foo,name=Bar plus
zero or more other keys.
d:type=F?o,name=Bar will match e.g. d:type=Foo,name=Bar and d:type=Fro,name=Bar. d:type=F*o,name=Bar will match e.g. d:type=Fo,name=Bar and d:type=Frodo,name=Bar. d:type=Foo,name="B*" will match e.g. d:type=Foo,name="Bling". Wildcards are recognized even inside quotes, and like other special characters can be escaped with \.
A quote, question mark, or star may not appear inside a quoted value except immediately after an odd number of consecutive backslashes. Spaces have no special significance in an MBean query. For example, the string domain: key1 = value1 , key2 = value2 represents an query with two keys. The name of each key contains six characters, of which the first and last are spaces. The value associated with the key " key1 " also begins and ends with a space. No part of a query may contain a newline character ('\n'), whether the domain, a key, or a value, whether quoted or unquoted. The newline character can be represented in a quoted value with the sequence \n.
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.jmx
Global Settings
None defined.
142
AggreGate Documentation
Device Properties
CONNECTION PROPERTIES
Connection properties define how AggreGate Server communicates with a JMX server. These settings may be accessed using the Edit Device Properties 677 action of Device Context. The following connection properties are available: Property Host Port Username Password Custom Service URL Ignore Attributes Producing Read Errors Description IP address of host name to connect to. Port to connect to. Username to use for authentication. Password to use for authentication. Custom URL of JMX service. Service URL already includes host and port, so Host and Port settings are not used if it's specified. If enabled, no setting variables will be created for the MBean attbitutes that has generated read errors during MBean meta-data analysis (e.g. first attribute read attempt).
MBEAN QUERIES
This property contains a table of MBean queries Property Name Description Query Description Name of Device setting variable that will contain query results. Description of Device setting variable that will contain query results. Text of the query.
140 :
Device Assets
The driver creates one root asset for every MBean instance provided by the MBean server. The list of MBeans available on a JMX host may change at any time. To force the server re-reading list of MBeans (assets) on every synchronization, switch Metadata Reading Mode 124 setting of a JMX device account to Read all .
Device Settings
JMX device driver creates one Device setting variable per every attribute of every discovered MBean. These variables are grouped by MBean names and/or descriptions to facilitate navigation. Additionally, one setting variable is created per every query defined in MBean Queries table. This tabular variable lists properties of MBeans selected by the query.
Device Operations
JMX device driver creates one Device context function and action per every operation provided by every discovered MBean. These actions are grouped by MBean names and/or descriptions to facilitate navigation.
Device Events
JMX device driver creates one Device context event definition per every notification type of every discovered MBean. The driver automatically adds a notification listener for every notification and generates a AggreGate Server event when a notification is received.
Connection Handling
This driver makes the device Online if: TCP connection to a JMX host was successfully established JMX RMI connector authentication and authorization did not fail
AggreGate Server
143
Synchronization Details
Synchronization between AggreGate Server and JMX host includes the following steps: Reading a list of available MBeans. Reading information about attributes provided by every MBean. Reading information about operation provided by every MBean. Reading information about notifications provided by every MBean. Reading/writing values of all attributes. Executing all MBean queries and reading attributes of all MBeans matching those queries. Subscribing to the notifications.
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.file
Global Settings
None defined.
Device Properties
Local file monitoring can be configured using the following properties: Field Name Path Read Contents Incremental Reading Field Description Specifies the file location (full path). Enables/disables reading of the file contents. Switches between reading the whole file and incremental reading. Incremental reading is ideal for log file analysis. If it's enabled, the server remembers previous file size and, during the next synchronization cycle, reads data starting from the previous end point to the end of file. If the file size has not grown since the previous cycle, no reading is performed. If file size has decreased, the reading is restarted from file start (this is suitable to handle log file rotation. Maximum number of bytes that the server will read if incremental reading is enabled.
Backlog Read Size Number of bytes to include from previous steps of incremental reading. Allow Editing Calculate Checksum Allows or prohibits modification of the file contents. Enables/disables file checksum calculation.
Device Settings
Local File device driver creates two Device setting variables: Variable Name attributes Variable Description File Attributes Comments Contains the file attributes:
144
AggreGate Documentation
Last Modification Time (modificationTime) Size (size) Checksum calculated using Adler-32 algorithm ( checksum) contents File Contents Read-only (if Read Contents 143 option is on) or editable (if Allow Editing 143 option is also on) file contents.
Device Operations
No operations provided by the driver.
Device Events
No events provided by the driver.
Connection Handling
If all I/O operations with the file have finished successfully, the local file Device is deemed "online". If no file exists at the path specified, or any error was encountered while accessing the file, the local file Device is considered "offline".
Synchronization Details
As Local File is a Device Driver 129 , it performs a "synchronization 126 " with AggreGate Server like any other driver. During synchronization, attributes and contents of the file are obtained. Also, if editing is allowed and a user has edited server copy of file contents, the new contents are written to the file.
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.folder
Global Settings
None defined.
Device Properties
Local Folder driver checks the existence of the folder, acquire folder attributes, load and inspect folder contents (files and subfolders). Contents of a folder can be analyzed recursively (including subfolders) or non-recursively. Besides that, the items to be processed can be filtered using wildcard or regular expression. This can be configured using the following properties: Field Name Path Read Contents Recursive Files To Include Field Description Specifies folder location, i.e. full path. Enables/disables reading of folder contents. If disabled, only contents of the specified folder will be analyzed. Otherwise, all its subfolders will be processed recursively. Specifies filter for folder items. The options are to process all files and folders, or to select only those satisfying specified regular or wildcard expression.
Device Settings
AggreGate Server
Local Folder device driver creates two Device setting variables: Variable Name Folder Attributes Variable Description attributes Comments Contains the following attributes: Last Modification Time (modificationTime)
145
Size, i.e. total size of all files selected according to Recursive and Files To Include options ( size) File count, i.e. total number of files selected according to Recursive and Files To Include options (fileCount) Folder Contents contents List of folder items (files and subfolders) with the following fields: Type Relative Path Size
Device Operations
No operations provided by the driver.
Device Events
No events provided by the driver.
Connection Handling
If all I/O operations with the folder have finished successfully, the local folder Device is deemed "online". If no folder exists at the path specified, or any error was encountered while accessing the folder, the local folder Device is considered "offline".
Synchronization Details
Local Folder Devices are synchronized 126 with AggreGate Server like any other Device. During synchronization, attributes and contents of the folder are obtained.
3.5.7 Modbus
The Modbus Device Driver 129 allows AggreGate Server to communicate with devices supporting Modbus Protocol. These devices may be connected to the system and, like with all other types of devices, their data is converted into a unified form, so they can be accessed from different AggreGate facilities. See Devices 113 article for more information about the "normalized" representation of devices in Tibbo AggreGate. The Modbus driver supports both network versions (Modbus TCP and Modbus UDP) and serial versions (Modbus RTU, Modbus ASCII and Modbus BIN) of the protocol. Modbus serial devices should be connected to the COM ports of the PC running AggreGate Server. To connect Modbus serial devices to an IP network, use Tibbo's programmable module (such as DS1206) running the Modbus Converter application.
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.modbus
Global Settings
None defined.
146
AggreGate Documentation
Device Properties
CONNECTION SETTINGS
Connection settings define how AggreGate Server communicates with a certain Modbus device. These settings may be accessed using the Edit Device Properties 677 action of Device Context. The following connection properties are available: Property Modbus Version Unit ID IP address or host name Port Encoding Baud Rate Incoming Flow Control Outgoing Flow Control Data Bits Stop Bits Parity Timeout Retries Reconnect on every command Description A choice of Modbus TCP, Modbus UDP and Modbus Serial. Modbus Unit ID. Identification (address) of a remote slave connected on a serial line or on other buses (e.g. RS485). Address of Modbus device (for Modbus TCP/UDP). Modbus device port (IP port number defaulting to 502 for Modbus TCP/UDP; Serial port name for Modbus Serial). A choice of RTU, ASCII or BIN (for Modbus Serial). Baud Rate (for Modbus Serial). Incoming flow control type: None, CTS/RTS, or XON/XOFF (for Modbus Serial). Outgoing flow control type: None, CTS/RTS, or XON/XOFF (for Modbus Serial). Serial data bits (for Modbus Serial). Serial stop bits (for Modbus Serial). Serial parity (for Modbus Serial). Command timeout (default is 5 seconds). Number of retries for each command. Forces every Modbus TCP transaction to be performed in a separate connection.
DEVICE REGISTERS
This property contains a list of Modbus device registers that are accessed and managed by AggreGate. Once a new Modbus device is added, one or more registers have to be configured to make device data available for the system. Each Modbus register is represented by a single variable 869 of Device Context 677 . Modbus devices do not provide metadata, so AggreGate Server cannot learn about available Modbus registers of a particular device. That is why it's necessary to configure Device Registers manually. Here is a list of properties of each Modbus register: Property Name Description Type Format Register Address (decimal) Size Description Register name. This will be used as a Device Context it may contain only letters, digits and underscore.
677
Register textual description. Will be used as the description of the Device Context variable. Modbus register type. Possible values are Coil, Discrete Input, Input Register and Holding Register . Defines how to interpret value of one or more adjacent Input or Holding Registers. See type conversion 147 section for details. Address of the Modbus register in decimal form. Number of registers to read by a single modbus I/O operation and store in one AggreGate Server context variable. It may be useful to read multiple registers at once in the following cases:
AggreGate Server
147
If they logically represent an array If they logically represent a string If they logically represent different parts of a complex data item that should be read in one atomic operation The actual number of registers read in a single I/O operation will be N * M, where N is the number of registers required to hold one AggreGate Server-side value depending on Type and Format M is the value of Size parameter For example: if Type is Input Register, Format is 8-byte Float, and Size is 4, server will read 32 registers and represent them as a 4-element array (single-column Data Table 854 ) with Floating point numbers if Type is Holding Register, Format is Varchar, and Size is 64, server will read 64 registers and as a single-cell Data Table containing String value. This setting has the default value of 1. The default should not be changed in most cases. You can import the list of registers from a file (e.g. CSV file) by using Import 801 component.
801
If you wish to connect several similar Modbus devices to AggreGate, you could fill in the Device Registers table only once and then copy it to other devices using the Replicate 909 action.
Device Settings
Modbus device driver creates one Device setting variable per device register.
TYPE CONVERSION
The following table shows how Modbus Registers are converted to Device context variables. Note that number of rows in each variable depends on the value of Size parameter. By default, all variables are single-row, i.e. scalar. Register Type Coil Discrete Input Input Register Format N/A N/A 2-Byte Int Unsigned 2-Byte Int Signed 4-Byte Int Unsigned 4-Byte Int Signed 4-Byte Int Unsigned Swapped 4-Byte Int Signed Swapped 4-Byte Float 4-Byte Float Swapped 8-byte Int Signed 8-byte Int Signed Swapped 8-byte Float AggreGate Server Variable Format Readable/Writable, 1 Column of type Boolean Read-Only, 1 Column of type Boolean Readable/Writable, 1 Column of type Integer Readable/Writable, 1 Column of type Integer Readable/Writable, 1 Column of type Integer Readable/Writable, 1 Column of type Integer Readable/Writable, 1 Column of type Integer Readable/Writable, 1 Column of type Integer Readable/Writable, 1 Column of type Integer Readable/Writable, 1 Column of type Integer Readable/Writable, 1 Column of type Long Readable/Writable, 1 Column of type Long Readable/Writable, 1 Column of type Float
148
AggreGate Documentation
Readable/Writable, 1 Column of type Integer Readable/Writable, 1 Column of type Integer Readable/Writable, 1 Column of type String. Server reads number of registers specified by Size parameter and represents them as a string that will always have 64-characters length. Readable/Writable, 1 Column of type String. Server reads number of registers specified by Size parameter and represents them as a string. This string will be terminated by the first zero-value register. Same to Input Register with equal Format, but Read-Only.
Varchar
Holding Register
Any
Device Operations
No operations provided by the driver.
Device Events
No events provided by the driver.
Connection Handling
This driver makes the device Online if: Serial port was opened successfully (for Modbus Serial devices) TCP connection with the device was successfully established (for Modbus TCP devices) Always (for Modbus UDP devices)
Synchronization Details
Synchronization between AggreGate Server and Modbus device includes the following steps: Creating a Settings Cache device register.
115
according to the Device Registers list. Each variable is used to access a single Modbus
Reading Modbus register values and storing these values in settings cache.
3.5.8 Modem
The modem Device Driver 129 allows AggreGate Server to control a GSM modem or any other modem that is based on AT command set. Modem devices are often used to send SMS messages in response to alerts 216 .
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.modem
Global Settings
None defined.
AggreGate Server
149
Device Properties
CONNECTION SETTINGS
Connection settings define how AggreGate Server communicates with a modem. These settings may be accessed using the Edit Device Properties 677 action of Device Context. The following connection properties are available: Property Mode IP address or host name Port Baud Rate Incoming Flow Control Outgoing Flow Control Data Bits Stop Bits Parity Timeout Description A choice of TCP, UDP and Serial. Address of the modem (for TCP/UDP mode). Modem listening port (for TCP/UDP mode) or name of serial port the modem is connected to (for Serial mode). Baud Rate (for Serial mode). Incoming flow control type: None, CTS/RTS, or XON/XOFF (for Serial mode). Outgoing flow control type: None, CTS/RTS, or XON/XOFF (for Serial mode). Serial data bits (for Serial mode). Serial stop bits (for Serial mode). Serial parity (for Serial mode). Command timeout (default is 5 seconds).
COMMANDS
This property contains a list of modem commands that will be periodically sent to the modem on every synchronization 126 cycle. Last reply to each command will be available as a single variable 869 of Device Context 677 . The commands table if pre-filled with commonly used modem status commands.
Here is a list of properties of each modem command: Property Name Description Command Wait for Standard Reply Description Command name. This will be used to name the Device Context reply, so it may contain only letters, digits and underscore.
677
Command textual description. Will be used as the description of the Device Context variable. The text of command to sent (should include "AT" prefix for most commands). If enabled, wait until the modem replies with OK. If disabled, stop receiving reply once a newline character is received.
If you wish to connect several similar modem devices to AggreGate, you could fill in the Commands table only once and then copy it to other devices using the Replicate 909 action.
Device Settings
Modem device driver creates one Device setting variable per every command found in the Commands table. The variable contains text of reply received from modem.
Device Operations
SEND SMS
This operation is used to send an SMS message via connected GSM modem. It prompts user to enter recipient's number and SMS text first.
150
AggreGate Documentation
Add Send SMS action to an alert's automatic corrective actions when the alert is raised.
232
Device Events
SMS
Fired when AggreGate Server receives an incoming SMS message. Event Name Permissions: Records: Record Format
Field Name sender text
855
sms
932
Connection Handling
This driver makes the device Online if connection with modem was successfully established and it has replied OK to two commands: ATE0 and AT.
Synchronization Details
Synchronization between AggreGate Server and modem device includes the following steps: Creating a Settings Cache modem command.
115
according to the Commands list. Each variable is used to access the reply to a single
Properties
Operations
SNMP
SNMP Results
SNMP Operations
174
Generic TCP Service Settings Generic UDP Service Settings HTTP Settings DNS Settings POP3 Settings
156 157 158
Generic TCP Results Generic UDP Results HTTP Results DNS Results POP3 Results IMAP Results
156 157 158
HTTP Operations
140
AggreGate Server
151
SMTP
159
158
159 159
SMTP Results
160
159
E-mail Round-Trip Settings FTP Server Settings Traceroute Settings SSH Settings
163 164 165 166 160 162
Traceroute SSH
163 164 165 166
SSH Operations
164
DHCP LDAP
Radius WMI
186
Radius Results
WMI Operations
187
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.ip
Global Settings
Global settings defined by Network Host driver are presented in the Global Settings column of Network Host Services table 150 .
Device Properties
Network Host driver properties define configuration parameters used by AggreGate Network Manager to monitor corresponding network host. Most of the properties present settings of services supported by Network Host driver. They are presented in the Configuration Properties column of Network Host Services table 150 . Other Device properties are: Host Address (address) property. It specifies IP Address or Host Name of the network host to be monitored. Connection Status Expressions (connectionStatusExpressions) property. It defines how does each service affect the online status of the whole network host.
Device Assets
IP host assets are divided in two root groups: SNMP assets and WMI assets: If SNMP service is enabled, one asset is created for every SNMP MIB file supported by the device. Supported MIB files are detected automatically by polling the SNMP agent. If WMI service is enabled, one asset is created for every available WMI class.
Device Settings
Network Host device settings are: Host status Monitoring results for services enabled on this network host. Refer to Monitoring Results column of Network Host Services table
150 .
Device Operations
152
AggreGate Documentation
150 .
Device Events
Network hosts can generate two different types of events: Service Outages (described below) and SNMP Notifications (described in SNMP device driver 174 chapter).
SERVICE OUTAGE
This event is generated by a service once if goes back "online" after a certain period of downtime.
outage
932
The outage event has the following format: Field Name Field Type
String Date Long String
Notes
Service that was down. Outage start date and time. Outage duration in seconds Outage reason.
Connection Handling
The Network Host driver has a configurable Online/Offline status detection policy. This helps to bring the device account offline if a certain service experiences a user-defined operability problem. The status detection configuration is performed through the Connection Status Expressions table. Each line of this table describes a service or custom formula that affects online status of the network host device. The table has three fields: Comment. This field is a human-readable description of the table record. Enabled Expression. An expression 911 that defines whether the record is "active", i.e. really affects device status. The expression should return a Boolean value (true/false). If it returns false, the record is deemed disabled and doesn't affect connection status of the network host. Connection Status Expression. An expression 911 that defines current "connection status" of the service, i.e. whether the service is available and has no errors. This expression should return a Boolean value (true/false) or null. If it returns true or false, the corresponding service is deemed online or offline respectively. If the expression returns null, the connection status of the service is considered unknown. The Connection Status Expressions table is analyzed on the end of every synchronization 126 cycle. Records those Enabled Expression return false are skipped. After that, connection status of the network host is calculated upon Connection Status Expression result of remaining records: If at least one Connection Status Expression returns null, the connection status of the network host is deemed Unknown Otherwise if at least one Connection Status Expression returns false, the network host is deemed Offline Otherwise the network host is deemed Online This example shows how to modify the HTTP service configuration to bring the network host offline if an HTTP reply code is not 200 (Successful):
Comment: HTTP Enabled Expression: {httpSettings$enabled} Connection Status Expression: hasVariable({.:}, 'http') && {http$successful} && {http$replyCode} != 200
AggreGate Server
Statuses of individual services may be checked using Configure Device
677
153
action.
Synchronization Details
Network Host driver uses synchronization procedures of particular services enabled for the monitored device. Refer to the appropriate service subsection for detailed synchronization descriptions.
Operation
Refer to Ping Settings
153
Ping services performs ping request and adds its results to a cache. The size of the cache is defined by service configuration. The oldest results are removed from the cache when it's size is exceeded. Ping service is denoted Offline if several consecutive requests fail. The number of the requests considered is defined by Number of failed Echo Requests activating offline status configuration parameter. In other words, if any of the most recent requests was successful the services is deemed Online. The cached results are used to calculate ping statistics: average round-trip time, packet loss rate and last round-trip time. See also Ping Monitoring Results 153 subsection.
Description Enables/disables ping for this host. If no reply is received within this time period, ping attempt is considered as failed. Size of ICMP packet data (excluding headers). To calculate Packet Loss Rate, AggreGate Server takes several last ping results specified by this setting, and calculates percentage of failed requests. Number of consecutive failed ping attempts that will change connection status 152 of network host to Offline.
Property Successful
Description Indicates that at least one of most recent requests was successful. Number of requests considered is defined by Number of failed Echo Requests activating offline status configuration parameter 153 . Average round-trip time for of a number of non-failed ping attempts specified by Number of Echo Requests for Packet Loss Calculation property. Percentage of failed ping attempts. Number of Echo Requests for Packet Loss Calculation property defines how many ping attempts are used for calculation. Round-trip time of last non-failed ping attempt.
Average Round-Trip Time, milliseconds Packet Loss Rate, % Last Round Trip Time, milliseconds
154
AggreGate Documentation
Synchronization Details
Generic TCP Service status is checked during synchronization. The service is deemed Online if all configured services/ ports are online. Status of particular TCP service is checked using one of the three procedures: TCP connection checking immediate reply checking (without sending any data) sending data and checking the reply Effective check procedure is determined by Send Data property as described below.
CONNECTION CHECK
Connection check is performed if Send Data is not specified, i.e. is null. The following operations are performed in this case: 1. A TCP connection is established to the associated port of the device. 2. Response is immediately read. The check is deemed succeeded if connection was successfully established. Response is included in result data record, but does not affect status of the service.
AggreGate Server
155
Send Data
Raw data to send, in the string form. Default value is null. This value determines service status check procedure, see Generic TCP Service Monitoring section 154 for details.
Description Indicates that connection with a service was established without errors. Connection or data transfer error, or NULL is there were not errors. Service response time. Reply received from a service, in the string form. NULL if no reply were received or error occurred.
Network Host device driver supports availability/operability monitoring for UDP services of any kind (hence the term "generic" used here). Several UDP services can be configured to be monitored at a particular IP host.
Synchronization Details
Generic UDP service monitoring is very similar to Generic TCP service monitoring 154 except that UDP (User Datagram Protocol) is connectionless. Therefore the monitoring procedure for a particular UDP service is confined to sendingreceiving cycle: 1. Data specified in service configuration is sent to the provided port of the IP host. 2. A reply is awaited. Is some data is received within the specified timeout it is included in result data record. The procedure is executed for every configured service/port. A particular service is considered Online if send and receive operations were successful. The whole Generic UDP Service is deemed Online if all configured services/ports are online.
Field
Description
156
AggreGate Documentation
Port number used to send data to. Indicates that the reply was successfully received. Data transfer error, or NULL is there were not errors. Reply received from a service, in the string form. NULL if no reply were received or error occurred. Service response time.
Synchronization Details
The DNS monitor can be configured to send several lookup requests. Each request comprises Record Type and Host Name to resolve. Service executes all the specified lookup requests and acquire result responses. The service is deemed Online if all the requests were successfully executed.
has the following settings presented by DNS Monitoring (dnsSettings) variable: Description Enables/disables DNS server monitoring. Port number the DNS server is running on. Communication protocol: UDP or TCP . Timeout for DNS operations. DNS requests to execute. Request properties: Request Type: A , AAAA, CNAME, NS or MX. Request: host name to include in request.
Description Indicates that all requests were successfully executed. Detailed results for particular queries:
AggreGate Server
157
Description Request data (host name), read-only. Request type, read-only. DNS server response text (usually IP address or host name). NULL if there were errors. Error text, or NULL if no error occurred while executing request.
Synchronization Details
POP3 monitor connects to specified mail server and performs authentication using parameters specified in service settings 157 . Then it requests size of INBOX folder and messages count in it. If all the operations were performed successfully the service is deemed Online and message statistics are stored as monitoring results 157 . If an error is encountered the service is denoted as Offline and the error text is saved in monitoring results.
Description Enables/disables POP3 server monitoring. Port number the POP3 server is running on. Timeout for operations. User name to use for logging in to mailbox. Password to use for logging in to mailbox.
Description Indicates that there were not errors during last mailbox check. Number of e-mails in the mailbox. Total size of all e-mails in the mailbox (raw size, includes headers). Error text, or NULL if no error occurred during last check.
158
AggreGate Documentation
Synchronization Details
IMAP monitor connects to IMAP server, performs authentication and fetches message count and total size of all messages from a specified folder. Required parameters are specified as service settings 158 . If a connection with the IMAP server was established without errors and message statistics was successfully obtained, the service is deemed Online. Otherwise error message is saved and service is denoted Offline. Refer to IMAP Monitoring Results 158 section for their detailed description.
Property Enabled Port Timeout, milliseconds User Name Password Folder Check Recent Messages Only
Description Enables/disables IMAP server monitoring. Port number the IMAP server is running on. Timeout for operations. User name to use for logging in to mailbox. Password to use for logging in to mailbox. Folder to check (optional, use default folder is not selected). When enabled, only unread messages are included to the mailbox statistics.
Description Indicates that there were no errors during last mailbox check. Number of e-mails in the mailbox, or number of unread messages if Check Recent Messages Only flag is set. Total size of all e-mails in the mailbox (raw size, includes headers), or total size of unread messages if Check Recent Messages Only flag is set. Error text, or NULL if no error occurred during last check.
Synchronization Details
SMTP server is monitored by establishing a connection with the server and passing its authorization procedure. No email messages are actually sent. Refer to SMTP Service Setting 159 subsection for its configuration details. If connection and authorization are successfully performed the service is deemed Online. Otherwise it is marked as
AggreGate Server
Offline and error message is saved in SMTP monitoring results
159 .
159
Description Enables/disables SMTP server monitoring. Port number the SMTP server is running on. Timeout for operations. User name to use for logging in to mailbox. Password to use for logging in to mailbox.
Description Indicates that there were not errors during last SMTP server check. Error text, or NULL if no error occurred during last check.
Synchronization Details
The idea behind this kind of monitoring is to ensure that the e-mail messages are successfully delivered through the monitored server. To perform this, round-trip monitor generates and sends a test message. During the next synchronization the service checks that the test message has been dropped to the incoming mailbox. All test messages are removed from the incoming mailbox right after the check. The send/receive operations are performed in every synchronization cycle. Sender and recipient addresses and e-mail retrieving protocol to be used are specified as service settings
159 .
E-mail round-trip monitor uses SMTP service settings 159 for sending outgoing test emails. The sender and recipient of these emails are defined in E-mail-round trip service configuration 159 . A user can select either POP3 or IMAP protocol to be used for retrieving previously sent messages. E-mail round-trip monitor uses POP3 service settings test emails.
157
158
E-mail round-trip service is deemed Online if test emails are being sent and received successfully. If send/receive operations fail due to an error or previously sent test message was not found in the mailbox, service is marked as Offline. The errors encountered during sending and receiving operations are saved in monitoring results 160 .
Property
Description
160
AggreGate Documentation
Enables/disables E-mail round-trip monitoring. The protocol for managing incoming messages. An e-mail address to be specified in the FROM field of test e-mail message. An e-mail address of the recipient the test message is addressed to.
159 ,
and POP3
157
or IMAP
158
Description Indicates that there were not errors during last SMTP server check. Sending error text, or NULL if no error occurred during sending test message. Receiving error text, or NULL if no error occurred during retrieving test message.
Synchronization Details
FTP monitoring configuration settings are described in FTP Service Settings The following operations are performed during synchronization: Connection to FTP server is established. Authentication procedure is passed. Server status information is obtained and saved in monitoring results. File is located using path specified in parameters. File timestamp (which is usually its last modification time) and size (in bytes) attributes are obtained. Disconnection is performed. All these operations should be successfully finished to make the service Online. Server status and file information are stored as monitoring results 161 . If any of the operations fails the server is deemed Offline. Error encountered during synchronization is saved in the monitoring results. Note that a path specified in service configuration should refer to a regular file (i.e. not point to a directory or include wildcard characters). If monitor is unable to find the file using specified path the FTP service is deemed Offline.
160
subsection.
Description
AggreGate Server
161
Enabled Port User Name Password Path Read Contents Incremental Reading
Enables/disables FTP server monitoring. Port number the FTP server is running on. User name to use for authentication. Password to use for authentication. Path of file or folder to be monitored (optional). Defines whether the above file/folder contents should be read. Switches between reading the whole file and incremental reading. Incremental reading is ideal for log file analysis. If it's enabled, the server remembers previous file size and, during the next synchronization cycle, reads data starting from the previous end point to the end of file. If the file size has not grown since the previous cycle, no reading is performed. If file size has decreased, the reading is restarted from file start (this is suitable to handle log file rotation.
Maximum number of bytes that the server will read if incremental reading is enabled. FTP server operations timeout.
Description Indicates, that ftp server monitor had no errors during last file read. Error description, or NULL if there were no errors. FTP server status reply. Table containing attributes of monitored file or all files in the monitored folder: file name, size and last modification time. Contents of the monitored file.
Traceroute monitoring service implements traceroute functionality providing an ability to test an IP network host availability/reachability. This may help to detect and diagnose various network problems. The traceroute monitor supports both known traceroute implementation methods: using ICMP echo requests and UDP datagrams. The network route traced during monitoring is available for analysis by any of AggreGate data processing facilities. For example, it's possible to trigger an alert if number of hops exceeds a threshold, or hop N has a certain IP address.
Synchronization Details
Traceroute service synchronization includes the following steps: 1. Basic traceroute procedure is executed by sending ICMP or UDP datagrams from local to destination host. Starting with time to live (TTL) field of datagram set to 1 and subsequently incrementing it, information about intermediate network nodes (hop) is collected. The process stops either if the destination host is reached or if max number of hops is encountered. The traceroute procedure uses parameters specified as service settings 162 . 2. The collected information is processed and analyzed producing monitoring results
162
The Traceroute service is deemed Online if both steps a successfully performed and destination host was reached with the specified number of hops. Otherwise service is denoted as Offline and error message is saved in monitoring results.
162
AggreGate Documentation
For example, under Windows Vista/Seven, you need to perform the following steps: Go to Start Menu > Control Panel > Administration > Windows Firewall with Advanced Security Select Inbound Rules in the left pane Select New Rule... in the right pane Select For port and click Next Select TCP and All local ports, then click Next Click Next in Action and Profile dialogs (all profiles should be selected) Enter any filter name and click OK Double-click on the newly created rule in the main pane Switch to Protocols and ports tab and select ICMPv4 in Protocol type combo box Click OK to close the dialog.
Property Enabled Protocol Maximum Packets per Hop Maximum Number of Hops Timeout, milliseconds
Description Enables/disables traceroute. Switches between ICMP (standard traceroute method on ICMP packets) and UDP (Van Jacobson's Traceroute algorithm on UDP packets) traceroute methods. Number of retries for contacting each hop. If destination host was not reached within this hop count, traceroute is interrupted. Timeout for every traceroute packet.
Description Indicates that traceroute procedure was completed successfully and destination host was reached. Error that occurred while tracing route or processing results, if any. Detailed traceroute results (i.e. the route to host). For each hop the following information is presented:
Description IP address of the host hop. Host name of the hop, if resolved by reverse DNS. Hop response time. Error that occurred while contacting a hop, if any.
AggreGate Server
163
Synchronization Details
SSH monitor performs the following operations during synchronization: 1. Establishes connection to the SSH server. 2. Authenticates using name and password specified by service settings
163 .
3. [Optional] Uploads script to the remote host. Script is specified in the settings' Script field as an explicit text or a file. Monitor first tries to upload script using scp; if the attempt fails it creates file using echo commands. 4. [Optional] Executes uploaded script using sh command. Script execution output is intercepted and saved in monitoring results 164 . 5. Closes connection. If all the operations are executed successfully the SSH service is deemed Online. If no script is specified in service parameters (i.e. Script field is NULL) steps 3 and 4 are omitted; thus, only connection, authentication and disconnection operations are performed. If an error was encountered during execution the service is denoted as Offline and error message is saved in Error field.
is installed in
Description Host address Port number the SSH server is running on. Timeout for SSH operations. User name to use for authorization. Password to use for authorization. Script specified as explicit text or as a file; may be NULL.
Description Indicates that no error occurred during connection to SSH server, authorization, and remote script execution. Error text, if any. Output of a remote script.
Property
Description
164
AggreGate Documentation
Enables/disables SSH monitoring and remote script execution. Port number the SSH server is running on. User name to use for authorization. Password to use for authorization. Private key to use for authorization. The key should be inserted in text format. For example, RSA key normally starts with -----BEGIN RSA PRIVATE KEY----- prefix and ends with -----END RSA PRIVATE KEY----- suffix. Password for the private key decryption. Script specified as explicit text or as a file; may be NULL. Timeout for operations.
Description Indicates that no error occurred during connection to SSH server, authorization, and remote script execution. Error text, if any. Output of a remote script.
Synchronization Details
DHCP monitor sends a DHCPDISCOVER message to the monitored server and waits for an answer. The message includes MAC address specified in DHCP configuration settings 164 . If an answer is successfully received within a specified timeout the service is deemed Online. An IP address server replied with is stored in monitoring results Otherwise the service becomes Offline and error message is saved in results.
165 .
Description Enables/disables DHCP monitoring. Client hardware (MAC) address to be used in the request. (It should be a AggreGate server MAC address for most cases.) Timeout period to wait for the service to reply.
AggreGate Server
165
Description Indicates that the DHCP request were successfully sent and a correct reply received. Error text, if any. IP address (a value in the yiaddr field of DHCP message -- refer to RFC 2131 for details) the service replied.
Synchronization Details
LDAP monitor executes the following synchronization procedure: 1. Connection to server is established using settings specified
165 .
2. Search request is constructed using specified context name and filter parameters, and executed. Example: Search with Context Name set to "cn=Users,dc=host,dc=domain,dc=com" in Microsoft Active Directory server should return children of "Users" node, i.e. users registered at the host.domain. com. Adding "cn=SQL*" as Query Filter will limit the result set to users having name started with "SQL". 3. Connection is closed. Service is deemed Online if all the operations are successfully executed; search results are saved. If an error occurs it is stored in monitoring result and service is marked as Offline.
Property Enabled Port Username Password LDAP Query Context Name LDAP Query Filter
Description Enables/disables LDAP monitoring. Port number the LDAP server can be connected on. User name utilized for authorization. Password used for authorization. Distinguished name of context to search in. The filter expression to use for the search (according to RFC 2254). The value may be null or empty, in which case it is just ignored by the search.
Property Successful
166
AggreGate Documentation
Error text, if any. A table presenting all the strings returned from server as an LDAP search result.
Synchronization Details
RADIUS monitor performs authentication procedure (see RFC 2138) using parameters specified in configuration settings 166 : an Access-Request is constructed and sent to monitored host. If a response is received within specified timeout period and the response packet type is Access-Accept the service is deemed Online. If an error occurs it is stored in monitoring results and service is denoted Offline.
Property Enabled Authentication Port Username Password Radius Secret Timeout, milliseconds
Description Enables/disables Radius monitoring. A port number used to send authentication request to. Authentication user name. Authentication password. A secret used by RADIUS protocol to obfuscate passwords. Timeout period to wait for the service to reply.
Description Indicates that the LDAP search was successfully performed. Error text, if any.
AggreGate Server
GPGLL. Geographic Position Latitude/Longitude GPGSA. GPS DOP and active satellites GPGSV. Satellites in view GPRMC. Recommended Minimum Navigation Information GPVTG. Track Made Good and Ground Speed Garmin Proprietary talker : PGRME . Estimated Position Error PGRMF. Position Fix Sentence PGRMT . Sensor Status Information PGRMV. 3D Velocity
167
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.nmea
Global Settings
None defined.
Device Properties
CONNECTION SETTINGS
Connection settings define how AggreGate Server communicates with a certain NMEA device. These settings may be accessed using the Edit Device Properties 677 action of Device Context. The following connection properties are available: Property Port Baud Rate Incoming Flow Control Outgoing Flow Control Description Serial port name. Baud Rate. Incoming flow control type: None, CTS/RTS, or XON/XOFF. Outgoing flow control type: None, CTS/RTS, or XON/XOFF.
Device Settings
The following Device settings are provided by NMEA device driver:
NMEA DATA
This tabular setting contains values of all NMEA statement fields. It has the following format: Field Name Age Description Name of field Time passed since the value was received from the NMEA device. Note that age is time between receiving the value from the device and the last synchronization does not include time passed since the last synchronization. This effectively means that Age will increase if no NMEA data is being received or value of field
126 .
It
168
AggreGate Documentation
became empty inside the most recent NMEA statements. Value Field value string (exactly as it appears inside an NMEA statement)
The below list shows supported field names and their positions inside NMEA statements: GPGGA,utc,latitude,northHemi,longitude,eastHemi,quality,numberOfSatellites,horDilution,height,, geoidalHeight,,diffCorrection,diffStationId, GPGLL,latitude,northHemi,longitude,eastHemi,utc, GPGSA,mode,fixtype,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,posDilution,horDilution,verDilution, GPGSV,gsvnum,gsvcur,satInView GPRMC,utc,status,latitude,northHemi,longitude,eastHemi,speedOverGroundKnots,courseOverGround, utcdate,magnVariation,magnVarDirection, GPVTG,courseOverGround,,magnCourse,,speedOverGroundKnots,,speedOverGround, PGRME,HPE,,VPE,,EPE, PGRMF,GPSWeek,GPSSeconds,utcdate,utc,GPSLeapSecondCount,latitude,northHemi,longitude,eastHemi, mode,fixType,speedOverGround,courseOverGround, PGRMT,GPSModel,romChecksum,recvFailure,storedDataLost,timeLost,oscillatorDrift,dataCollection, boardTemperature,boardConfig PGRMV,eastVelocity,northVelocity,upVelocity,
LOCATION
Device location: latitude and longitude.
Device Operations
No operations provided by the driver.
Device Events
No events provided by the driver.
Connection Handling
This driver makes the device Online if the serial port was opened successfully.
Synchronization Details
This driver constantly receives and parses NMEA statements pushed by the device. Any supported statement with valid checksum is stored by the driver internally to make the most recent data available at the time of next synchronization. During synchronization
126 ,
driver uses its internal data to fill in the NMEA Data table and Location setting.
AggreGate Server
169
To see the quality of all items at once, open Settings Synchronization Status tab of device status quality is shown in Synchronization Status column:
910
dialog. Item
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.opc
Global Settings
None defined.
Device Properties
OPC SERVER CONNECTION PROPERTIES
Connection settings define how AggreGate Server communicates with a certain OPC Server. These settings may be accessed using Edit Device Properties 677 action of Device Context. Here is a list of available connection properties: Setting Host Domain User Password Application Class ID (CLSID) Description IP address or host name of OPC Server. Name of OPC Server's Windows Domain (optional). Name of Windows User Account used to access the OPC Server using DCOM. Password of Windows User Account. Class Identifier of the OPC Server. (E.g. F8582CF2-88FB-11D0-B850-00C0F0104305)
170
AggreGate Documentation
Programmatic Identifier of OPC Server. (E.g. Matrikon.OPC.Simulation.1) Timeout for OPC server operations. Name of item group used for adding OPC items controlled by AggreGate Server. Should be set to Auto-generation in most cases.
It it sufficient to specify either CLSID or PROGID of the OPC Server, not both of them.
Device Assets
Hierarchical structure of assets provided by the OPC device driver exactly matches tree-like structure of OPC item groups.
Device Settings
OPC device driver creates one Device setting variable for every OPC server item.
TYPE CONVERSION
The following table shows how OPC types are converted to AggreGate types OPC Type VT_BOOL VT_BSTR VT_NULL VT_EMPTY VT_INT VT_I1 VT_I2 VT_I4 VT_UI1 VT_UI2 VT_UI4 VT_DECIMAL VT_DATE VT_I8 VT_R4 VT_R8 VT_CY AggreGate Type Boolean String String String Integer Integer Integer Integer Integer Integer Integer Integer Date Float Float Float Float
856 :
Device Operations
No operations provided by the driver.
Device Events
No events provided by the driver.
Connection Handling
This driver makes the device Online if:
AggreGate Server
TCP connection to an OPC server was successfully established DCOM authorization did not fail
171
Synchronization Details
OPC Servers are synchronized 126 with AggreGate Server like any other Devices. Synchronization between AggreGate Server and OPC Server includes the following steps: Reading information about settings provided by OPC Server and creation of Settings Cache into several groups, according to OPC Server's internal division. Reading OPC Server setting values and storing these values in settings cache.
115 .
action of OPC Server's Device Context provides additional information about OPC Server status:
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.samba
Global Settings
None defined.
Device Properties
SMB/CIFS device account is configured by the following properties: Field Name Address Path Read Contents Recursive Field Description IP Address or host name of the SMB server. Location (full path) of a remote file or folder to be monitored. Enables/disables reading of the file contents. Enables/disables recursive reading for folders.
172
AggreGate Documentation
Incremental Reading
Switches between reading the whole file and incremental reading. Incremental reading is ideal for log file analysis. If it's enabled, the server remembers previous file size and, during the next synchronization cycle, reads data starting from the previous end point to the end of file. If the file size has not grown since the previous cycle, no reading is performed. If file size has decreased, the reading is restarted from file start (this is suitable to handle log file rotation. Maximum number of bytes that the server will read if incremental reading is enabled.
Backlog Read Size Number of bytes to include from previous steps of incremental reading. Allow Editing Calculate Checksum Enable Authentication Username Password Allows or prohibits modification of the file contents. Enables/disables file checksum calculation. Enables/disables access to password-protected resources. Username to use for authentication. Password to use for authentication.
Device Settings
SMB/CIFS device driver creates the following Device setting variables: Variable Name attributes Variable Description File Attributes Comments This variable is created only if Path points to a file. Contains the file attributes: Last Modification Time (modificationTime) Size (size) Checksum calculated using Adler-32 algorithm ( checksum) attributes Folder Attributes This variable is created only if Path points to a folder. Contains the folder attributes: Last Modification Time (modificationTime) Size (size) File Count (fileCount) contents File Contents This variable is created only if Path points to a file. It contains read-only (if Read Contents 143 option is on) or editable (if Allow Editing 143 option is also on) file contents. contents Folder Contents This variable is created only if Path points to a folder. List of folder items (files and subfolders) with the following fields: Type (itemType) Relative Path (itemPath) Size (itemSize)
Device Operations
No operations provided by the driver.
Device Events
No events provided by the driver.
AggreGate Server
173
Connection Handling
The SMB/CIFS device will be deemed online if the following steps was successfully completed: Connection to the remote server was established Authentication was successful (if enabled) The remote resource specified by Path setting exists and is available All I/O operations with the resource (e.g. file/folder content reading or writing) was successfully completed
Synchronization Details
During synchronization
126
of an SMB/CIFS device with the server, the following operations are performed:
If the Path points to a file, attributes and (optionally) contents of the file are obtained If the Path points to a folder, attributes of the folder and list of files located in this folder and (if Recursive is enabled) its subfolders are retrieved If editing is allowed and a user has edited server-side copy of file contents, the new contents are written to the file
and event (
178 Trap/Inform
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.snmp
Global Settings
See SNMP Global Settings
178 .
Device Properties
Device properties define SNMP communication parameters for the particular device. They comprises: Host Address (address) property that specifies IP Address or Host Name of the network host to be monitored Polling Settings
176
that are used to periodically obtain current status of the SNMP device (poll
175
it).
Device Assets
The driver creates one root asset for every MIB file supported by the device. Supported MIB files are detected automatically by polling the SNMP agent. Assets for MIBs that are marked as Default in MIB Directory will be enabled automatically.
Device Settings
SNMP device settings present results of the last polling operation
176 .
174
AggreGate Documentation
Device Operations
Get SNMP Variables. This operations serves for pulling values of raw SNMP OIDs from the device. The connection settings defined in device account are used. Set SNMP Variables. This operations serves for pushing values of raw SNMP OIDs into the device. The connection settings defined in device account are used.
Device Events
SNMP devices generate two different types of events: Service Outage (indicating SNMP downtime as described in Network Host device driver 152 chapter) and SNMP notification (see below).
SNMP NOTIFICATION
SNMP driver generates events on reception of SNMP notifications (both traps and informs). Refer to SNMP Notifications Monitoring 178 section for details. Since SNMP driver listens for the notifications from all network hosts (not only hosts that match to a certain Device account 113 ), the Trap events are generated in the Network Management context instead of Device context 677 .
trap
932
The trap event has the following format: Field Name Field Type
String String String String
Notes
SNMP Agent Address, i.e. IP address of the object generating the trap. Trap version. Trap type (Trap or Inform). Enterprise. Corporation or organization that originated the trap. This is the object identifier (OID) assigned to the vendor implementing the agent. Equals to the value of the sysObjectID variable, and it is unique for each implementer of an SNMP agent. Generic Trap Type ID. Integer, see table below. Specific Trap Type ID. Defined when Generic Trap Type is set to Enterprise. Trap OID.
timestamp
Date
Elapsed time, in hundredths of a second, from the last reinitialization of the agent to the event generating the trap. Variable Bindings. Extra information, dependent on generic-trap type.
variableBindin gs engineID
The following Generic Trap Type ID values are defined for genericTrap field: Value 0 Name coldStart Description The agent is reinitializing. Configuration data or MIB variable values, or both, might have changed. Restart the measurement epochs.
AggreGate Server
175
1 2 3 4 5 6
The agent is reinitializing but configuration data or MIB variable values have not changed. The agent has detected that a known communications interface has been disabled. The agent has detected that a known communications interface has been enabled. A message was received that could not be authenticated. An Exterior Gateway Protocol (EGP) neighbor was lost. Vendor-specific trap. Specific Trap Type ID should be defined.
Connection Handling
This driver makes the device Online if SNMP polling operation reports no errors.
Synchronization Details
The synchronization procedure executes SNMP polling operations, refer to SNMP polling
175
procedure.
176
The synchronization procedure uses parameters specified in SNMP Settings two types of synchronization that can be applied to monitored devices.
178
Converting SNMP device settings into AggreGate Server Context Variables Storing obtained data in settings cache. Refer to SNMP Polling Results monitoring results are presented by device driver driver.
176
115 .
The SNMP monitoring service is considered Online if all operations are successfully performed. Any error encountered during synchronization is saved in monitoring results and renders the service Offline. Notice that SNMP walk operation provides a list SNMP variables along with their values. Thus no additional steps are required to synchronize particular variables. On the other hand, SNMP walk is a long operation. Therefore it is not performed during the very first device synchronization. Thus, service just checks that SNMP communications is supported by the managed device and quickly reports the result as service status. Full synchronization is issued right after the first synchronization completes. This method eliminates long synchronization delays for newly added devices.
PARTIAL SYNCHRONIZATION
If there is no need to re-read all the device metadata and merely several known variables should be refreshed full synchronization is not performed. Instead, only these variables are polled using SNMP get operations and device cache is updated accordingly.
176
AggreGate Documentation
SNMP devices:
Command Retries Number of request retries to be send before SNMP operation fails. Command Timeout, milliseconds Maximum PDU size, bytes Data To Process Timeout for SNMP requests.
Maximum size of Protocol Data Unit (PDU) sent by AggreGate Server. Commonly used values are 484 (should be supported by any SNMP device) and 1472 (supported by most devices). Defines, what kind of SNMP variables should be read and processed. The allowed values are: Value All values available in MIB directory All values found by SNMP walk (slow!) Description Only the values whose descriptions are found MIB Files Directory used. All unrecognized SNMP OIDs will be ignored.
178
are
All the values found during SNMP walk operations will be used. This may slow synchronization operation and increase server memory utilization.
An OID used to check device availability (connection status) and initiate SNMP walk operations during device synchronization. By default, this is .1.3.6. SNMP v3 security configuration. There are three available security levels: Authentication disabled, privacy (encryption) disabled Authentication enabled, privacy (encryption) disabled Authentication enabled, privacy (encryption) enabled
User Name Authentication Protocol Authentication Password Privacy (Encryption) Protocol Privacy (Encryption) Passphrase
User name for SNMP v3 authentication and privacy (encryption). MD5-based authentication or SHA-based SNMP v3 authentication. Password for SNMP v3 authentication. DES-based encryption or AES-based encryption for SNMP v3 .
Field Successful
Description Indicates that SNMP communications are supported by the managed device and last synchronization procedure was successful.
AggreGate Server
177
Error
SNMP polling results are presented as Device setting variables according to the following rules: If a group of OIDs represent SNMP Table, one tabular device setting variable is created for them. In all other cases, one device setting variable is created per OID.
setting
If full MIB data is not found, variable description includes symbolic name for recognized part of OID followed by numeric unrecognized part. Full variable OID is also included in parentheses. For example: iso.org.dod.
internet.mgmt.mib-2.icmp.27.1.5.1.0
(1.3.6.1.2.1.5.27.1.5.1.0)
AggreGate Type String Long String Integer Long Long String Long Date String
178
AggreGate Documentation
There are two types of notification requests defined by SNMP standards: Trap requests and Inform requests. Both types of notification requests are supported by AggreGate Network Manager. SNMP notifications monitoring is controlled by global configuration 178 options of SNMP driver. Listening for notifications is enabled by turning on Receive SNMP Notifications option. If this option is enabled, AggreGate Server listens for SNMP notifications on the specified port (see SNMP Notifications Listening Port). Notifications will be received from any SNMP device either via UDP or TCP protocol depending on the SNMP Notifications Transport Protocol. For SNMP version 3 secure notifications the specified Local Engine ID will be used. SNMP driver may receive SNMP notifications from SNMP agents and converts them to context events here 152 . Record associated with the AggreGate event presents notification's properties.
880
as described
SNMP notification event's data can be used to monitor important events on your network, analyze them and react accordingly.
settings
table
setting
AggreGate Server
179
Description Description of a MIB file. MIB file data. Defines how descriptions of device setting variables are formed. There are three choices: By MIB symbol name (default) By first sentence of MIB symbol description (sentences are assumed to be delimited by dots) By first line of MIB symbol description Correct value of this setting depends on the structure of MIB file and may be different for MIB files of different hardware manufacturers. The default value of this setting shows names of MIB symbols in variable descriptions, but it's always possible to see the full symbol descriptions by checking variable help (detailed description). This help is usually shown in tooltips in AggreGate Server User Interfaces. Here is an example screenshot from AggreGate Client 776 :
Enabled
If this option is off, MIB file is not loaded on server startup and not used to obtain information about device settings. If other MIB files depend to the disabled MIB file, their loading may fail.
If this option is on, MIB is denoted as default. It will be enabled automatically in assets list. Read-only flag indicating whether the MIB was loaded successfully and is being used by the driver. This field contains MIB loading and compilation errors, if any.
The MIB files that are denoted as loaded in this table are actually used by SNMP driver to get information about SNMP device settings and traps.
180
AggreGate Documentation
The information in the SNMP User Table is presented in the following format: Field Username Authoritative Engine ID Security Level Description User name Engine ID. This field can be left blank. In that case AggreGate Network Manager will try to discover it as specified by SNMPv3 standard. One of the three standard security levels: Authentication disabled, privacy (encryption) disabled Authentication enabled, privacy (encryption) disabled Authentication enabled, privacy (encryption) enabled Authentication Protocol Authentication Password Privacy (Encryption) Protocol Privacy (Encryption) Password MD5-based or SHA-based SNMPv3 authentication. Password for SNMPv3 authentication. DES-based or AES-based SNMPv3 encryption.
AggreGate Server
Executing dynamically generated insert/update/delete queries.
181
It's necessary to add at least one "probe" query to ensure database operability checking. If no queries were added, the driver will establish connection upon the first synchronization cycle 126 and do nothing during subsequent synchronizations, providing no reliable database availability and operability data. It's always possible to use a very simple test query, such as SELECT 1 or SELECT 1 FROM table.
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.database
Global Settings
None defined.
Device Properties
DATABASE CONNECTION PROPERTIES
Property Database URL Description This is a database-specific string that defines the database type, the path (local or network) to a database to execute queries on and any additional options. To figure out the correct value for your selected JDBC database driver, please consult its documentation. This property defines which username is used to log on to the database server. This property defines which password is used to log on to the database server. Table containing advanced properties of database connection. The table has two columns: Property and Value . The list of supported properties can be found in JDBC driver documentation.
QUERIES
This is a tabular setting defining what queries will be executed using a database server. Field Name Description Expressions Read Query Description Name of device setting variable containing query result. Description of device setting variable containing query result. Forces treating Read Query and Write Query fields as expressions resolve to actual SQL query strings.
911 .
Text of SQL selection query, or expression text if Expressions flag is set. Read query execution result will be accessible within AggreGate as a device setting variable.
Write Query
Text of SQL insert/update/delete query, or expression text if Expressions flag is set. If this field is non-empty, variable containing Read Query execution result will be writable (editable). Its modification will trigger execution of the Write Query.
182
AggreGate Documentation
If Write Query is an expression, it may refer to the Data Table containing Read Query result. This is a default table for references 925 inside this expression.
Device Settings
Database device driver creates one device setting variable per Queries table record. Format of this variable is dynamic, depending on the result of Read Query execution. In addition, Database Statistics variable is created with the following fields: Database Name Database Version Database Driver Name Database Driver Version
Device Operations
EXECUTE QUERY
This action lets you execute an arbitrary query on the database. Both select and update queries are supported.
Device Events
No events provided by the driver.
Connection Handling
This driver makes the device Online if JBDC connection to the database was established successfully.
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.virtual
Global Settings
None defined.
Device Settings
The virtual device provides different types of settings to help with testing Alerts 216 , Reports system features. Here is a list of available settings (variables 869 of Device Context):
241 ,
Widgets
312
and other
BASIC PROPERTIES
Setting (Variable) Name normal readonly selvals Comments
Standard string setting. Read-only string setting. String setting with selection values.
AggreGate Server
183
eselvals nullable
String setting. Integer setting Boolean setting. Floating point setting. Date setting. Tabular setting with two fields (Integer and String) and unlimited number of records.
LOCATION
Setting (Variable) Name track Comments
GPS track in GPX format. This track will be "replayed" by the device, meaning that a new waypoint (taken from the first track found in the file) will be written into Location setting upon every synchronization. Simulated location of the device (latitude and longitude). The location is undefined if GPS track was not loaded or its "replay" was ended.
location
WAVE SETTINGS
Read-write settings in these group define how different read-only values in Waves group are generated (period, amplitude, etc.). Setting (Variable) Name sawtoothSettings triangleSettings squareSettings sineSettings randomSettings Comments
Sawtooth wave generator settings. Triangle wave generator settings. Square wave generator settings. Sine wave generator settings. Random value generator settings.
WAVES
Setting (Variable) Name sawtooth triangle square sine random Comments
Sawtooth wave generator. Triangle wave generator. Square wave generator. Sine wave generator. Random value generator.
ERROR GENERATORS
184
AggreGate Documentation
Comments
Should Generate Error. This setting define whether errors occur while reading/writing the Error Generator setting. Error Generator. Read/write operations on this setting may fail depending on the value of Should Generate Error setting.
677
Device Operations
GENERATE EVENT
Virtual device context has generateEvent function and corresponding Generate Event Call Function 903 action that calls this function. Format of this function has three fields: String type field, String str field, and Integer int field. This function just generates the event with name specified by type field (Event 1 or Event 2, see below). Values of fields in event data are taken from input parameters of function.
CALCULATE
calculate function and corresponding Calculate Call Function 903 action provide a test environment for performing simple operations (addition, subtraction, multiplication or division) over two arguments. Format of this function has three fields: Float leftOperand field, Float rightOperand field, and String operation field. This function returns a Data Table with a single record and Float result field.
Device Events
The virtual device context has two events 880 called event1 (its description is Device Event #1) and event2 (Device Event #2). Format of these event has two fields: String field str and Integer field int . These events and generateEvent function may be used together to test Device operations and events.
Connection Handling
A virtual device is always deemed Online.
3.5.16 WebSphere MQ
The WebSphere MQ Device Driver 129 allows AggreGate Server to perform monitoring of IBM WebSphere MQ server operability. The monitoring is performed via the native MQ communication protocol over an IP network.
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.mq
AggreGate Server
185
Global Settings
None defined.
Device Properties
CONNECTION SETTINGS
Connection settings define how AggreGate Server communicates with an MQ server. These settings may be accessed using the Edit Device Properties 677 action of Device Context. The following connection properties are available: Property IP address or host name Port Channel Timeout Description Address of the MQ server. Port to connect on the MQ server (default is 1414). Name of MQ channel to connect (default is ADMIN.CONN). Operation timeout (default is 30 seconds).
Device Settings
The MQ device driver provides three tabular read-only settings: Channels. This table contains information about every channel provided by MQ server, including channel name, type, status, start time and incoming/outgoing traffic volume. Queues. This table contains information about every queue provided by MQ server, including queue name, depth, last get/put time, maximum and average message ages, counts of open inputs/outputs, and number of uncommitted messages. Listeners. This table contains information about every listener provided by MQ server, including listener name, description, status, start time, backlog, and command/session counters.
Device Operations
No operations provided by the driver.
Device Events
No events provided by the driver.
Connection Handling
This driver makes the device Online if connection with MQ server was successfully established.
Synchronization Details
Synchronization between AggreGate Server and MQ server includes the following steps: Reading the list of channels available on the MQ server and fetching information about each individual channel. Reading the list of queues available on the MQ server and fetching information about each individual queue. Reading the list of listeners available on the MQ server and fetching information about each individual listener.
186
AggreGate Documentation
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.wmi
Global Settings
None defined.
Device Properties
CONNECTION PROPERTIES
Connection settings define how AggreGate Server communicates with a certain WMI computer. These settings can be accessed using Edit Device Properties 677 action of the Device Context. Here is a list of available connection properties: Setting Address Domain User Password Namespace Asset View Description IP address or host name of a WMI computer. Windows Domain name (optional). Name of Windows User Account used to access WMI via DCOM. Password of the Windows User Account. A WMI namespace. Driver supports two types of asset view representation: Flat view, i.e. a plain list of WMI classes available at the device. Tree view representing hierarchy of WMI classes. To apply this option for an existing device, you should invoke Reset Device Driver action.
Timeout
WQL REQUESTS
The WQL Requests table defines queries that can be used to retrieve fine-grained information from WMI device: certain properties of objects or objects that meets specified conditions.
AggreGate Server
187
Description Request name. Request description. Forces treating WQL Request field as expression query string. WQL query text.
911 .
Device Assets
For each WMI class driver creates an asset of the same name. By enabling an asset, user asks driver to fetch all the instances of a corresponding class. Most assets are disabled by default, just few often-used classes are enabled.
Some WMI classes may have thousands or even millions of instances. Enabling these classes may cause device synchronization slowdown and exceeding resource consumption. Use WQL requests to fetch data precisely.
Device Settings
WMI device driver creates Device setting variables as follows: For each enabled asset (WMI class) it creates a variable of the same name. For each query defined in WQL Requests table it creates a variable of the same name. The WMI Event variable that stores information about WMI event subscriptions is created.
Device Operations
WMI driver creates a Device context function and a corresponding action for every method provided by enabled WMI classes. These actions are grouped by class names. When invoked, WMI action requests object path and method parameters, then calls the method for the object, converts output and displays it as a result table.
Device Events
WMI driver allows to monitor WMI events. Subscription for WMI events is performed by adding WQL Event Requests in Device properties. Driver subscribes for and/or unsubscribes from event notifications when this table is changed.
Connection Handling
WMI driver makes the device Online if: connection to a DCOM server on the specified computer using user name, domain and password provided is established access to the specified WMI namespace is acquired using the DCOM connection.
Synchronization Details
WMI devices are synchronized steps:
126
with AggreGate Server like any other Devices. Synchronization includes the following
188
AggreGate Documentation
Reading assets definitions (if they were not read yet or were reset). Each asset element relates to a WMI class of the same name.
Device metadata acquisition: o For each enabled asset driver fetches definition of a corresponding WMI class including its properties and methods specifications. o For each query specified in the WQL Requests table driver creates a variable that will contain results. o Adds a WMI Events variable that controls all WMI event subscriptons specified in the WQL Event Requests table. Reading/writing device settings: o Driver reads properties of all instances for classes defined by assets. o Writes changed properties of WMI objects back to managed device. o Executes all WQL requests putting fetched data in the query variables. o Manages WMI event subscription according to the WMI Event variable.
Class and property qualifiers (Key, Write, Abstract, etc.) are used to refine conversion.
AggreGate Server
189
Configure DCOM
WMI uses DCOM to handle remote calls. Therefore, DCOM should be accessible remotely for the specific user. Refer to Configuring DCOM for Remote Access 1327 for details.
Registry Permissions
Set full access permissions for the WMI monitoring user to the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet \Control\SecurePipeServers\WinReg branch. If WMI device synchronization with a Windows server fails for a with an Access Denied error, do the following on the remote machine: Run Registry Editor ('regedit.exe'). Find registry key: 'HKEY_CLASSES_ROOT\CLSID\{76A64158-CB41-11D1-8B02-00600806D9B6}'. Right-click it and select 'Permissions'. Change key owner to ' administrators' group. Give 'Full Control' permission for 'administrators' group. Change key owner back to TrustedInstaller ("NT
Service\TrustedInstaller")
Repeat the above operations for all registry keys named {76A64158-CB41-11D1-8B0200600806D9B6} (e.g. HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID \{76A64158-CB41-11D1-8B02-00600806D9B6} and all other). Those keys can be found by searching the registry. Restart "Remote Registry" service.
190
AggreGate Documentation
Click Start , click Run, type cmd, and then click OK. At the command prompt, type wmiadap.exe /f, and then press ENTER. Type exit, and then press ENTER to close the command prompt.
AggreGate Server
191
2.2.2. Double click on a DCOM: Machine Launch Restrictions policy, then use Edit Security button to add a user those credentials will be used for monitoring. Give this user Local Launch, Remote Launch , Local Activation, and Remote Activation permissions.
192
AggreGate Documentation
2.2.3. Double-click Network access: Sharing and security model for local accounts policy, select Classic users authenticate as themselves from a drop-down list.
AggreGate Server
193
194
AggreGate Documentation
2.4.2. Set User Account Control: Detect application installations and prompt for elevation policy to Disabled
AggreGate Server
195
2.4.3. Set User Account Control: Run all administrators in Admin Approval Mode policy to Disabled
196
AggreGate Documentation
AggreGate Server
197
198
AggreGate Documentation
AggreGate Server
199
RemoteSigned command.
5. Time of all workstations that are subject for WMI monitoring must be synchronized. 6. Point $ComputerListFile parameter in the script to the file listing IP addresses of hosts to configure. 7. Specify name of user account those credentials will be used for monitoring in script's $account parameter. 8. Run the script.
200
AggreGate Documentation
Scheduler. This will allow to auto-discover and auto-connect all new WMI hosts to AggreGate by using AggreGate's network discovery feature thereafter.
$account = "administrator@dc1" $ComputerListFile = "C:\wmi\computers.txt" $LogFile = "C:\wmi\wmi_setup.log" #--------------------------------------------function print_message($File, [string]$Text) { Write-Host $Text Add-Content $File $Text } Function for print messages to $LogFile and screen
#--------------------------------------------Function for check open DCOM port (135) ----------function check_open_port($ip, $port, $con_timeout) { $tcpclient = new-object Net.Sockets.TcpClient $Connection = $tcpclient.BeginConnect($ip, $port, $null, $null) $TimeOut = $Connection.AsyncWaitHandle.WaitOne($con_timeout,$false) if(!$TimeOut) { $TCPclient.Close() return 0 } else { try { $TCPclient.EndConnect($Connection) | out-Null $TCPclient.Close() return 1 } catch { ## Machine actively refused the connection. The port is not open but $TimeOut was still true return 0 } } }
#--------------------------------------------- Function for enable privilege to change CLSID\{76A6415 function enable-privilege { param( ## The privilege to adjust. This set is taken from ## http://msdn.microsoft.com/en-us/library/bb530716(VS.85).aspx [ValidateSet( "SeAssignPrimaryTokenPrivilege", "SeAuditPrivilege", "SeBackupPrivilege", "SeChangeNotifyPrivilege", "SeCreateGlobalPrivilege", "SeCreatePagefilePrivilege", "SeCreatePermanentPrivilege", "SeCreateSymbolicLinkPrivilege", "SeCreateTokenPrivilege", "SeDebugPrivilege", "SeEnableDelegationPrivilege", "SeImpersonatePrivilege", "SeIncreaseBasePriorityPr "SeIncreaseQuotaPrivilege", "SeIncreaseWorkingSetPrivilege", "SeLoadDriverPrivilege", "SeLockMemoryPrivilege", "SeMachineAccountPrivilege", "SeManageVolumePrivilege", "SeProfileSingleProcessPrivilege", "SeRelabelPrivilege", "SeRemoteShutdownPrivilege", "SeRestorePrivilege", "SeSecurityPrivilege", "SeShutdownPrivilege", "SeSyncAgentPrivilege", "SeSystemEnvironmentPrivilege", "SeSystemProfilePrivilege", "SeSystemtimePrivilege", "SeTakeOwnershipPrivilege", "SeTcbPrivilege", "SeTimeZonePrivilege", "SeTrustedCredManAccessPrivilege" "SeUndockPrivilege", "SeUnsolicitedInputPrivilege")] $Privilege, ## The process on which to adjust the privilege. Defaults to the current process. $ProcessId = $pid, ## Switch to disable the privilege, rather than enable it. [Switch] $Disable )
AggreGate Server
201
## Taken from P/Invoke.NET with minor adjustments. $definition = @' using System; using System.Runtime.InteropServices; public class AdjPriv { [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)] internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen); [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)] internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok); [DllImport("advapi32.dll", SetLastError = true)] internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid); [StructLayout(LayoutKind.Sequential, Pack = 1)] internal struct TokPriv1Luid { public int Count; public long Luid; public int Attr; } internal const internal const internal const internal const public static int SE_PRIVILEGE_ENABLED = 0x00000002; int SE_PRIVILEGE_DISABLED = 0x00000000; int TOKEN_QUERY = 0x00000008; int TOKEN_ADJUST_PRIVILEGES = 0x00000020; bool EnablePrivilege(long processHandle, string privilege, bool disable)
{ bool retVal; TokPriv1Luid tp; IntPtr hproc = new IntPtr(processHandle); IntPtr htok = IntPtr.Zero; retVal = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok); tp.Count = 1; tp.Luid = 0; if(disable) { tp.Attr = SE_PRIVILEGE_DISABLED; } else { tp.Attr = SE_PRIVILEGE_ENABLED; } retVal = LookupPrivilegeValue(null, privilege, ref tp.Luid); retVal = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero); return retVal; } } '@ $processHandle = (Get-Process -id $ProcessId).Handle $type = Add-Type $definition -PassThru $type[0]::EnablePrivilege($processHandle, $Privilege, } #--------------------------------------------- First stage (get account sid, open file function get-sid { Param ( $DSIdentity ) $ID = new-object System.Security.Principal.NTAccount($DSIdentity) return $ID.Translate( [System.Security.Principal.SecurityIdentifier] ).toString() } $sid = get-sid $account $SDDL = "A;;CCWP;;;$sid" computers.txt,
$Disable)
202
AggreGate Documentation
$DCOMSDDLDefaultLaunchPermission = "A;;CCDCLCSWRP;;;$sid" $DCOMSDDLDefaultAccessPermission = "A;;CCDCLC;;;$sid" $DefaultSDDLAccess = "O:BAG:BAD:(A;;CCDCLC;;;PS)(A;;CCDC;;;SY)(A;;CCDCLC;;;BA)" $DefaultSDDLLaunch = "O:BAG:BAD:(A;;CCDCLCSWRP;;;BA)(A;;CCDCSW;;;IU)(A;;CCDCSW;;;SY)(A;;CCDCLCSWRP;;;LA)" $computers = Get-Content $ComputerListFile $timeNow = get-date print_message $LogFile
------------------------------------------
$Port135Open = check_open_port $strcomputer "135" "1000" if ($Port135Open) { try{ $Reg = [WMIClass]"\\$strcomputer\root\default:StdRegProv" } catch { $message = "Error: " + [string]$Error[0] print_message $LogFile $message continue } } else { print_message $LogFile "Error! The RPC server is unavailable. No ping." continue } #-------------------------try{ $Win32_OS = Get-WmiObject Win32_OperatingSystem -computer $strcomputer } catch { $message = "Error: " + [string]$Error[0] print_message $LogFile $message continue } print_message $LogFile $Win32_OS.caption $str_version = [regex]::Replace($Win32_OS.version, "(\d.\d).*", '$1'); #6.1.7601 -> 6.1 $version = [decimal]$str_version print_message $LogFile "Applying group policies..." apply group policy
--------------------------------------------
If ($version -ge 5.1) { Invoke-WmiMethod -ComputerName $strcomputer -Path win32_process -Name create -ArgumentList " } Else { Invoke-WmiMethod -ComputerName $strcomputer -Path win32_process -Name create ArgumentList } print_message $LogFile "Applying group policies completed"
#--------------------------------------- If Windows 2008 or 7 set CLSID\{76A64158-CB41-11D1-8B02If ($version -ge 6.1) { print_message $LogFile "Set CLSID\{76A64158-CB41-11D1-8B02-00600806D9B6} permissions..." $RemoteKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::
enable-privilege SeTakeOwnershipPrivilege $key = $RemoteKey.OpenSubKey("CLSID\{76A64158-CB41-11D1-8B02-00600806D9B6}",[Microsoft.W # You must get a blank acl for the key b/c you do not currently have access $acl = $key.GetAccessControl([System.Security.AccessControl.AccessControlSections]::None) $me = [System.Security.Principal.NTAccount]"BUILTIN\Administrators" $acl.SetOwner($me) $key.SetAccessControl($acl) $TrustedInstaller = [System.Security.Principal.NTAccount]"NT Service\TrustedInstaller" $acl.SetOwner($TrustedInstaller)
# After you have set owner you need to get the acl with the perms so you can modify it. $acl = $key.GetAccessControl() $rule = New-Object System.Security.AccessControl.RegistryAccessRule ("BUILTIN\Administrators"
AggreGate Server
203
$acl.SetAccessRule($rule) $key.SetAccessControl($acl)
$key.Close() #http://social.technet.microsoft.com/Forums/en/winserverpowershell/thread/e718a560-2908-4b91}
#--------------------------------------- Enable DCOM, Set authentication (to "Connect") and im $Result = $Reg.SetStringValue(2147483650,"software\microsoft\ole","EnableDCOM","Y") if ($Result) {print_message $LogFile "EnableDCOM -> Y"} $Result = $Reg.SetDWORDValue(2147483650,"software\microsoft\ole","LegacyAuthenticationLevel","2") if ($Result) {print_message $LogFile "LegacyAuthenticationLevel -> Connect"} $Result = $Reg.SetDWORDValue(2147483650,"software\microsoft\ole","LegacyImpersonationLevel","2") if ($Result) {print_message $LogFile "LegacyImpersonationLevel -> Identify"} #-------------------------------------- Set wmi namespace $converter = new-object system.management.ManagementClass root/CIMV2 permissions, set COM Win32_SecurityDescriptorHelper
secur
$security = Get-WmiObject -ComputerName $strcomputer -Namespace root/cimv2 -Class __SystemSecurit $binarySD = @($null) $result = $security.PsBase.InvokeMethod("GetSD",$binarySD) $outsddl = $converter.BinarySDToSDDL($binarySD[0]) $newSDDL = $outsddl.SDDL += "(" + $SDDL + ")" $WMIbinarySD = $converter.SDDLToBinarySD($newSDDL) $WMIconvertedPermissions = ,$WMIbinarySD.BinarySD $result = $security.PsBase.InvokeMethod("SetSD",$WMIconvertedPermissions) print_message $LogFile "ROOT\cimv2 permissions should be granted"
$COMAccess = $Reg.GetBinaryValue(2147483650,"software\microsoft\ole","DefaultAccessPermission").uV if ($COMAccess) { $outCOMAccessSDDL = $converter.BinarySDToSDDL($COMAccess) $newCOMAccessSDDL = $outCOMAccessSDDL.SDDL += "(" + $DCOMSDDLDefaultAccessPermission + ")" } else { $newCOMAccessSDDL = $DefaultSDDLAccess + "(" + $DCOMSDDLDefaultAccessPermission + ")" } $COMAccessbinarySD = $converter.SDDLToBinarySD($newCOMAccessSDDL) $COMAccessconvertedPermissions = ,$COMAccessbinarySD.BinarySD $result = $Reg.SetBinaryValue(2147483650,"software\microsoft\ole","DefaultAccessPermission", $COM if ($result.Returnvalue -eq 0) {print_message $LogFile "DefaultAccessPermission granted"}
$COMLaunch = $Reg.GetBinaryValue(2147483650,"software\microsoft\ole","DefaultLaunchPermission").uV if ($COMLaunch) { $outCOMLaunchSDDL = $converter.BinarySDToSDDL($COMLaunch) $newCOMLaunchSDDL = $outCOMLaunchSDDL.SDDL += "(" + $DCOMSDDLDefaultLaunchPermission + ")" } else { $newCOMLaunchSDDL = $DefaultSDDLLaunch + "(" + $DCOMSDDLDefaultLaunchPermission + ")" } $COMLaunchbinarySD = $converter.SDDLToBinarySD($newCOMLaunchSDDL) $COMLaunchconvertedPermissions = ,$COMLaunchbinarySD.BinarySD $result = $Reg.SetBinaryValue(2147483650,"software\microsoft\ole","DefaultLaunchPermission", $COM if ($result.Returnvalue -eq 0) {print_message $LogFile "DefaultLaunchPermission granted"} }
204
AggreGate Documentation
Function
for
messages
to
$LogFile
and
screen
#-------------------------------------------------------------------------------------------------------Function ConvertTo-DecimalIP { <# .Synopsis Converts a Decimal IP address into a 32-bit unsigned integer. .Description ConvertTo-DecimalIP takes a decimal IP, uses a shift-like operation on each octet and returns a sin .Parameter IPAddress An IP Address to convert. #> [CmdLetBinding()] Param( [Parameter(Mandatory = $True, Position = 0, ValueFromPipeline = $True)] [Net.IPAddress]$IPAddress ) Process { $i = 3; $DecimalIP = 0; $IPAddress.GetAddressBytes() | ForEach-Object { $DecimalIP += $_ * [Math]::Pow(256, $i); $i-- } Return [UInt32]$DecimalIP } }
Function ConvertTo-DottedDecimalIP { <# .Synopsis Returns a dotted decimal IP address from either an unsigned 32-bit integer or a dotted binary strin .Description ConvertTo-DottedDecimalIP uses a regular expression match on the input string to convert to an IP a .Parameter IPAddress A string representation of an IP address from either UInt32 or dotted binary. #> [CmdLetBinding()] Param( [Parameter(Mandatory = $True, Position = 0, ValueFromPipeline = $True)] [String]$IPAddress ) Process { Switch -RegEx ($IPAddress) { "([01]{8}\.){3}[01]{8}" { Return [String]::Join('.', $( $IPAddress.Split('.') | ForEach-Object { [Convert]::ToUInt32($_, 2) } "\d" { $IPAddress = [UInt32]$IPAddress $DottedIP = $( For ($i = 3; $i -gt -1; $i--) { $Remainder = $IPAddress % [Math]::Pow(256, $i) ($IPAddress - $Remainder) / [Math]::Pow(256, $i) $IPAddress = $Remainder } ) Return [String]::Join('.', $DottedIP) } default { Write-Error "Cannot convert this format" } } } } Function <# Get-NetworkAddress {
AggreGate Server
205
.Synopsis Takes an IP address and subnet mask then calculates the network address for the range. .Description Get-NetworkAddress returns the network address for a subnet by performing a bitwise AND operation against the decimal forms of the IP address and subnet mask. Get-NetworkAddress expects both the IP address and subnet mask in dotted decimal format. .Parameter IPAddress Any IP address within the network range. .Parameter SubnetMask The subnet mask for the network. #> [CmdLetBinding()] Param( [Parameter(Mandatory = $True, Position = 0, ValueFromPipeline = $True)] [Net.IPAddress]$IPAddress, [Parameter(Mandatory = $True, Position = 1)] [Alias("Mask")] [Net.IPAddress]$SubnetMask ) Process { Return ConvertTo-DottedDecimalIP } } function check_open_port($ip, $port, $con_timeout) { $tcpclient = new-object Net.Sockets.TcpClient $Connection = $tcpclient.BeginConnect($ip, $port, $null, $null) $TimeOut = $Connection.AsyncWaitHandle.WaitOne($con_timeout,$false) if(!$TimeOut) { $TCPclient.Close() return 0 } else { try { $TCPclient.EndConnect($Connection) | out-Null $TCPclient.Close() return 1 } catch { ## Machine actively refused the connection. The port is not open but $TimeOut was still true return 0 } } }
((ConvertTo-DecimalIP
$IPAddress)
-BAnd
(ConvertTo-DecimalIP $Subnet
if ($rewriteFile) { Remove-Item $outputFile } $mm = "255.255.255.255" $dmm = ConvertTo-DecimalIP $mm $first = Get-NetworkAddress $ip $mask $dmask = ConvertTo-DecimalIP $mask $dfirst = [long](ConvertTo-DecimalIP $first) + 1 $n = [long]$dmm - [long]$dmask for ($i=0; $i -le ($n - 2); $i++) { $new = ConvertTo-DottedDecimalIP $dfirst $Port135Open = check_open_port $new "135" "1000" if ($Port135Open) {print_message $outputFile $new} $dfirst ++ }
206
AggreGate Documentation
The Event Log component has two sections: Real-time events, shows events as they are fired Event history
882
Filters may be selected separately for each section. If a filter is selected in Real-time Events section, the Event Log starts listening for all categories of events listed in the Filter Rules 211 table. When a filter is selected in the Event History section, AggreGate Server loads all events satisfying Filter Rules 211 list (see below) from the database 80 and shows the first few rows, allowing the user to scroll through the whole list and sort it. The most important property of an event filter is Filter Rules 211 , defining which events to show. During filter activation every Enabled record in the Filter Rules table is processed and events satisfying the following conditions are shown in event log: Context
863
866
If Event Name is not equal to "*" (All Events), the event's name must be equal to the Event Name field. The event's level
882
must be greater of equal to the severity level specified by the Level field
207
All of these field names, in bold above, are described below. Each filter record may also define a highlighting color that will be used to highlight events of this category in Event Log. Highlighting color defined in Filter Rules record may be overridden by Custom Highlighting
210
rules.
By default, the following columns are visible in the Event Log: Server Timestamp. Date and time when this event was registered by AggreGate Server. This column cannot be hidden. Context. Description and/or path of the context where event has been occurred. This column shows descriptions of contexts by default. Context paths are shown only if the Show context paths along with their descriptions setting is enabled in Filter Info 211 . This column may be hidden by disabling the Context Name setting in Primary Visible Fields 212 . Event. Event name and/or description. This column shows events descriptions by default. Event names are shown
AggreGate Server
only if the Show event names along with their descriptions setting is enabled in Filter Info be hidden by disabling the Event Name setting in Primary Visible Fields 212 .
211 .
207
Level . Event level. This column may be hidden by disabling the Event Level setting in Primary Visible Fields
Data. String representation of the Data Table associated with event. This column may show field names and values or values only, depending on the Show field names setting in Filter Info 211 . It may be hidden by disabling the Event Data setting in Primary Visible Fields 212 . Acknowledgement. Event acknowledgement setting in Primary Visible Fields 212 . See the Event Log
791 882 .
article in AggreGate Client manual for more information about event monitoring.
The Filter Rules property defines which events are shown when the event filter is active, while Filter Info, Primary Visible Fields and Additional Visible Fields describe which parameters and fields are shown for every event. More information about filter properties can be found here 211 .
Filter Expressions
Filter expressions are used to fine-tune filtering and color-coding rules. See Filter Expressions
207
Event Highlighting
Events shown in the Event Log can be color-coded according to different rules. See Event Highlighting information.
210
for more
Parameterized Filters
Some filters may require system operators to adjust filtering parameters upon filter activation or reactivation. Such filters are called parameterized filters. See Parameterized Filters 213 for details.
208
user Joe.
AggreGate Documentation
210
You are now entering an "advanced" section of this article. Before you can actually understand filter expressions, you'll need to have a profound understanding of references 925 and expressions 911 . These have their own chapters, under System Internals. We advise you to skip there now, read those chapters until you really understand references and expressions, and then come back here for an in-depth review of filter expressions.
If a filter expression is not specified in Filter Rules record, all events that satisfy Context Mask, Event Name and Level options defined by this record will be shown. Example: Assuming that we are monitoring user logins. In Filter Rules, we have a category with the following settings:
Field
Description Context Mask Event Name Enabled Level Filter Expression Parameterized Highlighting Color
Value
User login events users login TRUE Info
It we double-click any login event shown in Event Log, we'll see its data in a Data Table Editor component. Here is a screenshot from the Data Table Editor 801 in AggreGate Client:
AggreGate Server
209
We see that data for the Login event has two fields: Username (authenticated user contents of his permissions table 111 ).
108 )
To refer to these fields from our Filter Expression we need to use field names instead of their descriptions. Field names are shown in tooltips that appear when the mouse hovers over field description:
From this tooltip we see that the first field's name is username. This name may be used to create a Filter Expression that will let us to filter out only logins of a particular user. Let's say we want to filter only Charlie's logins. We'll use the following Filter Expression:
{username} == 'charlie'
When this expression is evaluated, the {username} reference resolves to the contents of the username field in the event's Data Table. This field is a String type, so the resolution results in a String value. This value is then compared with the String literal charlie. If they are equal, the event passes the filter and it is shown in the Event Log, otherwise it is filtered out. When we put this expression in the Filter Expression field of the Filter Rules table and activate the filter, only logins of Charlie will be visible in Event Log. The exact effect shown in this example could have also been accomplished by restricting the filter's context to users. charlie, but this example just serves to illustrate the point. It's more useful if you want to display logins from several users, for example, but not display logins from other users.
Field
Context Mask Event Name Level Filter Expression Highlighting Color
Value
users.*.deviceservers.*.devices.* event None
Orange
To match events fired at Error level, we may use the following expression:
{env/level} == 4
Alternatively, we can add a rule to highlight Fatal events in red. It will contain the following Filter Expression:
210
AggreGate Documentation
{env/level} == 5
If we just want to highlight all events whose level is greater than Error (I.e, greater than level 4), we might as well just enter "4" in the Level field of the custom highlighting table of the event. We could accomplish the same thing using an expression, {env/level} > 4.
RESOLUTION ENVIRONMENT
As a baseline, you can find the formalized filter expression resolution environment below. Filter Expression and Highlighting Expression Resolution Environment Default Context
927 927 922
Context of event. Data Table containing event-specific data 0 Variable Name context event level time Value Type String String Integer Date Description Full path to the event's context. Name of the event. Event level
882 . 881 .
AggreGate Server
211
688 .
Field Description
Filter Name. Name of the event filter 688 . Should satisfy the context naming conventions 863 . It's used to refer to this filter from other parts of the system. Filter Description. Textual description of the alert. This is also the description alert context.
864
Field Name
name
of the
description
Default Filter. Indicates whether the current filter is the default filter of the owning user The default filter is auto-activated in Event Log 791 .
108 .
defaultFilter
Show Field Names in "Data" Column . Show the name of each field in the Data Table defined by Event Format 880 in the "Data" column of event log. If this setting is disabled, only the value of the field is shown. Show Context Paths Next To Their Descriptions. Show both paths and descriptions of events in "Context" column of event log. Show Event Names Next To Their Descriptions. Show both names and descriptions of events in "Event" column of event log. These may be accessed via the childInfo
689
showDataFieldNames
variable.
Field Description
Description . Textual description of event category. Context Mask. Contexts to be monitored for this event. More about this in the Context Masks 865 section. Event Name. Name of event to monitor. This field may be set to "*" (All Events) to enable monitoring of all non-system events. Enabled. When this flag is disabled, the category is inactive and events specified by it are not shown. This is the same as "deleting" the category, but you're not actually deleting it (so you can still use it for reference or quickly re-enable it). Level . Events with a level
882
Field Name
description mask
event
enabled
level parameterized
Parameterized. Indicates that the filter rule is parameterized, i.e. Parameterized Source Data field should be used to build a Filter Expression during filter activation based on a number of operator-specified parameters. See Parameterized Filters 207 for details. Filter Expression. An AggreGate Expression 911 used to filter out events even more granularly. Used when Parameterized flag is disabled for this rule. Parameterizer Source Data. Used when Parameterized flag is enabled for this
expression
parameterized
212
AggreGate Documentation
207
Highlighting Color. The color used to highlight events of this category in the event log. The color for any particular event may be overridden by Custom Highlighting 210 settings.
Important: Once you edit this property, save and then reload your filter. Doing so will update the Additional Visible Fields 212 property according to the event types you selected here, and this is important. These may be accessed via the rules
690
variable.
Field Description
Context Name. Show context
863
Field Name
where event has been fired. context event level
854
Event Name. Show name of event. Event Level. Show event level
882 .
Acknowledgements . Show event acknowledgements Enrichments. Show event enrichments These may be accessed via the shownFields
883 . 690
variable.
Field Description
Field Name. Name of field. Field Description. Textual description of field. Event Descriptions . Shows what events this field applies to. Visible. Indicates that the field is shown in event log.
Field Name
name description edescs shown
AggreGate Server
213
Table doesn't seem to contain what you need? Try saving and then reloading the whole filter. This should always be done to make this table dynamically update to match the events configured in Filter Rules. These may be accessed via the additionalFields
691
variable.
rules.
Field Description
Context Mask. Mask of contexts for those this highlighting rule will be applied. Event Name. Name of event to highlight. This field may be set to "*" (All Events) to enable highlighting of all events. Level . Minimal level of event to highlight. Filter Expression. Highlight only events satisfying filter expression, if it is set. Highlighting Color. Highlighting color. These may be accessed via the customHighlighting
691
Field Name
mask event
Field Description
Limit Time Frame. Flag indicating that only a certain subrange of historical events should be selected. Time Frame (in Time Units). If Limit Time Frame is enabled, this options defines the actual time frame to be selected. See example below. Time Unit . Defines the unit of measurement for the Time Frame (Month, Week, Day, Hour, Minute, etc.). Use Custom End Time. If this flag is active, event history browser will only show events which have occurred prior to the End Time. End Time. If Use Custom End Time is enabled, only historical events which have occurred prior to this time will be shown in Event Log.
Field Name
limitTimeFrame
timeFrame
timeUnit
Example: If Time Frame is 10, and Time Unit is Day, event history browser will only show historical events matching the filter which have occurred within the last 10 days. If, at the same time, Use Custom End Time option is enabled, event history browser will show only events that have occurred within 10 days before the End Time. These may be accessed via the historySettings
691
variable.
214
AggreGate Documentation
Parameterization is a complex subject, which is beyond the extent of this topic. However, to understand this section, you must have a complete understanding of the Parameterization process and engine. So, if you'd like to use Parameterized Filters and you're unfamiliar with the subject, you should now skip to Parameterization Engine 956 , read the whole topic until you're fully familiar with parameterization, and then come back here. As covered above, the Filter Rules property contains many lines (records), each describing an event type which the filter passes. Each record may contain a filter expression (which may be parameterized). Even if the Filter Rules property contains more than one such parameterized Filter Expression, all filter parameters are entered in one single dialog. The Event Filter uses an Edit Data 896 UI Procedure to prompt for filtering parameters. When the Parameterized option is enabled in the Filter Rules record, the filter processing engine uses Parameterizer Source Data to build Filter Expression in real-time based on a number of operator-specified parameters. For more information, see Parameterization Engine 956 . Here is an example of Parameterizer Source Data:
<form> <format> <![CDATA[ <<username><S><D=Username>> ]]> </format> <expression> {username} ~= '.*<e>{username}</e>.*' </expression> </form>
A filter containing this parameterized expression will ask for a Username parameter upon activation:
This filter will pass only events whose username field contains the value entered by an operator as the Username parameter, because resulting Filter Expression will be:
{username} ~= '.*<e>VALUE_OF_USERNAME_PARAMETER_ENTERED_BY_USER</e>.*'
Again, this isn't really supposed to make much sense at this point of the manual -- it's just a glimpse at the power of parameterized filters. To really understand how this works, you have to read about the Parameterization Engine 956 .
Auto-Parameterization
This function automatically generates parameterization data for event categories selected from within Filter Rules 211 . You can auto-parameterize a Filter Rules record only if it doesn't already contain a Filter Expression. The autoparameterization process flow is described here 692 . Parameterization data generated by this function defines two parameters per every field in the event's Data Table. I.e, when applying auto-parameterization to an event 880 which has only one field defined in its Event Format property, the user will be prompted to enter two values upon filter execution. "Filter by 'description_of_field (name_of_context_where_event_is_defined)'": This would be something like Filter by 'Username (users)'. It's a Boolean value (in other words, a checkbox) which enables or disables filtering by the value of this field. "description_of_field (name_of_context_where_event_is_defined)": This would be something like Filter by 'Username (users)'. It's a textbox (or another editing control, depending on the field type) in which you can enter the value you want to filter by.
AggreGate Server
215
For example, if we apply auto-parameterization to the Administration Events category, parameterization data will define two parameters: Filter by 'Info (administration)' and Info (administration):
The first parameter enables filtering by the Info field of the Info event 885 (in the administration context). The second parameter contains the expected value for the field. Only events with an Info field equal to this value will pass the filter.
All Events
All events filter shows all important system and Device events. Rules of this filter are useful for most system administrators and operators. Here is a brief overview of them: Rule Administration Events Users Events User Events Data Terminal Events Alert Events Notes Generic administrative events, such as failed user 108 login attempts and registrations of new user accounts, reports about connected External Device Servers 1012 , notifications about AggreGate Server startup and shutdown etc. Events related to all user accounts. Events related to a certain user account
108 .
Events related to a certain Data Terminal 113 , such as communication problems, synchronization issues, events received from hardware etc. Notifications about Alerts 216 . These pop up in the interface, or are emailed, even if you're not monitoring the filter. This is useful mainly for checking alert history and viewing acknowledgements. Other information about alerts, such as alert escalations 237 , notification 225 delivery problems etc., is also included in this category. Information about successful and unsuccessful execution of scheduled jobs Tracker
257 266 .
Server Log
This filter shows server log messages
74
Technically, the filter is set up to display Log 652 events from Administration context. Since Log events are not persistent, historical events are not available under Server Log filter. Most of messages written to the server log are system-level messages that are not intended to be analyzed by system operators. Thus, some of the messages may be non-internationalized, available in English language only.
Device Events
This filter shows only events related to Device communications and events generated by hardware devices.
Alerts
This filter shows only alert events
224 .
Actions
This filter selects action events
653 ,
892
216
AggreGate Documentation
of AggreGate.
To make an event filter connected from a provider server appear in Event Log of clients connected to a consumer server, make sure that the context path of connected filter context on the consumer server matches users.*. filters.* context mask, i.e. the remote filter appears among local filters.
3.7 Alerts
An alert is a response of the system to a custom user-defined event or condition. Alerts are raised by triggers (alert conditions). A trigger can be an event, a state or a change of state of a system component/hardware device. See the triggers 216 section for details. When an alert is raised, the system responds to it: The alert owner may be immediately notified, if he is connected to the server. He may also be prompted to acknowledge 228 the alert. E-mail messages may be sent to the alert owner, to a system user The alert may be stored in the event history Some corrective actions
892 882 108 (s)
as a usual event.
893 .
Administering Alerts
Two contexts are used to administer alerts: One is the general Alerts 654 context, which serves as a container. The other is the Alert 656 context, which holds the information for one alert.
Triggers
Alerts are activated by triggers. Every alert may have several triggers associated with it. Each trigger defines a condition in which the alert should be raised. There are two types of triggers, described below: Event Triggers
222 217
Variable Triggers
Each alert may define zero or more triggers of every type. If no triggers are defined, the alert is never raised. If several triggers are defined, they act separately -- each trigger may raise the alert (they don't all have to exist at the same time -- just one is enough to raise the alert).
Alert Notifications
When an alert is raised by one of its triggers, AggreGate Server starts sending notifications actions 227 .
225
Alert States
Alert state indicate current severity of the alert. It involves several factors, such as availability of pending alert instances, trigger activity, and escalation rules. See Alert States
233
for details.
Built-In Alerts
AggreGate Server
217
is
this alert is triggered only for Devices whose Enable Offline Alert
109 .
126
setting is
FAILOVER
Failover alert is raised once the Master Node of AggreGate Server failover cluster 87 fails and control is taken by a Failover node. An e-mail message is sent to the default administrator 109 upon this alert.
Examples
Some examples of real-world alert configurations are provided in the Alert Examples
238
section.
When a variable value changes (no matter to what value) Selection between these two methods is performed by the Monitor State Changes property of the trigger. Other properties of the variable trigger are described here 230 . Every variable trigger periodically inspects the value of the variable in every context matching the defined by the Context Mask 865 setting. Polling period is defined in seconds, by the Check Period parameter. A Data Table 854 containing the value of the variable is retrieved from the context, and then something happens, according to the Monitor State Changes setting: If Monitor State Changes is disabled, the server evaluates the expression 911 defined by the Expression setting. This expression must evaluate to a Boolean result in this case. It may contain references 925 to the cells of the Data Table containing the variable value, but may also refer other variables and functions of AggreGate Server contexts. If the expression evaluates to TRUE and the result of the previous evaluation was FALSE (or if this is the first time the variable is inspected since AggreGate Server was started or since the properties for this alert were last changed), the trigger fires and raises an alert. If the evaluation is TRUE and was also TRUE during the last check, no action is performed. If it changes from TRUE to FALSE, no action it performed either, but subsequent change back to TRUE will fire the trigger. If Monitor State Changes is enabled, the Expression is evaluated every Check Period exactly like in the previous scenario, but its result may be of any type. The server will remember the last evaluation result. If the new evaluation result is different than the last one, the trigger fires and raises the alert. If the Context Mask parameter points to more than one context, each context is separately inspected, and the alert is raised every time the variable value satisfies the condition (or changes, depending on the Monitor State Changes setting) in any of these contexts. Example of variable trigger without "monitor state changes": Let's say we're monitoring the Current Temperature variable, coming from a temperature sensor. In this case, Expression may refer to the Celsius Temperature field of this variable and cause a trigger to fire if the temperature exceeds a certain limit. The trigger parameters may be: Context Mask Variable Expression Monitor State Changes Check Period (seconds) Delay (seconds)
context)
218
AggreGate Documentation
Alert Level
Warning
Example of variable trigger with "monitor state changes": Now let's say we're monitoring a Warning List variable, coming from a piece of medical equipment monitoring several critical parameters of a patient. The value of this variable is a Data Table with up to five records, and every record has a single String field called Warning, containing a textual warning about the state of patient. In this scenario, the Expression may aggregate all warning messages by appending them to each other, and activate the alert when any of the warnings is removed, added or changed. The parameters of may look like this: Context Mask Variable Expression Monitor State Changes Check Period (seconds) Alert Level
context)
235 .
A combination of Delay and Deactivation Delay is called hysteresis. Hysteresis is the lagging of an effect behind its cause.
The following picture shows how the variable trigger is activated/deactivated when Deactivator is not specified:
AggreGate Server
219
When Deactivator is specified, activation/deactivation of trigger is performed according to the following picture:
220
AggreGate Documentation
Example of variable trigger with hysteresis Let's return to the one of the above examples involving temperature monitoring. We want to set up a trigger that: Activates the alert when temperature is higher than 50 degrees for longer than 5 minutes, Deactivates the alert when it's active and temperature is lower than 35 degrees for longer than 20 minutes. The trigger parameters may be as follows: Context Mask Variable Expression Monitor State Changes
context)
AggreGate Server
221
Check Period, seconds Delay, seconds Alert Level Deactivator Deactivation Delay, seconds
Flapping Detection
Flapping is a situation where trigger Expression changes its result very rapidly constantly switching between TRUE and FALSE. This can happen for various reasons for example if the device constantly reboots, its online status will oscillate. AggreGate can detect that a variable trigger is flapping. It does so by analyzing previous Expression evaluation results, in terms of how many state changes have happened. AggreGate keeps a history of the 101 most recent checks and analyzes changes within that history. If there are no changes from TRUE to FALSE or back in the last 101 state checks (i.e. 100 state changes), the flapping percentage would be 0%. If all checks have different states, the flapping percentage would be 100%. Flapping detection is controlled by three parameters: Enable Flapping Detection Activation Threshold Deactivation Threshold The first parameter must be enabled in order to allow flapping alerts. Once it's enabled, the trigger keeps the result of Expression calculation performed in every Check Period and recalculates flapping percentage on every check. The flapping alert occurs once there are more then 11 checks (10 state changes) in the history and flapping percentage exceeds Activation Threshold. Flapping alert is processed and delivered like any other alert, its only difference is its cause and alert data. The latter provides information about flapping percentage that caused the alert. The trigger will remain in Flapping Detected state until current flapping percentage drops below Deactivation Threshold.
Trigger Message
In addition to alert's Message expression, each variable trigger has its own Trigger Message expression. This expression is resolved to a string when the alert is raised. The resulting string becomes a part of Alert Event 224 , holding any custom information about alert cause or other circumstances.
Resolution Environment
Variable Trigger Expression and Deactivator Expression Resolution Environment Default Context None.
927 922
Standard
931
variables only.
222
AggreGate Documentation
Example of event trigger: Let's say we're running a vehicle monitoring system, which has Devices in various factory vehicles. These Devices fire various events, such as the Impact event, which fires when the vehicle bumps (or crashes...) against something. So the Context Mask would match the Device monitoring the vehicle, the event would be something like impact, and we could also have an expression, referring to the strength field of the impact event, which would cause the trigger to activate if the strength of the impact exceeds a certain value. In this case, the Event Trigger parameters may be as follows: Context Mask Event Expression
(Of course, impact and strength are just theoretical events coming from some made-up Device - they're not built-in AggreGate Server system events). Example of event trigger expression: contains({message}, "FAILED LOGIN") &&
users.*.devgroups.servers.* authenticationFailure
20 10 Minutes
Event Correlation
AggreGate Server
223
Event correlation is a technique for making sense of a large number of events and pinpointing the few events that are really important in that mass of information. In terms of AggreGate alerts, event correlation is a way to activate 235 the alert by an event trigger when one ("primary") event occurs, and deactivate the alert upon another ("correlated") event. To enable event correlation for a certain event trigger, specify the name of the Correlated event in the trigger settings. In this case: Event trigger (and the alert itself) will be activated by the event named in the Event setting (which is the "primary" event in this case). It will be deactivated if Correlated event occurs in the same context with Event, and additionally, Correlator expression evaluates to TRUE. (It can happen that the Correlated event occurs, but Correlator expression evaluates to FALSE, thus leaving the trigger active.) Once a trigger has been activated, it switches the alert to Active state
233
235 .
The following picture illustrates activation/deactivation of event trigger by Primary and Correlated events:
Count and Period settings also work for correlated events. For example, if Count equals to 5 and Period is 1 minute, trigger will be deactivated only if five Correlated events occur within one minute and all five will match Correlator expression. Examples of event triggers using event correlation: Sometimes we may want to view an alert in the Active Alerts 274 list when a certain device is offline (not available for AggreGate Server). Assuming that we have connection and disconnection events in the Device context 677 of this device, we may use the following event trigger settings to force an alert remain active when device is disconnected: Context Mask Event Correlated
This trigger will activate alert on disconnection event and deactivate it on connection event. If there are no connection/disconnection events in the Device context, we can still use a contextStatusChanged 890 event for the same functionality. In this case we'll have a slightly more complicated trigger setup: Context Mask Event
users.user123.devices.critical_device contextStatusChanged
224
AggreGate Documentation
{status} == 0 (Assuming that status 0 means "device is disconnected") contextStatusChanged {status} == 1 (Assuming that status 1 means "device is connected")
This trigger will be activated when contextStatusChanged event occurs and status field of event data equals to zero. The same event with a status of 1 deactivates the trigger.
Trigger Message
In addition to alert's Message expression, each event trigger has its own Trigger Message expression. This expression is resolved to a string when the alert is raised. The resulting string becomes a part of Alert Event 224 , holding any custom information about alert cause or other circumstances. Example of event trigger message expression: 'Device-provided custom SNMP trap
Resolution Environment
Event Trigger Expression and Correlator Expression Resolution Environment Default Context
927 922
927
Description Full path to the event's context. Name of the event. Event level
882 .
656 .
the alert itself is put into the Active state 233 . Its icon changes to . This is similar to how an email client works -you can see your mailbox as "Unread" if it has unread messages in it. History
882
of the Alert Event helps to keep track when and why the alert was raised.
When you View Pending Alerts 656 , you are actually looking at the history of all Alert Events for a particular alert. You can only access this action if the Allow Pending Alerts setting is enabled for this alert. Format of Alert Event: Field Description
AggreGate Server
225
Alert Name Alert Description Context Entity Cause Message Trigger Alert Data
656 . 656 .
Path of context for which the alert was raised, i.e. context where event or state change monitored by alert trigger has occurred. Event (is raised by event trigger) or variable (if raised by variable trigger) which caused the alert. Textual description of alert's cause. Alert message. This is a manually configured string, which is supposed to be a human-readable description of the alert (i.e, "The house is on fire"). See Alert Configuration 229 section. Trigger message. Additional text message provided by alert trigger. Data associated with the event causing the alert. This field is NULL (not defined) if the alert was caused by a certain variable state or by a variable value change. For a login event defined in the Users context, this data table will contain one record with two fields: Username and Permissions.
662 .
3.7.4 Notifications
Alert notifications are used to inform alert owner and other interested parties about alert rise or escalation. Notification settings are described in the Notification Settings
231
section.
The alert notification popup contains: Alert description The cause of the alert Alert message Message provided by the trigger Server that the alert was received from Flying alert popups will disappear automatically after a certain time that depends on the alert severity. However, an alert can be closed at any time by clicking on the close button. Alert popup also provide access the following options: Stick. Disable automatic hiding for this alert popup. Configure. Open alert configuration. Show Alert Data. Show alert details in a Data Table Editor
801 .
226
AggreGate Documentation
Close All. Close all currently visible alert popups. If owner notification is enabled, you can specify a Notification sound (.WAV or .MP3 file) that will be played in AggreGate Server User Interface before the notification popup is shown.
ACKNOWLEDGING ALERTS
If the Acknowledgement Is Required parameter is enabled, the user is prompted to enter an acknowledgement text for the alert in the same popup box. Here is what it looks like in AggreGate Client:
It is also possible to send e-mail notifications to custom e-mail addresses. These addresses should be listed in the Additional E-mail Recipients field and separated by commas. Contents of the email: Alert description Event causing the alert Context where the event is defined Alert message Alert time Data of the event that caused the alert (if raised by Event Trigger by Variable Trigger 217 ) This is what such an email looks like:
222 )
AggreGate Server
227
to an alert.
Point corrective action's Context to your modem account. Change Action to Send SMS. Enter recipient's number and SMS text in the action Parameters.
228
AggreGate Documentation
logged in to an AggreGate Server User Interface (e.g. AggreGate Client) to allow interactive actions execution. See the action execution modes 893 section for details.
To view headless corrective actions execution history and errors reported by them during execution, use Monitor Related Events 909 action of an Alert context 656 .
For example, if a custom e-mail or SMS message should be sent upon an alert, its text should be composed upon actual alert occurrence and include data elements describing its cause. To configure dynamic corrective action parameters: Open any parameters table for editing. It will be possible to add/modify its bindings Add one or more bindings to the table. These bindings will be calculated when alert is raised and its corrective actions are executed. They will update value of pre-defined action parameters. See Input Parameter Bindings
893 813 .
E-MAIL ACKNOWLEDGEMENTS
AggreGate Server provides an E-mail alert acknowledgement service letting operators acknowledge events by replying to alert notification e-mail message 226 . To start using this service, enable mail receiving in Mail Settings 63 section of AggreGate Server Global Configuration and configure incoming mail server properties (POP3 server address, login and password). Make sure that Check Incoming Mail 267 scheduled job is enabled (it's disabled by default).
AggreGate Server
229
E-mail alert acknowledgements will function properly only if replies to the alert notification e-mails will be delivered to the mailbox monitored by AggreGate Server. Alert notification e-mails are sent with the Reply-to header set to the address specified in Sender address for mail messages global configuration setting. Thus, AggreGate Server must receive all e-mail that were sent to this address. This will allow notification email recipients to use "Reply" function of their mail clients and enter acknowledgement text in the reply email. To acknowledge an alert by e-mail, reply to the alert notification e-mail and enter the acknowledgement text in the first line of reply. Alert acknowledgement will be added once the reply is delivered and received by AggreGate Server. AggreGate Server checks for new mail periodically, according to Incoming mail check period global configuration option. It is important to preserve the subject of original alert notification e-mail when replying. The mail client may add text (usually "Re: "), and this is fine. However, the ID pattern in the message subject should not be removed or changed.
656 .
Field Description
Alert Name. Name of the alert context 656 , required to refer to this alert from other parts of the system. It should satisfy the context naming conventions 863 . Alert Description. Textual description of the alert. This is also a description context.
864
Field Name
name
of the alert
description
Alert is Enabled. Disabling an alert deactivates all its triggers. It will never be raised.
enabled message
Message. Alert message. It will be shown in all alert notifications including visual notifications, notification e-mails, alert event etc. This is an expression 911 , so static messages should be quoted (e.g. 'Some message').
Alert Message Expression Resolution Environment Default Context Source context of the alert.
927
922
224 .
0 Standard
931
variables only.
Required Source Permission Level. Defines permission level 932 that the user should have in alert source context to be able to see the alert. Default value None means that user may not have access to alert source context at all, but he will still be able to see and process the alert. These may be accessed via the childInfo
657
permissions
variable.
230
AggreGate Documentation
Field Description
Context Mask. This mask 865 is resolved during trigger processing. If the event specified by the Event parameter is fired in any context matching this mask, the trigger activates an alert. In most cases, this context mask points to one explicit context, being a context path, rather than a mask. Event. Name of the event to be monitored. Filter Expression. An AggreGate Expression 911 which must evaluate to TRUE to activate the trigger. May contain references 925 to the cells in the Data Table 854 associated with the Event. Alert Level. Level 880 of this alert event 224 . In addition to the fixed values, may be set to Same As Event (this is a default setting). In this case level of alert event will be same as level of event that caused the alert. Correlated. Name of the "correlated event" that will deactivate the trigger if Correlator expression will be TRUE when it occurs. Correlator. An AggreGate Expression 911 which must evaluate to TRUE to deactivate the trigger when Correlated event occur. May contain references 925 to the cells in the Data Table 854 associated with the Correlated event. Message. Trigger message is usually used to indicate the root cause of alert. This is an expression 911 so static messages should be quoted (e.g. 'Some message').
Field Name
mask
event filter
level
correlated
correlator
message
Alert Trigger Message Expression Resolution Environment Default Context Source context of the alert.
927
922
224 .
0 Standard
931
variables only.
657
variable.
Field Description
Context Mask. This mask 865 is resolved during trigger processing. The value the variable specified by the Variable parameter will be monitored in any context matching the mask. In most cases, this context mask points to one explicit context, being a context path, rather than a mask.
Field Name
mask
AggreGate Server
231
Variable. Name of context variable to be monitored. Expression . AggreGate Expression 911 used to check the variable value. The result of this expression will be processed according of the Monitor State Changes flag. Monitor State Changes. It this setting is disabled, the trigger fires whenever the result of Expression changes from FALSE to TRUE. If it's enabled, trigger fires whenever the result of Expression changes (from one value to another, not necessarily TRUE/FALSE). This is comprehensively described above, under variable triggers 217 . Check Period (seconds). Time interval between inspections of Variable. Delay (seconds). Time interval between time when trigger expression become true and time when alert is raised. Alert Level. Level
880
variable expression
monitorStateChange
period delay
224 .
Deactivator. Alert deactivation expression. Deactivation Delay. Alert deactivation delay. Flapping. Controls flapping detection
221
Alert Trigger Message Expression Resolution Environment Default Context Source context of the alert.
927
922
224 .
Standard
931
variables only.
658
variable.
Field Description
Show Popup Notification to Owner. Show a popup message to the user 108 owning this alert if he happens to be logged on to a AggreGate Server User Interfaces (such as AggreGate Client) when the alert is raised. Acknowledgement Required . Force user to acknowledge notification is shown.
228
Field Name
notifyOwner
ackRequired
Custom Notification Lifetime. Specifies for how long popup alerts will remain visible. Notification Sound . Sound that will be played to the alert owner before notification popup is shown. Send E-mail to Owner . E-mail the owner, to the address specified in his user profile. E-mail recipients. List of AggreGate Server users who will receive e-mail notifications of the alert.
lifetime sound
mailToOwner mailRecipients
232
AggreGate Documentation
Additional E-mail Recipients. Comma-separated list of e-mails addresses. Alert notification will be sent to each of these addresses. SMS Recipients. List of phone numbers to those SMS notification message will be sent upon alert. This list may contain both AggreGate Server users 108 who have phone numbers in their account settings 110 and raw phone numbers. All numbers must be written in international format. These may be accessed via the notifications
658
additionalMailRecipients
smsRecipients
variable.
237
rules.
Field Description
Allow pending alerts. When enabled, allows the alert to switch to "Pending" state. Disabling pending alerts also disables escalation. Number-based instances. escalation. Enables escalation due to a certain number of pending alert
Field Name
pending
numberEscalation
Number of pending alerts requited to initiate escalation. When the number of pending alert instances (of this type) exceeds this limit, alert is escalated. Time-based escalation. Enables escalation due to alert instances that are pending longer than the specified time limit. Time before escalation (minutes). If any pending alert instances are not acknowledged within this time, alert is escalated. These may be accessed via the escalation
659
numberThreshold
timeEscalation
timeThreshold
variable.
Field Description
Context Mask. Action will be executed from every context matching this mask Action. Name of the action to be executed. Parameters. This list incudes parameters of two types: action-specific execution parameters 896 and pre-defined input for different UI Procedures 896 like Confirmation 901 , Edit Data 896 etc. Pre-defined input is required to substitute user input when alert executes action in noninteractive mode. For example, if an automatic corrective action requires confirmation (i.e. asks user something like "Delete query?" and allows to click OK or Cancel), this field will contain a "Delete query?" parameter with two possible choices: "OK" and "Cancel". Condition. An expression 911 that is evaluated before corrective action execution. If the expression returns false corrective action is skipped.
865 .
Field Name
mask action input
condition
922
224 .
AggreGate Server
233
Standard
931
variables only.
Run From Source Context. If this flag is checked, corrective action will be launched from the context that the alert came from. Example: If an alert monitors memory usage of an application that has memory leaks, selecting Restart corrective action and enabling Run From Source Context will restart the application on the server that has originated the alert. Same applications on other servers will not be touched. The Context Mask parameter is ignored if Run From Source Context is on. However, it's necessary to select a Context Mask that will match one or all possible alert source contexts first, since this will allow proper selection of an Action and its Parameters. These may be accessed via the alertActions
659
runFromSource
variable.
to be executed in interactive mode when the alert is raised while its owner is
Field Description
Context Mask. Action will be executed from every context matching this mask Action. Name of the action to be executed. Parameters. Action-specific execution parameters
896 . 865 .
Field Name
mask action input runFromSource
Run From Source Context. If this flag is checked, corrective action will be launched from the context that the alert came from. Example: If an alert monitors memory usage of an application that has memory leaks, selecting Restart corrective action and enabling Run From Source Context will restart the application on the server that has originated the alert. Same applications on other servers will not be touched. The Context Mask parameter is ignored if Run From Source Context is on. However, it's necessary to select a Context Mask that will match one or all possible alert source contexts first, since this will allow proper selection of an Action and its Parameters. These may be accessed via the interactiveActions
659
variable.
Escalated (
Enabled/Disabled Alerts
The initial state for a newly created alert is Enabled. This means that all triggers are enabled and may raise the alert.
234
AggreGate Documentation
You can disable the alert (put it in Disabled state, technically speaking) by switching off the Alert is enabled basic option 229 . A disabled alert is never raised and doesn't do anything, because all triggers are inactive.
Active Alerts
Alert is active if: One of its event triggers
222
is active, i.e. primary event has occurred and correlated event hasn't yet occurred
217
One of its variable triggers been satisfied thereafter One of its variable triggers There are any pending
236
is active, i.e. activation condition has been satisfied and deactivation condition hasn't is in "Flapping Detected" state
217
(non-acknowledged) alerts
The activation reason is shown in a tooltip that appears when the mouse hovers over the alert in AggreGate Server User Interfaces.
Escalated Alerts
For description of Escalated state see Alert Escalation
237 .
Alert Raising
Each trigger instance performs the monitoring of its "peer" context in its own way, separately from the others. Variable triggers periodically evaluate a trigger Expression against its peer context's values, while event triggers simply wait for occurrences of the Event. At certain moment, a trigger may decide that trigger condition is satisfied. This process is called "alert raising". At this moment, a bunch of things goes on: An instance of Alert Event Alert notifications
225 224
Alert popup is shown to system operators. If Acknowledgement Required option is set, the operators are prompted to acknowledge the alert. Acknowledging an alert 228 is technically acknowledging a corresponding Alert event instance. This alert event can be later acknowledged by any other means, such as from Event Log's context menu. Corrective actions (both automatic
232
and interactive
233 )
are executed.
If system operators have an open Event Log those filter 206 is set up to monitor Alert events (e.g. Alerts or similar filter is active), the operators will also see the Alert event in Event Log. If alert's Activate alert when there are pending (non-acknowledged) instances setting is enabled, the alert will change its state 233 from Normal to Active. If Number-based escalation setting is enabled and increased number of pending (non-acknowledged) Alert event instances exceeds the Number of pending alerts required to initiate escalation threshold, the alert will switch from Active to Escalated state. The escalation notifications (e-mail and SMS) are also sent in this case. The trigger itself may activate. For variable triggers, activation will happen in any case. For event trigger, the activation will happen only if the trigger has a Correlated event set and, thus, the system knows how to deactivate it upon a "paired" event. If the trigger was activated, the alert will switch from Normal to Active state. The activated trigger will be added to alert's Active Instances The activated trigger will also be added to the Active Alerts
235
list.
875
AggreGate Server
state has raised the alert).
235
Time-Based Escalation
If Time-based escalation setting is enabled, the alert tracks time elapsed since each of those instances was raise. If this time exceeds value of Time before escalation threshold, the alert is escalated and changes its state from Active to Escalated. The escalation notifications (e-mail and SMS) are also sent in this case.
Alert Deactivation
Every active trigger instance continues monitoring in its own way. A variable trigger will deactivate after a delay since its Expression 's (or Deactivator expression's, if it's set) result will switch to FALSE. An event trigger will deactivate if Collelated event(s) were received. Once any trigger was deactivated, the following happens: The deactivated trigger will be removed from alert's Active Instances The deactivated trigger will be removed from the Active Alerts event/state has raised the alert).
875 235
list.
If no other triggers are active and there are no pending instances Active to Normal.
Alert Acknowledgement
If any Alert event 224 was acknowledged 228 and alert's Activate alert when there are pending (nonacknowledged) instances setting is enabled, a number of things may happen: If the alert was Escalated, there are neither non-acknowledged instances that are pending for longer than Time before escalation , and the number of pending instances is below the Number of pending alerts required to initiate escalation, the alert will be de-escalated and change its state from Escalated to Active. If there are no other pending (non-acknowledged) alert instances, the alert will change its state back from Active to Normal.
and event-based
222 )
can be active:
An event trigger is active is primary event has occurred but correlated event has not A variable trigger is active if activation condition is true (and hysteresis time elapsed) but deactivation condition is false (or deactivation hysteresis time not yet elapsed) A variable trigger is also active if it's in "Flapping Detected" state Since trigger's context masks can be used to check multiple contexts context simultaneously.
863 ,
An alert instance is called Active if its trigger is still active for this alert's source context.
236
alert instances.
query.
236
AggreGate Documentation
When one or more unacknowledged alert events exist, the alert remains in Active state. This state is indicated in AggreGate Server User Interfaces by a special icon. The active state indicates that some attention is required to solve the problem indicated by an alert. When the problem is solved, system operator may launch the View Pending Alerts action and acknowledge all pending alert instances. Alert will be put back in the "Enabled" (normal) state, indicated by the icon.
232
Non-acknowledged instances may force alert to switch into the Active state only if the Allow pending alerts enabled.
setting is
query.
AggreGate Server
237
alerts may be escalated. Escalation is usually used to draw attention to some critical conditions. In most icon, require the system operators to take quick action.
For an alert to be escalated, there has to be at least one pending (unacknowledged) instance of it, and it must satisfy at least one of the escalation rules defined by the Alert Escalation 232 property. There are two escalation types: Number-based escalation Time-based escalation With number-based escalation, an alert is escalated if the number of pending alert instances specified by the Number of pending alerts required to initiate escalation setting.
236
With time-based escalation, an alert is escalated if any pending instance (alert event) is not acknowledged within the time frame specified by its Time before escalation setting. When an alert is escalated, an Escalation Notification is emailed to all recipients defined by the Notifications setting. This notification contains the time of escalation, and the reason for it:
The reason is also shown in a tooltip that appears when the mouse hovers over the alert in AggreGate Server User Interfaces. Here is what it looks like in AggreGate Client:
To put an alert back in pending or normal state, acknowledge will not be satisfied.
228
Example: If user Joe has an alert with trigger's Context Mask set to users.*.devices.*, the trigger will be activated for all devices that are accessible with Joe's user permissions 111 . However, the same trigger added to default administrator 109 's alert will work for all devices in the system. Alert triggers retrieve diverse data from contexts matching their Context Mask (e.g. during Trigger Expression evaluation). Thus, alert owner must have sufficient permission level 932 in all these contexts. Other notes: Variable triggers Event triggers
222 217
will be activated only for variables that are readable under alert owner's permissions
will be activated only for events those definitions are accessible under alert owner's permissions
Example: A corrective action belonging to Joe's alert won't be able to stop or restart the AggreGate Server unless Joe has Admin permission level 932 in the Root Context 726 . However, default administrator 109 alert's can always stop/restart the server, since he has permissions to do everything.
238
AggreGate Documentation
Once an alert is raised by one of its triggers, an additional performance impact can be caused by its corrective actions 227 . Alert's don't cause significant constant memory usage. However, considerable spot memory usage can be caused by evaluation of trigger expression referring a large dataset or execution or a corrective action.
{temperature} > 27.00 && dayOfWeek(now()) != 0 && dayOfWeek(now()) != 6 && hour (now()) > 9 && hour(now()) < 18 contains({message}, "FAILED LOGIN") && {facility} == 4 && {level} == 5 select({.:settingsStatus}, 'duration', 'setting', 'mySqlQuery') > 500
This is an Event Trigger's expression that activates an alert when message field of the event data contains "FAILED LOGIN" substring, facility field equals to 4, and level field equals to 5. This expression analyzes last execution time of an SQL query named mySqlQuery that is periodically executed by database device driver 180 . If query execution time exceeds 500 milliseconds, an alert will raise. The same expression can be used to analyze I/O duration (i.e. read/ write time) of any device variable.
ALERT INFO
Field
Alert Name
Value
impact_warning
AggreGate Server
239
ALERT NOTIFICATIONS
Field
Notify owner if connected to the server Acknowledgement is required Notification sound Send e-mail to owner E-mail recipients Additional e-mail recipients
Value
TRUE
Assuming that ten temperature sensors are connected to AggreGate Server and owned by user john . The Data Terminal 677 context of every sensor has a Temperature variable (variable name: temperature) whose value has an Integer field, celsius, containing the temperature in Celsius. Suppose the temperature of every individual sensor is not critical, but if three or more sensors report temperature greater than 100 degrees this may lead to problems in the future, and an alert should be raised to let the operators know there's a problem. We'll use a query that helps to find all thermometers reporting temperature over than 100 degrees:
We can execute the above query by calling the executeQuery function 878 from the Root 726 context and passing the query text to it as an input parameter. So the idea is to set up an alert with a trigger that periodically executes this query and checks the number of records in its output. If the number is greater than three, the trigger fires. Variable triggers may not be used to check function output directly, but here we must check a function's output -executeQuery is a function. As covered above, alerts can be triggered in two ways -- when an event (so-called "event triggers") happens, or according to the value of some variable ("variable trigger"). For our example, we'll use a "variable" trigger, but we'll hack it a little bit. A variable trigger always has a context , a variable and an expression. Now, expressions can actually invoke functions. So we're going to create an alert which has a meaningless context, a meaningless variable (which is still valid for that context), and a very meaningful expression. This expression won't even refer to the context and variable of the alert. We care only about the expression in this case, because it causes the query to be executed for us. The other parts (context and variable) are just placeholders. As placeholders, we'll use the "" (root) context and the version read-only variable, containing the server version. Out alert will be raised when the expression evaluates to true . To access the number of records contained in the output of the executeQuery function we will use the records property (see References 925 for details about the reference resolving process). So, the final reference that will return the number of thermometers registering a high temperature looks like this:
240
AggreGate Documentation
How it works: 1. The trigger periodically polls the Root context for the value of the version variable. 2. This value is discarded as it is not used in trigger expression. 3. The expression is evaluated. During evaluation, Default Reference Resolver resolves the above reference - it calls the "Execute Query" function and returns the number of rows in the result. This number is compared to the numeric constant "3". The resulting expression returns TRUE if it is greater or equal to it and FALSE otherwise. 4. If the expression returns TRUE, the trigger raises the alert and all notifications
225
are sent.
ALERT INFO
Field
Alert Name Alert Description Alert is Enabled Message
Value
temperature_warning Temperature Warning TRUE Three or more sensors show high temperature
VARIABLE TRIGGERS
Context Mask "" (empty string - Root context) Variabl Expression e version {:executeQuery("SELECT * FROM users.john.deviceservers. sensors.devices.*:temperature WHERE temperature$celsius > 100")#records} >= 3 Monitor State Changes FALSE Check Period (seconds) 10 Leve l Error
ALERT NOTIFICATIONS
Field
Notify owner if connected to the server Acknowledgement is required Notification sound Send e-mail to owner E-mail recipients Additional e-mail recipients
Value
TRUE
216
section.
of AggreGate.
To make popup notifications of an alert connected from a provider server appear in clients connected to a consumer server, make sure that the context path of connected alert context on the consumer server matches users.*. alerts.* context mask, i.e. the remote alerts appears among local alerts.
AggreGate Server
241
3.8 Reports
Reports are designed to display data in a graphic, printer-friendly format. In most cases, reports are created by users similarly to alerts 216 , queries 271 and other system objects. However, some reports are pre-configured in the system distribution and can't be changed by the user. These reports are built into the the AggreGate distribution package and extension plugins 950 . Every user
108
Every user-defined report is characterized by two important properties: Report Template that defines generic look and feel and layout of the report Source Data Expression that is used to fetch data for filling in report template Related tutorials: Building a Device Status Report 1250 Scheduled Report Emailing
1254
Administering Reports
Two contexts are used to administer reports: One is the general Reports 719 context, which serves as a container. The other is the Report 721 context, which holds the information for one report. Pre-defined reports may not have all settings and actions that are available for custom user-created reports.
{users.admin.queries.traffic_stats:data}
Example: Here is a Source Data Expression of a relative Attendance Report:
{attendance:attendanceData('{.:}')}
This source data expression refers to an attendanceData function 878 from an attendance context. During evaluation, this function is called with one parameter, the path of the context from which the Attendance Report launch action 243 has been selected (or the Default Context's 242 path, if the report is started in test mode from Report Editor 826 ). See Standard References 926 section for an explanation of why {.:} resolves to default context's path. Example: The below expression of a relative Alert History report loads historical 882 alert events 224 from the database and returns them in a table. Only a few of alert fields selected by subtable() function are included in the report.
242
AggreGate Documentation
subtable({events:get('{.:}', "alert", null, null, false, null, false)}, "eCreationtime", "eLevel", "cause", "message", "trigger", "eAcknowledgements")
See Selecting and Processing Events 1270 tutorial for more information.
When the relative report is launched using a Launch Report 243 action (the "classic" use case), relative context paths in references appearing inside the Source Data Expression 241 are resolved relatively to the path of the context from which the Launch Report action has been started. The Default Context property is not used in this case.
Reports are compiled, filled and processed by the JasperReports engine. You can refer to Jasper Reports documentation for more information on template structure, available elements and their properties.
Absolute Reports
Absolute reports usually process data coming from just one fixed source (usually one context). For example, a AggreGate Server User Accounts report shows a system-wide list of user accounts 108 . This report should be absolute. Source Data Expression
241
925 .
Relative Reports
Relative reports are designed to process data from a certain context selected by the operator when launching 242 the report. This is useful when creating a report for data coming from one Device or system resource. Relative reports are usually activated using the Launch Report 243 action of the context whose data should be processed. For example, in a network management system you may have a Router Interface Usage Statistics relative report. To view this report, you would right-click on any Router Device in AggreGate Client and select Router Interface Usage Statistics from context menu. Relative reports will install their Launch Action only into contexts that are accessible for the report owner according to his permissions 931 .
AggreGate Server
243
Directly, using the Show Report 721 action of the Report Context. For relative 242 reports, this method evaluates the Source Data Expression 241 relatively to the context specified by Default Context report property 245 . Using the Launch Report action 892 (see below). For relative 242 reports, this method evaluate the Source Data Expression 241 relatively to the context from which the Launch Report action has been launched.
Here is what a Launch Report action looks like in a context menu within AggreGate Client:
For this action to be available, the user must have an effective permission level Report context
721
935
The context on which the report operates, i.e. the one where Launch Action is defined
244
AggreGate Documentation
900
AggreGate Server
245
721 .
Field Description
Name . Name of the report context, used to refer to it from other parts of the system. It should satisfy context naming conventions 863 .
Field Name
name
864
Parameterized. Flag indicating that report is parameterized Source Data Expression. Expression template.
911
Parameterizer Source Data. This field is used only when Parameterized flag is enabled. Parameterizer Source Data is used by parameterization engine to build a Source Data Expression at report launch time based on a number of operator-specified parameters. See Parameterized Reports 246 for details. Report Template. The report template, in XML format. Save History. If this option is enabled, the fully filled copy of the report is saved in the server database 80 each time the report is launched. To see all saved copies of the report, run View History action from a Report context 721 . Report Type. Report type
242 ,
parameterizer
template saveHistory
Relative or Absolute.
type validityExpression
Validity Expression. Determines which context(s) may be "understood" by the report. See Resource Validity 948 for more information. Validity Update Rules. A list of context masks and event names. If event specified by Event field of this table occurs in any of context matching to the mask specified by Mask field in the same record, Validity Expression will be recalculated for this context. This allows to make report valid/invalid for a certain context if some changes occur in it. Default Context. The default context to be used for evaluating the Source Data Expression. See Default Context for a Report 242 for details. These properties may be accessed through the childInfo
723
validityListeners
defaultContext
variable.
Field Description
Parameter. Name of the parameter. Value . Expression used to calculate parameter value. Additional report parameters may be accessed through the parameters
724
Field Name
parameter value variable.
Resolution Environment
246
AggreGate Documentation
Resolution Environment
Default Context
927
922
Context of report being launched. The result of report parameterization 246 . It means that references in the Value expression may refer to fields defined by the parameters format 956 of the parameterizer source data.
0 Standard
931
variables only.
<form> <format> <![CDATA[ <<startDate><D><D=Start Date><E=date>><<endDate><D><D=End Date><E=date>><B=<startDate=now()><endDat ]]> </format> <expression> {attendance:timeRecorderEvData('{.:}',"<e>{startDate}</e>", "<e>{endDate}</e>")} </expression> </form> A report containing this parameterized expression will ask for Start Date and End Date parameters upon activation:
The final Source Data Expression used to build a report will something like:
{attendance:timeRecorderEvData('{.:}',"2009-05-01 00:00:00.000")}
00:00:00.000",
"2009-05-02
of user
108
reports are added only to contexts that are accessible with report owner user's permissions.
AggreGate Server
247
User Accounts
This report contains information about all AggreGate Server user accounts report:
108
248
AggreGate Documentation
Alert History
This report shows the history of a certain alert, and specifically: Alert date/time Alert level Alert cause Alert message Trigger message Acknowledgements, if any This report is Relative
242 ,
656 .
3.9 Groups
Groups are used to combine several similar system objects (Users, Devices etc.) to make batch operations more convenient. It is very easy to execute an operation over all objects in a group. Groups also provide an easy way to set similar settings to all group members or automatically replicate configuration changes between them. Another feature of groups is integration with the Common Data 260 facility that allows to have "master" values of group member properties. Changes of master value are automatically applied to all group members.
AggreGate Server
249
1263
Administering Groups
Two contexts are used to administer groups: One is the general Groups 701 context, which serves as a container for groups of a particular type. The other is the Group 702 context, which represents one group.
Nested Groups
Groups support unlimited nesting, i.e. one group may be a member of another group, that is, in its turn, a member of a third one, etc. Member list of a top-level group includes its "direct" members along with all members of its subgroups (nested groups) at all levels.
groups, Device
113
groups, report
Some types of groups, such as user groups, are global. They can be created, accessed and managed only by users with administrative permissions 931 . Other groups types, such as Device or Alert groups, belong to a specific user account and thus can be managed both by administrators and normal users (account owners).
250
AggreGate Documentation
Dynamic groups can still have manually added members. However, there is no way to remove dynamically added members from the group.
Dynamic groups will include only members that are accessible for the group owner according to his permissions 931 .
== 'printer'
Update Rules: 1. Mask = users.*.devices.*, Event = infoChanged 2. Mask = users.*.devices.*, Event = updated This dynamic group will include all network printers, e.g. devices 113 those context type string (specified by .: #type reference) starts with device. and device type (specified by type field of genericProperties variable) equals to printer. Each time context type or device type changes (this will be indicated by infoChanged or updated event respectively) the device will be re-considered for the group.
AggreGate Server
251
Expression Result 100 200 300 400 500 Green Yellow Red Magenta Blue
The below table illustrates what status will the group get in accordance with different member status string combinations and the above table: Member Status Strings 100, 200, 300, 400, 500 500, 400, 300, 200, 100 300, 300, 300, 400, 500 500, 500, 500, 500, 500 500, 500, 200, 500, 500 200, 200, 500, 200, 200 100, 200, 300, 400, 123 Group Status (Color) Green Green Red Blue Yellow Yellow Undefined
This example illustrates how device group status is calculated by default. Default group status settings of a device group are as follows: Member Status Variable: contextStatus Member Status Expression: ({status} % 10 != 2 && ({status} - {status} % 10) ==
The above group status configuration uses devices' context status 678 information to calculate status of device group. There are three defined statuses of a device group: Error (meaning that at least one device reports an error), Offline (meaning there are no errors but at least one device is offline or its connection state is unknown) and Online (meaning that all devices in the group are connected and report no errors). The member status expression analyzes integer status field of contextStatus variable. This status can be parsed into: Number of tens representing device synchronization status error, etc.) Number of units representing device connection status
127 128
252
AggreGate Documentation
status unknown) The device group individual member's status expression result is: 1 (Error) if device is not suspended ({status} % 10 != 2) and reports a synchronization error ( ({status} - {status} % 10) == 40) 3 (Normal) if device is suspended or online ({status} % 10 == 1 || {status} % 10 == 2) 2 (Offline) otherwise See Group Status configuration
253
Manual Replication
Every Group context 702 has a Replicate to children 910 action, used to copy the settings from one group member to all other members. This action is very convenient to configure group members in the same way.
Automatic Replication
Groups also support auto-replication. Auto replication turned on by Enable Auto-replication 253 flag and controlled by the Replication Options 254 property of a group. This property is a table, containing a list of properties (variables 869 ) appearing in the group member contexts. Auto-replication may be enabled or disabled separately for every property. If the auto-replication option is enabled for a certain property, changes to its value in one of the group members are automatically applied to all other members. For example, if there are three Devices 113 (A , B and C) in a group G1 and Device B is disabled (e.g. by editing its properties in AggreGate Client), Devices A and C will be automatically dosabled as well. Auto-replication works in a single group only: if Device C is a member of two groups (G1 and G2) and was disabled during auto-replication in G1, other members of group G2 will not be disabled. This prevents unexpected 'domino' effects, whereby one change to a replicated group creates unexpected chaos. When an auto-replicated group detects changes to a property of one of the group members, it takes the value of this property (gets the Data Table 854 containing the value of the context 863 variable 869 ) and sets that value for the same property of other group members using a Data Table Smart Copy 861 operation.
Executing a query
to show only events that was generated by Devices participating in a certain group
To construct a mask that will match 866 all group members, take group's context path and append a wildcard section (". *") in the end, e.g.: users.admin.alerts_groups.snmpAlerts.* Example: If default administrator 109 owns a device group called environment that includes all datacenter environment monitoring devices, use the following mask to match all group member Devices:
users.admin.devgroups.environment.*
This mask will be resolved to the list of member devices, e.g.:
AggreGate Server
253
702 .
Field Description
Group Name. Name of the group context, required to refer to this group from other parts of the system. It should satisfy the context naming conventions 863 . Group Description. Textual description of the group. This is also a description group context. Enable Auto-replication. Enables auto-replication
252 864
Field Name
name
of the
description
autoReplication hideMembers
Hide Members From Primary Location . If this flag is enabled, group member contexts are shown inside the group, but not shown under their parent context. This is a mapping feature that affects only the visual representation of the server context tree (e.g in System Tree 784 ). Components that show a real (non-mapped) context tree (e.g. Entity Selector 815 ) will show group member contexts at their real locations specified by context paths. No children will be visible under the group context in this case. Members are not hidden from primary location:
Validity Expression. Determines which context(s) may be automatically added to the group. See Dynamic Groups 250 and Resource Validity 948 for more information. Validity Update Rules. A list of context masks and event names. If event specified by Event field of this table occurs in any of context matching to the mask specified by Mask field in the same record, Validity Expression will be recalculated for this context. This feature is used for automatically adding/removing a certain context from a group if some changes occur in it. This property may be accessed via the childInfo
704
validityExpression
validityListeners
variable.
evaluation rules.
Field Description
Enable Custom Status. Flag that controls whether custom status is enabled for a group.
Field Name
enabled
254
AggreGate Documentation
Member Status Variable. Property (variable) of group members that will be used to calculate status of each member. Member Status Expression. This expression will be evaluated for every group member to find out a status value (String) for this member. This value will be than looked up in the Status Table.
variable
expression
922
Standard
931
variables only.
Status Table. The lookup table used to calculate aggregate status of the group as described in the Group Status 250 article. The table has three fields: Member Status Expression Result. Result of Member Status Expression evaluation. Color. A color that will be used to mark the group with such status (there are twelve predefined group status colors). Description . Description of this status. This property may be accessed via the groupStatus
704
statuses
variable.
Field Description
Property. Name of the variable
869
Field Name
(property) to apply the replication rule to. variable description replicate useMaster
Description . Description of the above property. Auto-replication. Use automatic replication for this variable. Use Common Table. Use a master value 255 for this property. This setting may be enabled only if Auto-replication is disabled for this property and Current Common Table with Master Value is not empty (i.e. a Common Table containing a master value exists). Current Common Table with Master Value . Description and location 261 of the Common Table that may be used as a master value of a property. This is a read-only field. Replication options may be accessed through the replication
705
master
variable.
AggreGate Server
Groups may retrieve diverse data from its member contexts (e.g. during evaluation of Group Status Thus, group owner must have sufficient permission level 932 in all group member contexts.
250
255
expressions).
groups will include only members that are accessible by the group owner according to his permissions.
255
If Common Tables that can be used as a master value for a property were created in both Global and User Common Data containers, the user's container will be used. Example: Let's say your Device is a time recorder that has "Bell Table" setting, defining several daily alarms. You can drag the time recorder and drop it on the Global Common Data 666 in AggreGate Client, launching a Create New Table From Variable action. You'll now be prompted to select the variable to be used as a source for the new common table. Select "Bell Table":
Once the variable has been selected, a new common table is created in the global container. It contains the list of alarms that were defined in the dropped Device:
256
AggreGate Documentation
You'll now create a new Device group and populate it with some time recorders:
702
action to configure the group. The group settings dialog will open. Here is what the
The Use Common Table setting can be enabled for Bell Table because a corresponding master value is found in the Global Common Data container. Let's enable it and save changes. Now our group monitors changes to the Bell Table located in the common data. If someone edits the table, updated bell times will be saved to all time recorders in the group.
of AggreGate.
If a group from a provider server is connected to a context tree on a consumer server, consumer server users may add this group as a subgroup to other consumer server groups. If a local consumer server group has custom status 250 calculated upon statuses of its members, including members of nested subgroups, the logic of status calculation will differ for local and remote subgroups: For a local subgroup, each subgroup's member is directly processed by a top level group. The top level group calculates Member Status Expression for local subgroup's members and put their individual statuses to its member status 705 table. For a remote subgroup, only aggregated subgroup status received from a provider server is processed. Members of a remote subgroup are not processed individually. The aggregated subgroup's status is added to top level group's member status table and considered during its status evaluation.
The above rules effectively mean that if remote groups are put into local groups with dynamic status, status evaluation rules of local and remote groups should match to avoid errors on consumer server.
AggreGate Server
257
3.10 Trackers
Trackers help watch mission-critical server data in real-time. All trackers are shown togethe table (e.g. Trackers 824 window in AggreGate Client) to enable efficient monitoring. Trackers use highlighting to indicate their state .
Here is what the trackers table looks like in AggreGate Client:
The basis of a tracker is a tracked expression written in AggreGate Expression Language 911 . This expression may refer to some server data or to data originated from hardware Data Terminals 113 . A simple tracked expression may be used to monitor some value directly, while more complicated ones help track combinations of several values. For example, a tracker can be easily set up to watch dew point temperature calculated by temperature and absolute humidity measurements coming from different sensors. Every user
108
The value of each active tracker expression is recalculated periodically, as specified by the Check Period the tracker.
258
property of
Administering Trackers
Two contexts are used to administer trackers: One is the general Trackers 750 context, which serves as a container. The other is the Tracker 753 context, which holds the information for one tracker.
258
AggreGate Documentation
According to this table, tracker status will be Extremely Low if temperature is lower than 15 degrees, Very Low if temperature is between 15 and 19 degrees etc.
753 .
Field Description
Tracker Name. Name of the tracker context. It should satisfy context naming conventions 863 . Name is required to refer to this tracker from other parts of the system. Tracker Description. Textual description of the tracker. This is also a description of the tracker context. Tracked Expression. The expression to be tracked.
864
Field Name
name
description
expression enabled
Enabled. If the tracker is not enabled, no calculations of its value and status are performed periodically. Check Period. Defines how often tracker value and status is recalculated. Hide If Status Undefined. If a tracker currently has no custom status 258 (i.e. no status expressions were resolved to TRUE), it will be hidden from the trackers list if this flag is set. History Storage Time . Sets the period of raw tracker history expiration. Technically, this is how long are the changes of Tracker variable stored in the database. An alternative method of keeping tracker history is using Tracker Statistics 259 .
period hideIfNoStatus
historyStorageTime
754
variable.
Field Description
Field Name
AggreGate Server
259
Description . Textual description of tracker status. Expression . Expression that must be true to activate status. Color. Color used to highlight the tracker when this status is active. Level of status change event. Severity when status is changed to this one.
882
of Status Change
755
754
variable.
that help to maintain long-term history for trackers that represent numeric
If a new channel is added to the tracker's Statistical Channels table, this channel will be pre-configured to convert tracker value to a number and collect its stats.
action.
If you create a copy of a certain tracker under another user account 108 , the copy may not function properly if new tracker's owner has no permissions to access data referred by the Tracked Expression of the cloned tracker.
of its Tracked
Trackers should be used only for calculating values that are supposed to be constantly monitored by system operators. Using trackers to pre-calculate some values to later display them on widgets 312 or dashboards 617 is generally a bad idea since the tracker value will be periodically recalculated even when this value isn't being displayed, causing performance overhead. To avoid this, get rid of trackers by using one of the following techniques: For non-reused trackers, just copy tracker's tracked expression to a widget binding expression previously referred tracker value
606
what has
260
AggreGate Documentation
309
For reused trackers, define a model 303 with several functions functions from your widget binding expressions
Calculating Devices
Tracked Expression: aggregate("users.*.devices.*", "{env/previous} + ({.:
status$connectionStatus} == 1 ? 1 : 0)", 0)
This expressions uses aggregate() function to screen all device contexts (i.e. all context matching users.*. devices.* mask 865 ) and calculate those having connectionStatus field of the status variable equal to 1 (i.e. "online"). It will return number of online devices available to the user who owns the tracker. Thus, if executed with default administrator 109 's permissions, it will return total number of online devices in the system.
status$maxMemory})
First, amount of memory currently used by the Java VM is calculated by taking current allocation size and subtracting its free part. Second, the above number is divided by the maximum memory size that the JVM is allowed to allocate. This gives the relative memory usage that is multiplied by 100 to calculate the percentage.
user account:
in the system.
in the system.
Online Devices. Shows the number of Devices currently online. Offline Devices. Shows the number of Devices currently offline. Suspended Devices. Shows the number of Devices currently suspended. AggreGate Server Memory Usage. Shows the memory used by AggreGate Server as a percentage of the total memory available for it according to the Java Virtual Machine (JVM) startup configuration. The usage tend to follow a "sawtooth pattern" since it grows during normal server activities and instantly drops during a garbage collection that occurs in the JVM. Garbage collection is a form of automatic memory management. The garbage collector periodically attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program.
of AggreGate.
To make a tracker connected from a provider server appear in Trackers table of clients connected to a consumer server, make sure that the context path of connected tracker context on the consumer server matches users.*. trackers.* context mask, i.e. the remote tracker appears among local trackers.
AggreGate Server
261
Creating tables. The Common Data container supports creating a number of tables. The only restriction is that all the tables inside a Common Data must have a unique names. Every table has both a name and a description, but the description doesn't have to be unique. Removing tables: A table inside a Common Data node may be removed, along with all data it contains. Defining and modifying table structure : The user (or a specific plugin) may dynamically change the structure of a table in a way suitable for a task being performed. Viewing and editing data: Users can view and modify the contents of a Common Data table. A common table is a Data Table 854 of a user-defined format which is administered using the Common Data context, and which may be accessed by different users or Devices.
262
AggreGate Documentation
Custom property will be added only into contexts that are accessible for the common table owner according to his permissions 931 . To be able to read this property, the user must have an effective permission level contexts: Common table context
668 935
of Observer in two
of the common table that servers as the base for this custom property
The context to that the property is added To be able to write this property, the user must have an effective permission level same contexts.
935
of Manager in the
of a context.
Real-World Example
For example, let's say our Devices have a "Checklist Table" setting, containing a list of things that should be checked by the Device operator after device startup. This Checklist Table should be same (or almost the same) for all Devices in the facility. Thus, we can create a Common Table that will contain "master" Checklist Table. The creation process is quite simple. Note that this is a hypothetical example -- you might not have Devices with this exact setting. It's here just to give you a general idea of what the process looks like. This is how you would do it in AggreGate Client 776 , had you had Devices with such a table: 1. Drag any Device node ( ) in System Tree
784
).
3. A new Common Table will be created and shown in the System Tree:
677
AggreGate Server
263
tab and change Synchronization Mode for Checklist Table to Use Server-Side Master Value. After that, select your new common table in the Master Value field:
5. Now, a new master Checklist Table will be written to all Devices. You could open the settings of any Device and see that its Checklist Table setting is not editable anymore. Instead, a button fills the row, with a label saying "Using common data table":
6. You can click this button to see what data was written from Common Table to the Device:
If it is necessary to exclude particular checklist items from some Devices, see the Record Permissions figure out how to do this.
265
section to
264
AggreGate Documentation
Disabling Extendable Selection Values (cells that contain values that doesn't appear in Selection Values will be set to default). When the Minimal number of records is set to a value greater than the current number of records in the table, empty records with default values are created to "fill the table up". When the Maximal number of records is set to a value lesser than the current number of records in the table, any 'extra' records are trimmed off the end of the table (removed). The common table's data is stored in AggreGate Server database viewed and edited using the Edit Data 668 action.
80
When changes are made to the format or contents of a table, they're detected by other system components. For details, see Uses of Common Data 261 (specifically, Integration with Groups and Integration with Data Terminals). Contents of a Common Table (screenshot from AggreGate Client):
668 .
Field Description
Table Name. Name of the common table 668 context. It should conform to context naming conventions 863 . This name is used to refer to this table from other parts of the system. Table Description. Textual description of the table. This is also a description Common Table context. Minimal number of records. Maximal number of records. Enable per-record permissions. Per-record permissions let you control which contexts access each and every record in the table (as opposed to controlling access to the whole table). These may be accessed via the childInfo
669 863 864
Field Name
name
of the
description
variable.
Field Description
Name . Unique name of the field. Type . One of the types supported by the Data Table Format
856 .
Field Name
name type
AggreGate Server
265
Description . Textual description of the field. Default. Default value of the field. Read-only . Indicates that field is read-only. Nullable. Indicates the field may contain NULL ("Not Set") values. Key. Indicates that field is a key field
856 .
Selection Values. List of possible values for this field. Extendable Selection Values. Indicates that the field may contain values that are not listed in Selection Values. Help. Additional info about the field. Editor/Viewer . Defines how the value of the field is edited. For example, Data Block 857 fields may be edited using Image Editor, Sound Editor of generic File Editor. More info about field properties can be found here
855 .
help editor
669
variable.
Field Description
Use common table as custom property . When enabled, this common table is added as a custom property to the contexts according to Validity Expression. Validity Expression. Determines which context(s) the custom property will be added to. See Resource Validity 948 for more information. Validity Update Rules. A list of context masks and event names. If event specified by Event field of this table occurs in any of context matching to the mask specified by Mask field in the same record, Validity Expression will be recalculated for this context. This allows add/remove custom property from a certain context if some changes occur in it. These may be accessed via the customProperties
670
Field Name
enabled
validityExpression
validityListeners
variable.
266
AggreGate Documentation
Common table per-record permissions differ from user 108 's permission tables 933 . A user's permissions define which contexts he may access, and which operations he may execute in every such context. In contrast, common table record permissions define which contexts may access a given record. Currently, this is only useful in the following scenarios: For Integration with Groups, the permission list may contain only Group contexts in the list will write this record for their members.
702 .
For Integration with Data Terminals, the permission list may contain Data Terminal contexts 677 and Group contexts 702 of Data Terminal groups. In the former case, the record will be accessible by a certain Data Terminal. In the latter case, it will be accessible by all Data Terminals in a group. If you're trying to keep a table secure, you'd better control who can edit the table itself -- don't just set perrecord permissions. When per-record permissions are enabled, every record in table contains two additional fields: Access to record Permissions
The Access to record field has three possible values: Enabled, Disabled and Determined by permissions. When access is Enabled, per-record permissions are switched off for this record, and every group or Data Terminal has access to it. When access is Disabled, no groups and Devices will receive this record when retrieving the table's contents. And when the field it set to Determined by permissions, you can set a list of groups or Devices which will have access to this record. If a user is allowed to edit the table itself, he may modify per-record permissions. When the Integration with Devices feature is used to work with a common table, the permission list may contain not only ordinary Data Terminal contexts, but also Data Terminal groups . When a Data Terminal group is added to the permissions list of a specific common table record, all of its members will have access to this record.
according to a user-defined
that matches the contexts from which the action will be executed
Name of an action to execute Any input parameter(s) required for the action At least one trigger to determine when the action is executed The scheduler stores its internal state persistently. This means that when the server is restarted, the scheduler can detect if any scheduled jobs were missed (not launched) while the server was down. The Scheduler executes actions in headless (non-interactive) mode execution cannot be scheduled. Basic properties of a scheduled job are described here
270 . 893 .
AggreGate Server
267
Every user
108
744
for viewing:
Administering Scheduler
Two contexts are used to administer scheduled jobs: One is the general Scheduled Jobs 742 context, which serves as a container. The other is the Scheduled Job 744 context, which holds the information for one scheduled action.
Simple Triggers
According to a single simple schedule trigger, action is executed predefined number of times with a fixed period. It is also possible specify start and end of time interval when the execution may take place. It is possible to define more then one trigger of this type. When execution is finished (this may happen because repeat count or end time is reached), the corresponding trigger is automatically removed from schedule. Properties of simple triggers are described here 270 .
Advanced Triggers
Advanced schedule triggers allow complex execution patterns like "execute every minute starting at 2pm and ending at 2:59pm, every day" or "execute at 10:15am on every last Friday of every month during the years 2009, 2010, 2011 and 2012". There can be more than one such trigger. Triggers are automatically removed from the schedule when no executions should happen in the future, but in practice this happens only if the Year option is set to some finite range of years. Properties of advanced triggers are described here 270 .
268
AggreGate Documentation
Execution may not be scheduled for any combination of Day of Month and Day of Week at the same time. If execution pattern for any Day of Month is set to a non-Never value, patterns for every Day of Week must be set to Never and vice versa.
AggreGate Server
269
Year Time Start Date/Time End Date/Time Execution Pattern Day of Month Month Day of Week Year Time Start Date/Time End Date/Time Execution Pattern Day of Month Month Day of Week Year Time Start Date/Time End Date/Time Execution Pattern 09:00:00 <Not set> <Not set> At 9:00am on the last Friday of every month. All days : Never Jan - Mar : Enabled, other months : Disabled Fri: Last, other days : Never 2006 - 2008 09:00:00 <Not set> <Not set> At 9:00am on the last Friday of every January, February and March during years 2006, 2007 and 2008. All days : Always All months : Enabled All days : Never 09:00:00 <Not set> <Not set> At 9:00am on the 15th day of every month. All days : Never All months : Enabled Fri: Last, other days : Never
Day of Month Month Day of Week Year Time Start Date/Time End Date/Time Execution Pattern
09:00:00 01.07.2007 00:00:00 01.08.2008 00:00:00 At 9:00am every day, first execution at 01.07.2007 09:00:00, last execution at 31.07.2007 09:00:00.
270
AggreGate Documentation
744 .
Field Description
Job Name. Name of the scheduled job context. It should satisfy the context naming conventions 863 . Name is required to refer to this job from other parts of the system. Job Description . Textual description of the job. This is also a description Scheduled Job context.
864
Field Name
name
of the
description
Job is Enabled. All triggers of enabled jobs are active and job is executed. When job is re-enabled after being disabled for some time all misfired triggers are executed. Context Mask. Context mask 865 defines a number of contexts to call the scheduled action from. When scheduled job is launched, selected action is launched in consecutive order from every context that matches to the mask. Action. Name of the action to be launched. Parameters. Action-specific parameters. These parameters are used to substitute user input when scheduler job executes action in non-interactive mode. For example, if scheduled action requires confirmation (i.e. asks user something like "Delete query?" and allows to click OK or Cancel), this field will contain a "Delete query?" parameter with two possible choices: "OK" and "Cancel". These properties may be accessed through the jobDetailsView
745
enabled
mask
action input
variable.
Field Description
Start Date/Time. Time before that execution is not allowed according to this trigger. Default value is <Not set>, so execution starts immediately after the trigger is created. End Date/Time. Time after that execution is not allowed according to this trigger. Execution ends and trigger is deleted when this time comes. Default value is <Not set>, so execution is ended when Repeat Count is reached or continues endlessly is Repeat Count is set to 0. Repeat Count. Number of executions. Execution ends and trigger is deleted when job is executed Repeat Count times according to this trigger. Default value is 0 what means "execute unlimited number of times". If this option is set to zero, execution may end only when End Date/Time comes if is defined. Repeat Interval. Specified in seconds. Simple schedule may be accessed through the triggersView
745
Field Name
startTime
endTime
repeatCount
repeatInterval variable.
Field Description
Field Name
AggreGate Server
271
Day of Month. Specifies execution pattern for every day of month: always, nearest weekday of never. Month . Defines for which months execution is enabled. Day of Week. Specifies execution pattern for every day of week: always, first, second, third, last or never. Year. Specifies a range of years for those execution is allowed. It is a combination of comma separated years or year ranges, i.e. "2003, 2004, 2006-2008". Empty value causes endless execution every year. Time. Execution time. Job is executed at that time every day for which execution is allowed by other trigger options. The only way to specify more then one execution time is to create several triggers. Start Date/Time. Time before that execution is not allowed according to this trigger. Default value is <Not set>, so execution starts immediately when combination of other options will allow it. End Date/Time. Time after that execution is not allowed according to this trigger. Trigger is deleted automatically when this time comes. Advanced schedule may be accessed through the cronTriggersView
746
dayOfMonth
month dayOfWeek
year
time
startTime
endTime
variable.
Thus, the job may check and process only data that
Example: A job belonging to Joe's user account won't be able to stop or restart the AggreGate Server unless Joe has Admin permission level 932 in the Root Context 726 . However, default administrator 109 's job can always stop/restart the server, since he has permissions to do everything.
3.13 Queries
SQL (Structured Query Language) is a powerful language for extracting and processing data. Tibbo AggreGate Server natively supports SQL, making it easy to access its internal data, as well as data collected from hardware devices. The specific SQL dialect supported by AggreGate Server is called AggreGate Query Language. AggreGate Query Language is highly integrated into AggreGate Server. Since all AggreGate Server internal data is maintained as Data Tables, it's easy to use SQL queries to modify the properties (settings, variables) of various system objects. Data Tables contain actual data, as well as data validation rules, detailed information each field, etc. This section of the manual is not a tutorial of the SQL language itself. Rather, it assumes you already know SQL and SQL syntax. This isn't because we want to make your life hard -- it's just because SQL is an extensive topic, and great minds have already wrote excellent books and tutorials on the topic. So, if you're unfamiliar with SQL, please read a bit about the subject generally. Once you understand SQL as a wider subject, come back to this chapter and learn how we've implemented it in AggreGate. We've listed some places where you can learn more about SQL in the SQL References 274 section.
272
AggreGate Documentation
The first task is performed using a normal data selection ("SELECT") query, creating a Data Table viewable through a AggreGate Server User Interface (such as AggreGate Client). For example, you can write a query that shows the traffic for all Device Servers sortable table:
1003
Queries can also present editable results, allowing users to enter data, for example to configure several instances of the same device. So you can use a query to access the settings of all Device Servers 1003 in the system and edit them in a single table:
Queries can be also used in different AggreGate Server facilities. For example, you can set up an alert that will be raised if a query result satisfies some condition (see Hardware Devices in Trouble 239 example in Alerts 216 chapter for details). Query results may be converted into a printable report when they're browsed (e.g. using the Generate Report feature of Data Table Editor 801 in AggreGate Client). Widgets 312 may also be used to present data previously aggregated and filtered by a query.
AggreGate Server
273
is the alias assigned to the table generated from context's data (see First Difference 272 , above). fieldAlias is in the form entityName$fieldName. entityName is the name of a context variable or function (such as childInfo , which is the "user information" variable of the user context). fieldName is a specific field of that variable or function output (such as firstname , the user's first name, for the childInfo context). People familiar with classic SQL language may use the following analogy to understand the AggreGate Query Language quickly: a query in AggreGate is exactly like a normal SQL query with some exceptions: 1. Table names used in normal SQL are substituted by Context References 274 . However, every Context Reference is used to build a table before the query is executed. So the AggreGate Query Language processor deals with tables, just like a normal database engine. 2. Field names used in normal SQL are substituted by Field References 277 . But these Field References behave exactly like normal field names in the classic SQL query. They just have a slightly different syntax, allowing a user to refer to the fields of "virtual" tables generated from Context References. To see the exact differences in the syntax, and the logic behind them, please read about Field References 277 . 3. When an SQL query is executed, you get a "dumb" table, containing just values of data. However, when an AggreGate Query is executed, you get something we call a "Data Table 854 ", which is smarter than "just" a table -- it contains data validation rules, field types, and other such metadata.
274
AggreGate Documentation
starting from the 15th record, etc.), you can use a LIMIT clause to get just as many records as you want. AggreGate Query Language supports most features of SQL standard selection queries. It has support for nested SELECT queries, SQL aggregation functions used to perform calculations on various data values (COUNT, MIN, MAX, SUM, AVG, etc), and built-in functions 300 (numerical, string, date/time and system). For a detailed description of AggreGate Query Language syntax, click here
299 .
Administering Queries
Two contexts are used to administer queries: One is the general Queries 714 context, which serves as a container. The other is the Query 716 context, which holds the information for a single query. See descriptions below.
Every user
108
Built-In Queries
Several queries are built into AggreGate Server and appear under default administrator's All Users . This query allows viewing and editing the settings of all user accounts
108 109
user account:
in a single table.
Device Status Summary. Shows connection and synchronization status of every Device. Offline Devices. Shows offline Device summary. Active Alerts . Shows pending and escalated alerts These queries are described in the Query Examples
284 216
summary.
chapter.
SQL References
For more information on SQL language check the following links: http://en.wikipedia.org/wiki/SQL http://www.w3schools.com/sql/sql_select.asp http://sqlzoo.net/ http://www.fluffycat.com/SQL/ http://www.baycongroup.com/tocsql.htm
AggreGate Server
the group remote of the sensor Device which belongs to the user charlie). Every Context Reference may combine context masks and several entity references (even of different types): users.*:childInfo:variableGroup.*:status()
275
This reference points to the value of the childInfo variable, all variables that belong to the variableGroup group and to the output of the status function called without parameters. Values are fetched from all contexts corresponding to the mask users.*, i.e. to the context of all users in the system that are visible with the permission level of the user who executes this query.
to see where the Context References may appear in Query Language Syntax.
SPECIAL FIELDS
Every table build from a Context Reference contains three additional fields: CONTEXT_ID, PARENT_ID and RECORD_INDEX. These fields are implicitly added by query processing engine. CONTEXT_ID field contains full name of context that originated the particular record. PARENT_ID field is the full name of context that is parent to context that originated the record. RECORD_INDEX is the number of record in Data Table from that the particular record was taken. The special fields may be referred by the WHERE clause. However, these fields are hidden. They are not visible in the query results. These special fields may be referred in any query. See using joins
293
Note that names of special fields must be explicitly specified in the SELECT clause when using editable query results 280 . See write-back fields 281 for more information.
276
AggreGate Documentation
This context also defines the func1 function, which returns the following value: floatField 45.6 78.9 integerField 456 789
path.name2 has the same variable names, but with different values: var1: stringField "string in 2nd context" var2: integerField 555 booleanField FALSE
This context also defines a func1 function which returns the following value: floatField 11.1 22.2 33.3 Example 1 Context Reference: path.name:var2 Table built from this simple context reference will be exactly the same as value of var2: var2$integerField 123 var2$booleanField TRUE Note that names of fields in the resulting table include the variables from which each field was taken (var2 above). This helps to refer to these fields using Field References 277 . Example 2 Context Reference: path.name:var1:var2 This reference will resolve to a table with three fields, one from the value of var1 and two from the value of var2. There's just one line, because both variables come from the same context. var1$stringField "test string" Example 3 Context Reference: path.*:var1:var2 This reference points to a context mask, so it will result to the table with three fields, like in the previous example, but with two records, one per every context: var2$integerField 123 var2$booleanField TRUE integerField 666 777 888
AggreGate Server
277
var1$stringField "test string" "string in 2nd context" Example 4 Context Reference: path.*:func1
This reference points to a single entity (function) with a value containing multiple records, so the resulting table will have the same fields as the function output. The total number of records in the table is five, since two records are provided by the value of func1 in path.name and three records by the value of func1 in path.name2 func1$floatField 45.6 78.9 11.1 22.2 33.3 Example 5 Context Reference: path.*:var1:func1 Since several entities ( var1 variable and func1 function) are referred here, the multi-line values of func1 will be put in nested tables. Fields in these nested tables can not be referred using Field References 277 . var1$stringField "test string" "string in 2nd context" func1 [Nested table with the value of "func1" in "path.name"] [Nested table with the value of "func1" in "path.name2"] func1$integerField 456 789 666 777 888
contextEntityName$dataTableFieldName
In this Field Reference, contextEntityName is the name of the context variable or function that was used by the single Context Reference in the query. dataTableFieldName is the name of the field in the Table Format 855 of the Data Table containing the value of that entity. Example:
contextReference AS tableAlias
Example:
users.*:childInfo as ui
278
AggreGate Documentation
Here we give a table built from the users.*:childInfo Context Reference an alias named ui . Now we can refer to the fields of this table using the alias. The generic form of a Field Reference that includes an alias is:
tableAlias.contextEntityName$dataTableFieldName
Example:
At first look it may seem that a reference to a field should include only two components: tableAlias and fieldName. But AggreGate Query Language lets you generate one source table (a table on which the query will be run) from the values of several context variables or from the output of several context functions. That is why we need an additional entityName. It points to the name of a context variable or a function which contains the fieldName field.
Field Description
Name. Name of the query context. It should satisfy the context naming conventions Name is required to refer to this query from other parts of the system. Description. Textual description of the query. This is also a description context.
864 863 .
Field Name
name
of the Query
description
Parameterized. Indicates that query is parameterized. If this flag is set, Query Text should contain parameterized query in XML format, not just the query in plain text. Query Text. Text of the query. Edited in a text area editor. Parameterizer Source Data. This field is used only when Parameterized flag is enabled. Parameterizer Source Data is used by parameterization engine to build a Query Text at query execution time based on a number of operator-specified parameters. See Parameterized Queries 282 for details. Field Descriptions. This is the table of custom descriptions assigned to the fields of query result. There are two fields: Field that is name of field as it appears in the query result table, and Description that is a custom description for this field. Disable Editable Result. Enables/disables editable results These properties may be accessed through the childInfo
717 280
parameterized
query parameterizer
fields
disableEditableResult
variable.
AggreGate Server
Exception (optional). Text of the error generated by the context when the query accessed its variables or functions.
279
Stack Trace (optional). Stack trace of exception generated by AggreGate Server. May be requested by AggreGate technical support team during resolving of complex problems. A stack trace is just computer-generated debug information -- it's not supposed to be very human-readable. Here is an example of debug report (screenshot made in AggreGate Client):
280
AggreGate Documentation
AggreGate Server
281
Some fields (i.e. "Username" field) will not be editable, because they are not defined as editable in the format of the childInfo variable. Example 2:
WRITE-BACK FIELDS
There is a special way to select a pre-defined number of fields by explicitly listing them in the SELECT clause and still make these fields editable. To do this, you have to add three so-called "write-back" fields to the list of Field References listed in the SELECT clause. These fields help the query processing engine figure out where the information contained in the editable query results should be stored when the modified result is saved. The format of these write-back field references is as follows:
tableAlias.CONTEXT_ID,
tableAlias.PARENT_ID,
tableAlias.RECORD_INDEX
where tableAlias is name of alias given to the Context Reference 274 in the FROM clause, CONTEXT_ID, PARENT_ID and RECORD_INDEX are predefined constants. Just put them in the query text as-is, without modifying anything. These write-back fields must be always used all together. Example: Assuming we have a query that shows statistics of traffic generated by all Device Servers executing it:
1003
SELECT info.deviceServerInfo$owner, info.deviceServerInfo$name, info.deviceServerInfo$description, info.deviceServerInfo$blocked, info.status$servertods, info.status$dstoserver, FROM users.*.deviceservers.*:status:deviceServerInfo as info
Result of this query is not editable, because selected fields are explicitly listed in the SELECT clause:
282
AggreGate Documentation
This correction will make Device Server description and its "blocked" status editable in the query result. Other fields will remain read-only, since they are defined as read-only in the format of the deviceServerInfo ("Device Server Info") and status ("Device Server Status") variables:
If some columns are not editable due to the absence of write-back fields, this is indicated in the query debug report
278 :
<form> <format> <![CDATA[ <<byusername><B><D=Filter by User Name>> <<username><S><D=User Name>> ]]> </format> <expression> SELECT * FROM users.*:childInfo <p enabled="{byusername}">WHERE childInfo$username LIKE '%<e>{username}</e>%'</p> </expression> </form>
This query will ask for two parameters upon execution:
AggreGate Server
283
If the user checks "Filter by User Name", final parameterized query text will be
<form> <format> <![CDATA[ <<startDate><D><D=Start Date>><<endDate><D><D=End Date>><B=<startDate=now() ><endDate=now()>> ]]> </format> <expression> SELECT * FROM utilities:variableHistory(users.admin.devices.site1, batteryChargeCurrent, <e> {startDate}</e>, <e>{endDate}</e>) </expression> </form>
878
Complexity of the the query (i.e. usage of JOINs, functions Debugging a query
278
300 ,
is the way to find out what stages of the query execution process are slow.
284
AggreGate Documentation
Now let's use one of the simplest possible queries to get the value of this variable from just one context. Query Text:
This query contains two clauses: SELECT and FROM. The SELECT clauses says that we should select all fields ("*"). The
AggreGate Server
285
FROM clause contains a single Context Reference 274 ("users.admin:childInfo") used to build a table on which the query will be executed. The contents and format of this table will match the value of the childInfo variable exactly. All fields in the result of this query will be editable childInfo variable.
280
except for the fields that are defined as read-only in the format of
When viewing or editing the properties of some context (such as the User context), you usually see variable descriptions rather than variable names . But we must use variable names in query text: Variable names are usually shown in the tooltips that appear when mouse hovers over some variable description:
Query Result:
286
AggreGate Documentation
For example, you can now change the first name and last name of some user and save the changes:
This query outputs almost the same table as the previous one, but the rows in this table are sorted by Username (name field in the format of the childInfo variable) in descending order. The query contains a two-component Field Reference 277 (childInfo$name ), used to refer to a field within the table built when resolving the Context Reference users.*: childInfo . When we examine value of "childInfo" variable in AggreGate Client or other AggreGate Server User Interface, field descriptions are shown in the table header instead of field names . But we must use field name in order to refer to it in query text. Field names are usually shown in tooltips that appear when mouse hovers over the field header:
Query Result:
AggreGate Server
287
childInfo$firstname,
childInfo$lastname
ADDING EXPRESSIONS
Let's now use a Query Language expression to show the first and last name of users in a single column, to make browsing more convenient. We'll also add a new column to the query result, user's country.
288
AggreGate Documentation
Query Text:
SELECT childInfo$name, || CASEWHEN((childInfo$firstname CASEWHEN((childInfo$lastname childInfo$country FROM users.*:childInfo ORDER BY childInfo$name desc
This query selects three fields from the source table. The first and third fields contain the user's username and country respectively. The value of the second field is calculated using an expression. This expression gets a user's first name and appends a space and the user's last name to it. The double pipe marks (||) used are just a standard SQL operator, used for concatenating the strings. The first and last names are transformed using the CASEWHEN built-in function 300 to make sure that an empty string is shown if value of the first or last name is NULL ("<Not set>"). Note that the name for the second column is generated automatically. Query Result:
'
'
SELECT childInfo$name, CASEWHEN((childInfo$firstname IS NULL), '', childInfo$firstname) ((childInfo$lastname IS NULL), '', childInfo$lastname) as name, childInfo$country FROM users.*:childInfo ORDER BY childInfo$name desc
Second column is now called "name" in query result. Query Result:
AggreGate Server
289
Now let's make it possible to change the users' countries -- add write-back 281 fields to make the result editable. To add them we should assign an alias to the Context Reference ("table alias"), because write-back fields (CONTEXT_ID, PARENT_ID and RECORD_INDEX) have to be specified for a given context reference. To specify which reference should be written back, you have to use an alias. Carefully read the example below to figure it all out. Query Text:
SELECT info.childInfo$name, CASEWHEN((info.childInfo$firstname IS NULL), '', info.childInfo$firstname) || ' ' || CASEWHEN((info.childInfo$lastname IS NULL), '', info.childInfo$lastname) as name, info.childInfo$country, info.CONTEXT_ID, info.PARENT_ID, info.RECORD_INDEX FROM users.*:childInfo as info ORDER BY info.childInfo$name desc
In the result of this query, Country column will be editable. Username column is still read-only because it is read-only in the source variable ("childInfo"). Name column is read-only because it is calculated using an expression. Query Result:
SELECT info.childInfo$name, CASEWHEN((info.childInfo$firstname IS NULL), '', info.childInfo$firstname) || ' ' || CASEWHEN((info.childInfo$lastname IS NULL), '', info.childInfo$lastname) as name, info.childInfo$country, info.CONTEXT_ID, info.PARENT_ID, info.RECORD_INDEX FROM users.*:childInfo as info WHERE info.childInfo$name ORDER BY NOT LIKE '%test%'
290
AggreGate Documentation
info.childInfo$name desc
This query contains an additional WHERE clause, specifying which records should be included in the result. Query Result:
SELECT info.childInfo$name, CASEWHEN((info.childInfo$firstname IS NULL), '', info.childInfo$firstname) || ' ' || CASEWHEN((info.childInfo$lastname IS NULL), '', info.childInfo$lastname) as name, info.childInfo$country, info.CONTEXT_ID, info.PARENT_ID, info.RECORD_INDEX FROM users.*:childInfo as info WHERE info.childInfo$name NOT LIKE '%test%' ORDER BY info.childInfo$name desc LIMIT 2 OFFSET 1
Result of this query includes just two (LIMIT 2) records (2nd and 3rd) from the result of previous one. We use OFFSET 1 here. This means we're going to get 2 records (LIMIT 2) starting from the second record (OFFSET 1). The OFFSET clause tells AggreGate to start taking record from the second record onwards (the first record's offset is 0). Query Result:
AggreGate Server
This query is built-in to the AggreGate Server distribution. It is called "All Device Servers". Query Result:
291
SELECT info.deviceServerInfo$owner, info.deviceServerInfo$name, info.status$servertods, info.status$dstoserver FROM users.*.deviceservers.*:status:deviceServerInfo as info ORDER BY info.deviceServerInfo$owner, info.deviceServerInfo$name
Context Reference in this query ("users.*.deviceservers.*:status:deviceServerInfo") refers two variables defined in Device Server 1018 context: "deviceServerInfo" mentioned in previous example and "status" ("Device Server Status") that contains some real-time values related to Device Server functioning. The values of both variables contain just one record, so the table that will be built after resolving this context reference will contain all fields that appear in the values of both variables and one record per every Device Server accessible by the user executing query. From this table we select four columns: two that appear in the value of deviceServerInfo (Owner and name of Device Server) and two from status (Incoming and outgoing traffic). The table is sorted by two fields: first by Device Server owner, then by Device Server name (because some Device Servers may have the same owner). This query is built-in to the AggreGate Server distribution. It is called "Device Server Traffic Statistics". Query Result:
292
AggreGate Documentation
This example shows how context functions may be used in the query. Query Text:
Since the query result contains just one row, it is shown using a "vertical" two-column layout, where field names are shown in the first column and field values in the second.
This example could be easily modified to use other aggregation functions: AVG will help to calculate an average traffic of Device Server MIN and MAX may be used to calculate minimum and maximum traffic respectively COUNT may be used to find the number of Device Server (although this example is not the best one for doing that)
AggreGate Server d.deviceServerInfo$blocked, u.childInfo$city, u.childInfo$country FROM users.*:childInfo as u, users.*.deviceservers.*:deviceServerInfo as d WHERE u.childInfo$name = d.deviceServerInfo$owner
293
This query has two Context References in the FROM clause. The first one is used to build a table containing all basic settings of all users, and the second one results in a table of all basic settings of all Device Server. These tables are then joined together based on the formula contained in WHERE clause ("u.childInfo$name = d. deviceServerInfo$owner"). The query result has four fields: first contains full Device Server name in the form "Owner Name"."Device Server Name". Second shows "Blocked" status of the Device Server. Two other columns show city and country of the user who owns the Device Server (which are probably the city and country where Device Server is located). Query Result:
When AggreGate is used for network management, AggreGate Server operates with devices using SNMP protocol. Every SNMP device has a so-called Interface Table (ifTable variable of device context) containing statistics of device's network interfaces. The below query finds all network interface of all SNMP devices those status is down (i.e. ifOperStatus field equals to 2). The query joins description of device context (i.e. device name) to the description of network interface to show them in one table.
SELECT info.info$description, ift.ifTable$ifDescr, ift.ifTable$ifOperStatus FROM users.*.devices.*:ifTable as ift LEFT OUTER JOIN users.*.devices.*:info as info ON ift$CONTEXT_ID = info$CONTEXT_ID WHERE ift.ifTable$ifOperStatus = 2
Query Result:
294
AggreGate Documentation
SELECT info.info$description AS device, ping.ping$averageTime AS average_round_trip_time FROM users.*.devices.*:info AS info RIGHT OUTER JOIN users.*.devices.*:ping AS ping ON ping$CONTEXT_ID = info$CONTEXT_ID WHERE ping.ping$averageTime > 500 ORDER BY ping.ping$averageTime DESC
FINDING NETWORK DEVICE WITH HIGH CPU LOAD
This query finds all network (SNMP-enabled) devices that have an average load of all their processors higher than 90%. It works perfectly for multi-processor devices.
SELECT
295
avg(processors.hrProcessorTable$hrProcessorLoad) AS processor_utilization_percentage FROM users.*.devices.*:hrProcessorTable AS processors LEFT OUTER JOIN users.*.devices.*:info as info ON processors$CONTEXT_ID = info$CONTEXT_ID GROUP BY device HAVING avg(processors.hrProcessorTable$hrProcessorLoad) > 90 ORDER BY processor_utilization_percentage DESC
GROUPING SNMP DEVICES BY TYPE
This query calculates number of SNMP devices of every type (type is specified by sysObjectID variable provided by device itself) and shows summary table. Note, that descriptions of every device type are taken from common table 260 called deviceTypes.
SELECT coalesce(types.value$description, snmp.sysObjectID$sysObjectID) AS device_type, COUNT(*) AS device_count FROM users.*.devices.*:status:sysObjectID AS snmp LEFT JOIN common.deviceTypes:value AS types ON snmp.sysObjectID$sysObjectID = types.value$type WHERE snmp.status$driver = 'com.tibbo.linkserver.plugin.device.snmp' GROUP BY device_type ORDER BY device_count DESC
GETTING DEVICE SETTING STATISTICS
This query uses statistics 767 function defined in Utilities 763 context to extract last values of a statistical channel channel is configured to count network device's interface errors that occurred every hour/day/month.
936 .
The
The query groups all device's interface tables into one and use it as a base (FROM users.*.devices.*:ifTable AS interfaces). Then it LEFT OUTER JOIN's last hour's data from two statistical channels named "ifInOctets" and "ifOutOctets" (LEFT OUTER JOIN utilities:statistics("users.*.devices.*", "ifInErrors", null, "hour") AS in_errors). And finally it LEFT OUTER JOIN's generic device information (LEFT OUTER JOIN users.*.devices.*:info AS info). The query also features filtering, sorting and results row limit.
296
AggreGate Documentation
out_errors.statistics$average * 3600 AS outgoing_errors FROM users.*.devices.*:ifTable AS interfaces LEFT OUTER JOIN utilities:statistics("users.*.devices.*", "ifInErrors", null, "hour") AS in_errors ON interfaces.ifTable$ifIndex = in_errors.statistics$key AND interfaces$CONTEXT_ID = in_errors.statistics$context LEFT OUTER JOIN utilities:statistics("users.*.devices.*", "ifOutErrors", null, "hour") AS out_errors ON interfaces.ifTable$ifIndex = out_errors.statistics$key AND interfaces$CONTEXT_ID = out_errors.statistics$context LEFT OUTER JOIN users.*.devices.*:info AS info ON info$CONTEXT_ID = interfaces$CONTEXT_ID WHERE length(interfaces.ifTable$ifDescr) > 1 ORDER BY incoming_errors + outgoing_errors DESC LIMIT 10
LISTING CARDHOLDERS BY DIVISIONS
In the AggreGate Time and Attendance, the system processes attendance data for cardholders forming a complex hierarchy that includes organizations, divisions, and possibly departments. Since context path of every cardholder starts with context path of the division he belongs to, we can build a query that lists cardholders by divisions:
SELECT divisions.childInfo$name, cardholders.childInfo$name FROM organizations.Organization1.divisions.*.cardholders.*:childInfo as cardholders, organizations.Organization1.divisions.*:childInfo as divisions WHERE substring(cardholders.CONTEXT_ID, 1, length(divisions.CONTEXT_ID)) = divisions. CONTEXT_ID
GETTING ALERTS ACTIVE FOR MULTIPLE DEVICES
In the below example, each device has custom_childContext tabular custom property 261 that lists all devices dependent to it. This property has contextPath field that contains paths of dependent devices. The query checks triggers listed in activeInstances tables of all alerts. Only triggers those source field equals to context path of selected device (i.CONTEXT_ID) or listed in custom_childContext table of selected device will be selected.
AggreGate Server
297
Thus, the query will return alert triggers that are active either for current device ( dev1) or to its dependent devices.
SELECT * FROM users.*.alerts.*:activeInstances AS at WHERE at.activeInstances$source IN ( SELECT i.CONTEXT_ID FROM users.admin.devices.dev1:info AS i UNION SELECT c.custom_childContexts$contextPath FROM users.admin.devices.dev1:custom_childContexts AS c )
JOINING HISTORICAL VALUES OF MULTIPLE VARIABLES
The variableHistory 764 function can load historical values of any context variable. This is suitable to show those values in a report, on a dashboard, etc. But what is you want to show values of multiple variables in a single table? For example, you're measuring temperature and history, and want the measurements to be presented as a single table. Here is a solution. The below query loads 10-days history of two separate variables in two virtual tables and JOINs those tables by putting together values those timestamps are equal with one second precision.
SELECT sineTimeString, sineTime, FROM ( SELECT TO_CHAR(sine.variableHistory$vUpdateTime, 'DD.MM.YYYY H:MI:SS') as sineTimeString, sine.variableHistory$vUpdateTime as sineTime, sine.variableHistory$value as sineValue FROM utilities:variableHistory("users.admin.devices.demoVirtualDevice", "sine", 'dateAdd(now(), -10, \"m\")') as sine ) JOIN ( SELECT TO_CHAR(triangle.variableHistory$vUpdateTime, 'DD.MM.YYYY H:MI:SS') as triangleTimeString, triangle.variableHistory$vUpdateTime as triangleTime, triangle. variableHistory$value as triangleValue FROM utilities:variableHistory("users.admin.devices.demoVirtualDevice", "triangle", 'dateAdd(now(), -10, \"m\")') as triangle ) ON sineTimeString = triangleTimeString
UNIFYING RESULTS OF SEVERAL SUB-QUERIES
298
AggreGate Documentation
The below query refers three other queries by listing their data variables in the FROM clauses of primary and nested SELECT statements. The three query result sets are glued together using UNION operators.
SELECT hpux.data$icon AS icon, hpux.data$device AS device, hpux.data$context AS context, hpux.data$cpu AS cpu, hpux.data$max_threshold as max_threshold, hpux.data$min_threshold as min_threshold, hpux.data$max_threshold - hpux.data$cpu as margin, CASEWHEN(hpux.data$max_threshold - hpux.data$cpu < 0, 2, CASEWHEN(hpux.data$max_threshold - hpux.data$cpu < 10, 1, 0) ) as condition FROM users.admin.queries.cpu_HPUX:data as hpux UNION ALL (SELECT standard.data$icon AS icon, standard.data$device AS device, standard.data$context AS context, standard.data$cpu AS cpu, standard.data$max_threshold as max_threshold, standard.data$min_threshold as min_threshold, standard.data$max_threshold - standard.data$cpu as margin, CASEWHEN(standard.data$max_threshold - standard.data$cpu < 0, 2, CASEWHEN(standard.data$max_threshold - standard.data$cpu < 10, 1, 0) ) as condition FROM users.admin.queries.cpu_standard:data as standard UNION ALL (SELECT sun.data$icon AS icon, sun.data$device AS device, sun.data$context AS context, sun.data$cpu AS cpu, sun.data$max_threshold as max_threshold, sun.data$min_threshold as min_threshold, sun.data$max_threshold - sun.data$cpu as margin, CASEWHEN(sun.data$max_threshold - sun.data$cpu < 0, 2, CASEWHEN(sun.data$max_threshold - sun.data$cpu < 10, 1, 0) ) as condition FROM
299
SELECT [ALL | DISTINCT] { selectExpression | tableAlias.fieldReference | tableAlias.* | * } [, ...] FROM tableList [WHERE expression] [GROUP BY expression [, ...]] [HAVING expression] [{ UNION [ALL] | MINUS | INTERSECT } selectStatement] [ORDER BY orderExpression) [, ...]] [LIMIT <limit> [OFFSET <offset>]]
The LIMIT clause may be used only if all Context References "SELECT ... FROM context_reference AS alias LIMIT n, m") tableList
274
{CROSS | INNER | LEFT OUTER | RIGHT OUTER | FULL OUTER} JOIN table ON expression
table
([ALL | DISTINCT]
300
AggreGate Documentation
{ value [|| value] | value { = | < | <= | > | >= | <> | != } value | value IS [NOT] NULL | EXISTS(selectStatement) | value BETWEEN value AND value | value [NOT] IN ( {value [, ...] | selectStatement } ) | value [NOT] LIKE value [ESCAPE] value }
value
[+ | -] { literal [{ + | - | * | / | || } literal] | ( condition ) | function ( [parameter] [,...] ) | selectStatement giving one value | {ANY|ALL} (selectStatement giving single column)
fieldReference See field references
277 .
Literals
AggreGate Query Language defines several types of literals: Null Literal: NULL Boolean Literals: TRUE of FALSE Decimal Literals (0, 1, 123, -1234567890, ...) Hexadecimal Literals (X'0A', X'FFFF', ...) Binary Literals (B'01', B'00110011') Floating Point Literals (3.1 , -44.5, 1.3E12, ...) String Literals ('This is a String', 'test', ...)
AggreGate Server
301
b) BITAND(Number a, Number b) BITNOT(Number a) BITOR(Number a, Number b) BITXOR(Number a, Number b) CEILING(Number d) COS(Number d) COT(Number d) DEGREES(Number d) EXP(Number d) FLOOR(Number d) LOG(Number d) LOG10(Number d) MOD(Number a, Number b) PI() POWER(Number a, Number b) RADIANS(Number d) RAND() ROUND(Number a, Number b) ROUNDMAGIC(Number d) SIGN(Number d) SIN(Number d) SQRT(Number d) TAN(Number a) TRUNCATE(Number a, Number b) Return a & b. Return !a . Returns a | b. Returns a ^ b. Returns the smallest integer that is not less than d. Returns the cosine of an angle. Returns the cotangent of an angle. Converts radians to degrees. Returns e (2.718...) raised to the power of d. Returns the largest integer that is not greater than d. Returns the natural logarithm (base e). Returns the logarithm (base 10). Returns a modulo b. Returns pi (3.1415...). Returns a raised to the power of b. Converts degrees to radians. Returns a random number x bigger or equal to 0.0 and smaller than 1.0. Rounds a to b digits after the decimal point. Solves rounding problems such as 3.11-3.1-0.01. Returns -1 if d is smaller than 0, 0 if d equals to 0, and 1 if d is bigger than 0. Returns the sine of an angle. Returns the square root. Returns the trigonometric tangent of an angle. Truncates a to b digits after the decimal point.
302
AggreGate Documentation
LEFT(String s, Integer count) LENGTH(String s) LOCATE(String search, String s[, Integer start]) LOWER(String s) LPAD(String s1, Integer length[, String s2])
Returns a character string consisting of the first count characters of s. Returns the number of characters in s. Returns the first index (1=left, 0=not found) where search is found in s, starting at start. Converts s to lower case. Returns a character string with the length of length characters. The string contains the characters of s1 padded to the left with spaces. If length is smaller than the length of the s1 argument, the argument is truncated. If the optional string s2 is specified, this string is used for padding, instead of spaces. Removes all leading blanks in s. Returns the length of the string in bytes (twice the number of characters). Returns translated string. Returns true if the s matches the regex as a whole. The regex is defined according to regular expression rules 1318 . Returns the first region in the s that matches the regex. The regex is defined according to regular expression rules 1318 . Returns s repeated count times. Replaces all occurrences of replace in s with s2. Returns a character string based on s with characters in the reverse order. Returns a character string consisting of the last count characters of s. Returns a character string with the length of length characters. The string contains the characters of s1 padded to the right with spaces. If length is smaller than the length of the s1 argument, the argument is truncated. If the optional string s2 is specified, this string is used for padding, instead of spaces. Removes all trailing spaces. Returns a four character code representing the sound of s. Returns a string consisting of count spaces. Returns the substring starting at start (1=left) with length len .
LTRIM(String s) OCTET_LENGTH(String str) RAWTOHEX(String s1) REGEXP_MATCHES(String s, String regex) REGEXP_SUBSTRING (String s, String regex) REPEAT(String s, Integer count) REPLACE(String s, String replace, String s2) REVERSE(String s) RIGHT(String s, Integer count) RPAD(String s1, Integer length[, String s2])
RTRIM(String s) SOUNDEX(String s) SPACE(Integer count) SUBSTRING(String s, Integer start[, Integer len]) UPPER(String s)
AggreGate Server
303
DAYOFWEEK(Date date) DAYOFYEAR(Date date) HOUR(Date time) MINUTE(Date time) MONTH(Date date) MONTHNAME(Date date) NOW() QUARTER(Date date) SECOND(Date time) SECONDS_SINCE_MIDNI GHT(Date time) TIMESTAMP(Object value)
Returns the day of the week (1 means Sunday). Returns the day of the year (1-366). Return the hour (0-23). Returns the minute (0-59). Returns the month (1-12). Returns the name of the month. Returns the current date and time as a timestamp. Returns the quarter (1-4). Returns the second (0-59). Returns an integer in the range of 0 - 86399 indicating number of seconds elapsed since midnight. This function translates the arguments into a timestamp. When the single argument is a numeric value, it is interpreted as a Unix timestamp in seconds. When the argument is a string, it's parsed to a timestamp. Formats a date into a string of format given in the second argument. The format string is described here 1321 . Parses datetime to a timestamp using the format. The format string is described here Returns the number of seconds since 1970-01-01 (the Epoc). Returns the week of this year (1-53). Returns the year.
1321.
TO_CHAR(Date date, String format) TO_TIMESTAMP(String value, String format) UNIX_TIMESTAMP(Date date) WEEK(Date date) YEAR(Date date)
SQL_STRING)
COALESCE(Object exp1, If exp1 is not null then it is returned else exp2 is evaluated and if not null it is returned Object exp2, Object exp3, and so on. ...) NULLIF(Object v1, Object v2) If v1 equals v2 return null, otherwise v1.
3.14 Models
Models are used to simulate different business objects or processes. The models range from simple, defining several properties and a few business rules, to really complicated ones, e.g. representing a whole industrial plant. Models may act on its own or get attached to lower-level objects, such as devices. In the second case multiple instances of a model are created, each of them using object it's attached to as its primary data source. Each model comprises:
304
AggreGate Documentation
Definitions of variables (properties) representing model values Definitions of functions (operations) that instruct the model to perform some processing or calculation Definitions of events the model can produce Definitions of bindings that tie model's properties, operations and events together allowing it to react to other objects' events or states Sets of business rules for decision making according to a machine-readable knowledge base Example of a simple real life model Simple monitoring and control systems allow direct visualization of values that were collected from devices. However, devices from different manufacturers use differing approaches for providing values with the same physical meaning. For example, network management products are used to track CPU load of network nodes. This simple metric is available in many different forms: Windows-based computers expose "spot" values of CPU load via SNMP Same Windows machines can provide WMI
186 -based 173 .
Cisco routers provide pre-calculated CPU utilization data as 5-minute and 1-hour averages. HP-UX servers have counter-type values showing how many seconds the CPU was busy since server startup. These counters require complex processing to calculate the current load. However, a Network Device dashboard 617 should have a "CPU Load" chart looking equally for all device types. A "High CPU Load" alert is also expected to behave similarly. In addition, we'd like to build a "CPU Load Overview" report showing current utilization for all devices in out network. The right way to ensure the above requirements is having a numeric "CPU Load" metric in every device that provides CPU data. This metric should have common format, but its calculation and update policy will differ between device types. That's where a model can help. The "CPU Load" model attaches to every network device and employs a set of business rules to calculate current CPU load. The rules calculation is triggered by a periodic binding. The business rule set calculation result is written into CPU Load variable that is declared by the same model. Models are a little bit similar to widgets 312 . A model may be interpreted as a widget that runs inside the server and has no user interface. However, both models and widgets have binding 951 engines that make them "life" by activating certain behaviour upon system events and state changes. Every user
108
Administering Models
Two contexts are used to administer models: One is the general Models 708 context, which serves as a container. The other is the Model 709 context, which holds the information for one model.
Absolute Models
Absolute model doesn't have a changeable data source. It uses absolute references to pull data from different parts of the system. All variables, functions and events declared by an absolute model are added to the model's own context 709 .
AggreGate Server
305
For example, a model simulating technological process should take data from multiple specific controllers and perform complex mathematical processing over them. Results of calculations should be visible as model properties. Such model should be absolute. Absolute model's bindings
311
305
925 .
Relative Models
Relative models are designed to process data from a certain source context a relative model is created for each context it's attached to.
863
For example, a model calculating CPU load of a network device with respect to its type and communication should attach to every network device, apply a rule set to its properties, and add "generic" CPU Load property to each device. Such model should be relative. Absolute model's bindings
311
305
925 .
304 :
o If the model is absolute, its data source the model context itself. o If the model is relative, system calculates its validity expression for every context in the system to define whether it's "compatible" with the model. Second, a separate model instance is created for each of them. Third, model adds definitions of its variables, functions and events to every valid context. Fourth, model also adds functions referring model's rule sets
305
Fifth, the model initializes its bindings 307 ' activators so that events and changes in source contexts will cause triggering of model binding processing.
Rule Components
Each rule in a set consist of target, expression, and condition. Each rule either returns result of the whole rule set or (re-)defines a single environment variable that is valid until the end of rule set processing.
RULE TARGET
Target defines how to treat the outcome of this rule set. If rule target is Final Rule Set Result, this rule stops rule set processing and returns a result of the whole rule set. In other cases target defines a name of environment variable that will be defined once rule processing is over. This variable can be referred from other rules' expressions and conditions.
RULE EXPRESSION
306
AggreGate Documentation
911
Returned as the result of the whole rule set if rule Target is Final Rule Set Result. Stored as rule set's internal environment variable rewriting value of this variable if was already defined by other rules. This environment variable will be valid during the current rule set processing cycle. Rule expressions may refer to results of other rules from this set via {env/rule_target_variable_name} references.
RULE CONDITION
Rule Condition is an AggreGate expression 911 that should result to a Boolean value. If this value is false, the rule processing will be skipped and other rules will be processed according to the rule set type 306 . Rule conditions may refer to results of other rules from this set via {env/rule_target_variable_name} references. The rule condition is optional.
rule set that calculates CPU load of a network host regardless of the host
927
The model is relative 304 , it's attached to every network host and, thus, the default context condition is the context of a network device it's attached to. Target Final Rule Set Result Final Rule Set Result Final Rule Set Result Expression
Condition
aggregate({.:hrProcessorTable}, '{env/previous} + {hrProcessorLoad}', 0) / records({.: hrProcessorTable}) aggregate({.:cpmCPUTotalTable}, '{env/previous} + {cpmCPUTotal5min}', 0) / records({.: cpmCPUTotalTable}) null
The first rule is used when device context has hrProcessorTable variable. It goes through the list of processor cores and calculates an average. The second rule, similarly, is used when device context has cpmCPUTotalTable variable. And finally, if no suitable rules are found CPU load is deemed undefined according to the third unconditional rule.
AggreGate Server
307
to
functions
869 ,
309
and events
878
309 ). 880 ).
Relations between server context data items (i.e. server context variables Relations between server data items and models data items Every binding is evaluated at different points during model operation. See server context bindings
952
functions
and events
709 .
Field Description
Field Name
308
AggreGate Documentation
Name . Name of the model context. It should satisfy context naming conventions name is required to refer to this model from other parts of the system. Description . Textual description Type . Model type
304 , 864
863 .
The
name
Relative or Absolute.
Validity Expression. Determines which context(s) should the relative model attach to. See Resource Validity 948 for more information. Validity Update Rules. A list of context masks and event names. If event specified by Event field of this table occurs in any of context matching to the mask specified by Mask field in the same record, Validity Expression will be recalculated for this context. This allows to make model valid/invalid for a certain context if some changes occur in it. Enabled. If this flag unchecked, the model is deactivated and doesn't perform any active binding processing. However, all variables/function/event definitions added by this model remain available if the model is disabled. Normal Concurrent Bindings. Defines the core size of model's thread pool, i.e. base number of bindings that will be processed simultaneously. Maximum Concurrent Bindings. Defines the maximum size of model's thread pool, i.e. the number of concurrently processed bindings allowed in case of binding queue overflow. Maximum Unprocessed Binding Queue Length . Defines how many unprocessed binding operations can be queued before model's thread pool size grows over its core size towards maximum size. These properties may be accessed through the childInfo
710
validityListeners
enabled
variable.
Field Description
Name . Name of the variable. Description . Variable description. Format. Format of the variable. See format for details.
855
Field Name
name description section format
Writable. Flag indicating that variable is writable. Help. Detailed variable description. Group. Variable group, or NULL if variable does not belong to any group. Read Permissions . Permission level 932 in the model context (or a context the relative model is attached to) required to read the variable. Write Permissions. Permission level 932 in the model context (or a context the relative model is attached to) required to write the variable. Storage Mode. Defines whether variable's value is persistent ( Database storage type) or transient ( Memory storage type).
readPermissions
writePermissions
storageMode
AggreGate Server
309
History Storage Time . Defines how long historical values of this variable are stored.
updateHistoryStorageTime
These properties may be accessed through the modelVariables Read more about variable definition properties under Variables
710 869 .
variable.
that help to maintain long-term history for variable fields that represent
Viewing Statistics
To view brief statistics of a model variable, run View Status
910
action.
Field Description
Name . Name of the function. Description . Description of the function. Input Format. Input format of the function. See format
855
Field Name
name description section for details.
855
Output Format. Output format of the function. See format Help. Detailed description of variable. Group. Variable group
870 ,
Permissions. Permission level 932 in the model context (or a context the relative model is attached to) required to execute the function. Implementation. Source code of Java class that implements the function body, i.e. does something the function is supposed to do. See defining and implementing functions 994 for details. Plugin. ID of server plugin 950 that defines the model. Required if function implementation should access plugin's internal Java classes. These properties may be accessed through the modelFunctions Read more about function definition fields under Functions
878 . 711
implementation
plugin
variable.
Field Description
Name . Name of the event. Description . Description of the event.
Field Name
name description
310
AggreGate Documentation
Format. Format of the event data. See format Help. Detailed description of the event. Level . Default level of the event.
855
Group. Event group, or NULL if event does not belong to any group. Permissions. Permission level 932 in the model context (or a context the relative model is attached to) required to subscribe to this event type. Fire Permissions. Permission level 932 in the model context (or a context the relative model is attached to) required to generate an instance of this event type. These properties may be accessed through the modelEvents Read more about event definition fields under Events
880 . 711
firePermissions
variable.
Field Description
Name . Name of a rule set. User to refer this set from other components of the system. Since each set is represented by a function 878 , its name may contain only letters, numbers and underscore. Description . Human-readable description of the rule set. Type . Rule set type: Sequential Processing
306
Field Name
name
description
307 .
or Dependency Tracking
type rules
Rules. The list of rules. See descriptions of rule fields below These properties may be accessed through the ruleSets
712
variable.
Rule Fields
Each rule in a rule set has the following properties:
Field Description
Target. Can be either the Final Rule Set Result (i.e. result of the whole rule set) or name of any rule set environment variable. Expression . An expression
911
Field Name
target
expression
922
Context of the absolute model or a context the relative model is attached to. Data that was passed to a rule set function
307 .
0 Any variable that was defined by the previously executed rules of the same rule set. condition
Condition. An optional expression 911 that should result to a Boolean value. Rule evaluation is skipped if the condition expression results to false.
AggreGate Server
311
922
Context of the absolute model or a context the relative model is attached to. Data that was passed to a rule set function
307 .
0 Any environment variable that was defined by the previously executed rules of the same rule set. comment
3.14.5.6 Bindings
The bindings table defines model bindings.
Field Description.
Target. Binding target is a special type of reference 925 that points to where the evaluation result of binding expression will be written when the binding is processed. Expression . This is an expression 911 that is evaluated every time a binding is processed. The evaluation result is stored in the binding target. Activator. This is a reference that points to some event or property of the model that will trigger the processing of the binding. The Activator parameter is available only when On event parameter is enabled. Condition. Condition is an expression 911 that is evaluated first after binding activation. If this expression results to false, the binding execution is skipped. On Startup. When this parameter is enabled, the binding is processed every time a model instance is created. On Event. When this parameter is enabled and an Activator is specified, the binding is processed whenever there's a changes in the property the activator refers to. If the Activator refers to an event, the binding will be processed when the event fires. If On event is enabled and an Activator is not specified, the binding will be automatically processed: The binding's Expression includes references, pointing to one or more variables. A change in any of these variables will cause the binding to run. Periodically. If this parameter is enabled, the binding will be processed periodically. Period. Interval between binding processing sessions. This parameter may be changed only if Periodically is turned on. These properties may be accessed through the bindings
712
Field Name
target
expression
activator
condition
onstartup
onevent
periodically period
variable.
931 .
Binding expressions are calculated with the model owner's permissions The binding target is also written with the model owner's permissions Thus, the model may access only data that is accessible by its owner.
312
AggreGate Documentation
If you create a copy of a certain model under another user account 108 , the copy may not function properly if new model's owner has no permissions to access data referred by the bindings of the cloned model.
Model Modification
Only users that have Administrator effective permission level 932 in the model context may modify model configuration. This ensures maximum security for the potentially dangerous model operations.
924
for
Impact of writing binding targets. Writing a binding target is in most cases writing a context variable or calling a context function. See variables performance 878 and functions performance 880 for more information. Impact of custom Java code implementing model's functions.
3.15 Widgets
A Widget is a special "sub-application" with graphical a user interface (GUI) defined by a number of widget components 322 and their layout 318 . Widgets are good for building custom forms and Human Machine Interfaces (HMI). These forms and interfaces may be used to control, configure and different hardware devices or system components.
Before you begin: Widgets let you manipulate and view AggreGate data in various forms. To be effective in creating them, you should be familiar with References 925 , Expressions 911 and finally, Data Bindings 951 . Please read these three topic before continuing. Once you understand these topics, you can read all about the specific ways in which bindings apply to widgets in Widget Bindings 604 . Widgets are created in GUI Builder 827 , which is a part of AggreGate Client. The core of a widget is its template 314 -text in XML format, containing the layout and properties of its internal components along with relations between these components and the data model, i.e. data that comes from AggreGate Server contexts 863 . These relations exist in the form of Widget Bindings 604 and Widget Scripts 610 . Every widget may be launched in different AggreGate Server User Interfaces, e.g. in AggreGate Client 776 . Its appearance will depend on the specific User Interface in which it runs, but its overall structure and behaviour will be similar. Here is what a running widget may look like in AggreGate Client:
AggreGate Server
313
Monitoring Device Parameters Using a Chart 1239 Building Complex Chart 1244 Keeping History of Object Changes Manipulating SVG Images
1224 1267
Administering Widgets
Two contexts are used to administer widgets: One is the general Widgets 770 context, which serves as a container. The other is the Widget 774 context, which holds the information for one widget.
It's often necessary to transfer one or more widgets from one AggreGate Server installation This can be the case of moving to a production server from a development one, or just parti replication of configuration during distributed installation 99 setup. There are three basic ways to transfer widgets between servers:
1. Copy/move the whole database 80 from one server to another. If the database server was runni on a standalone machine and the old AggreGate Server won't be longer used, it's possible stop the old server and re-configure the new one to connect to the same database. Moving whole database will transfer all widgets, along with the full server configuration. 2. For bulk transfer of widgets, Export use 907 /Import 908 actions of Widgets moving all or selected widgets of a certain user 108 at once.
774
3. In fact, the widget itself is its XML template plus several minor options (such as name, des andtype 314 ). Therefore, t's i also possible to open the XML template of a widget and send it to another server (e.g. via e-mail). On the target server, it will be necessary to create a new set up its name/description and other options, and insert the XML template copied from th server.
Built-In Widgets
Several widgets are built into AggreGate Server and appear under default administrator's Query Executor. This widget allows you to test and debug queries
271 . 109
user account:
314
AggreGate Documentation
Daily Alert. Contains a bar diagram displaying daily alert count and a table that lists alert instances once a certain bar is clicked on a diagram.
New widgets are created using the Create New Widget 770 action of the Widgets context. This is a Drag and Drop 895 action that accepts any context type. The action assumes that one context (the "accepted context") is selected before it starts. This accepted context has one simple use during widget creation: its type 864 will be used as the type of context for which the new widget will be available. The Launch Widget 316 action will be installed in all contexts of this type once the widget is created. Example: "accepted" every User description If a User 759 context is dragged and dropped on the Widgets 770 context (i.e. selected as an context for a Create New Widget action), the newly created widget will be suitable for use with context in AggreGate Server. Each User context will have a new Launch Widget action with a matching that of the widget. See Launch Widget Action 316 for details.
Once the context type is selected, a GUI Builder 827 starts which is used to build a widget by editing its template 314 in a visual editor. You will now create the layout 318 for the new widget, by adding some components 322 to it and configuring their properties. This is also a good time to define some bindings 604 , i.e. relations between widget components and the different variables 869 or functions 878 of AggreGate Server contexts. You can stop editing the widget template in GUI Builder by clicking on Done or Cancel in the GUI Builder toolbar. If Cancel is clicked, action is terminated and no widget is created. If Done, the user is prompted 896 to specify properties 315 for the new widget. Most properties are already set by this point, but you still have to provide a name and a description for the new widget. After that, AggreGate Server actually creates Widget 774 context representing new widget. Then it finds all context of the same type as type of "accepted" context for this action and installs a Launch Widget 316 action to them. Widget creation is now finished. You can now launch the widget action from the contexts for which it was installed.
of the Widget
774
322
Data bindings
that define the relations between widget components and data provided by AggreGate Server
In most cases, the widget template is edited in GUI Builder 827 and editing is initiated by Edit Template 774 action of a Widget context. But in some rare cases, the template may be manually changed (or replaced) by editing its raw text. GUI Builder 827 also lets you export and import templates from external XML files.
Template Backups
It is possible to force the server to keep history of widget template modifications. For more information, see Keeping History of Object Changes 1267 tutorial.
Absolute Widgets
Absolute widgets usually process and integrate data coming from different source contexts.
AggreGate Server
315
For example, a complex Human-Machine Interface widget in a process control application shows data coming from different sensors and has buttons or other active components for sending commands to the actuators. Such a widget should be absolute. Absolute widget bindings
604
925 .
Relative Widgets
Relative widgets are designed to process data from a certain context 863 and its children. This is useful when creating a form or a custom interface for representing data coming from one Device or system resource. Relative widgets are usually activated using the Launch Widget 316 action of the context whose data should be processed. For example, in a network management system you may have a relative widget called CPU Load Chart. You could right-click a Mail Server Device in AggreGate Client and select CPU Load Chart from context menu.
or editing
317
During widget creation: When the widget template is being edited in GUI Builder, new bindings 604 are created to bind widget components 322 with data from contexts. When a new widget is created or edited, context paths in newly created bindings which refer to contexts below the default context are constructed relatively to the default context. During widget execution: The default context is also defined during widget execution. This is the context from which the Launch Widget action 316 was launched. This default context is used to resolve relative references during widget execution. {.deviceservers:children#records} - this is a ref resolving to number of user's DS if widget is created for user context. Is uses context path relative to default context. The widget normally gets data from its default context, but may exchange data with any other AggreGate Server contexts. See widget bindings
604
Field Description
Widget Name. Name of the widget context. It should satisfy context naming conventions The name is required to refer to this widget from other parts of the system. Widget Description. Textual description
864 863 .
Field Name
name
Widget Template. Text of the widget template Widget Type. Widget type
314 ,
in XML format.
Relative or Absolute.
Validity Expression. Determines which context(s) may be "understood" by the widget. See Resource Validity 948 for more information. Validity Update Rules. A list of context masks and event names. If event specified by Event field of this table occurs in any of context matching to the mask specified by Mask field in the same record, Validity Expression will be recalculated for this context. This allows to make widget valid/invalid for a certain context if some changes occur in it. Default Context. The default context to be used when editing the template
314
validityListeners
of a relative
defaultContext
316
AggreGate Documentation
314 widget in GUI Builder or launching it directly, without using a Launch Widget action of a Device or a system resource. Its value is automatically set to the path of the context for which that widget was created 314 . There's usually no need to edit it, except if this context is deleted. See Default Context for a Widget 315 for details.
Default Location. Widget Window Location 955 to be used when widget is launched manually, i.e. without using Auto Run 625 , Favourite 626 or other facility. When Launch Widget 774 action is added to Auto Run of Favourites, it's execution parameters 896 allow to override the Default Location and open widget window on a custom dashboard/position. These properties may be accessed through the childInfo
775
defaultLocation
variable.
Using the Launch Widget 774 action of the Widget Context. For relative 314 widgets, this method will launch the widget and have it process data from the context specified by the Default Context widget property 315 . Using a Launch Widget action
892
314
Relative widgets will install their Launch Widget Action only into contexts that are accessible for the widget owner according to his permissions 931 . To be able to launch this action, the user must have an effective permission level contexts: Widget context
774 935
of Observer in two
The context on which the widget operates, i.e. the one where Launch Action is defined
Widget Window
AggreGate Server
In addition to the standard window toolbar buttons
781 ,
317
Edit. Stops current widget and opens it for editing in GUI Builder Event Log. Opens widget event log
613 .
there is no way to
However, widgets can be launched from inside another widgets. When a widget wants to launch another widget, it executes a binding 604 those target 605 is set to Launch Widget action 953 of the widget to start. This binding's expression 606 should result to a Data Table, and this table will be passed to a newly opening widget as its Widget Input Parameters Table. So, to recap, here is the necessary sequence for passing parameters between widgets: In originating widget, create a binding those target points to a launch action of another widget, e.g. action/users. admin.widgets.voltageChart:launch. Make sure that expression of the above binding creates/fetches and returns a Data Table object.
Bindings Processing
When a widget starts up, the widget engine processes any bindings within it which are scheduled for processing on startup. Usually, bindings executed on startup are used to read certain context values and initialize the widget components. While working, the widget monitors changes in contexts and component properties, and processes the bindings again when such changes are detected. Also, some bindings can be configured for periodic processing. Every processed binding may change server data, properties of widget components, or execute widget script See the bindings
604 610 .
318
AggreGate Documentation
Layout
322
Absolute
Layout
376
property of a pane.
Component Constraints
The constraints of a widget component define its position and size within its parent container. Constraints also define how components change size and position when the widget window is resized. Every layout provides its own constraints for each widget component excluding root pane.
334
The layout grid for this widget has three rows and three columns. The button in the second row spans all columns, and the button in the third row spans the two right columns:
AggreGate Server
319
If you enlarge the widget window as shown in the following figure, you will notice that the bottom row, which contains Button 5, gets all the new vertical space. The new horizontal space is evenly split between all columns. This resizing behavior is based on weights assigned to individual components in the panel layout. You will also notice that each component takes up all available horizontal space but not (as you can see with button 5) all available vertical space. This behavior is also specified by component weights.
ROW, COLUMN
Specify the row and column of the top-left part of the component. The leftmost column is column 0 and the top row is row 0. Property names: gridx, gridy
ANCHOR
Used when the component is smaller than its display area to determine where (within the area) to place the component. Valid values are: Center North East South West North-West North-East South-East South-West So if you have a big area and a small component, the Anchor position lets you determine where the component sits
320
AggreGate Documentation
within the abundance of space it has available to it. Property name: anchor
FILL
Used when the component's display area is larger than the component's requested size to determine whether and how to resize the component. Valid values include None (the default), Horizontal (make the component wide enough to fill its display area horizontally, but leave its height as-is), Vertical (make the component tall enough to fill its display area vertically, but leave its width as-is), and Both (make the component completely fill its display area). Property name: fill
WEIGHT X, WEIGHT Y
Specifying weights can have a significant impact on the appearance of the components in the layout grid. Weights are used to determine how to distribute space among columns (Weight X) and among rows (Weight Y); this is important for specifying resizing behavior. For each column, the weight is related to the highest Weight X specified for a component within that column (the same goes for each row's weight and the highest Weight Y for a component within that row). Unless you specify at least one non-zero value for Weight X or Weight Y, all components clump together in the center of their container . This is because when the weight is 0.0 (the default), any extra space is put between the grid of cells and the edges of the container. Usually, weights are specified with 0.0 and 1.0 as the extremes. Larger numbers within this range indicate that the component's row or column should get more space. Extra space tends to go toward the rightmost column and bottom row. Here is how components look like if their weights are 1.0:
Setting weights of the same components to 0.0 produces the following result:
CONSTRAINTS EXAMPLE
Let's return to our example widget with five buttons:
AggreGate Server
321
Here are constraints for these buttons (only non-default values are shown here): Button 1: Row: 0 Column: 0 Weight X: 1.0 Fill: Horizontal Button 2: Row: 0 Column: 1 Weight X: 1.0 Fill: Horizontal Button 3: Row: 0 Column: 2 Weight X: 1.0 Fill: Horizontal Button 4: Row: 1 Column: 0 Column Span: 3 Weight X: 1.0 Fill: Horizontal Button 5: Row: 2 Column: 1 Column Span: 2 Anchor: Center Top Margin: 20 Weight X: 1.0 Weight Y: 1.0 Fill: Horizontal To find out how to build the actual layout, see the editing widget layout
836
322
AggreGate Documentation
X COORDINATE, Y COORDINATE
These are absolute horizontal and vertical coordinates of the component. Horizontal (X) coordinates increment from left to right, vertical (Y) coordinates increment from top to bottom, so top left corner of the frame has coordinates X=0, Y=0.
Z-ORDER
Z-order determines how "high" is the component located in the parent container and, thus, which components will be overlapped by it. Higher Z-order number means that component is higher than the other components and will overlap them.
3.15.8 Components
Widget components are divided into several categories: Normal components Containers Charts
384 376 322
Normal components are used to present data or interact with the user. Containers may hold normal components or other containers. However, some containers may also interact with the user. For example, the Tabbed Panel 379 container monitors mouse clicks on its tabs (to display the tab that was clicked). Some additional information on widget components may be found in the widget layout
318
section.
Component have a slightly different appearance under different AggreGate Server User Interfaces. For example, a simple Button 334 may appear different in AggreGate Client 776 , Web Admin 632 and in the forthcoming web interface for mobile phones and communicators. A component's appearance and behaviour in a certain AggreGate Server User Interface is defined by a component renderer.
Normal Components
Normal components may not have child components (as opposed to containers supported by the widget engine: Label
323 376 ).
Text Field
325
AggreGate Server
323
Password Field
326
328
332
334
337
339
340
340
341
344
Spinner
348
349
Vector Drawing
352
Gauge
558
563
Compass Map
364
362
Device
367
3.15.8.1 Label
A label is a display area for a short text string, which doesn't react to input events and thus may not get keyboard focus. This is what labels looks like:
324
AggreGate Documentation
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 586 , Visible 587 , Cursor 587 , Tooltip 587 , Popup Menu 588
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Font
Custom Properties
TEXT (Default Property
Text of label message. Property name: text Property type: String In addition to HTML area 334 component, label may also show simple HTML text that must start with <html> tag, for example: <html><font color="red">Red</font> and <b>bold</b> text.</html>
586 )
ALIGNMENT
Horizontal alignment of text within label display area. Possible values: Description Left Center Right Value 2 0 4
VERTICAL ALIGNMENT
Vertical alignment of text within label display area. Top, Center or Bottom. Possible values: Description Top Center Bottom Value 1 0 3
ICON
Image shown on the label. If NULL, no image will be displayed.
AggreGate Server
Property name: icon Property type: Data Block
325
DISABLED ICON
The image shown on the label when the label is disabled. If NULL, the Disabled Icon will be auto-generated from a normal Icon. Property name: disabledIcon Property type: Data Block
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 586 , Visible 587 , Cursor 587 , Tooltip 587 , Popup Menu 588
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Font
Custom Properties
TEXT (Default Property
586 )
Default text in the text field. Property name: text Property type: String
EDITABLE
This flag indicates that text in the text field can be changed. The primary difference between non-editable and nonenabled 586 components is that text in a non-editable component is not grayed out and may be selected using the mouse. Property name: editable Property type: Boolean
ONSCREEN KEYBOARD
Defines whether this component should support onscreen keyboard for text input. See touchscreen support details. Possible choices are:
616
for
326
AggreGate Documentation
None - don't use onscreen keyboard Single Click - show the keyboard upon any click in the component area Double Click - show the keyboard only if component is double-clicked Property name: onscreenKeyboard Property type: Integer
ALIGNMENT
Horizontal alignment of text within label display area. Possible values: Description Left Center Right Value 2 0 4
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Custom Events
CARET UPDATE
This event fires each time when a caret is moved or any text is entered in the component. Event name: caretUpdate Event fields: Field ID Dot Mark Name id dot mark Type Integer Integer Integer Description Event type ID. The location of the caret. The location of other end of a logical selection. If there is no selection, this will be the same as dot.
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 586 , Visible 587 , Cursor 587 , Tooltip 587 , Popup Menu 588
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Font
AggreGate Server
327
Custom Properties
ONSCREEN KEYBOARD
Defines whether this component should support onscreen keyboard for text input. See touchscreen support details. Possible choices are: None - don't use onscreen keyboard Single Click - show the keyboard upon any click in the component area Double Click - show the keyboard only if component is double-clicked Property name: onscreenKeyboard Property type: Integer
616
for
ALIGNMENT
Horizontal alignment of text within label display area. Possible values: Description Left Center Right Value 2 0 4
586 )
Default password in the password field. Should usually be left blank. Property name: password Property type: String
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Custom Events
CARET UPDATE
This event fires each time when a caret is moved or any text is entered in the component. Event name: caretUpdate Event fields: Field ID Dot Mark Name id dot mark Type Integer Integer Integer Description Event type ID. The location of the caret. The location of other end of a logical selection. If there is no selection, this will be the same as dot.
328
AggreGate Documentation
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 586 , Visible 587 , Cursor 587 , Tooltip 587 , Popup Menu 588
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Font
Custom Properties
TEXT (Default Property
586 )
Default text in the text field. Property name: text Property type: String
EDITABLE
This flag indicates that text in the text field can be changed. The primary difference between non-editable and nonenabled 586 components is that text in a non-editable component is not grayed out and may be selected using the mouse. Property name: editable Property type: Boolean
ONSCREEN KEYBOARD
Defines whether this component should support onscreen keyboard for text input. See touchscreen support details. Possible choices are: None - don't use onscreen keyboard Single Click - show the keyboard upon any click in the component area Double Click - show the keyboard only if component is double-clicked Property name: onscreenKeyboard Property type: Integer
616
for
ALIGNMENT
Horizontal alignment of text within label display area. Possible values: Description Left Center Right Value 2 0 4
AggreGate Server
329
VALIDATION MODE
Select regular expression or mask field validation. Possible values: Description Mask Regular Expression Value 0 1
Mask, Valid Characters, Invalid Characters, Placeholder and Placeholder enabled when Validation Mode is Mask.
MASK
Mask validation pattern. This parameter specifies the set of characters that can be typed at each position in the field. The following characters can be specified: Character # ' U L A ? * H Description Any number. Escape character, used to escape any of the special formatting characters. Any character. All lowercase letters are mapped to upper case. Any character. All upper case letters are mapped to lower case. Any character or number. Any character. Anything. Any hex character (0-9, a-f or A-F).
Mask property works together with Valid Characters and Invalid Characters (see below): Only symbols appearing in Valid Characters will be allowed in any position of final value. Any symbol appearing in Invalid Characters will not be allowed in any position of final value. Property name: mask Property type: String
VALID CHARACTERS
A list of characters that will be valid in any position of final value. Thus, if Valid Characters is non-null, symbol will be valid if it appears inside Valid Characters string and matches the mask. Property name: validCharacters Property type: String
INVALID CHARACTERS
A list of characters that will not be valid in any position of final value independently to the Mask. Property name: invalidCharacters Property type: String
PLACEHOLDER
The string to use if the value does not completely fill in the mask. A NULL value implies the Placeholder Character
330
AggreGate Documentation
should be used. When initially formatting a value if the length of the string is less than the length of the mask, two things can happen. Either the Placeholder string will be used, or the Placeholder Character will be used. Precedence is given to the placeholder string. The placeholder String is only used on the initial format, on subsequent formats only the placeholder character will be used. Property name: placeholder Property type: String
PLACEHOLDER CHARACTER
The character to use in place of characters that are not present in the value, i.e. the user must fill them in. The default value is a space. This is only applicable if the Placeholder string has not been specified, or does not completely fill in the mask. Property name: placeholderCharacter Property type: String
REGULAR EXPRESSION
The regular expression pattern Property name: regEx Property type: String
1318
OVERWRITES TEXT
Configures the behavior when inserting characters. If this parameter is true, new characters overwrite existing characters in the field. Property name: overwritesText Property type: Boolean
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Custom Events
CARET UPDATE
This event fires each time when a caret is moved or any text is entered in the component. Event name: caretUpdate Event fields:
AggreGate Server
331
Description Event type ID. The location of the caret. The location of other end of a logical selection. If there is no selection, this will be the same as dot.
3.15.8.5 List
A component that allows the user to select one or more values from a list. This is what a list looks like:
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 586 , Visible 587 , Cursor 587 , Tooltip 587 , Popup Menu 588
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Font
Custom Properties
SELECTION MODE
Selection mode for list items. One of Single Selection, Single Interval Selection or Multiple Intervals Selection. Property name: selectionMode Property type: Integer
LAYOUT ORIENTATION
Defines how list cells are laid out. A list with four cells can be laid out in one of the following ways: Vertical:
0 1 2 3
Vertical Wrap:
0 2
1 3
Horizontal Wrap:
0 1
2 3
LIST ITEMS
A table that defines all items in the list. Property name: listItems
332
AggreGate Documentation
Property type: Data Table It is possible to fill a List with selection values 856 of a certain Data Table field using a binding 604 . For example, binding that will fill a List with the countries available in the Country field of User Information variable defined in the User context of user admin will look as follows: Target: form/list1:listItems Expression: {users.admin:childInfo$country#options} This binding is created automatically when dragging a variable field to a List in GUI Builder here 845 .
827 .
760
Check details
586 )
SELECTED ITEM
List of item that are initially selected (convenient method to set/get just one selected item in Selected Items property). Property name: selectedItem Property type: dynamic
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Custom Events
LIST SELECTION
This event fires when a user selects or de-selects some list items. Event name: listSelection
AggreGate Server
333
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 586 , Visible 587 , Cursor 587 , Tooltip 587 , Popup Menu 588
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Font
Custom Properties
TEXT (Default Property
586 )
Default text contained in the text area. Property name: text Property type: String
EDITABLE
This flag indicates that text in the text field can be changed. The primary difference between non-editable and nonenabled 586 components is that text in a non-editable component is not grayed out and may be selected using the mouse. Property name: editable Property type: Boolean
LINE WRAP
Sets the line-wrapping policy of the text area. If enabled, lines will be wrapped if they are too long to fit the allocated width. If disabled, the lines will always be unwrapped. Property name: lineWrap Property type: Boolean
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Custom Events
CARET UPDATE
This event fires each time when a caret is moved or any text is entered in the component. Event name: caretUpdate Event fields: Field ID Dot Mark Name id dot mark Type Integer Integer Integer Description Event type ID. The location of the caret. The location of other end of a logical selection. If there is no selection, this will be the same as dot.
334
AggreGate Documentation
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 586 , Visible 587 , Cursor 587 , Tooltip 587 , Popup Menu 588
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Font
Custom Properties
TEXT (Default Property
586 )
Default text contained in the HTML area. Property name: text Property type: String
EDITABLE
This flag indicates that text in the text field can be changed. The primary difference between non-editable and nonenabled 586 components is that text in a non-editable component is not grayed out and may be selected using the mouse.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
3.15.8.8 Button
A regular button. This is what a button looks like:
Example: see Opening a New Widget upon Button Click upon button click, e.g. open another widget.
608
892
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 587 , Tooltip 587 , Popup Menu 588
586 ,
Visible
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Font
587 ,
Cursor
Custom Properties
AggreGate Server
335
586 )
Buttons support rich multi-line HTML texts with formatting. To enable HTML start value Text property with <html> tag: <html>Line <b>1</b><br>Line <b>2</b> Property name: text Property type: String
ALIGNMENT
Horizontal alignment of text within button display area. Possible values: Description Left Center Right Value 2 0 4
VERTICAL ALIGNMENT
Vertical alignment of text within button display area. Possible values: Description Top Center Bottom Value 1 0 3
MARGINS
Space between the border and the label at each of its edges. Margins value has the following fields: Field Top Left Bottom Right Name top left bottom right Type Integer Integer Integer Integer
OPERATIONS
List of widget actions caused by button activation. This list may contain zero or more of the following operations: Submit. This action triggers submit Reset. This action triggers reset
378 378
336
AggreGate Documentation
Close. Stops widget execution and closes its window. Property name: operations Property type: Data Table
ICON
Image shown on the button. If NULL, no image will be shown. Property name: icon Property type: Data Block
PRESSED ICON
Image shown on the button when the button is pressed. If NULL, the default image will be shown. Property name: pressedIcon Property type: Data Block
DISABLED ICON
Image shown on the button when the button is disabled. If NULL, the Disabled Icon will be auto-generated from normal Icon. Property name: disabledIcon Property type: Data Block
ROLLOVER ICON
Image shown on the button when a mouse hovered over the button. If NULL, the default image will be shown. Property name: rolloverIcon Property type: Data Block
FOCUS PAINTED
Flag that controls drawing of a dotted-stroke rectangle inside the button when it has focus. This option should be disabled to make icon-only buttons look better.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
AggreGate Server
337
Custom Events
CLICK
This event fires when a user clicks the button. Event name: click
If a toggle button is a member of a Button Group, it can be released only by pressing another button in the same group.
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 587 , Tooltip 587 , Popup Menu 588
586 ,
Visible
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Font
587 ,
Cursor
Custom Properties
TEXT (Default Property
Text of button label. Property name: text Property type: String
586 )
SELECTED
Flag indicating that toggle button is selected (pressed). Property name: selected Property type: Boolean
ALIGNMENT
Horizontal alignment of text within button display area. Possible values: Description Left Center Right Value 2 0 4
VERTICAL ALIGNMENT
338
AggreGate Documentation
Vertical alignment of text within button display area. Possible values: Description Top Center Bottom Value 1 0 3
MARGINS
Space between the border and the label at each of its edges. Margins value has the following fields: Field Top Left Bottom Right Name top left bottom right Type Integer Integer Integer Integer
BUTTON GROUP
Button group
375
VALUE
Value associated with the toggle button. Property name: value Property type: String
ICON
Image shown on the button. If NULL, no image will be shown. Property name: icon Property type: Data Block
PRESSED ICON
Image shown on the button when the button is pressed. If NULL, the default image will be shown. Property name: pressedIcon Property type: Data Block
DISABLED ICON
Image shown on the button when the button is disabled. If NULL, the Disabled Icon will be auto-generated from normal
AggreGate Server
Icon. Property name: disabledIcon Property type: Data Block
339
SELECTED ICON
Image shown on the button when the button is selected. If NULL, the default image will be shown. Property name: selectedIcon Property type: Data Block
ROLLOVER ICON
Image shown on the button when a mouse hovered over the button. If NULL, the default image will be shown. Property name: rolloverIcon Property type: Data Block
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 586 , Visible 587 , Cursor 587 , Tooltip 587 , Popup Menu 588
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Font
Custom Properties
TEXT (Default Property
586 )
Text of radio button label. Property name: text Property type: String
BUTTON GROUP
Button group
375
VALUE
Value associated with the radio button. Property name: value Property type: String
340
AggreGate Documentation
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 586 , Visible 587 , Cursor 587 , Tooltip 587 , Popup Menu 588
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Font
Custom Properties
TEXT (Default Property
Text of check box label. Property name: text Property type: String
586 )
SELECTED
Flag indicating that check box is selected (checked). Property name: selected Property type: Boolean
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
The Type 586 of Selected Item 341 property and the type of data in the Value column of the Selection Values 341 tabular property is dynamic. It cannot be manually changed from the GUI Builder, but it is changed by the binding 604 whose target points to the Selection Values 341 property of Combo Box. This binding rewrites the Selection Values table. The binding is automatically created when dragging a field that has selection values to a combo box 845 .
AggreGate Server
341
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 586 , Visible 587 , Cursor 587 , Tooltip 587 , Popup Menu 588
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Font
Custom Properties
MAXIMUM DISPLAYED ROW COUNT
Sets the maximum number of rows the Combo Box displays. If the number of items greater than count, the combo box uses a scrollbar. Property name: maximumRowCount Property type: Integer
SELECTION VALUES
List of items available in the combo box. Property name: options Property type: Data Table It is possible to fill a Combo Box with selection values 856 of a certain Data Table field using a binding example, binding that will fill a Combo Box with the countries available in the Country field of User Information 760 variable defined in the User context of user admin will look as follows: Target: form/comboBox1:options Expression: {users.admin:childInfo$country#options} This binding is created automatically when dragging a variable field to a Combo Box in GUI Builder details here 845 .
827 . 604 .
For
Check
586 )
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
342
AggreGate Documentation
The component supports a keyboard-only environment: Key ALT + DOWN ESC LEFT RIGHT UP DOWN HOME END PAGE_UP PAGE_DOWN CTRL + PAGE_UP CTRL+ PAGE_DOWN ENTER Action Bring up the popup Hide the popup without changing the selection Previous day of the selected day Next day of the selected day Same day of the last week Same day of the next week First day of this month Last day of this month Same day of the last month Same day of the next month Same day of the last year Same day of the next year Select the highlighted date and hide popup
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 586 , Visible 587 , Cursor 587 , Tooltip 587 , Popup Menu 588
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Font
Custom Properties
DATE (Default Property
Picked date. Property name: date Property type: Date
586 )
EDITABLE
Determines if the text field is editable. When it is set to false, the date can only be chosen from a popup but not entered by a keyboard. Property name: editable Property type: Boolean
AggreGate Server
343
FORMAT
Date/time format 1321 for a value presented in the field. Property name: format Property type: String
MINIMUM DATE
Minimum allowed date. Property name: minDate Property type: Date
MAXIMUM DATE
Maximum allowed date. Property name: maxDate Property type: Date
TIME DISPLAYED
Determines if a time edit field is displayed in the date chooser popup. Enabling it gives the ability to specify the time as well as the date. Property name: timeDisplayed Property type: Boolean
TIME FORMAT
Defines the format of time
1321
SHOW OK BUTTON
Controls the OK button visibility. Property name: showOKButton Property type: Boolean
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed
596 , 597 ,
344
597
AggreGate Documentation
597 ,
, Focus Gained
Focus Lost
597
Common Properties
Width
586
, Height
586
, Bindings
586 ,
Enabled
586 ,
Visible
587 ,
Border
587
Custom Properties
TOOLBAR
Controls whether or not to show the toolbar of the Data Table Editor. Property name: toolbar Property type: Boolean
FIXED FORMAT
Defines whether the Data Table Editor should accept only tables of pre-defined format. If this option is enabled, it's possible to edit the Format property (see below) and, after defining table format, fill the table with pre-defined data by editing Data Table property (also described below). At the moment when this flag is enabled, data in the Data Table property will be converted to match current value of Format. Property name: fixedFormat Property type: Boolean
FORMAT
Allows to specify a fixed format of table to be viewed/edited in the Data Table Editor. See description of format options and individual field options in Data Table format 855 section. At the moment when the Format is changed, data in the Data Table property will be converted to match the new format. Property name: format Property type: Data Table
586 )
Default data table shown and edited by this component. When this option's value is changed to a new Data Table, the system will convert this table to match the Format property (this happens only if Fixed Format flag is set).
AggreGate Server
Property name: dataTable Property type: Data Table
345
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
More information on what this component looks like and behaves may be found here This is what an Event Log looks like:
Common Properties
Width
586
, Height
586
, Bindings
586 ,
Visible
587 ,
Border
587
Custom Properties
MODE
The event log component can work in two principal modes: Event List. In this mode, it shows only events specified by Events property. Primary visible columns are defined by Event Log component properties (see below). No additional fields are shown, and no filtering/highlighting is performed. Event Filter. In this mode Event Log activates a server-side event filter 206 specified by Event Filter setting and uses this filter to select and highlight events. Column model is also built according to the filter configuration. Property name: mode Property type: Integer
EVENTS
This tabular setting defines what events should be shown. There are two columns:
346
AggreGate Documentation
865
Context Mask. Only events occurred in contexts matching this mask Event. Name of the event. Property name: eventList Property type: Data Table
are shown.
EVENT FILTER
Context path of the event filter
206
to use.
If this setting is NULL, Event Log component will allow to select a filter from a drop-down list. Note that different filters may be selected for Current Events and Event History sections. Property name: filter Property type: String
SECTIONS
Defines what sections to show: Current Events, Event History, or Both Sections. Property name: sections Property type: Integer
AggreGate Server
Flag defining the visibility of Enrichments column. Property name: showEnrichments Property type: Boolean
347
FILTER PARAMETERS
Parameters table to use for a parameterized filter 213 . This property is normally written during run-time by a binding that reads filter's parameters table using getParameters() 692 function of an Event Filter context and fills this table onthe-fly (e.g. by set() expression language function 920 ). Property name: filterParameters Property type: Data Table
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
3.15.8.16 Slider
Lets the user graphically select a value by sliding a knob within a bounded interval. The slider can show both major tick marks and minor tick marks between them. The number of values between tick marks is controlled by Major Tick Spacing and Minor Tick Spacing properties. This is what a slider looks like:
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 586 , Visible 587 , Cursor 587 , Tooltip 587 , Popup Menu 588
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Font
Custom Properties
VALUE (Default Property
Default value of a slider. Property name: value Property type: Integer
586 )
ORIENTATION
Orientation of slider: Horizontal or Vertical . Property name: orientation Property type: Integer
MINIMUM
Minimum value of a slider. Property name: minimum Property type: Integer
MAXIMUM
348
AggreGate Documentation
PAINT TRACK
Determines whether the track is painted on the slider. Property name: paintTrack Property type: Boolean
PAINT TICKS
Determines whether tick marks are painted on the slider. Property name: paintTicks Property type: Boolean
PAINT LABELS
Determines whether labels are painted on the slider. Property name: paintLabels Property type: Boolean
CUSTOM LABELS
Table that contains custom labels for the slider. Each label is characterized by slider value at that it is painted and label description. Property name: customLabels Property type: Data Table
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
3.15.8.17 Spinner
A single line input field that lets the user select a number or value from an ordered sequence. Spinners provide two tiny arrow buttons for stepping through the elements of the sequence. The keyboard up/down arrow keys also cycle through the elements. The user may also type a (legal) value directly into the spinner. This is what a spinner looks like:
AggreGate Server
349
Common Properties
Width 586 , Height 586 , Bindings 586 , Enabled 586 , Visible 587 , Cursor 587 , Tooltip 587 , Popup Menu 588
587 ,
Foreground
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Font
Custom Properties
VALUE (Default Property
Default value of a spinner. Property name: value Property type: Integer
586 )
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Common Properties
Width
586
, Height
586
, Bindings
586 ,
Enabled
586 ,
Visible
587 ,
Border
587 ,
Cursor
587 ,
Tooltip
587 ,
Popup Menu
588
Custom Properties
VALUE (Default Property
586 )
Default value for the progress bar. Property name: value Property type: Integer
ORIENTATION
Orientation of the progress bar: Horizontal or Vertical . Property name: orientation Property type: Integer
MINIMUM
Minimum value for the progress bar. Property name: minimum
350
AggreGate Documentation
MAXIMUM
Maximum value for the progress bar. Property name: maximum Property type: Integer
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
3.15.8.19 Image
This component displays an image. This is what an image component looks like:
Common Properties
Width
586
, Height
586
, Bindings
586 ,
Enabled
586 ,
Visible
587 ,
Border
587 ,
Cursor
587 ,
Tooltip
587 ,
Popup Menu
588
Custom Properties
ALIGNMENT
Horizontal alignment of text within label display area. Possible values: Description Left Center Right Value 2 0 4
VERTICAL ALIGNMENT
Vertical alignment of text within label display area. Possible values: Description Top Center Value 1 0
AggreGate Server
351
Bottom
IMAGE TABLE
This is a tabular property with two columns: Image ID and Image Data . See Image Expression information. Field Image ID Image Data Type String Data Block Description Unique ID of the image in this table. Image data.
351
for more
Property name: imageTable Property type: Data Table Example: To show the photo of user
108
604 :
IMAGE EXPRESSION
When image expression
350
If expression evaluates to a String, image with ID matching this string is selected from Image Table by this component.
and displayed
If it evaluates to an Image, it is immediately displayed by this component. See variable definition properties 929 and context properties 928 in References article for more information about how an expression may resolve to an image. Property name: expression Property type: String Since image expression is not a part of widget binding 604 , it will not be recalculated when properties and components referred by it are changed. It will be recalculated in the following cases only: Upon widget startup When the Image Expression property itself is changed by a widget binding Thus, if you want the image contents to be changed upon certain event, do the following: Create a widget binding those target
605
expression
Make binding expression 606 what constructs another expression (Image Expression). The latter will be used to find an Image Table entry to display. For example, to select an image according to the value selected in the Combo Box, use the following binding expression: "'" + {form/comboBox1:selectedItem} + "'". This binding expression will construct Image Expression strings, such as 'image1'. To make an animated image, add two pictures to the image table and create the following periodic binding Target: form/image1:expression Expression: {form/image1:expression}=="'image1'"?"'image2'":"'image1'" This binding will switch the image every time it's executed.
604 :
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
352
AggreGate Documentation
Common Properties
Width
586
, Height
586
, Bindings
586 ,
Visible
587 ,
Border
587 ,
Cursor
587 ,
Popup Menu
588
Custom Properties
SVG FILE (Default Property
SVG file to display. Property name: drawing Property type: Data Block
586 )
ENABLE INTERACTIONS
When interactions are enabled it is possible to manipulate vector drawing in the widget window using the following keyboard/mouse shortcuts: Shortcut Meaning
AggreGate Server
353
Shift key + Mouse button Zoom 2 Shift key + Mouse button Pan 1 Ctrl key + Mouse button 2 Ctrl key + Shift key + Mouse button 2
QUADRANT ROTATION
Rotates the drawing to fixed angles: 0, 90, 180, 270. The value is the number of 90 arcs to rotate by. If Preserve Aspect Ratio is enabled and the drawing is in Absolute Layout 322 rotating to 90 or 270 flips component's bounding box width/height. Property name: quadrantRotation Property type: Integer When quadrant rotation differs from 0 the Rotation property is disabled and ignored. Rotate Reset transformations
FLIP HORIZONTAL
Flips the drawing around horizontal axis. Property name: flipHorizontal Property type: Boolean
FLIP VERTICAL
Flips the drawing around vertical axis. Property name: flipVertical Property type: Boolean
SCALE
Scaling index. Value of 1.0 is used to disable scaling. If scaled and rotated drawing doesn't fit the component's box, it will be cropped.
ROTATION
Scaling angle, in degrees. If scaled and rotated drawing doesn't fit the component's box, it will be cropped.
354
AggreGate Documentation
Property name: preserveAspectRatio Property type: Boolean When preserving aspect ratio is disabled, Horizontal/Vertical Alignment properties are also disabled.
Ignoring aspect ratio is useful when you need non-proportional scaling, for example when constructing pipelines consisting of different pipe segments.
HORIZONTAL ALIGNMENT
Defines the drawing horizontal alignment when the component's area is wider then the drawing: Left, Center, Right. Property name: horizontalAlignment Property type: String
VERTICAL ALIGNMENT
Defines the drawing vertical alignment when the component's area is higher then the drawing: Top, Center, Bottom. Property name: verticalAlignment Property type: String
MAXIMIZE
Enables automatic magnification of the drawing so that its margins (i.e. empty space around the image) are discarded. When Maximize is checked, X/Y Margin Percent properties are enabled. Setting small X/Y margins can be used to prevent edges clipping when the drawing size is automatically detected. Property name: maximize Property type: Boolean
X MARGIN PERCENT
X margin as a percentage of drawing width. Enabled when the Stretch To Fit is checked. Property name: xMarginPercent Property type: Float
Y MARGIN PERCENT
Y margin as a percentage of drawing height. Enabled when the Stretch To Fit is checked. Property name: yMarginPercent Property type: Float
AggreGate Server
355
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
XML namespace
All custom tags use a separate namespace: agg. So it must be declared in SVG document header to keep the document well formed:
XML tags
The structure of custom parameters declaration is the following: There must be a single <agg:params> root node holding all other declarations. The root <agg:params> element can hold multiple <agg:param> elements. Each <agg:param> element can hold multiple <agg:state> elements with <agg:param> elements.
AGG:PARAMS
This is simply a root container for all custom declarations. Only a single <agg:params> tag must present in a document.
AGG:PARAM
It has attributes that: hold information about a component property, define rules for applying a property value to SVG document elements. When the tag is located in <agg:params> root node it is treated as a component property: both the component property information and the rule is used. When the tag is located in <agg:state> node then only the rule data is used and no component property is created (see AGG:STATES 356 ). Attributes used to define component property: Attribute: name description type Type: String String String Description: Component property name. Component property description in properties editor. Text code for property type. The following types are supported: I (Integer), F (Float), S (String), C (Color), state, level. Minimum limit for property value when used with number types or lower limit for parameter value when used with level type. Maximum limit for property value when used with number types or upper limit for parameter value when used with level type.
min max
Float Float
Level type implies that component property is an Integer number limited by a [0..100] range. Every property value within this range is proportionally translated to [min..max] range when applying to a document. min and max
356
AggreGate Documentation
numbers are defined by appropriate parameter attributes. Note, that min value can be greater then max value. State type is for applying fixed modifications to a document (see AGG:STATES Attributes that define SVG modification rules: Attribute: ids classes attributes cssAttributes pattern Type: String String String String String Description: Comma-separated SVG document elements identifiers list. Elements with given identifiers is affected by parameter changes. Comma-separated CSS classes list. Elements with given CSS classes is affected by parameter changes. Comma-separated attributes list. Document element attributes that values are overwritten by a new value on parameter change. Comma-separated CSS attributes list. CSS attributes that values are overwritten by a new value on parameter change. A string pattern containing "{0}". It is used to transform property value to a document string by replacing the {0} token with the value. This flag controls SVG drawing repaint policy on parameter changes. When set to false the drawing repaints partially, based on changed regions detection (fast). When set to true the drawing repaints completely on each parameter change (slow). In certain cases the SVG drawing engine can't properly handle dynamic document changes (e.g. changing clipping masks) so the drawing must be repainted completely. Force repaint slows down SVG dynamic performance. The default value is false. animation * value * "play/ stop" String Plays or stops animation for elements with given identifiers and classes. Sets the value for attribute with given identifiers and classes.
356 ).
forceRepaint
Boolean
Animation and value attributes used only when <agg:param> defines a state. Value holds a constant string value that applies to document when an appropriate state of the component parameter is set. Animation begins/stops playing an animation with given id when the appropriate state is set.
AGG:STATE
States are used to apply some predefined modifications (states) to a document. For example it can be used to turn on/ off a fan rotation. State parameter is non scalar and displayed in Properties Editor 835 as a combo box with predefined options. It is used to set multiple values to multiple DOM elements when the state is applied. The idea of defining a state is simple: create an <agg:param> with "state" type and enumerate states within it by <agg:state>. Each <agg: state> tag can have multiple <agg:param/> tags that define how the DOM should change when the state is applied. It has parameters: Attribute: name description Type: String String Description: State name. State description in properties editor.
Examples
STYLE
You can control styling of SVG document elements by modifying their CSS attributes. To change the color for different drawing parts the following parameter declaration can be used:
it will have the Color component property. Every time the Color gets a
AggreGate Server
357
new value the drawing engine will find all document elements where class is mainColor and set a new color value to their fill CSS attribute. This will change the drawing parts color. To make SVG more flexible, faster to download and easier to maintain you can use CSS (Cascading Style Sheets) right in the same file. Read Styling with CSS section in W3C SVG Specificaton.
ROTATION
Suppose that a SVG document have an element representing a knob with ID knob. Applying a rotation transformation at point (61.542, 61.792) forces the knob to rotate. To create a parameter for rotation to a certain angle you can write the following:
<agg:params> <agg:parameter name="angle" description="Angle" type="I" ids="knob" attributes="translation" pattern="rotate({0} 61.542 61.792)"/> </agg:params>
This declares a single SVG parameter Angle with Integer type that will be shown as component property. If the parameter is set to 45 then the translation attribute of the knob DOM element will be set to rotate(45 61.542 61.792) and the knob will turn by 45 degrees.
LEVEL
Let the fluid level in SVG image document of a reactor depends on y attribute value of a <clipPath id="clipPathId"...> tag: when y is 66.9 the reactor is full, when y is 660 the reactor is empty. So, to control the level we must create a parameter with level type:
<agg:params> <agg:param name="level" description="Level" type="level" attributes="y" min="660" max="66" ids="clipPathId" forceRepaint="true"/> </agg:params>
This parameter creates a component property with Integer type having 0 to 100 limits. Attributes min="660" and max="66" define the range of y attribute. Every time a component property gets a new value it is proportionally translated from [0, 100] range to [600, 66] range and the y attribute of the clipPathId element is set to this translated value. If the Level property of Vector Drawing is set to 0 then the y will be set to 660. If the Level property is set to 50 then the y will be set to 297. If the Level property is set to 100 then the y will be set to 66. The forceRepaint flag is used to completely repaint the drawing on every Level change. Because dynamic clip mask modifications are not supported and you might see unexpected results without repainting the whole image.
STATES
To manage drawing states like "the box is opened" or "the switch is turned on", you can use a state parameter. To create a dynamic left-right flip switch for example, you can create an SVG document with two groups of elements. One for the left switch state and another for the right state. Now to control a flip switch state you must control groups visibility. The parameter for switching the state can be defined like this:
<agg:params> <agg:param name="state" description="State" type="state"> <agg:state name="left" description="Left"> <agg:param attributes="visibility" ids="switch-left" value="visible"/ > <agg:param attributes="visibility" ids="switch-right" value="hidden"/ > </agg:state> <agg:state name="right" description="Right"> <agg:param attributes="visibility" ids="switch-left" value="hidden"/> <agg:param attributes="visibility" ids="switch-right" value="visible"/> </agg:state>
358
</agg:params>
This defines a State component property with two values: Left and Right. When the State is set to Left then the visibility attribute of the switch-left DOM element gets visible value, and the visibility attribute of the switch-right DOM element gets "hidden" value. When the State is set to Right the switch-left becomes hidden and the switch-right becomes visible.
ANIMATION
Suppose you have a fan drawing and it animated with:
<animateTransform id="rotate" attributeName="transform" attributeType="XML" type="rotate" from="0 45 45" to="360 45 45" begin="indefinite" dur="10s" repeatCount="indefinite"/>
To control animation you can define the following state parameter:
<agg:params> <agg:param name="state" description="State" type="state"> <agg:state name="on" description="On"> <agg:param animation="play" ids="rotate"/> </agg:state> <agg:state name="off" description="Off"> <agg:param animation="stop" ids="rotate"/> </agg:state> </agg:param> </agg:params>
This defines a State component property with two values: On and Off. When it gets the On value then the rotate animation is started. When the value is set to Off the rotate animation is stoped. You can see more examples of using custom SVG parameters in the Symbol Library
1165 .
AggreGate Server
359
Common Properties
Width
586
, Height
586
, Bindings
586 ,
Enabled
586 ,
Visible
587 ,
Border
587 ,
Cursor
587 ,
Tooltip
587 ,
Popup Menu
588
Custom Properties
URL (Default Property
586 )
The URL of a video stream or JPEG image to show. Property name: url Property type: String
VIDEO MODE
Format of the video: MJPEG stream or JPEG still images. Property name: videoMode Property type: Integer
REFRESH RATE
Period of image refresh (if using JPEG Stills Video Mode). Property name: refresh Property type: Long
SCALE VIDEO
If enabled, video frame will be downscaled to fit component size. If disabled, video frame will be truncated if it's larger than the component size. Property name: scaleVideo Property type: Boolean
SHOW STATUS
Defines whether or not to show frame rate and some other details on the video. Property name: showStatus Property type: Boolean
USERNAME
Username to use for authenticating when accessing a password-protected URL. Property name: username Property type: String
PASSWORD
Password to use for authenticating when accessing a password-protected URL. Property name: password Property type: String
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
360
AggreGate Documentation
3.15.8.22 Meter
This component displays a meter that is best used for indicating temperature, pressure and similar values. The meter has three subranges, shown in different colors. This is what a gauge component looks like:
Common Properties
Width
586
, Height
586
, Bindings
586 ,
Visible
587 ,
Border
587 ,
Cursor
587 ,
Popup Menu
588
Custom Properties
VALUE (Default Property
586 )
Data value indicated by meter. Property name: value Property type: Float
PLOT
A configuration of meter plot, i.e. "graphical part" of a meter. Fields of meter plot: Field Lower Bound Upper Bound Axis Location Background Alpha Background Paint Bulb Radius Column Radius Follow Data In Subranges Gap Insets Mercury Paint Type Float Float Integer Float Data Table Integer Integer Boolean Integer Data Table Data Table Description Lower bound for the meter. Upper bound for the meter. The axis can be displayed at the left or right of the meter, or not displayed at all. The alpha transparency value used when coloring the plots background. Paint
590
Radius of the meter bulb. Radius of the main column of the meter. Flag that controls whether or not the axis range automatically changes to show only the subrange within which the current data value falls. Gap between the outlines used to represent the meter. The amount of space to leave around the outside of the plot. Default mercury Paint
590
AggreGate Server
361
Outline Paint Outline Stroke Outline Visible Padding Meter Paint Meter Stroke Units Use Subrange Paint Value Font Value Location
Data Table Data Table Boolean Data Table Data Table Data Table Integer Boolean Data Table Integer
Paint
590
used to draw an outline around the plot area. used to draw an outline around the plot area.
Stroke
593
Flag that controls whether or not the outline is drawn. Padding (top, left, bottom, right) around the outside of the meter. Paint
590
used to draw the outline of the meter. used to draw the outline of the meter.
Stroke
593
Unit type. Can be set to Fahrenheit, Celsius or Kelvin degrees is meter is used to represent the temperature, or to No units displayed otherwise. Flag that controls whether or not the sub-range colors are used for the mercury in the meter. Font
590
Location at which the current value will be displayed (None, Right, Left, or Bulb). Note that the default Value Paint color is white, so if you change the location you should also change the color so that the label remains visible. Paint
590
Value Paint
Data Table
AXIS
Configuration of meter axis. Fields of meter axis: Field Label Label Angle Label Font Label Insets Label Paint Tick Label Font Tick Label Insets Tick Label Paint Tick Labels Visible Type String Float Data Table Data Table Data Table Data Table Data Table Data Table Boolean Description The axis label typically describes what an axis is measuring. The angle of rotation for the axis label. The font
590
The space to leave around the outside of the axis label. The paint
590
The font for the tick labels. The space to leave around the outside of the tick labels. The paint
590
A flag controlling the visibility of tick labels. The amount by which the tick marks extend into the plot area The amount by which the tick marks extend outside the plot The paint
590
Tick Mark Inside Float Length Tick Mark Outside Length Tick Mark Paint Tick Mark Stroke Tick Marks Visible Visible Float Data Table Data Table Boolean Boolean
used to draw the tick marks. used to draw the tick marks.
The stroke
593
A flag controlling the visibility of tick marks. A flag that controls whether or not the axis is visible.
362
AggreGate Documentation
SUBRANGES
Table of meter subranges used to indicate normal, warning and critical values. Fields of a subrange: Field Subrange Lower Bound Upper Bound Display Low Type String Float Float Float Description Subrange name, read-only. Lower bound for the subrange. Upper bound for the subrange. Lower display bound. The display bounds are only used if the meter axis range is automatically adjusted to display the current sub-range (i.e. Follow Data In Subranges flag of Meter Plot is enabled). Upper display bound. Mercury paint
590
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
3.15.8.23 Compass
This component displays a compass with one or more needles. This is what a compass component looks like:
Common Properties
Width
586
, Height
586
, Bindings
586 ,
Border
587 ,
Cursor
587 ,
Popup Menu
588
Custom Properties
DATA VALUES (Default Property
586 ) 586 .
A list of data values that will be indicated by the compass. This is an indexed property Property name: datasets Property type: Data Table
PLOT
A configuration of compass plot.
AggreGate Server
Properties of meter plot: Field Background Alpha Background Paint Draw Background Insets Revolution Distance Rose Center Paint Rose Highlight Paint Rose Paint Type Float Data Table Boolean Data Table Float Data Table Data Table Data Table Description The alpha transparency value used when coloring the plots background. The paint
590
363
Flag that determines whether or not the background is drawn. The amount of space to leave around the outside of the plot. The length of a full revolution for the compass. The default value is 360.0, because the compass displays degree values. The paint The paint The paint
590
used to fill the interior of the compass dial. used to draw the edges of the outer border of the compass dial. used to fill the outer border of the compass dial.
590
590
NEEDLES
A list of compass needles. Each needle indicates one Data Value Properties of a needle: Field Needle Type Outline Paint Outline Stroke Paint Needle types: Type Integer Data Table Data Table Data Table Description Type of the needle. The paint
590 362
593
590
364
AggreGate Documentation
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
3.15.8.24 Map
This component displays and dynamically updates geographical map, road map, terrain map, or satellite image. It uses Google Maps as data source. The map may show markers indicating current location of devices providing GPS data, along with their track paths. This is what a map component looks like:
AggreGate Server
365
Datum
This map component uses WGS84 datum. Any device that provides location data for AggreGate must be set up to use WGS84 datum in order to be properly displayed on the map.
Common Properties
Width
586
, Height
586
, Bindings
586 ,
Visible
587 ,
Border
587 ,
Tooltip
587 ,
Popup Menu
588
Custom Properties
AUTO-DETECT ZOOM LEVEL
Instructs map renderer to set zoom level automatically so that map center, all markers and paths will be visible without additional panning. Property name: detectZoom Property type: Boolean
ZOOM LEVEL
Zoom Level defines the resolution of the current view. Zoom levels between 0 (the lowest zoom level, in which the entire world can be seen on one map) to 21+ (down to individual buildings) are possible. Each succeeding zoom level doubles the precision in both horizontal and vertical dimensions. Not all zoom levels appear at all locations on the earth. Zoom levels vary depending on location, as data in some parts of the globe is more granular than in other locations. If no data is available for the current location and selected zoom level, the map will display blank image instead. Property name: zoom Property type: Integer
366
AggreGate Documentation
MAP TYPE
Four map types are supported: Roadmap (default) specifies a standard road map image. Satellite specifies a satellite image. Terrain specifies a physical relief map image, showing terrain and vegetation. Hybrid specifies a hybrid of the satellite and roadmap image, showing a transparent layer of major streets and place names on the satellite image. Property name: mapType Property type: String
TRACKED DEVICES
This setting is a context mask 865 . All Devices be shown on the map as markers. The mask may resolve to: An individual Device All Devices in the system All Devices of a certain user Device group
248 108 113
providing their location data those context paths match this mask will
Device setting history storage 116 must be enabled for Location (location) setting of a Device in order to keep historical track information and display it on the map. Property name: trackLength Property type: Integer
Location Properties
TYPE
This setting allows to specify how the map is centered: Automatic. The map is centered to fit all devices and track waypoints. This option may be combined with Auto-detect Zoom Level 365 to ensure that map displays all available data. Geolocation. Allows to center map using a geocode, i.e. city name, street address, or zip code. Latitute/Longitude . Manual specification of map center coordinates (latitude and longitude). Property name: locationType Property type: Integer
GEOLOCATION
This option is enabled if Location Type Property name: geoLocation Property type: String
366
AggreGate Server
367
LATITUDE
This option is enabled if Location Type Property name: latitude Property type: Float
366
LONGITUDE
This option is enabled if Location Type Property name: longitude Property type: Float
366
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
3.15.8.25 Device
This component displays an image of some hardware device and renders some dynamically generated device status messages near or over it. This is what a device component looks like:
Common Properties
Width 586 , Height Menu 588
586
, Bindings
586 ,
Visible
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Cursor
587 ,
Tooltip
587 ,
Popup
Custom Properties
SOURCE
Path of context
863
to get data from. In most cases, this path will point to a Device Context
677 .
IMAGE
Device image (both raster and vector images are supported). Property name: image Property type: Data Block
LABELS
Configuration of dynamic labels indicating current device state. Properties of a label:
368
AggreGate Documentation
Field Expression
Type String
Description Label text expression 911 . This expression will be calculated every Period. Its result will be converted to string and displayed on the label.
922
Context specified by the Source property of this device component. If Source is not specified, default context 315 of the currently running widget. Widget parameters
317
Default Data Table 927 Default Row 927 Environm ent Variables
930
table.
Standard
931
variables only.
Label color. Label text update period, i.e. period of Expression re-evaluation.
STATUS
Numeric value of component status. Status is used to find a proper color for the device image according to the Status Table . If status is not NULL, device image is colored per the corresponding line in the Status Table. If status is NULL, device image is left untouched. Property name: status Property type: Integer
STATUS TABLE
Table containing a color value for every Status used by this device component. Fields of the Status Table: Field Status Color Type Integer Color Description Value of the Status property. Device image color corresponding to the this status.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
AggreGate Server
369
3.15.8.26 Graph
This component displays and dynamically updates a graph of any kind, e.g. a network topology graph. This is what a graph component looks like:
Opening Nodes
Graph nodes can be right-clicked to open related objects (for example, dashboards of corresponding devices).
Node Labels
Each graph nodes has a label describing an underlying object. Example: on a network topology map node labels show device context descriptions.
370
AggreGate Documentation
If graph is in Picking mode, it's possible to Ctrl-click on a node to center graph on this node.
Common Properties
Width
586
, Height
586
, Bindings
586 ,
Visible
587 ,
Background
587 ,
Border
587 ,
Tooltip
587
Custom Properties
PROVIDER
Selects the graph data provider type. The list of available types may vary in different AggreGate installations. For example, available types may include: Network (Network topology of all types) Level 2 (OSI model layer 2 topology) Level 3 (OSI model layer 3 topology) Property name: provider Property type: String
VERTEX MASK
The mask 865 of contexts to get topology data from. In most cases, each context matching this mask will appear as a separate graph node (vertex). Property name: vertexMask Property type: String
VERTEX MASK
The mask 865 of contexts to get topology data from. In most cases, each context matching this mask will appear as a separate graph node (vertex). Property name: vertexMask
AggreGate Server
Property type: String
371
MODE
Graph mode: Transforming or Picking. In transforming mode, the graph can be zoomed, panned, rotated and sheared. In picking mode, graph nodes can be moved individually. It's possible to change graph mode using a binding widget. Property name: mode Property type: Integer
604 ,
340
to a
UPDATE PERIOD
The period of re-reading topology information from the server and refreshing the graph. Property name: updatePeriod Property type: Long
EDGE SHAPE
Defines the visual look of graph edges. Possible choices are: 1. Line 2. Wedge
3. Quad Curve
4. Cubic Curve.
372
AggreGate Documentation
Layout Properties
LAYOUT
Graph layout type. Supported layouts are: 1. Kamada-Kawai 2. Fruchterman-Reingold
3. Circle
4. Meyer's self-organizing
AggreGate Server
373
ATTRACTION
Attraction factor for Fruchterman-Reingold layout. Property name: attraction Property type: Double
REPULSION
Repulsion factor for Fruchterman-Reingold layout. Property name: repulsion Property type: Double
EXCHANGE VERTICES
Exchange vertices flag for Kamada-Kawai layout. Property name: exchangeVertices Property type: Boolean
LENGTH FACTOR
Length factor for Kamada-Kawai layout. Property name: lengthFactor Property type: Double
374
AggreGate Documentation
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Common Properties
Width 586 , Height Menu 588
586
, Bindings
586 ,
Visible
587 ,
Foreground
587 ,
Background
587 ,
Border
587 ,
Cursor
587 ,
Tooltip
587 ,
Popup
Custom Properties
TEXT (Default Property
586 )
Text displayed by LED component. Note that not all symbols are supported. Unsupported symbols are displayed as question marks. Property name: text Property type: String
ALIGNMENT
Horizontal alignment of text inside the LED display: Center, Left or Right. Property name: horizontalAlignment Property type: Integer
VERTICAL ALIGNMENT
Vertical alignment of text inside the LED display: Center, Top or Bottom. Property name: verticalAlignment Property type: Integer
DOT WIDTH
Width of a single dot. Property name: dotWidth Property type: Integer
DOT HEIGHT
AggreGate Server
Height of a single dot. Property name: dotHeight Property type: Integer
375
HORIZONTAL GAP
Horizontal gap between dots. Property name: horizontalGap Property type: Integer
VERTICAL GAP
Vertical gap between dots. Property name: verticalGap Property type: Integer
PADDING
Number of dots that will never lit at the left, right, top and bottom sides of display. Property name: padding Property type: Data Table
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
or Toggle Buttons
337
604
376
AggreGate Documentation
3.15.9 Containers
Containers may may hold other components Panel
378 322 .
382
379
LAYOUT
This property defines the layout type Property name: layout Property type: Integer
318
of the container.
SCROLLING
This property defines when scrolling is enabled in the container's panels. It has the following options: None. Both horizontal and vertical scrolling are disabled. Vertical . Vertical scrolling is enabled, horizontal is disabled. Horizontal. Horizontal scrolling is enabled, vertical is disabled. Both. Both horizontal and vertical scrolling are enabled. Property name: scrolling Property type: Integer
586
and events
595 .
Custom Properties
This section describes properties of the root panel
376
of the widget.
ALL BINDINGS
AggreGate Server
This property contains a list of all bindings available in the widget template. See the bindings information about bindings and their parameters. Property name: allBindings Property type: Data Table
604
377
SCRIPTS
This property contains the table of widget scripts
610 .
Name is the script name. It it used to refer to this script from widget bindings
Code contains text of a class implementing WidgetScript interface, i.e. script code. When a new script is added to the scripts table, a new binding used to launch it is automatically added to the All Bindings 376 list. However, initial properties 952 of this binding do not define any script launch conditions. It's necessary to modify these properties to make the script start on widget startup, some event or just periodically. Property name: scripts Property type: Data Table
Touchscreen
Settings in this group are related to touch panel support
616 .
378
AggreGate Documentation
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Custom Events
SUBMIT
This event may be triggered by a button having a Submit action in its actions list Event name: submit
335 .
RESET
This event may be triggered by a button having a Reset action in its actions list Event name: reset
335 .
CLOSE
This event may be triggered by a button having a Close action in its actions list Event name: close
335 .
3.15.9.2 Panel
A panel is a generic container. It provides a simple grid layout 318 with no additional decorations. Panel may be put to the cell of parent container's layout grid to form complex interfaces. This is what an opaque panel with a blue background, holding a single text field
325 ,
looks like:
By default, a panel is non-opaque, i.e. draws no background, so that any components underneath show through. Opaque panels are filled with background color. Borders can be also added to panels.
Common Properties
A Panel supports the following common widget properties:
AggreGate Server
Width 586 , Height Menu 588
586
379
Popup
, Bindings
586 ,
Visible
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Cursor
587 ,
Tooltip
587 ,
, Scrolling
376 ,
376
Custom Properties
The panel has no custom properties.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Common Properties
A Tabbed Panel supports the following common widget properties: Width 586 , Height 587 , Popup Menu
586 588
, Bindings
586 ,
Enabled
586 ,
Visible
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Cursor
587 ,
Tooltip
376
Custom Properties
ACTIVE TAB
Name of active tab. Property name: activeTab Property type: String
TAB PLACEMENT
Placement of tab headers: Top, Left, Bottom or Right. Property name: tabPlatement Property type: Integer
380
AggreGate Documentation
node
Tab Properties
Common properties: Layout
376 ,
Bindings
586
ORDER NUMBER
Order number of the tab. Tabs are shown according to their order numbers in ascending order. Property name: index Property type: Integer
TITLE
Title of the tab. Property name: title Property type: String
ICON
Image shown next to the tab's title. If NULL, no image is displayed. Property name: icon Property type: Data Block
ENABLED
Flag indicating whether tab can be activated. Property name: enabled Property type: Boolean
FOREGROUND
Tab header font color. Property name: foreground Property type: Color
BACKGROUND
Tab background color. Property name: background Property type: Color
TOOLTIP
Text of tab tooltip. Property name: toolTipText Property type: String
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
AggreGate Server
381
looks like:
It's possible to divide space among three or more components by putting split panes inside of other split panes.
Common Properties
A Split Panel supports the following common widget properties: Width 586 , Height 587 , Popup Menu
586 588
, Bindings
586 ,
Enabled
586 ,
Visible
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Cursor
587 ,
Tooltip
376
Custom Properties
ORIENTATION
Horizontal or vertical. A split panel with horizontal orientation has a left frame and a right frame, while a vertically oriented split panel has a top frame and a bottom frame. Property name: orientaton Property type: Integer
DIVIDER LOCATION
Divider location in pixels from the left or top side of split panel. Property name: dividerLocation Property type: Integer
DIVIDER SIZE
Divider size in pixels. Property name: dividerSize Property type: Integer
Frame Properties
Common properties: Layout
376 ,
Bindings
586
ORDER NUMBER
Order number of the frame. A frame with lower number is located in the left part (or in the top part -- for a Split Panel with vertical layout) or the Split Panel. Property name: index Property type: Integer
382
AggreGate Documentation
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
and a label
323
looks like:
Common Properties
A Layered Panel supports the following common widget properties: Width 586 , Height Menu 588
586
, Bindings
586 ,
Visible
587 ,
Background
587 ,
Opaque
587 ,
Border
587 ,
Cursor
587 ,
Tooltip
587 ,
Popup
376
Custom Properties
A Layered panel has no custom properties.
node
Layer Properties
Common properties: Layout
376 ,
Bindings
586
DEPTH
Depth of the layer, that is also called z-order. Layers with lower depth are rendered over the layers with higher depth. Property name: depth Property type: Integer
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
3.15.9.6 Subwidget
Subwidget component is used to display a widget inside another widget. The appearance of subwidget component is fully configurable, since a subwidget is, indeed, a usual widget that's just inserted into another widget. This is what a subwidget component may look like:
AggreGate Server
383
The nested widget, represented by a subwidget component, can interact with its host widget: First, a widget that will act as a subwidget is created. Second, some custom properties 588 are added to the root panel "bridge" between a host widget and the subwidget.
376
Example: The root panel of "Conveyor" subwidget (pictured above) has boolean Processing property that starts/stop the conveyor belt. Third, the above custom properties are bound example, in the "Conveyor" subwidget to some component properties inside the "nested" widget. For
604
Example: The Processing property of the "Conveyor" subwidget is bound to Operate properties of several Vector Drawing 352 components that constitute the conveyor belt inside the nested widget. Fourth, the host widget is created and a Subwidget component is added to it. The Subwidget component's Reference property is set up to point the "nested" widget. The Processing property of the nested widget will than appear as a regular property of Subwidget component inside the host widget. Fifth, "inherited" properties of a subwidget are bound building the widget-to-subwidget interactions.
604
Example: The Processing property of the "Conveyor" subwidget is bound Enabled property of "Main Switch" toggle button inside the host widget. Thus clicking this button to start/stop the whole bottling line will also start/stop the conveyor belt.
Common Properties
Width
586
, Height
586
, Bindings
586 ,
Visible
587 ,
Border
587 ,
Tooltip
587
Custom Properties
REFERENCE
Path of a widget context
774
matching the widget to load and display inside this subwidget component.
SUBWIDGET PROPERTIES
The subwidget component exposes custom properties of referred widget's root panel interaction between the host widget and a the subwidget.
376
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
384
AggreGate Documentation
3.15.10 Charts
Charts are used for graphical representation of data. The following chart types are supported:
CATEGORY CHARTS
Line Chart Area Chart Bar Chart
397
401
404
415
422
425
427
XY CHARTS
XY Line Chart XY Area Chart XY Bar Chart
429
436
440
449
453
457
459
Mixed XY Chart
469
472
475
OTHER CHARTS
Spider Chart Polar Chart Pie Chart
478
481
485
Ring Chart
486
AggreGate Server
385
Chart Zooming
The chart component supports zooming via the popup menu or via a mouse drag on the displayed chart.
Chart Structure
Most chart consist of the following basic parts: Dataset Plot
509 385
Renderer Axes
490
that performs drawing on the plot (optional, some plots perform data rendering themselves)
Numerous other chart elements are supported: Titles Legends Frames Annotations Gridlines Crosshairs Data Item Labels And more
This section covers chart properties that are related to fetching source data and building chart's dataset.
history and new event occurrences to build and dynamically update the chart.
869
Variable 393 . Use data from variable update the chart. Trending
395
. Use other chart's dataset to build a trend, such as moving average, liner/power regression, etc.
Custom Data is used in all charts. Event and Variable data types are available in XY Line Chart 429 , XY Area Chart 436 and XY Bar Chart 440 . And Trending is available for the same three charts if they are a part of Mixed XY Chart 469 .
386
AggreGate Documentation
SOURCE EVENTS
This property defines what is used to build an event-based 392 chart. It has a tabular format. Every line in the table defines one data series to be shown on the chart. Thus, a single chart may show changes of different values, and even values calculated from the data of different events. Each data series has the following properties: Proper ty Name Context Event Type String String String Description Name of data series indicated on the chart. Server context Event
880 863
Expressi String on
Expression 911 used to calculate data values. In most cases it should include references cells of event Data Table 881 .
to the
Variable Series Expression Resolution Environment Default Context Specified by series Context setting.
927
922
Standard
931
variables only.
Expression 911 used to calculate value timestamps (i.e. domain axis values). If this expression is not defined (this is a default behaviour), chart represents values at timestamps when their modification was registered by the server. The Date Expression is useful when variable value Data Tables 854 received from a device (e.g. a real-time controller) contain both timestamps and values. In this case each data sample contains both domain-axis value (the timestamp) and range-axis value (the number), precisely positioning a chart data item.
Variable Series Date Expression Resolution Environment Default Context Specified by series Context setting.
927
922
Standard
931
variables only.
Tells what to do if several data values exist for a specific time range. Possible choices are calculate an average, take minimal or maximal value, calculate a sum of all values, or take first/ last value for the period.
AggreGate Server
Property type: Data Table
387
SOURCE VARIABLES
This property defines what data is used to build a variable-based 393 chart. It is formatted as a table. Every line in the table defines one data series to be shown on the chart. Thus, a single chart may show changes of different values, and even values calculated from data of different variables. Each data series has the following properties: Proper ty Name Context Type String String Description Name of data series indicated on the chart. Series name can be an expression constant. Server context Variable
869 863 911
or just a string
Expression 911 used to calculate data values. In most cases it should include references variable value.
to the
Variable Series Expression Resolution Environment Default Context Specified by series Context setting.
927
922
393
is enabled)
Standard
931
variables only.
Propaga Boolean Create a separate data series for every record of source variable. See series propagation te details. Aggrega Integer tion Type Integer
393
for
Tells what to do if several data values exist for a specific time range. Possible choices are calculate an average, take minimal or maximal value, calculate a sum of all values, or take first/ last value for the period. Data series type
393 .
TIME UNIT
Time unit defines resolution for event-based 392 and variable-based 393 charts. Only one data value per time unit is shown on the chart. For example, if time unit for Event chart is Day and several events occurred during a certain day, data for only one event for this day (the latest one) is shown on the chart. Available Time Units: Year, Quarter, Month , Week, Day , Hour, Minute and Second . Property name: timeUnit Property type: Integer
Estimate memory consumption that may be caused by loading historical data according to Limit Time Range and Time Range options. Loading a huge amount of historical data may cause server failure or degraded performance.
388
AggreGate Documentation
Disabling limited time range will force the server to load all available event/variable history from database into memory in order to prepare chart dataset. This may cause very high memory consumption and lead to server failure of degraded performance!
Property name: enableTimeRange Property type: Boolean
defining
Setting a long time range will force the server to load a sufficient part of event/ variable history from database into memory in order to prepare chart dataset. This may cause very high memory consumption and lead to server failure of degraded performance!
Property name: timeRange Property type: Integer
SOURCE DATA
The source data table used for building custom-data-based Property name: sourceData Property type: Data Table
388
charts.
AggreGate Server
389
At second step data from this "sheet" is used to fill the resulting dataset using AggreGate expressions 911 that are similar to Excel formulas. For example, if talking about a Pie chart, one expression ("formula") is used to calculate Category name (pie section name) and another expression gives the Value (width of a pie section).
397
to learn how to fill Source Data with "real" values from inside the GUI Builder
827 .
Examples
Since the above concepts may seem complicated at first glance, let's illustrate them with several examples.
PIE CHART
This simple example shows how to build a Pie Chart management system. First, we set up the binding that executes a query table (field names are shown in bold): interface_type (Interface Type) Tunnel Ethernet
271 485
and fills Source Data table with its results. Here is a source data
390
AggreGate Documentation
3 2 2 1
The Source Data Bindings table of our chart will look as follows: Key {interface_type} Value {interface_count}
This means, that we'll use values from Interface Type column to fill dataset keys ("pie piece names") and values from Interface Count column to fill dataset values ("pie piece sizes"). Here is how resulting chart will look like:
BAR CHART
This example shows how values for different data series may be take from different columns of Source Data table. It's a Bar Chart 404 indicating current incoming and outgoing traffic for top ten most active network interfaces in a network management system. Below is the Source Data table for this chart. It was also set by binding upon widget startup. device ( Device) interface (Interface) interfacesInterfacetrafficI interfacesInterfacetraffic ncomingtraffic Outgoingtraffic (Incoming Traffic, bps (Outgoing Traffic, ) bps) admin.lh (Network Host) admin.lh (Network Host) admin.lh (Network Host) admin.lh (Network Host) admin.lh (Network Host) Intel(R) Wireless WiFi Link 4965AGNNative WiFi Filter Driver-0000 Intel(R) Wireless WiFi Link 4965AGNQoS Packet Scheduler-0000 Intel(R) Wireless WiFi Link 4965AGN 801 747
801
747
801
747
11
64
15
AggreGate Server
391
admin.lh (Network Host) admin.lh (Network Host) admin.lh (Network Host) admin.lh (Network Host) admin.lh (Network Host)
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
We need to take incoming traffic values from the third column and outgoing traffic values. Therefore, we'll need two Source Data Bindings records: Series Key 'Incoming Traffic, bps' 'Outgoing Traffic, bps' Category {device} + ' - ' + {interface} {device} + ' - ' + {interface} Value {interfacesInterfacetrafficIncomingtraf fic} {interfacesInterfacetrafficOutgoingtraf fic}
This table indicates that there will be two series in the chart. During the processing of first Source Data Bindings record all added dataset entries will belong to a series with fixed name Incoming Traffic, bps (it's quoted as a string literal, since all Source Data Bindings table cells contain expressions). During processing of second record, all dataset entries will belong to Outgoing Traffic, bps series. The resulting chart:
BUBBLE CHART
Note that every type of chart contains a default Source Data table and default Source Data Bindings that greatly help understanding chart functionality. This example uses the default data and bindings of a Bubble Chart 457 to illustrate its dataset creation.
392
AggreGate Documentation
Chart Source Data: key (Key) Series 1 Series 1 Series 1 Series 2 Series 3 Chart Source Data Bindings: Key {key} X {x} Y {y} Z {z} x (X) 4 6 9 5 8 y (Y) 4 6 9 12 2 z (Z) 4 5 8 5 4
These bindings are very straightforward: value of every dataset item is takes from the Source Data field with the same name. Note that Z is the size of bubbles, while X and Y are their coordinates. Here is the resulting chart:
440
A chart based on event data is called a Time Chart . It shows the changes in a certain value over time. The value is calculated using an expression 911 that contains references to event data 881 . The domain axis of an events-based chart must be of Date Axis type.
386
AggreGate Server
393
440
A chart based on variable values is called a Time Chart . It shows the changes in a certain value over time. The value is calculated using an expression 911 that contains references to the Data Table 854 containing variable value. The domain axis of a variables-based chart must be of Date Axis type.
Propagation Disabled
This is a default setting. Only one data series will be created, even if the source variable has multiple rows. Series Name expression and data Expression will be evaluated having row number zero as default row 927 . It's of course possible to refer other rows using references of format {field[row]}.
Propagation Enabled
A separate sub-series is created for every row found in the current value of series variable. Series Name should be an expression 911 . This expression is evaluated for every row found in the current value of series variable (i.e. default row 927 is current row). The current row is also defined as the "active" row for the sub-series, so that when series primary Expression will be evaluated for historical and future values, its default row 927 will be the same. Series propagation will work properly only in two cases: Series is based on statistics
394 ,
OR
The order of rows in the variable's value never changes If series Name expression was evaluated to NULL, no series will be created for the current record. This is very convenient to skip some series. Here is an example of propagated series' Name expression that skips series creation for records those {ifInOctets} and {ifOutOcters} fields are both zeros:
({ifInOctets} > 0 && {ifOutOctets} > 0) ? 'Interface ' + {ifDescr} + ' incoming traffic, Kbit/s' : null
394
Absolute
AggreGate Documentation
394 ,
936
Gauge
The source value is kept as-is, without any conversion. This is a default setting that is suitable for most cases. This type is suitable for simple metering like temperature, number of people in the room or stock price.
Counter
Suitable for continuous incrementing counters. The Counter-type data source assumes that the counter never decreases, except when a counter overflows. The series takes the overflow into account. The counter is stored as a persecond rate. When the counter overflows, series checks if the overflow happened at the 32bit or 64bit border and acts accordingly by adding an appropriate value to the result. Simply speaking, Counter will look at the difference between the previous value and the current value (the delta). An example would be an odometer. The chart data point is computed as: delta(counter) divided by delta(time).
Derive
Derive-type series will store the derivative of the line going from the last to the current value of the data source. This can be useful for gauges, for example, to measure the rate of people entering or leaving a room. Internally, derive works exactly like Counter but without overflow checks. So if your counter does not reset at 32 or 64 bit you might want to use Derive and combine it with a Minimum Value of 0. Derive is similar to Counter, but now it can also go back. An example could be something monitoring a bidirectional pump. The resulting rate can be negative as well as positive.
Absolute
Absolute series are used for counters which get reset upon reading. This is used for fast counters which tend to overflow. So instead of reading them normally you reset them after every read to make sure you have a maximum time available before the next overflow. Another usage is for things you count like number of messages since the last update. Absolute series is also similar to the odometer, but here the counter is reset every time it is read. Chart data point computed as: value divided by delta(time).
Statistics Reference
The statistics reference ("key")}.
925
Once statistics reference is used inside series Expression , chart builder takes historical data from the channel named channel. This channel should be based on the series source variable. If a key is specified, the statistical Dataset matching this key
942
AggreGate Server
Aggregation. Series aggregation setting match statistical aggregation function Type . Series type must match statistical channel's type
942 . 940
395
Series expression may include only one statistics reference. Referring multiple channels not possible.
3.15.10.1.4 Trending
A chart may show trends based on data from other chart's dataset. There are four types of trends: Linear Regression Exponential Regression Moving Average Percentile Trending involves two charts to present: the source chart (its data is used to calculate the trend) and the trend chart itself. Thus, trends can be plotted by the following charts only when they are a part of Mixed XY Chart 469 : XY Line Chart XY Area Chart XY Bar Chart
429 436
440
Setting Up Trends
To configure new trend for a chart, perform the following: 1. Create a Mixed XY Chart 2. Add
489 469
3. Configure the data source for the simple XY chart and ensure that it shows correct data. 4. Add
489
another XY chart to the mixed chart. The second XY chart will show trend(s) of first XY chart's source data.
385
6. Since trend chart and source chart share the same address space and axes, you can now remove trend chart's "original" axes from the parent mixed chart. This step is optional. 7. Open Trending properties of the second XY chart and change Source Chart Name to the name of widget component matching the "source" XY chart, e.g. xyLineChart1. 8. Select trend type and configure other trend properties. 9. Run the widget and test the trends.
Trending Properties
The trending properties are available only for XY Line, Area and Bar charts when they are added as sub-charts to a Mixed XY Chart 469 .
SOURCE CHART
Name of sub-chart component those data will be used to build trend curves. It must be the a sub-chart of the same Mixed XY Chart with this trending sub-chart. Property name: sourceDataPlotID
396
AggreGate Documentation
TRENDING TYPE
Type of trend(s) to build: Linear, Exponential, Moving Average, or Percentile. Property name: trendingType Property type: Integer
FORECAST FACTOR
Length of "future" trend in time comparing to the time frame of the source data, for example: Value of 0.0 means that the trend is build exactly for the time frame covered by source data. Value of 0.5 means that the trend goes into the future for half of source data's time frame. E.g. if the source data covers the whole year 2012, the trend will cover 2012 and first two quoters of 2013. Value of 1.0 means that the trend goes into the future full source data's time frame. E.g. if the source data covers the whole year 2012, the trend will cover 2012 and 2013. Value of 3.0 means that the trend goes into the future three source time frames, etc. Property name: forecastFactor
SKIP PERIOD
The length of the initial skip period for the Moving Average calculation (in chart's data space). Property name: skipPeriod Property type: Float
AggreGate Server
397
Category Renderer
552 .
398
AggreGate Documentation
LINE RENDERER
A renderer that displays data items by drawing a shape at each data point and/or connecting data points with straight lines.
LINE 3D RENDERER
A line renderer that uses a "pseudo-3D" effect to draw line charts.
LEVEL RENDERER
A renderer that draws horizontal lines to represent items.
AggreGate Server
399
STEP RENDERER
A renderer that draws a stepped line (or stepped lines) connecting the data items.
Dataset
The category line chart supports Custom Data It has the following Source Data Bindings: Binding Series Category Value Expected Value Type String String Number Description Textual name of the data series. Data series is represented by a single line (or set of shapes) on the chart. Name of category. Categories are displayed along the domain axis. Numeric value to display for the above series/category. Values are displayed along the range axis.
388
model only.
400
AggreGate Documentation
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
388
properties.
552 .
All properties defined directly by Category Line Renderer 552 (and not the base Category Renderer) are valid only for Line and Line 3D renderers. These properties has no effect on Level and Step renderers.
Custom Properties
ITEM MARGIN
Item margin as a percentage of the overall length of the category axis (the default is 0.20, or twenty percent). This controls the amount of space that is allocated to the gaps between items within the same category. This property is valid for Level renderer. Property name: itemMargin Property type: Float
X OFFSET
X-offset for the 3D effect. This property is valid for Line 3D renderer. Property name: XOffset Property type: Float
Y OFFSET
Y-offset for the 3D effect. This property is valid for Line 3D renderer. Property name: YOffset Property type: Float
WALL PAINT
Paint
590
used to color the "sides" (or "walls") of the plot background area.
This property is valid for Line 3D renderer. Property name: wallPaint Property type: Data Table
Common Events
AggreGate Server
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
401
Additional Examples
A line chart with item labels showing. The orientation of the plot has been changed to horizontal:
A line chart where each series is displayed with a different combination of lines and/or shapes:
548 .
402
AggreGate Documentation
AREA RENDERER
A renderer that draws different data series one over another. Since different series overlap each other, they are rendered semi-transparently. The transparency is controlled by Foreground Alpha property of the chart plot 511 .
STACKED RENDERER
A renderer that "stacks" different data series one over another.
AggreGate Server
403
Dataset
The category area chart supports Custom Data It has the following Source Data Bindings: Binding Series Category Value Expected Value Type String String Number Description Textual name of the data series. Name of category. Categories are displayed along the domain axis. Numeric value to display for the above series/category. Values are displayed along the range axis.
388
model only.
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
388
properties.
Custom Properties
END TYPE
Controls how the end points are drawn on the area chart. There are three options: Taper: Taper down to zero. Truncate: Truncates at the first and last values. Level : Fill to the edges of the chart level with the first and last data values. Property name: endType Property type: String
RENDER AS PERCENTAGES
Flag that controls whether the renderer displays each item value as a percentage (so that the stacked areas add to 100%). This property is valid for Stacked Renderer. Property name: renderAsPercentages
404
AggreGate Documentation
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
549 .
BAR RENDERER
A classic bar renderer that draws bars for every series/category pair as a separate "bar group".
AggreGate Server
405
STACKED RENDERER
A renderer that "stacks" bars from different series in every category.
BAR 3D RENDERER
A renderer that draws items using bars with a 3D effect.
406
AggreGate Documentation
STACKED 3D RENDERER
A renderer that draws stacked bars with a 3D effect.
AggreGate Server
407
Bar colors for this renderer are defined using special properties. Related properties inherited from the base renderer are ignored.
Dataset
The category bar chart supports Custom Data It has the following Source Data Bindings: Binding Series Category Value Expected Value Type String String Number Description Textual name of the data series. Name of category. Categories are displayed along the domain axis. Numeric value to display for the above series/category. Values are displayed along the
388
model only.
408
AggreGate Documentation
range axis.
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
388
properties.
549 .
Custom Properties
RENDER AS PERCENTAGES
Flag that controls whether the renderer displays each item value as a percentage (so that the stacked bars add to 100%). Example of a stacked bar chart that displays values as percentages:
This property is valid for Stacked Renderer and Stacked 3D Renderer. Property name: renderAsPercentages
X OFFSET
X-offset for the 3D effect. This property is valid for Bar 3D Renderer and Stacked 3D Renderer. Property name: XOffset Property type: Float
Y OFFSET
Y-offset for the 3D effect. This property is valid for Bar 3D Renderer and Stacked 3D Renderer. Property name: YOffset Property type: Float
WALL PAINT
AggreGate Server
Paint
590
409
used to color the "sides" (or "walls") of the plot background area.
This property is valid for Bar 3D Renderer and Stacked 3D Renderer. Property name: wallPaint Property type: Data Table
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
Horizontally-oriented bar chart:
410
AggreGate Documentation
A bar chart with the customized Default Item Label Position. A range marker has been added to the chart to indicate a target range for the data values:
A bar chart with items labels displayed for just one series:
AggreGate Server
411
412
AggreGate Documentation
A stacked bar chart with a horizontal orientation and Render As Percentages enabled. A completely transparent color
AggreGate Server
is used for the middle series, so that it leaves a gap in the chart:
413
A stacked bar chart that uses a Date Axis for the range axis:
414
AggreGate Documentation
AggreGate Server
415
549 .
Dataset
The interval bar chart supports Custom Data It has the following Source Data Bindings: Binding Expected Description
388
model only.
416
AggreGate Documentation
Value Type Series Category Start End String String Number Number Textual name of the data series. Name of category. Categories are displayed along the domain axis. Interval start value for the above series/category. Values are displayed along the range axis. Interval end value for the above series/category.
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
388
properties.
549 .
Custom Properties
None defined.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
Bar chart that displays different intervals along the date X-axis:
AggreGate Server
417
Its renderers are based on Category Line Renderer This is what statistical chart looks like:
549 .
LINE RENDERER
A renderer that draws lines and/or shapes for each data value and then overlays a standard deviation indicator.
418
AggreGate Documentation
BAR RENDERER
A renderer that draws bars for each data value and then overlays a standard deviation indicator.
Dataset
The statistical chart supports Custom Data It has the following Source Data Bindings: Binding Series Category Mean Deviation Expected Value Type String String Number Number Description Textual name of the data series. Name of category. Categories are displayed along the domain axis. Mean value for the above series/category. Values are displayed along the range axis. Standard deviation value for the above series/category.
388
model only.
Common Properties
Width
586
, Height
586
, Bindings
586 ,
Visible
587 ,
Background
587 ,
Border
587
511 .
AggreGate Server
Source Data
388
419
properties. (valid if renderer type is Line Renderer). (valid if renderer type is Bar Renderer).
All properties of a Category Line Renderer All properties of a Category Bar Renderer
Custom Properties
ERROR INDICATOR PAINT
Paint 590 used to display the deviation (error) indicator for each item. If this is null then the item paint is used instead (that is, the error indicator will use the same color as the Line/Shape/Bar Outline for the item). Property name: errorIndicatorPaint
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
A Gantt chart is a type of bar chart that illustrates a project schedule. Gantt charts illustrate the start and finish dates of the individual tasks within a project. The gantt chart is based on Category Plot This is what gantt chart looks like: and Category Bar Renderer
549 .
511
420
AggreGate Documentation
Dataset
The gantt chart supports Custom Data
388
model only.
It has the following Source Data Bindings: Binding Series Description Start Date End Date Percent Complete Expected Value Type String String Date or Number Date or Number Number Description Textual name of the data series. Series are usually used to indicate project names in the multi-project charts. Description of the task. Tasks are displayed along the domain axis. Task start timestamp. Numeric values are converted to dates by treating them as number of milliseconds since the January 1, 1970. Task end timestamp. Task completion percentage.
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
388
properties.
549 .
Custom Properties
COMPLETE PAINT
Paint
590
AggreGate Server
Property name: completePaint Property type: Data Table
421
INCOMPLETE PAINT
Paint
590
used to draw the portion of the task that is not yet completed.
START PERCENT
Start position for the "percentage complete" indicator as a percentage of the width of the task bar (for example, 0.30 is thirty percent). Property name: startPercent Property type: Float
END PERCENT
End position for the "percentage complete" indicator as a percentage of the width of the task bar (for example, 0.30 is thirty percent). Property name: endPercent Property type: Float
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A simple Gantt chart showing actual vs. scheduled progress:
422
AggreGate Documentation
When a "simple" category chart is added as a sub-chart to a mixed category chart, is has the following differences from its "standalone" version: Axes of the sub-chart are added to the axes list of the container chart. The sub-chart has no own axes. Instead, it has references to the parent chart's axes to use for displaying the data. By default, the axes moved from sub-chart to its parent are referenced. The sub-chart has no plot
509 -related
the parent mixed chart has its own set of chart common
AggreGate Server
properties. The sub-chart has no widget component default properties rendered separately.
586 ,
423
Z-ORDER
Z-index of the sub-chart in the parent's plot. Charts with lower order numbers overlap chart's with higher order numbers. Property name: index Property type: Integer
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
511 .
Custom Properties
None defined.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A mixed category chart with line
397
and bar
404
424
AggreGate Documentation
404
397
AggreGate Server
425
When a "simple" category chart is added as a sub-chart to a combined domain category chart, is has the following differences from its "standalone" version: No Domain Axes chart. No Orientation
517 513
514
since the parent combined chart has its own set of chart common properties.
586 ,
426
AggreGate Documentation
WEIGHT
The weight determines how much of the parent chart's area is assigned to this sub-chart. For example, if parent has three sub-charts with weights of 1, 2 and 4, the relative amount of space assigned to each sub-chart is 1/7, 2/7 and 4/7 (where the 7 is the sum of the individual weights). Property name: weight Property type: Integer
Z-ORDER
Sub-charts with higher order numbers are placed closer to the shared axis. Property name: index Property type: Integer
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
property.
514
property.
Custom Properties
ORIENTATION
Chart orientation (Vertical or Horizontal). This orientation is used for all sub-charts. Property name: orientation Property type: String
GAP
The gap between sub-charts. Property name: gap Property type: Float
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A demo showing two sub-charts that share a single domain axis:
AggreGate Server
427
When a "simple" category chart is added as a sub-chart to a combined range category chart, is has the following differences from its "standalone" version: No Range Axes No Orientation
514 517
514
since the parent combined chart has its own set of chart common properties.
586 ,
428
AggreGate Documentation
WEIGHT
The weight determines how much of the parent chart's area is assigned to this sub-chart. For example, if parent has three sub-charts with weights of 1, 2 and 4, the relative amount of space assigned to each sub-chart is 1/7, 2/7 and 4/7 (where the 7 is the sum of the individual weights). Property name: weight Property type: Integer
Z-ORDER
Sub-charts with higher order numbers are placed closer to the shared axis. Property name: index Property type: Integer
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
property.
514
property.
Custom Properties
ORIENTATION
Chart orientation (Vertical or Horizontal). This orientation is used for all sub-charts. Property name: orientation Property type: String
GAP
The gap between sub-charts. Property name: gap Property type: Float
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A demo showing two horizontally oriented sub-charts that share a single range axis:
AggreGate Server
429
3.15.10.4 XY Charts
XY charts display values on a continuous 2D space. Both domain and range axes are analog. All XY charts are based on: XY Plot
521 554
XY Renderer
556 .
430
AggreGate Documentation
LINE RENDERER
A renderer that displays items by drawing a line between each (x, y) point and overlaying a shape at each (x, y) point.
LINE 3D RENDERER
A line renderer that uses a "pseudo-3D" effect to draw line charts.
AggreGate Server
431
SPLINE RENDERER
This renderer connects data points using spline curves. This results in a smooth line passing through all the data points.
STEP RENDERER
This renderer draws items using "stepped" lines to connect each (x, y) point.
432
AggreGate Documentation
Dataset
The XY line chart supports several data models: Custom Data
388 392 393
Event-based Data
Variable-based Data
It has the following Source Data Bindings: Binding Series X Y Expected Value Type String Number Number Description Textual name of the data series. Data series is represented by a single line (or set of shapes) on the chart. Numeric value to display along the domain (X) axis. Numeric value to display along the range (Y) axis.
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
properties.
521 . 556 .
Custom Properties
X OFFSET
X-offset for the 3D effect. This property is valid for Line 3D renderer. Property name: XOffset Property type: Float
Y OFFSET
Y-offset for the 3D effect. This property is valid for Line 3D renderer.
AggreGate Server
Property name: YOffset Property type: Float
433
WALL PAINT
Paint
590
used to color the "sides" (or "walls") of the plot background area.
This property is valid for Line 3D renderer. Property name: wallPaint Property type: Data Table
PRECISION
Number of line segments used to approximate the curve between data points. This property is valid for Spline renderer. Property name: precision Property type: Integer
STEP POINT
Fraction of the domain position between two points on which the step is drawn. The default is 1.0, which means the step is drawn at the domain position of the second point. If the Step Point is 0.5 the step is drawn at half between the two points. This property is valid for Step renderer. Property name: stepPoint Property type: Float
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A line chart with many series. A shape is displayed at each data point to help to differentiate the series:
A line chart where each series is displayed with a different combination of lines and/or shapes:
434
AggreGate Documentation
AggreGate Server
435
532 :
A scatter plot that displays multiple data series. It uses Line renderer with Default Lines Visibility disabled:
436
AggreGate Documentation
and XY Renderer
554 .
AREA RENDERER
A renderer draws each item in an (X, Y) dataset using a polygon that fills the area between the x-axis and the data point. The below example uses Date Axis
495
as an x-axis.
STACKED RENDERER
AggreGate Server
A renderer that fills the area under a series, and stacks each series on top of the other.
437
STEP RENDERER
A renderer that displays data from an (X, Y) Dataset in a step format with the area under the steps filled.
DIFFERENCE RENDERER
A renderer that highlights the difference between the items in two series by filling in the area between the lines for each series. The fill color alternates between a "positive" color (used when series 1 is greater than series 2) and a "negative" color (used when series 1 is less than series 2). The below example uses Date Axis
495
as an x-axis.
438
AggreGate Documentation
Dataset
The XY area chart supports several data models: Custom Data
388 392 393
Event-based Data
Variable-based Data
It has the following Source Data Bindings: Binding Series X Y Expected Value Type String Number Number Description Textual name of the data series. Numeric value to display along the domain (X) axis. Numeric value to display along the range (Y) axis.
AUTO SORT
Flag that controls whether the items in the series are automatically sorted into ascending order by x-value. Property name: autoSort Property type: Boolean
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
properties.
521 . 554 .
Custom Properties
OUTLINE
Flag that controls whether or not outlines are drawn. This property is valid for Area and Step renderers. Property name: outline
AggreGate Server
Property type: Boolean
439
Shapes (only date item shapes are visible, areas not filled; chart is similar to XY Line Chart Example of Area and Shapes mode:
This property is valid for Area renderer. Property name: XYAreaRendererMode Property type: Integer
ROUND X COORDINATES
Flag that controls whether or not the x-coordinates (in drawing space) are rounded. This property is valid for Stacked and Difference renderers. Property name: roundXCoordinates Property type: Boolean
PLOT AREA
Flag that controls whether or not the area beneath the steps is filled. This property is valid for Step renderer. Property name: plotArea Property type: Boolean
SHAPES VISIBLE
Flag that controls whether or not shapes are drawn at each data point. This property is valid for Step renderer. Property name: shapesVisible Property type: Boolean
440
AggreGate Documentation
SHAPES FILLED
Flag that controls whether or not shapes (if visible) are filled. This property is valid for Step renderer. Property name: shapesFilled Property type: Boolean
RANGE BASE
Base value for the renderer. The default value is 0.0. This property is valid for Step renderer. Property name: rangeBase Property type: Float
POSITIVE PAINT
Paint used to fill the area between series 1 and series 2 when the difference is positive. This property is valid for Difference renderer. Property name: positivePaint Property type: Data Table
NEGATIVE PAINT
Paint used to fill the area between series 1 and series 2 when the difference is negative. This property is valid for Difference renderer. Property name: negativePaint Property type: Data Table
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
and XY Renderer
554 .
AggreGate Server
441
SIMPLE RENDERER
A "classic" bar renderer.
495
as an x-axis.
STACKED RENDERER
A renderer for drawing stacked bar charts on an XY Plot. All series must share the same set of x-values to allow values to be stacked.
442
AggreGate Documentation
CLUSTERED RENDERER
This render slightly differs from the Simple Renderer, in that it adjusts the position and width of each of the bars, making the assumption that the bars for all the series should be clustered within the same x-interval. The below example uses Date Axis
495
as an x-axis.
Dataset
The XY bar chart supports several data models: Custom Data
388 392 393
Event-based Data
Variable-based Data
It has the following Source Data Bindings: Binding Series X Expected Value Type String Number Description Textual name of the data series. Data series is represented by a single line (or set of shapes) on the chart. Bar position anchor along the domain (X) axis. It is unused if Bar Alignment Factor is negative. See Bar Alignment Factor 445 for details.
AggreGate Server
443
The lower margin of the bar along the domain (X) axis or a part of bar's width. See Bar Alignment Factor 445 for details. The upper margin of the bar along the domain (X) axis or a part of bar's width. See Bar Alignment Factor 445 for details. The beginning of a bar at the range (Y) axis. Unused if Use Y Interval The end of a bar at the range (Y) axis.
445
is disabled.
AUTO SORT
Flag that controls whether the items in the series are automatically sorted into ascending order by x-value. Property name: autoSort Property type: Boolean
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
properties.
521 . 554 .
Bar Shadows
SHADOWS VISIBLE
Flag that controls whether or not shadows are drawn for the bars. Property name: shadowsVisible Property type: Boolean
SHADOW PAINT
Paint
590
SHADOW X OFFSET
X-offset for the bar shadows. Property name: shadowXOffset Property type: Float
SHADOW Y OFFSET
Y-offset for the bar shadows. Property name: shadowYOffset Property type: Float
Item Labels
Due to the rectangular nature of the bars, the renderer calculates anchor points that are arranged as shown in figure below. Note that the numbers correspond (roughly) to the position of the hours on a clock face.
444
AggreGate Documentation
When an item label is displayed inside a bar, the renderer will calculate if the bar is large enough to contain the text. If not, the renderer will check to see if a "fallback" label position has been specified. If there is a fallback position, the label is displayed there, and if there is no fallback position the label is not displayed at all. Two fallback positions can be specified, one for positive values and one for negative values (this covers the standard case where positive value labels that don't fit within a bar should be displayed above the bar, and negative value labels that don't fit within a bar should be displayed below the bar).
Other Properties
MARGIN
Margin for the renderer. The margin is specified as a percentage of the bar width (for example, 0.10 is ten percent) and is the amount that is trimmed from the bar width before the bar is displayed. Property name: margin Property type: Float
BASE
Base value for the bars. By default, the renderer draws a bar between zero (the base value) and the data value of the item to be displayed. Some specialized bar charts require a non-zero base value.
AggreGate Server
Property name: base Property type: Float
445
USE Y INTERVAL
Flag that controls how the length of the bars is determined. If true, the y-interval from the dataset is used. If false, the y-value from the dataset determines one end of the bar, and the Base property determines the other end of the bar. Property name: useYInterval Property type: Boolean
BAR PAINTER
Bar Painter takes care of the actual drawing of individual bars. It has the following properties: Property Type Name type Type Description
Intege Painter type: Standard or Gradient: r Standard bar painter uses a single Paint
590
Gradient bar painter applies the effect over several ranges to give the bars an interesting look. G1 G2 G3 g1 g2 g3 Float Float Float The division point between the first and second gradient regions (greater than 0.0). The division point between the second and third gradient regions (greater than G1). The division point between the third and fourth gradient regions (greater than G2 and less than 1.0).
LEGEND BAR
Shape
594
Other Properties
RENDER AS PERCENTAGES
Flag that controls whether the renderer displays the values as percentage of the total across all series. Example of chart that renders percent values:
446
AggreGate Documentation
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A bar chart created using range axis of Date type. The chart uses a subtitle to cite the data source:
AggreGate Server
447
A chart that shows varying bar widths. The Bar Alignment Factor is negative, and X coordinates of bar's left and rights sides are based on X Low and X High values from the dataset:
448
AggreGate Documentation
A chart with "floating" bars. The Bar Alignment Factor is negative, and X coordinates of bar's left and rights sides are based on X Low and X High values from the dataset. Use Y Interval is enabled, so bars are drawn from Y Low to Y High dataset values:
A simple histogram with two data series built using an XY bar chart:
AggreGate Server
449
and XY Renderer
554 .
Dataset
The interval chart supports Custom Data
388
model only.
It has the following Source Data Bindings: Binding Series X Y Low Y High Expected Value Type String Number Number Number Description Textual name of the data series. Numeric value to display along the domain (X) axis. Y-interval lower bound. Y-interval upper bound.
AUTO SORT
Flag that controls whether the items in the series are automatically sorted into ascending order by x-value. Property name: autoSort Property type: Boolean
450
AggreGate Documentation
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
properties.
521 . 554 .
Custom Properties
ADDITIONAL ITEM LABEL GENERATOR
An additional item label generator 530 . If this is non-null, the item label generated will be displayed near the lower yvalue at the Negative Item Label Position. Property name: lowItemLabelGenerator
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A simple interval chart with one data series:
556 .
AggreGate Server
451
Dataset
The error chart supports Custom Data
388
model only.
It has the following Source Data Bindings: Binding Series X X Low X High Y Y Low Y High Expected Value Type String Number Number Number Number Number Number Description Textual name of the data series. Numeric value to display along the domain (X) axis. X-error interval lower bound. X-error interval upper bound. Numeric value to display along the range (Y) axis. Y-error interval lower bound. Y-error interval upper bound.
AUTO SORT
Flag that controls whether the items in the series are automatically sorted into ascending order by x-value. Property name: autoSort Property type: Boolean
Common Properties
452
Width
586
AggreGate Documentation
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
properties.
521 . 556 .
Custom Properties
DRAW X-ERROR
Flag that controls whether or not error bars are drawn for the x-values in the dataset. Property name: drawXError Property type: Boolean
DRAW Y-ERROR
Flag that controls whether or not error bars are drawn for the y-values in the dataset. Property name: drawYError Property type: Boolean
CAP LENGTH
Length of the caps at each end of the error bar for each data value. Property name: capLength Property type: Float
ERROR PAINT
Paint
590
used to draw the error bars. If disabled, the renderer will use the series paint.
ERROR STROKE
Stroke
593
used to draw the error bars. If disabled, the renderer will use the series stoke.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
An error chart with Draw X-error disabled and Default Lines Visibility enabled:
AggreGate Server
453
556 .
454
AggreGate Documentation
Dataset
The deviation chart supports Custom Data It has the following Source Data Bindings: Binding Series X Y Y Low Y High Expected Value Type String Number Number Number Number Description Textual name of the data series. Numeric value to display along the domain (X) axis. Numeric value to display along the range (Y) axis. Y-interval lower bound. Y-interval upper bound.
388
model only.
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
properties.
521 . 556 .
Custom Properties
ALPHA
Alpha transparency for the interval shading. Property name: alpha Property type: Float
AggreGate Server
455
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A deviation chart with two data series:
and XY Renderer
554 .
456
AggreGate Documentation
Dataset
The vector chart supports Custom Data
388
model only.
It has the following Source Data Bindings: Binding Series X Y Delta X Delta Y Expected Value Type String Number Number Number Number Description Textual name of the data series. Vector base at the domain (X) axis. Vector base at the range (Y) axis. Length of vector projection to the X axis. Length of vector projection to the Y axis.
AUTO SORT
Flag that controls whether the items in the series are automatically sorted into ascending order by x-value. Property name: autoSort Property type: Boolean
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
AggreGate Server
All Data-related
385
457
properties.
521 . 554 .
Custom Properties
None defined.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A vector chart demo with a large dataset:
and XY Renderer
554 .
458
AggreGate Documentation
Dataset
The bubble chart supports Custom Data
388
model only.
It has the following Source Data Bindings: Binding Series X Y Z Expected Value Type String Number Number Number Description Textual name of the data series. X (domain) coordinate of the bubble center. Y (range) coordinate of the bubble center. Z-value, that may be bubble diameter, its length along the X-axis or its length along the Y-axis. These depends on the Scale Type property.
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
properties.
521 . 554 .
Custom Properties
SCALE TYPE
Method used to determine the size of the bubbles drawn by this renderer: Scale On Both Axes : bubbles are drawn as ellipses where the width and height of the ellipse is determined by the zvalue scaled against both axes; Scale On Domain Axis : bubbles are drawn as circles where the diameter of the circle is determined by the z-value scaled against the domain axis;
AggreGate Server
459
Scale On Range Axis: bubbles are drawn as circles where the diameter of the circle is determined by the z-value scaled against the range axis. Property name: scaleType Property type: Integer
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A simple demo bubble chart with one data series:
A bubble chart with item labels and Scale Type set to Scale On Both Axes:
and XY Renderer
554 .
460
AggreGate Documentation
CANDLESTICK RENDERER
A candlestick renderer draws each item from an OHLC dataset as a box with lines extending from the top and bottom. Candlestick charts are typically used to display financial data. The box represents the open and closing prices, while the lines indicate the high and low prices for a trading period (often one day). See example of candlestick renderer on the above image.
Dataset
AggreGate Server
The interval chart supports Custom Data
388
461
model only.
It has the following Source Data Bindings: Binding Series Date Open High Low Close Expected Value Type String Data Number Number Number Number Description Textual name of the data series. Date Open value for the date. High value for the date. Low value for the date. Close value for the date.
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
properties.
521 . 554 .
CANDLE WIDTH
Width of each candle. If the value is negative, then the renderer will automatically determine a width each time the
462
AggreGate Documentation
chart is redrawn. This property is valid for Candlestick renderer. Property name: candleWidth Property type: Float
Other Properties
UP PAINT
Paint 590 used to fill candles where the closing price is higher than the opening price (that is, where the price has gone up). If this is disabled (null), the renderer will will the candle using the regular series paint. This property is valid for Candlestick renderer. Property name: upPaint Property type: Data Table
DOWN PAINT
Paint 590 used to fill candles where the closing price is lower than the opening price (that is, where the price has gone down). If this is disabled (null), the renderer will will the candle using the regular series paint. This property is valid for Candlestick renderer. Property name: downPaint Property type: Data Table
used to draw the open tick mark for each data value. If this is disabled (null) then the renderer's series paint is
AggreGate Server
used instead. This property is valid for High Low renderer. Property name: openTickPaint Property type: Data Table
463
TICK LENGTH
The length of the open and close tick marks. This property is valid for High Low renderer. Property name: tickLength Property type: Float
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
and XY Renderer
554 .
464
AggreGate Documentation
BLOCK RENDERER
This renderer uses colored rectangular blocks to represent the data items.
SHAPE RENDERER
This renderer uses colored shapes
594
AggreGate Server
465
Dataset
The interval chart supports Custom Data
388
model only.
Binding Series X Y Z
Description Textual name of the data series. Data series is represented by a single line (or set of shapes) on the chart. Block position along the domain (X) axis. Block position along the range (Y) axis. Z-value used to calculate the color of block/shape drawn at (X, Y) point.
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
properties.
521 . 554 .
Custom Properties
PAINT SCALE
Paint scale is used to convert values within a certain range to colors (Paints There are two types of paint scales: Grayscale paint scale specifies shades of gray to represent the values in a range. For values at the lower end of the range, the scale will return dark grey or black, and for values at the upper end of the range, the scale will return light grey or white. It is also possible to specify the alpha transparency for the returned colors. Paint scale properties: Property Type Lower Bound Name type Type Description
590 ).
Intege Scale type: Grayscale or Lookup. r Lower bound of meaningful values for the scale.
lowerBoun Float d
466
AggreGate Documentation
Upper bound of meaningful values for the scale. Transparency value for colors generated by Grayscale scale, from 0 (fully transparent) to 255 (fully opaque). Default paint
590
Table matching values to colors used by Lookup scale. Contains two fields: Value : z-value; Paint: paint
590
Position of the legend within the chart (Top, Bottom, Left, or Right). Horizontal alignment for the legend. Usually used if Position is Top or Bottom. Vertical alignment for the legend. Usually used if Position is Left or Right. Value axis
493
verticalAlignm String ent axis axisLocation axisOffset stripWidth Data Table String Float Float
Location of the axis relative to the legend. Offset between the color strip and the axis. See Rectangle Insets Width of the color strip. Flag that controls whether or not an outline is drawn for the color strip. Paint
590 506 .
stripOutlineVis Boole ible an stripOutlinePai Data nt Table stripOutlineStr Data oke Table backgroundPa Data int Table subdivisionCo unt
used to draw the outline for the color strip (if the outline is visible). used to draw the outline for the color strip (if the outline is visible).
590
Stroke
593
Background paint
paintScaleLegends
AggreGate Server
467
BLOCK WIDTH
Block width in data units (that is, measured against the domain axis). The default value is 1.0. This property is valid for Block renderer. Property name: blockWidth Property type: Float
BLOCK HEIGHT
Block height in data units (that is, measured against the range axis). The default value is 1.0. This property is valid for Block renderer. Property name: blockHeight Property type: Float
BLOCK ANCHOR
Anchor point on the block that will be aligned to the (x, y) location on the plot. Available anchor values are Center, Top, Bottom, Left, Right, Top Left, Top Right, Bottom Left, and Bottom Right. This property is valid for Block renderer. Property name: blockAnchor Property type: String
DRAW OUTLINES
Flag that controls whether or not the renderer draws outlines for the shapes. This property is valid for Shape renderer. Property name: drawOutlines Property type: Boolean
468
AggreGate Documentation
This property is valid for Shape renderer. Property name: guideLineStroke Property type: Data Table
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A block chart using Date range axis:
AggreGate Server
469
When a "simple" XY chart is added as a sub-chart to a mixed XY chart, is has the following differences from its "standalone" version: Axes of the sub-chart are added to the axes list of the container chart. The sub-chart has no own axes. Instead, it has references to the parent chart's axes to use for displaying the data. By default, the axes moved from sub-chart to its parent are referenced. The sub-chart has no plot
509 -related
the parent mixed chart has its own set of chart common
586 ,
470
AggreGate Documentation
Z-ORDER
Z-index of the sub-chart in the parent's plot. Charts with lower order numbers overlap chart's with higher order numbers. Property name: index Property type: Integer
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
Custom Properties
None defined.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A mixed chart with a financial sub-chart
459
395
sub-chart:
429
395
sub-chart:
AggreGate Server
471
429
and bar
440
sub-charts:
459
and bar
440
sub-charts:
472
AggreGate Documentation
397
and bar
404
429
using shape-only rendering (i.e. Default Lines Visible is disabled) and a linear
429
share a
AggreGate Server
473
When a "simple" XY chart is added as a sub-chart to a combined domain XY chart, is has the following differences from its "standalone" version: No Domain Axes No Orientation
528 523
525
since the parent XY chart has its own set of chart common properties.
586 ,
WEIGHT
The weight determines how much of the parent chart's area is assigned to this sub-chart. For example, if parent has three sub-charts with weights of 1, 2 and 4, the relative amount of space assigned to each sub-chart is 1/7, 2/7 and 4/7 (where the 7 is the sum of the individual weights). Property name: weight Property type: Integer
Z-ORDER
Sub-charts with higher order numbers are placed closer to the shared axis. Property name: index Property type: Integer
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
property.
525
property.
474
AggreGate Documentation
Custom Properties
ORIENTATION
Chart orientation (Vertical or Horizontal). This orientation is used for all sub-charts. Property name: orientation Property type: String
GAP
The gap between sub-charts. Property name: gap Property type: Float
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A demo showing two sub-charts sharing a common domain axis:
A demo showing two sub-charts that share a common domain axis. Notice also that the top plot has two range axes and a Text Annotation 534 :
AggreGate Server
475
429
share a
When a "simple" XY chart is added as a sub-chart to a combined range XY chart, is has the following differences from its "standalone" version: No Range Axes No Orientation
524 528
525
since the parent combined chart has its own set of chart common properties.
586 ,
476
AggreGate Documentation
WEIGHT
The weight determines how much of the parent chart's area is assigned to this sub-chart. For example, if parent has three sub-charts with weights of 1, 2 and 4, the relative amount of space assigned to each sub-chart is 1/7, 2/7 and 4/7 (where the 7 is the sum of the individual weights). Property name: weight Property type: Integer
Z-ORDER
Sub-charts with higher order numbers are placed closer to the shared axis. Property name: index Property type: Integer
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
property.
525
property.
Custom Properties
ORIENTATION
Chart orientation (Vertical or Horizontal). This orientation is used for all sub-charts. Property name: orientation Property type: String
GAP
The gap between sub-charts. Property name: gap Property type: Float
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A demo showing two sub-charts that share a common Date range axis:
AggreGate Server
477
A demo showing two sub-charts that share a common Value range axis:
A demo showing three plots that share a common Date range axis:
478
AggreGate Documentation
Dataset
The category line chart supports Custom Data It has the following Source Data Bindings: Binding Series Category Value Expected Value Type String String Number Description Textual name of the data series. Data series is represented by a single-color area (or set of lines) on the chart. Name of category. Each category is represented by a radial line. Numeric value to display for the above series/category. Values are displayed along the radial lines.
388
model only.
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
AggreGate Server
Source Data
388
479
388
properties.
Custom Properties
WEB FILLED
Flag that controls whether the interior of the polygon defined by the data points for each series is filled. Property name: webFilled Property type: Boolean
HEAD PERCENT
Size of the shapes drawn at each data point. This is a percentage of width and height of the plot area. The default value is 0.01 (one percent). Property name: headPercent Property type: Float
START ANGLE
Angle of the first category, in degrees, relative to a radial line extending from the center of the plot horizontally to the right (that is, 3 o'clock on a clock face), in an anti-clockwise direction. The default value is 90.0 which draws the first category at the top of the plot (that is, 12 o'clock). Property name: startAngle Property type: Float
MAX VALUE
Maximum value for display on the axes. Property name: maxValue Property type: Float
DIRECTION
Direction in which the categories are added to the plot: Clockwise or Anticlockwise. The default is Clockwise. Property name: direction Property type: String
INTERIOR GAP
Percentage between 0.0 and 0.40 (forty percent) indicating the amount of whitespace to leave around the plot (some of which is used for the labels). The default value is 0.25. Property name: interiorGap Property type: Float
480
Stroke
593
AggreGate Documentation
used to draw the radial axes lines.
is used to draw the outline of the shape at each data point. It is valid if there is no
LABEL FONT
Font
590
LABEL PAINT
Paint
590
SERIES PAINT
The table defining paints for individual data series. Property Index Series Paint Name index Type Description
AggreGate Server
481
Name index
Type
Description
seriesOutlineStroke
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Additional Examples
A spider chart with three data series:
542 .
482
AggreGate Documentation
Dataset
The category line chart supports Custom Data It has the following Source Data Bindings: Binding Series Theta Radius Expected Value Type String Number Number Description Textual name of the data series. Data series is represented by a single-color line on the chart. Data item angle in degrees. Data item radius (distance from plot center) for the above series/angle.
388
model only.
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
388
properties.
Custom Properties
AXIS
Value axis 493 that provides the value scale for the plot. The axis will extend from the center of the plot towards the right hand side of the chart. Property name: axis Property type: Data Table
Common Events
AggreGate Server
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
483
Angle Gridlines
The "angle gridlines" are the optional lines radiating out from the center of the chart.
Radius Gridlines
The "radius gridlines" are drawn as circles at a regular interval that is controlled by the size of the tick unit on the plot's axis.
484
AggreGate Documentation
radiusGridlinesVisible
Property name:
Property name:
SERIES FILLED
The table defining whether or not each series is drawn as a "filled" polygon: Property Index Series Filled Name index seriesFille d Type Description
Intege Series index. r Boole an Flag indicating whether or not the area "inside" the series should be filled.
Additional Examples
A polar chart with two data series:
AggreGate Server
485
Dataset
The pie chart supports Custom Data
388
model only.
It has the following Source Data Bindings: Binding Series Value Expected Value Type String Number Description Textual name of the data series. Data series is represented by individual pie section. The value for the series, i.e. pie section size. There is no need to normalize the values and make their sum equal to 1 or 100%, this is done automatically by the chart.
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
388
properties.
Custom Properties
486
AggreGate Documentation
3D
Flag that control whether or not the chart is rendered in 3D mode. Example of 3D pie chart:
DEPTH FACTOR
Depth factor specifies the size of the 3D effect as a percentage of the height of the plot area. The default value is 0.12 (twelve percent). This property is valid for 3D mode only. Property name: depthFactor Property type: Float
DARKER SIDES
Flag that controls whether or not the sides of the pie plot are drawn using a darker color. This property is valid for 3D mode only. Property name: darkerSides Property type: Boolean
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
AggreGate Server
487
Dataset
The ring chart supports Custom Data
388
model only.
It has the following Source Data Bindings: Binding Series Value Expected Value Type String Number Description Textual name of the data series. Data series is represented by individual ring section. The value for the series, i.e. ring section size. There is no need to normalize the values and make their sum equal to 1 or 100%, this is done automatically by the chart.
Common Properties
Width
586
, Height
586
, Bindings
586 , 489 .
Visible
587 ,
Background
587 ,
Border
587
388
properties.
Custom Properties
SEPARATORS VISIBLE
Flag that controls whether or not the separators between sections are visible. Property name: separatorsVisible
488
AggreGate Documentation
SEPARATOR STROKE
Stroke
593
Property name:
SEPARATOR PAINT
Paint
590
SECTION DEPTH
Section depth as a percentage of the plot's radius. The default value is 0.20 (twenty percent). Property name: sectionDepth Property type: Float
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597 All relevant chart events
507 . 596 , 597 ,
Mixed Charts
There are two types of mixed charts: Mixed Category Chart Mixed XY Chart
469 422 ,
397
Combined Charts
There are four types of combined charts: Combined Domain Category Chart
425 ,
397
AggreGate Server
Combined Range Category Chart Combined Domain XY Chart Combined Range XY Chart
472 , 427 ,
489
397
475 ,
429
To add new sub-chart to a composite chart in a GUI Builder 827 , drag a chart of proper type from the Component Palette 834 and drop it over the composite chart. A new sub-chart will be added.
Chart Border
A border can be drawn around the outside of a chart, if required. By default, no border is drawn, since in many cases component's default border 587 can be used instead.
Other Properties
PADDING
The padding between the chart border and the chart drawing area. See Rectangle Insets Property name: padding Property type: Data Table
506 .
TITLE
The chart's title
506
SUBTITLES
490
AggreGate Documentation
506 .
LEGENDS
The list of chart's legends
500 .
SUBTITLE IMAGES
The list of chart's subtitle images Property name: imageSubtitles Property type: Data Table
498 .
ANTI-ALIAS
The use of a technique called anti-aliasing can improve the appearance of the chart by "smoothing" the edges of lines and shapes. Using anti-aliasing for drawing operations is usually slower, but the results often look better. Property name: antiAlias Property type: Boolean
3.15.10.7.1 Axis
This section covers basic properties of any chart axis. The base axis features: Axis Label: The axis label typically describes what an axis is measuring (for example, "Sales in US$"). Axis Line: The axis draws a line along the edge of the plot's data area. Tick Marks: small marks at regular intervals to show the scale of values displayed by the axis. Tick Labels : textual descriptions for the tick marks. Note that the category plot 511 and XY plot 521 classes also draw an outline around the data area. The outline is drawn before (under) the axis line(s). The plot outline stroke and paint are described in the Plot Border 510 section.
Axis Properties
Property Visible Label Label Font Label Paint Label Insets Label Angle Axis Line Visible Axis Line Paint Name visible label labelFont labelPaint labelInsets labelAngle axisLineVisible axisLinePaint Type Boole an Description Flag that controls whether or not the axis is visible.
String The axis label typically describes what an axis is measuring (for example, "Sales in US$"). If value is NULL, no label is displayed. Data Table Data Table Data Table Float Boole an Data Table Font Paint
590
used to display the axis label. used to display the axis label. for the axis label.
590
Insets
506
Angle of rotation for the axis label (in degrees). Flag that controls whether or not a line is drawn along the edge of the data area by the axis. Paint
590
AggreGate Server
491
Axis Line Stroke Tick Labels Visible Tick Label Font Tick Label Paint Tick Label Insets Tick Marks Visible Tick Mark Paint
Stroke
593
Flag that controls whether or not the tick labels are visible. Tick label font
590 .
590 .
Blank space around each tick label. See Rectangle Insets Flag that controls whether or not tick marks are visible. Paint
590
506 .
used to draw the tick marks. used to draw the tick marks.
Tick Mark Stroke tickMarkStroke Tick Mark Inside Length Tick Mark Outside Length tickMarkInsideL ength
Stroke
593
Length of the tick mark on the inside of the data area. Length of the tick mark on the outside of the data area. A flag that indicates whether or not minor tick marks are visible for the axis. The number of minor ticks per major tick unit. This is an override field, if the value is > 0 it is used, otherwise the axis refers to the Minor Tick Count in the current Tick Unit. Length of the minor tick mark inside the data area (zero permitted). Length of the minor tick mark outside the data area (zero permitted).
Minor Tick Marks minorTickMarks Boole Visible Visible an Minor Tick Count minorTickCount Integ er Minor Tick Mark Inside Length Minor Tick Mark Outside Length minorTickMarkI nsideLength minorTickMark OutsideLength Float Float
Properties
See Axis
490
Category axis has the following additional properties: Property Type Lower Margin Name type lowerMargin Type Intege r Float Description Axis type: Category Axis or Extended Category Axis. Lower margin for the axis, as a percentage of the total axis length.
492
AggreGate Documentation
The default value is 0.05 (five percent). Upper Margin Category Margin upperMargin categoryMargin Float Float Upper margin for the axis, as a percentage of the total axis length. The default value is 0.05 (five percent). Category margin for the axis. The margin is a percentage of the axis length (for example, 0.20 for a twenty percent margin). The overall margin is distributed over N-1 gaps where N is the number of categories displayed on the axis. Maximum Category Label Lines Maximum Category Label Width Ratio Category Label Position Offset Category Label Positions Category Label Properties maximumCategory Intege LabelLines r By default category labels are displayed on a single line and truncated if necessary. However, multi-line labels are supported. This option specifies the maximum number of lines for displaying category labels. A ratio that is multiplied by the width of one category to determine the maximum label width. Zero (0.0) or negative value deactivates this setting. Offset between the axis and the category label. A tabular property that controls the position, alignment and rotation of the category labels along the axis. See Category Label Positions 492 . A tabular property that controls font, paint and tooltips of individual category labels. See Category Label Properties 493 .
maximumCategory Float LabelWidthRation categoryLabelPositi Intege onOffset r categoryLabelPositi Data ons Table categoryLabelProp erties Data Table
The second attribute is a text anchor, which defines a point on the category label which is aligned with the anchor point on within the category rectangle mentioned previously. This is specified using the Text Block Anchor class. Two additional attributes define a rotation anchor point and a rotation angle. These are applied once the label text has been positioned using the previous two attributes. A width ratio and width ratio type control the maximum width of the category labels.
String Used to determine the point on the axis against which the category label is aligned. This is specified relative to a rectangular area that the Category Axis allocates for the category. String Determines the point on the category label that is aligned with the category anchor. String Point on the category label about which the label is rotated (note that there may be no rotation). Float Angle of the rotation, specified in degrees.
AggreGate Server
493
Width Type
widthType
String Controls whether the maximum width for the labels is relative to the width of the category label rectangle (Category) or the length of the range axis (Range). The last option is useful when labels are rotated so that they are perpendicular to the category axis. Float Maximum category label width ratio, measured as a percentage of either the category label rectangle or the length of the range axis (see the previous setting).
String Category to apply label settings for. Data Table Data Table Font Paint
590
for the specified category's label. for the specified category's label.
590
Extended Category Axis is a subtype of the category axis Additional properties of an extended category axis: Property Sub Labels Sub Label Font Sub Label Paint Name subLabels Type Data Table Description
493
A table of sub-labels, each of them having a Category Key and Label text. Font Paint
590
590
, both the domain and range axes are of Value Axis type by default.
Properties
See Axis
490
494
AggreGate Documentation
Value axis has the following additional properties: Property Type Inverted Vertical Tick Labels Lower Margin Name type inverted verticalTickLa bels lowerMargin Type Integ er Boole an Boole an Float Description Axis type: Number Axis, Date Axis, Period Axis, Logarithmic Axis, or Symbol Axis . Flag that controls whether or not the axis scale is inverted. Flag that controls whether or not the tick labels are rotated by 90 degrees. It is usually set to fit more labels in. Lower margin for the axis, as a percentage of the total axis length. The default value is 0.05 (five percent). Note that the margin is only applied when the axis bounds are automatically calculated. If you set the axis bounds manually then the margins are ignored. Upper Margin upperMargin Float Upper margin for the axis, as a percentage of the total axis length. The default value is 0.05 (five percent). Note that the margin is only applied when the axis bounds are automatically calculated. If you set the axis bounds manually then the margins are ignored. Positive Arrow Visible Negative Arrow Visible Up Arrow Down Arrow Left Arrow Right Arrow Auto Tick Unit Selection Auto Range Fixed Auto Range Auto Range Minimum Size positiveArrow Visible negativeArro wVisible upArrow downArrow leftArrow rightArrow autoTickUnitS election autoRange fixedAutoRan ge Boole an Boole an Data Table Data Table Data Table Data Table Boole an Boole an Float Flag that controls whether or not an arrow is drawn at the positive end of the scale. Flag that controls whether or not an arrow is drawn at the negative end of the scale. Shape Shape Shape Shape
594
used to draw an arrow at the end of an axis pointing upwards. used to draw an arrow at the end of an axis pointing downwards. used to draw an arrow at the end of an axis pointing leftwards. used to draw an arrow at the end of an axis pointing rightwards.
594
594
594
Flag controlling whether or not the tick units are selected automatically. Flag that controls whether or not the axis range is automatically adjusted to fit the available data values. If specified (non-zero), the auto-range is calculated by subtracting this value from the maximum domain value in the dataset. The smallest axis range allowed when it is automatically calculated.
String Time period type: Year, Month, Day, Hour, Minute, Second, or Millisecond. Data Table Padding that controls the minimum space between labels. See Rectangle Insets 506 .
1321
String A date/time formatting pattern Data Table Data Table Boole an Font
590
Paint 590 that is used as the foreground color when displaying labels for each time period. Flag that determines whether or not dividers are drawn between time periods.
AggreGate Server
495
Stroke Paint
593
590
Number Axis is a subtype of the value axis Additional properties of a number axis: Property Name Type Integ er Data Table
493
Description The type for auto-selected tick units: Integer or Float. This option allows to configure tick units if Auto Tick Unit Selection is disabled. There are two fields: Size. A floating point number specifying the distance between two tick marks. Minor Tick Count. An integer count of minor tick marks between two major tick marks.
Tick Unit Format Override Range Type Range Default Auto Range Auto Range Includes Zero
1322
String This setting is used to restrict the axis to display only positive values, or only negative values. Possible values are Full , Positive and Negative. A manually set axis range. Specified as Lower Bound and Upper Bound float values. This setting is available if Auto Range is disabled. An axis range to use if the dataset has no data. Specified as Lower Bound and Upper Bound float values. If Auto Range flag to true (so that the axis range automatically adjusts to fit the current data), you may also want to set this flag to ensure that the axis range always includes zero. Note that some renderers (for example, Bar Renderer) have a flag to control the inclusion of some "base" value in the axis range -since the base value often defaults to zero, you may need to set the flag in the renderer also, to get the required range for the axis.
numberRange Data Table defaultNumbe Data rAutoRange Table autoRangeInc ludesZero Boole an
autoRangeSti ckyZero
Boole an
Flag that controls whether or not the axis margin is truncated if the zero value falls within the margin.
Date Axis is a subtype of the value axis 493 that displays date/time values. It is designed to be flexible about the range of dates/times that it can display -- anything from a few milliseconds to several centuries can be handled. Although the axis displays dates for tick labels, at the lowest level it is still working with floating point numbers obtained from the plot's dataset. The values are interpreted as the number of milliseconds since 1 January 1970. Additional properties of a date axis: Property Tick Unit Name dateTickUnit Type Data Table Description This option allows to configure tick units if Auto Tick Unit Selection is disabled. There are four fields: Unit Type. Year, Month, Day, Hour, Minute, Second, or Millisecond. Multiple . Unit multiple, i.e. the number of units between two adjacent tick marks. Tick Unit dateFormatO String A date/time formatting pattern
1321
496
AggreGate Documentation
Format Override Range Default Auto Range Tick Mark Position Time Zone
verride dateRange defaultDateA utoRange Data Table Data Table A manually set axis range. Specified as Lower Bound and Upper Bound timestamps. This setting is available if Auto Range is disabled. An axis range to use if the dataset has no data. Specified as Lower Bound and Upper Bound timestamps. Tick mark position: Start , Middle or End of the time period. Time zone for the axis, which affects the conversion of date values to string labels.
493
Multiple label bands, where each band is divided up into time periods; Automatic range calculation based on (whole unit) time periods; A user specified time zone.
In the above example, there are three bands. The first band is split into 1 day time periods, the second into 1 month periods, and the third into 1 year periods. Additional properties of a period axis: Property Time Zone Locale Auto Range Time Period Major Tick Time Period Minor Tick Time Period Minor Tick Mark Stroke Minor Tick Mark Paint Name timeZone locale autoRangeTi mePeriodClas s majorTickTim ePeriodClass minorTickTim ePeriodClass minorTickMar kStroke minorTickMar kPaint Type Description
String Time Zone that is used to "peg" time periods to the absolute time line. String Locale used to format timestamps into tick label strings. String Time period used when the axis range is calculated automatically: Year, Month, Day, Hour, Minute, Second, or Millisecond. The axis range will always be a whole number of periods. String Time period used to determine the spacing of the major tick marks: Year, Month, Day, Hour, Minute, Second, or Millisecond. String Time period used to determine the spacing of the minor tick marks: Year, Month, Day, Hour, Minute, Second, or Millisecond. Data Table Data Table Stroke Paint
593
590
AggreGate Server
497
Label Info
labelInfo
Data Table
Logarithmic Axis is a subtype of the value axis display positive values. Additional properties of a logarithmic axis: Property Base Name base Type Float
493
that displays values using a logarithmic scale. This axis can only
Description base for the logarithm calculation Returns the smallest (positive) value that will be displayed on the axis. The default value is 1E-100. This option allows to configure tick units if Auto Tick Unit Selection is disabled. There are two fields: Size. A floating point number specifying the distance between two tick marks. Minor Tick Count. An integer count of minor tick marks between two major tick marks.
Override Format Base Label Power Label Show Base Exponent Format
Boole an
String Logarithm base label. String Logarithm power label. Boole an Flag indicating whether or not to print logarithm base on the labels.
1322 .
Symbol Axis is a subtype of the value axis Additional properties of a symbol axis: Property Symbols Name symbols Type Data Table
493
Description A table with value labels, that has two fields: Value to mark with a label (Integer) Symbol , i.e. text of a label (String)
Flag that controls whether or not grid bands are painted for alternate tick values. Paint Paint
590
used to color alternate bands within the plot area. used to all alternate bands within the plot area.
590
498
AggreGate Documentation
Properties
Property Type Insets Paint Stroke Name type insets paint stroke Type Description
Intege Frame type: Line Border or Block Border. r Data Table Data Table Data Table Available drawing space for the border. See Rectangle Insets Paint
590 506 .
that is used to draw the border. that is used to draw the border.
Stroke
593
506 .
AggreGate Server
499
Border that will be drawn around the title. See Block Frame
498 .
Position of the title within the chart (Top, Left, Bottom, or Right). Horizontal alignment for the title. Usually used if Position is Top or Bottom. Vertical alignment for the title. Usually used if Position is Left or Right.
Properties
Property Name Typ Description e An item label anchor is used by a renderer to calculate a fixed point (the item label anchor point) relative to a data item on a chart. This point becomes a reference point that an item label can be aligned to. There are 25 anchors available. The numbers 1 to 12 are used and roughly correspond to the positions of the hours on a clock face. In addition, positions are defined relative to an "inside" ring and an "outside" ring - see the below image for an illustration. With 12 points on the inside circle, 12 points on the outside circle, plus a "center" anchor point, in all there are 25 possible anchor points. For some renderers (e.g. Bar Renderer), the circular arrangement of anchor points doesn't make sense, so the renderer is free to modify the anchor positions.
Text Anchor
textAnch Stri or ng
A point relative to the item label text which will be aligned with the item label anchor point above. Available anchor values are Center, Center Left, Center Right, Top Center, Top Left, Top Right, Bottom Center, Bottom Left, Bottom Right, Baseline Center, Baseline Left, Baseline Right, Half Ascent Center, Half Ascent Left, Half Ascent Right.
Rotation Anchor
rotation Anchor
Stri ng
Another point somewhere on the item label about which the text will be rotated (if there is a rotation). Available anchor values are Center, Center Left, Center Right, Top Center, Top Left, Top Right, Bottom Center, Bottom Left, Bottom Right, Baseline Center, Baseline Left, Baseline Right, Half Ascent Center, Half Ascent Left, Half Ascent Right.
500
AggreGate Documentation
Angle
angle
3.15.10.7.5 Legend
A legend displays labels for the series in a chart, usually along with a small graphic item that identifies the series (by color and/or style). It is even possible to add more than one legend to a chart. The legend will typically contain one legend item for each series displayed in a chart. The item has a small graphic that identifies the series in the chart, and a label that corresponds to the series name.
Legend Properties
Property Visible Width Height Margins Padding Frame Position Horizontal Alignment Vertical Alignment Background Paint Item Font Item Label Padding Item Paint Legend Item Graphic Anchor Name visible width height margins padding frame position horizontalAlig nment Type Boole an Float Float Data Table Data Table Data Table String String Description Flag that indicates whether or not this legend should be displayed. Preferred width of the legend. Preferred height of the legend. Margin around the outside of the legend's frame. See Rectangle Insets Area of whitespace inside the legend's frame. See Rectangle Insets Border that will be drawn around the legend. See Block Frame
498 . 506 . 506 .
Position of the legend within the chart (Top, Bottom, Left, or Right). Horizontal alignment for the legend. Usually used if Position is Top or Bottom. Vertical alignment for the legend. Usually used if Position is Left or Right. Background paint Font
590 590
verticalAlignm String ent backgroundPa Data int Table itemFont itemLabelPad ding itemPaint legendItemGr aphicAnchor Data Table Data Table Data Table String
Padding for the item labels. See Rectangle Insets Legend item paint
590 .
The location of the item graphic within its rectangle is determined by two attributes, the anchor point and the location. The anchor point is a point on the item graphic that can be aligned with the location point. Available anchor values are Center, Top, Bottom, Left, Right, Top Left, Top Right, Bottom Left, and Bottom Right.
Legend Item Graphic Edge Legend Item Graphic Location Legend Item Graphic Padding
String String
Location of the item graphic relative to its text (Top, Bottom, Left, or Right). Location of item graphic, relative to the bounding box of the legend item. Available location values are Center, Top, Bottom, Left, Right, Top Left, Top Right, Bottom Left, and Bottom Right.
legendItemGr aphicPadding
Data Table
506 .
AggreGate Server
501
Properties
Property Series Key Label Label Font Label Paint Tool Tip Text Shape Visible Shape Shape Filled Fill Paint Shape Outline Visible Outline Paint Outline Stroke Line Visible Line Line Stroke Line Paint Name seriesKey label labelFont labelPaint toolTipText shapeVisible shape shapeFilled fillPaint Type String String Data Table Data Table String Description Key for the series that this legend item represents. Legend item label. Font Paint
590
used to draw the item label. used to draw the item label.
590
Boolean Flag that controls whether or not the legend item shape should be displayed. Data Table Shape
594
Boolean Flag that controls whether or not the legend item shape should be filled. Data Table Paint
590
shapeOutlineVi Boolean Flag that controls whether or not the legend item shape should have its sible outline drawn. outlinePaint outlineStroke lineVisible line lineStroke linePaint Data Table Data Table Paint
590
used to draw the marker outline. used to draw the marker outline.
Stroke
593
Boolean Flag that controls whether or not a line is drawn as part of the legend item graphic. Data Table Data Table Data Table Line, if any, to be drawn for the legend item graphic. See Shape Stroke Paint
593 594 .
590
3.15.10.7.6 Marker
Markers are used to highlight particular values or value ranges against either the domain or range axes. Markers can be displayed with or without labels. The following image below illustrates marker usage:
502
AggreGate Documentation
LABEL POSITION
The image below illustrates how the marker label anchor position is calculated relative to the marker's bounds. One of the nine potential anchors is selected via the Label Anchor property, and the margin between the marker's bounds and the potential anchor points is determined by the Label Offset and Label Offset Type methods. Label Offset Type is Contract:
AggreGate Server
503
Properties
These properties apply to all types of markers. Every specific type of markers has additional properties, at least ones defining its location (e.g. category, value, etc.). Property Name Paint Stroke paint stroke Type Data Table Data Table Data Table Data Table Float String Data Table Data Table String Description Paint
590
Stroke 593 used to draw the marker, if it is drawn as a line. If the marker is a rectangular region, the outline is drawn using Outline Stroke, so this attribute is not used in that case. Paint 590 paint used to draw the marker outline. This field is not used when the marker is drawn as a line. Stroke 593 used to draw the marker outline. This field is not used when the marker is drawn as a line. Alpha transparency that should be used to draw the marker. This is a value in the range 0.0f (completely transparent) to 1.0f (completely opaque). Label text (which may be null). If the label string is null (the default), the marker will be drawn without a label. Paint Paint
590
590
Point on the marker bounds that is used for alignment of the label. This anchor (after being adjusted by the label offsets) determines a fixed point on the chart that the marker label can be aligned to. Available anchor values are Center, Top, Bottom, Left, Right, Top Left, Top Right, Bottom Left, and Bottom Right.
labelText Anchor
String
Point on the label that is aligned to the fixed point on the chart determined by the Label Anchor property. Offset between the marker's bounds and the label anchor points. The default value is (3.0, 3.0, 3.0, 3.0), that is, the anchor points lie on a rectangle three units inside
504
AggreGate Documentation
(or outside) the marker's bounding rectangle. See Rectangle Insets Label Offset Type Type labelOffse String tType type Integer
506 .
Label offset type: No Change , Expand or Contract. This controls how the insets returned by Label Offset are applied to calculate the label anchor position. Marker type: Category 504 , Value 505 , or Interval if only one marker type is applicable.
505 .
Rectangle mode:
Properties
See Marker
501
AggreGate Server
505
Type String
Description Category to mark. Flag that controls whether the marker is drawn as a line or a rectangle.
drawAsLin Boolean e
or an XY
The marker is most often drawn as a line, but in a chart with a 3D-effect the marker will be drawn as a polygon. For this reason, the marker has both Paint and Outline Paint attributes, and Stroke and Outline Stroke attributes. The image showing a chart having several value markers and a pointer annotation:
Properties
See Marker
501
Value markers have the following additional property: Property Name Value value Type Float Description Value to mark.
506
AggreGate Documentation
Properties
See Marker
501
Interval markers have the following additional properties: Property Name Start Value Type Description The lower bound of the interval to be highlighted. The upper bound of the interval to be highlighted.
Properties
Property Top Left Bottom Right Unit Type Name top left bottom right unitType Type Float Float Float Float Description The top value of the insets. The left value of the insets. The bottom value of the insets. The right value of the insets.
3.15.10.7.8 Title
A chart text title or subtitle displays a text string. Long titles automatically wrap to the next line, and you can also specify line breaks by inserting a newline character in the title's text.
Title Properties
Property Name Type Description
AggreGate Server
507
Visible Text Tool Tip Text Font Width Height Margins Padding Frame Position Horizontal Alignment Vertical Alignment Background Paint Paint Text Alignment
visible text toolTipText font width height margins padding frame position horizontalAlig nment
Boole an String String Data Table Float Float Data Table Data Table Data Table String String
Flag that indicates whether or not this title should be displayed. Text for the title. Text that will be displayed as the tool tip for this title. The value can be null, which means that no tool tip will be displayed for the title. Font
590
Preferred width of the title. Preferred height of the title. Margin around the outside of the title's frame. See Rectangle Insets Area of whitespace inside the title's frame. See Rectangle Insets Border that will be drawn around the title. See Block Frame
498 . 506 .
506 .
Position of the title within the chart (Top, Left, Bottom, or Right). Horizontal alignment for the title. Usually used if Position is Top or Bottom. Vertical alignment for the title. Usually used if Position is Left or Right. Paint Paint
590
verticalAlignm String ent backgroundPa Data int Table paint textAlignment Data Table String
used to fill the background area within the title's bounds. used to display the title text.
590
Alignment of the text within the title bounds (Left, Center, or Right). This controls how the text is aligned within the title's bounds, whereas the title's horizontal alignment controls how the title's bounding rectangle is aligned within the drawing space. Flag that controls whether or not the title bounds expand to match the available space.
Boole an
CHART CLICK
This event is fired when a certain chart section (outside of its plot, axes, legend and titles that hava their own click events) is clicked. Event name: chartClick Event fields: this event has all fields of a regular mouse event Field Tooltip Text Area Name toolTipText area Type String Description Contains a tooltip of the clicked section of a chart.
594 598 .
for details.
PLOT CLICK
This event is fired when chart's plot is clicked. Event name: plotClick
508
AggreGate Documentation
598 .
Event fields: this event has all fields of a regular mouse event Field Tooltip Text Area Name toolTipText area Type String Description
for details.
for details.
Index of a dataset the legend item corresponds to. Key of a series the legend item corresponds to.
TITLE CLICK
This event is fired when a chart's title is clicked. Event name: titleClick Event fields: this event has all fields of a regular mouse event Field Tooltip Text Area Name toolTipText area Type String Description Contains a tooltip of the clicked section of a chart.
594 598 .
for details.
AXIS CLICK
This event is fired when a chart's axis is clicked. Event name: axisClick Event fields: this event has all fields of a regular mouse event Field Tooltip Text Area Domain Axis Index Range Axis Index Name toolTipText area domainAxisI ndex rangeAxisIn dex Type String Description Contains a tooltip of the clicked section of a chart.
594 598 .
Data Table A shape of a clicked chart area. See Shape Integer Integer
for details.
Index of the clicked domain axis or null if a range axis was clicked. Index of the clicked range axis or null if a domain axis was clicked.
for details.
AggreGate Server
509
Key
key
String
for details.
Index of the dataset the clicked item belongs to. Dataset key of the clicked row. Dataset key of the clicked column.
XY ITEM CLICK
This event is fired when an XY chart's item is clicked. It is only available for XY charts Event name: xyItemClick Event fields: this event has all fields of a regular mouse event Field Tooltip Text Area Dataset Index Series Item Name toolTipText area Type String Description Contains a tooltip of the clicked section of a chart.
594 598 . 429 .
for details.
Index of the dataset the clicked item belongs to. Index of the series the clicked item belongs to. Index of the clicked item.
Data Table A shape of a clicked chart area. See Shape Integer Integer String Index of the pie the clicked item belongs to. Index of the clicked section. Key of the clicked section.
for details.
510
AggreGate Documentation
OUTLINE VISIBLE
Flag that controls visibility of the plot outline. Property name: outlineVisible Property type: Boolean
OUTLINE PAINT
The paint
590
OUTLINE STROKE
The stroke
593
BACKGROUND PAINT
Paint
590
BACKGROUND ALPHA
Alpha transparency for the plot's background. The range of values permitted is 0.0f (fully transparent) through to 1.0f (fully opaque). Property name: backgroundAlpha Property type: Float
BACKGROUND IMAGE
Background image for the plot. Property name: backgroundImage Property type: Data Block
AggreGate Server
Alpha transparency for drawing the background image. Property name: backgroundImageAlpha
511
NO DATA MESSAGE
A string shown when there is no data to display. Property name: noDataMessage Property type: String
Other Properties
INSETS
The amount of space to leave around the outside of the plot. See Rectangle Insets Property name: insets Property type: Data Table
506 .
FOREGROUND ALPHA
Alpha transparency used to draw items in the plot's foreground. Property name: foregroundAlpha Property type: Float
axes.
axes.
512
AggreGate Documentation
The colors used for the series within the chart are controlled by the plot's renderer. The plot supports panning and zooming along the range axis. This section describes properties of a category plot. See Chart Plot
509
Plot Annotations
Annotations can be added to a plot to highlight data items of interest. The following standard annotation types are available: Line Annotation Text Annotation
517 518 519
Pointer Annotation
ANNOTATIONS
The list of annotations. Property name: annotations Property type: Data Table
Markers
Markers are used to highlight different categories (domain markers) or values (range markers). Each marker may be put on one of two layers:
AggreGate Server
Foreground layer: the marker will be drawn over series data
513
DOMAIN MARKERS
A table containing category markers Property name: domainMarkers Property type: Data Table
504
RANGE MARKERS
A table containing range markers Property name: rangeMarkers Property type: Data Table
501
Axes Properties
A category plot usually has a single domain axis and a single range axis. However, additional axes may be added.
AXIS OFFSET
The axes can be offset slightly from the edges of the plot area, if required. This property controls the offset between the plot area and the axes. See Rectangle Insets 506 . Axis offset usage illustration:
DOMAIN AXES
The table containing chart's domain (category) axes There are four domain axis location options: Top or Left: top side if plot orientation is vertical and left side if plot orientation is horizontal Top or Right: top side if plot orientation is vertical and right side if plot orientation is horizontal Bottom or Left: bottom side if plot orientation is vertical and left side if plot orientation is horizontal Bottom or Right : bottom side if plot orientation is vertical and right side if plot orientation is horizontal Property name: domainAxes Property type: Data Table
491
514
AggreGate Documentation
RANGE AXES
The table containing chart's range (value) axes There are four range axis location options: Top or Left: top side if plot orientation is horizontal and left side if plot orientation is vertical Top or Right: top side if plot orientation is horizontal and right side if plot orientation is vertical Bottom or Left: bottom side if plot orientation is horizontal and left side if plot orientation is vertical Bottom or Right : bottom side if plot orientation is horizontal and right side if plot orientation is vertical Property name: rangeAxes Property type: Data Table
493
used for the zero baseline against the range axis. rangeZeroBaselineStroke
Property name:
used for the zero baseline against the range axis. rangeZeroBaselinePaint
Property name:
Crosshairs
Category plot has support for crosshairs against the primary domain and range axes.
AggreGate Server
515
and Gantt
419
charts only.
Property name:
Property name:
Property name:
516
AggreGate Documentation
rangeCrosshairPaint
Property name:
Gridlines
By default, the Category Plot will display gridlines against the primary range axis, but not the domain axis. Normal Gridlines are drawn every axis' Tick Mark, and Minor Gridlines are drawn on every axis' Minor Tick Mark. Note that the domain and range gridlines are controlled independently.
Property name:
Property name:
AggreGate Server
517
Property name:
Property name:
Other Properties
ORIENTATION
Plot orientation (Vertical or Horizontal). Default is Vertical. Property name: orientation Property type: String
RANGE PANNABLE
Flag that controls whether or not the plot is pannable along the range axis. Property name: rangePannable Property type: Boolean
for the plot, used to override the auto-generated set of legend items if non-empty.
Properties
Property Category 1 Category 2 Value 1 Value 2 Paint Stroke Name category1 category2 value1 value2 paint stroke Type String String Float Float Data Table Data Table Description Category for the start of the line. Category for the end of the line. Value for the start of the line. Value for the end of the line. Paint
590
Stroke
593
518
AggreGate Documentation
Properties
Property Category Category Anchor Font Paint Rotation Anchor Rotation Angle Text Text Anchor Value Name category Type String Description Category key for the annotation. Category anchor point, which helps to determine the position of the alignment point for the annotation Font Paint
590
590
rorationAn String chor rorationAn Float gle text textAncho r value String String Float
Text anchor point about which any rotation is performed. Rotation angle (in degrees). Text displayed by the annotation. Anchor point for the text. This will be aligned to the Category, Value point on the chart. Value that determines the alignment point for the annotation.
AggreGate Server
519
Properties
Property Category Category Anchor Font Paint Rotation Anchor Rotation Angle Text Text Anchor Value Angle Arrow Length Arrow Paint Arrow Stroke Arrow Width Base Radius Name category Type String Description Category key for the annotation. Category anchor point, which helps to determine the position of the alignment point for the annotation Font Paint
590
590
rorationAn String chor rorationAn Float gle text textAncho r value angle String String Float Float
Text anchor point about which any rotation is performed. Rotation angle (in degrees). Text displayed by the annotation. Anchor point for the text. This will be aligned to the Category, Value point on the chart. Value that determines the alignment point for the annotation. Angle of the pointer (in degrees). Length of the arrow head. Paint
590
arrowLeng Float th arrowPain t arrowStro ke arrowWidt h Data Table Data Table Float
Stroke
593
Width of the arrow head. Distance from the anchor point to the base of the arrow. The difference between the Base Radius and the Tip Radius is the overall length of the arrow.
baseRadiu Float s
520
AggreGate Documentation
Label Offset
labelOffse t
Float Float
Offset from the base of the arrow to the label. Distance from the anchor point to the tip of the arrow. Since the tip of the arrow is pointing towards the anchor point, this should be a lower value than the Base Radius.
Properties
Property Label Format Name labelForm at Type String Description Format string that may contain the following tokens: {0} - the series name {1} - the category {2} - the string representation of item value Formatter Type Number Format Percent Format Date Format formatTyp Intege Number Formatter or Date Formatter . e r numberFo rmat percentFo rmat dateForm at String String String Number format Number format
1322
pattern (for Number Formatter only). pattern used for percentage values (for Number Formatter only).
1322
Properties
Property Label Format Name labelForm at Type String Description Format string that may contain the following tokens: {0} - the series name {1} - the category {2} - the string representation of item value Formatter Type Number Format Percent Format Date Format formatTyp Intege Number Formatter or Date Formatter . e r numberFo rmat percentFo rmat dateForm at String String String Number format Number format
1322
pattern (for Number Formatter only). pattern used for percentage values (for Number Formatter only).
1322
AggreGate Server
521
3.15.10.9.2 XY Plot
XY Plot draws a visual representation of (X, Y) value pairs, where the domain axis measures the X-values and the range axis measures the T-values. This plot supports panning and zooming along both axes. XY plot is typically displayed using a vertical orientation, but it is possible to change to a horizontal orientation which can be useful for certain applications.
PLOT LAYOUT
Axes are laid out at the left and bottom of the drawing area. The space allocated for the axes is determined automatically. The following diagram shows how this area is divided:
Determining the dimensions of these regions is an awkward problem. The plot area can be resized arbitrarily, but the vertical axis and horizontal axis sizes are more difficult. Note that the height of the vertical axis is related to the height of the horizontal axis, and, likewise, the width of the vertical axis is related to the width of the horizontal axis. This results in a "chicken and egg" problem, because changing the width of an axis can affect its height (especially if the tick units change with the resize) and changing its height can affect the width (for the same reason).
Quadrants
The XY Plot provides an optional facility to specify a background color for each quadrant in the plot.
QUADRANT ORIGIN
The quadrant origin, in chart data space, specified by X and Y coodrdinates. By default, the origin is (0, 0). Property name: quadrantOrigin Property type: Data Table
QUADRANTS PAINT
Property Quadrant Name quadrant Type Description
Intege Quadrant specification. There are four quadrants: r Negative domain, positive range Positive domain, positive range Negative domain, negative range Positive domain, negative range
Paint
paint
Data Table
Paint
590
522
AggreGate Documentation
Markers
Markers are used to highlight different X-values (domain markers) or Y-values (range markers). Each marker may be put on one of two layers: Foreground layer: the marker will be drawn over series data
DOMAIN MARKERS
A table containing X-value markers Property name: domainMarkers Property type: Data Table
501
RANGE MARKERS
A table containing Y-value markers Property name: rangeMarkers Property type: Data Table
501
Plot Annotations
Annotations can be added to a plot to highlight data items of interest. The following standard annotation types are available: Box Annotation
528 529
Pointer Annotation
534
534 535
ANNOTATIONS
The list of annotations. Property name: annotations Property type: Data Table
Tick Bands
The XY Plot can color alternate bands between the tick marks on the plot's axes. Tick bands example:
AggreGate Server
523
used to fill alternate bands between the tick values on the domain axis. If paint is null, no bands will be filled.
used to fill alternate bands between the tick values on the range axis. If paint is null, no bands will be filled.
Axes Properties
An XY plot usually has a single domain axis and a single range axis. However, additional axes may be added. The plot's axes can appear at the top, bottom, left or right of the plot area. The location for an axis combines two possible options. Option which is actually used depends on the orientation (horizontal or vertical) of the plot. For "vertical" plots (the usual default), the domain axis will appear at the top or bottom of the plot area, and the range axis will appear at the left or right of the plot area. For "horizontal" plots, the domain axis will appear at the left or right of the plot area, and the range axis will appear at the top or bottom of the plot area.
AXIS OFFSET
The axes can be offset slightly from the edges of the plot area, if required. This property controls the offset between the plot area and the axes. See Rectangle Insets 506 . Property name: axisOffset Property type: Data Table
DOMAIN AXES
The table containing chart's domain (X-value) axes There are four domain axis location options: Top or Left: top side if plot orientation is vertical and left side if plot orientation is horizontal Top or Right: top side if plot orientation is vertical and right side if plot orientation is horizontal Bottom or Left: bottom side if plot orientation is vertical and left side if plot orientation is horizontal Bottom or Right : bottom side if plot orientation is vertical and right side if plot orientation is horizontal Property name: domainAxes Property type: Data Table
493
524
AggreGate Documentation
RANGE AXES
The table containing chart's range (Y-value) axes There are four range axis location options: Top or Left: top side if plot orientation is horizontal and left side if plot orientation is vertical Top or Right: top side if plot orientation is horizontal and right side if plot orientation is vertical Bottom or Left: bottom side if plot orientation is horizontal and left side if plot orientation is vertical Bottom or Right : bottom side if plot orientation is horizontal and right side if plot orientation is vertical Property name: rangeAxes Property type: Data Table
493
used for the zero baseline against the domain axis. domainZeroBaselineStroke
Property name:
used for the zero baseline against the domain axis. domainZeroBaselinePaint
Property name:
used for the zero baseline against the range axis. rangeZeroBaselineStroke
Property name:
used for the zero baseline against the range axis. rangeZeroBaselinePaint
Property name:
AggreGate Server
are used to collate the space requirements for all the axes.
525
Crosshairs
Category plot has support for crosshairs against the primary domain and range axes. Crosshairs may be set up by clicking on a chart within a working widget.
Property name:
526
AggreGate Documentation
Property name:
Property name:
Property name:
Gridlines
The XY Plot provides support for drawing gridlines against the primary domain axis and the primary range axis. For each axis, there is a flag that controls whether or not the gridlines are visible. For visible gridlines, you can customize the line style (Stroke) and color (Paint).
Property name:
AggreGate Server
Property type: Data Table
527
Property name:
Property name:
Property name:
Property name:
528
AggreGate Documentation
rangeMinorGridlinePaint
Property name:
Other Properties
ORIENTATION
Plot orientation (Vertical or Horizontal). Default is Vertical. Property name: orientation Property type: String
DOMAIN PANNABLE
A flag that controls whether or not panning is enabled for the domain axis/axes. Property name: domainPannable Property type: Boolean
RANGE PANNABLE
A flag that controls whether or not panning is enabled for the range axis/axes. Property name: rangePannable Property type: Boolean
for the plot, used to override the auto-generated set of legend items if non-empty.
AggreGate Server
529
Properties
Property X Y Width Height Fill Paint Stroke Outline Paint Tool Tip Text Name x y w h fillPaint stroke outlinePai nt Type Float Float Float Float Data Table Data Table Data Table Description Lower x-coordinate of the box. Lower y-coordinate of the box. Width of the box. Height of the box Paint
590
Stroke Paint
593
590
toolTipTex String t
Properties
Property X Y Width Height Image Include In Data Bounds Tool Tip Text Name x y w h image Type Description Float Float Float Float Lower x-coordinate of the box. Lower y-coordinate of the box. Width of the image, in chart data units. Height of the image, in chart data units.
includeInDat Boole Flag indicating whether or not the annotation should contribute to the data range aBounds an for a plot/renderer. toolTipText Strin g The tool tip text for this annotation.
Properties
Property X Y Anchor Image Name x y anchor image Type Description Float Float Strin g Data Lower x-coordinate of the box. Lower y-coordinate of the box. Image anchor, which will be aligned to the (x, y) location on the chart when the image annotation is displayed. The image to display.
530
AggreGate Documentation
Block Tool Tip Text toolTipText Strin g The tool tip text for this annotation.
Properties
Property Format String Name formatString Type String Description Format string that may contain the following tokens: {0} - the series name {1} - the string representation of X-value {2} - the string representation of Y-value X Value Formatter Type X Value Format X Value Formatter Type X Value Format xFormatType Intege Formater to use for X-values: Number Formatter or Date Formatter . r String X-values format pattern: Number format 1322 pattern for Number Formatter, or Date/time format 1321 pattern for Date Formatter.
xFormat yFormatType
Intege Formater to use for T-values: Number Formatter or Date Formatter . r String Y-values format pattern: Number format 1322 pattern for Number Formatter, or Date/time format 1321 pattern for Date Formatter.
yFormat
within a chart.
Properties
AggreGate Server
531
Property X Y Max Width Max Height Legend Anchor Tool Tip Text
Type Description Float Float Float Float Data Table Strin g Strin g X coordinate of the title in the range from 0.0 to 1.0. Y coordinate of the title in the range from 0.0 to 1.0. Maximum width for the annotation (specified as a percentage of the plot width, i. e. 0.05 is 5%). Maximum height for the annotation (specified as a percentage of the plot width, i. e. 0.05 is 5%). Legend
500
to display.
Title anchor, which will be aligned to the (x, y) location on the chart when the annotation is displayed. The tool tip text for this annotation.
Properties
Property X Y Width Height Paint Stroke Tool Tip Text Name x y w h paint stroke Type Float Float Float Float Data Table Data Table Description Lower x-coordinate of the line. Lower y-coordinate of the line. Length of line along the X axis, i.e. X1 - X0. Length of line along the Y axis, i.e. Y1 - Y0. Paint
590
Stroke
593
toolTipTex String t
532
AggreGate Documentation
Properties
Property X Y Text Font Text Anchor Paint Backgrou nd Paint Rotation Anchor Name x y text font textAncho r paint Type Float Float String Data Table String Data Table Description X-value for the annotation. Y-value for the annotation. Text displayed by the annotation. Font
590
Anchor point for the text. This will be aligned to the Category, Value point on the chart. Paint
590
The background paint if the label (or null to disable filling the label background). Text anchor point about which any rotation is performed.
AggreGate Server
533
Rotation Angle Outline Visible Outline Paint Outline Stroke Angle Arrow Length Arrow Paint Arrow Stroke Arrow Width Base Radius Label Offset
rorationAn Float gle outlineVisi ble outlinePai nt outlinePai nt angle Boole an Data Table Data Table Float
Rotation angle (in degrees). Flag that controls the visibility of the label outline. Outline paint
590
Outline stroke
593
Angle of the pointer (in degrees). Length of the arrow head. Paint
590
arrowLeng Float th arrowPain t arrowStro ke arrowWidt h Data Table Data Table Float
Stroke
593
Width of the arrow head. Distance from the anchor point to the base of the arrow. The difference between the Base Radius and the Tip Radius is the overall length of the arrow. Offset from the base of the arrow to the label. Distance from the anchor point to the tip of the arrow. Since the tip of the arrow is pointing towards the anchor point, this should be a lower value than the Base Radius. The tool tip text for this annotation.
toolTipTex String t
Properties
Property Fill Paint Name fillPaint Type Data Table Description Paint
590
534
AggreGate Documentation
Stroke Paint
593
590
The list of (X, Y) points specifying polygon vertices. The tool tip text for this annotation.
toolTipTex String t
Properties
Property Stroke Shape Fill Paint Tool Tip Text Name stroke shape fillPaint Type Data Table Data Table Data Table Description Stroke Shape Paint
593
used to draw the shape outline. to draw. Vertex coordinates are defined in the "data space".
594
590
toolTipTex String t
Properties
Property Name Type Description
AggreGate Server
535
X Y Paint Backgrou nd Paint Outline Paint Text Font Text Anchor Rotation Anchor Rotation Angle Outline Visible Outline Stroke Tool Tip Text
x y paint
X-value for the annotation. Y-value for the annotation. Paint Paint Paint
590
used to draw the text. used to fill the annotation background. used to draw the annotation outline.
backgroun Data dPaint Table outlinePai nt text font textAncho r Data Table String Data Table String
590
590
Anchor point for the text. This will be aligned to the (X, Y) point on the chart. Text anchor point about which any rotation is performed. Rotation angle (in degrees). Flag controlling visibility of the annotation outline. Outline stroke
593
rorationAn String chor rorationAn Float gle outlineVisi ble outlineStr oke Data Table Data Table
toolTipTex String t
within a chart.
Properties
Property X Y Max Width Max Height Title Anchor Tool Tip Text Name x y maxWidth maxHeight title anchor toolTipText Type Description Float Float Float Float Data Table Strin g Strin g X coordinate of the title in the range from 0.0 to 1.0. Y coordinate of the title in the range from 0.0 to 1.0. Maximum width for the annotation (specified as a percentage of the plot width, i. e. 0.05 is 5%). Maximum height for the annotation (specified as a percentage of the plot width, i. e. 0.05 is 5%). Title
506
to display.
Title anchor, which will be aligned to the (x, y) location on the chart when the annotation is displayed. The tool tip text for this annotation.
Properties
536
AggreGate Documentation
Name formatString
Type String
Description Format string that may contain the following tokens: {0} - the series name {1} - the string representation of X-value {2} - the string representation of Y-value
X Value Formatter Type X Value Format Y Value Formatter Type Y Value Format
xFormatType
Intege Formater to use for X-values: Number Formatter or Date Formatter . r String X-values format pattern: Number format 1322 pattern for Number Formatter, or Date/time format 1321 pattern for Date Formatter.
xFormat yFormatType
Intege Formater to use for Y-values: Number Formatter or Date Formatter . r String Y-values format pattern: Number format 1322 pattern for Number Formatter, or Date/time format 1321 pattern for Date Formatter.
yFormat
486 .
General Properties
START ANGLE
Angle (in degrees) at which the first pie section starts. Zero is at 3 o'clock, and as the angle increases it proceeds anticlockwise around the chart (so that 90 degrees, the current default, is at 12 o'clock). Property name: startAngle Property type: Float
DIRECTION
Direction of the sections in the chart: Clockwise (the default) or Anticlockwise. Property name: direction Property type: String
INTERIOR GAP
Gap around the interior of the pie plot (the region where the labels are drawn) as a percentage of the plot width and height. The default value is 0.08 (8%). Property name: interiorGap Property type: Float
CIRCULAR
Flag that controls whether the pie chart is circular or elliptical in shape. Property name: circular Property type: Boolean
AggreGate Server
Property name: ignoreNullValues Property type: Boolean
537
Shadow Effect
The plot will draw a "shadow" effect controlled by several properties:
SHADOW PAINT
Paint
590
used to draw the "shadow" effect. If disabled, no shadow effect will be drawn.
SHADOW X OFFSET
X-offset for the shadow effect. Property name: shadowXOffset Property type: Float
SHADOW Y OFFSET
Y-offset for the shadow effect. Property name: shadowXOffset Property type: Float
1322
538
AggreGate Documentation
Description Flag that enables/disabled item tooltips. Format string that may contain the following tokens: {0} - the series name {1} - the string representation of value {2} - the string representation of value in percents {3} - the sum of all values
String String
1322
1322
Exploded Sections
The Pie Plot supports the display of "exploded" sections, in which a pie section is offset from the center of the chart to highlight it. Here is an example:
To make space for the sections that are offset from the center of the pie chart, the radius of the main pie is reduced, so a pie chart with exploded sections will appear smaller than a pie chart with no exploded sections.
EXPLODED PERCENTS
Table that controls "exploding" of individual pie sections: Property Series Percents Name series Type String Description Name of series to explode. Amount by which a specific section of the pie plot is offset, expressed as a percentage of the radius of the pie.
Section Paints
AggreGate Server
The paint used to fill each section in the pie chart is, by default, auto-populated (auto-assigned).
539
SECTION PAINTS
The table defining paints for individual sections. Property Series Paint Name series paint Type String Data Table Description Series name. Paint
590
Section Outlines
Section outlines are drawn, by default, as a thin grey line around each pie section. The Pie Plot provides options to: Switch off the outlines completely; Change the outlines for all sections by changing the default value; Control the outline for particular pie sections independently.
baseSectionOutlinePaint
540
AggreGate Documentation
baseSectionOutlineStroke
Property name:
sectionOutlineStrokes
Section Labels
LABEL FONT
Font
590
LABEL PAINT
Paint
590
used to draw the outline around the section labels. If disabled, the label boxes will not have an outline drawn.
used to draw outlines around the section labels. If disabled, no outlines will be drawn.
AggreGate Server
Property name: labelOutlineStroke Property type: Data Table
541
used to draw the shadows beneath the section label boxes. If disabled, no shadow is drawn.
LABEL PADDING
Label padding, i.e. the whitespace around the text and inside the outline. See Rectangle Insets Property name: labelPadding Property type: Data Table
506 .
Label Links
With regular (non-simple, see below) section labels, a linking line is drawn to connect the pie section with its corresponding section label. These links have several properties:
used for the lines connecting the pie sections to their corresponding labels.
used for the lines connecting the pie sections to their corresponding labels.
LABEL GAP
Gap between the edge of the pie and the label areas at the left and right side of the pie, as a percentage of the overall plot width. The default value is 0.025 (2.5%). Property name: labelGap Property type: Float
542
AggreGate Documentation
Maximum label width as a percentage of the plot width. The default value is 0.14 (fourteen percent). Property name: maximumLabelWidth Property type: Float
Simple Labels
A "simple" labelling option ensures that the labels are drawn roughly in the center of each pie section. No attempt is made to avoid overlapping labels in the case that several small pie sections are displayed alongside each other, so use this option only for cases where that is not a concern.
SIMPLE LABELS
Flag that controls whether the pie plot shows section labels in the "simple" format. Property name: simpleLabels Property type: Boolean
used to calculate the simple label anchor points relative to the pie plot's bounding rectangle.
Other Properties
MINIMUM ARC ANGLE TO DRAW
Minimum angle for drawing the arc segment for a pie section. Property name: minimumArcAngleToDraw
AggreGate Server
b) Font c) Paint d) Positive item label positions e) Negative item label positions
543
Basic Properties
RENDERER TYPE
Type of renderer to use for the chart. Property name: rendererType
DEFAULT PAINT
The default Paint
590
DEFAULT STROKE
The default Stroke
593
DEFAULT SHAPE
The default Shape
594
544
AggreGate Documentation
590
baseItemLabelFont
The above chart also has a category marker Property name: baseItemLabelPosition
504 .
AggreGate Server
Property type: Data Table
545
500 .
500 .
baseLegendTextFont
500 .
baseLegendTextPaint
Intege Series index. r Boole an Flag indicating whether or not the series is visible.
SERIES PAINTS
The table defining paints for individual data series. Property Name Type Description
546
AggreGate Documentation
index
SERIES STROKES
The table defining strokes for individual data series. Property Index Series Stroke Name index seriesStro ke Type Description
SERIES SHAPES
The table defining shapes for individual data series. Property Index Series Shape Name index seriesSha pe Type Description
AggreGate Server
547
seriesFillP aint
Data Table
Fill paint
590
seriesOutlineStrokes
seriesVisibleInLegend
LEGEND PROPERTIES
548
AggreGate Documentation
The table defining the representation of individual series in the legend. Property Index Shape Text Paint Text Font Property name: Name index shape paint font Type Integ er Data Table Data Table Data Table Description Series index. Shape Paint Font
594
590
used to represent series in the legend. used to represent series in the legend.
590
legendProperties
Boole Item labels visibility flag. an Data Table Data Table Data Table Data Table Font Paint
590
590
499
seriesItemLabelProperties
542 's
properties
Properties
DEFAULT ITEM LABEL GENERATOR
The default Category Item Label Generator series. Property name:
520
used to create item labels when no custom generator is set for the
baseItemLabelGenerator
used to create tool tips when there is no custom generator set for the
baseToolTipGenerator
AggreGate Server
549
seriesItemLabelGenerators
seriesToolTipGenerators
ITEM MARGIN
Item margin as a percentage of the overall length of the category axis (the default is 0.20, or twenty percent). This controls the amount of space that is allocated to the gaps between bars within the same category. Property name: itemMargin Property type: Float
550
AggreGate Documentation
BASE
Base value for the bars. Property name: base Property type: Float
Item Labels
Due to the rectangular nature of the bars, the renderer calculates anchor points that are arranged as shown in figure below. Note that the numbers correspond (roughly) to the position of the hours on a clock face.
AggreGate Server
551
When an item label is displayed inside a bar, the renderer will calculate if the bar is large enough to contain the text. If not, the renderer will check to see if a "fallback" label position has been specified. If there is a fallback position, the label is displayed there, and if there is no fallback position the label is not displayed at all. Two fallback positions can be specified, one for positive values and one for negative values (this covers the standard case where positive value labels that don't fit within a bar should be displayed above the bar, and negative value labels that don't fit within a bar should be displayed below the bar).
Bar Shadows
SHADOWS VISIBLE
Flag that controls whether or not shadows are drawn for the bars. Property name: shadowsVisible Property type: Boolean
SHADOW PAINT
Paint
590
SHADOW X OFFSET
X-offset for the bar shadows. Property name: shadowXOffset Property type: Float
552
AggreGate Documentation
SHADOW Y OFFSET
Y-offset for the bar shadows. Property name: shadowYOffset Property type: Float
Other Properties
BAR PAINTER
Bar Painter takes care of the actual drawing of individual bars. It has the following properties: Property Type Name type Type Description
Intege Painter type: Standard or Gradient: r Standard bar painter uses a single Paint
590
Gradient bar painter applies the effect over several ranges to give the bars an interesting look. G1 G2 G3 g1 g2 g3 Float Float Float The division point between the first and second gradient regions (greater than 0.0). The division point between the second and third gradient regions (greater than G1). The division point between the third and fourth gradient regions (greater than G2 and less than 1.0).
Properties
SERIES LINES VISIBLE
The table defining item-to-item line visibility for individual data series. Property Index Series Lines Visible Name index seriesLine sVisible Type Description
Intege Series index. r Boole an Flag controlling visibility of item-to-item lines for the series.
Property name:
seriesLinesVisible
AggreGate Server
Property type: Data Table
553
Intege Series index. r Boole an Flag controlling visibility of item shapes for the series.
Property name:
seriesShapesVisible
Intege Series index. r Boole an Flag controlling filling of item shapes for the series.
Property name:
seriesShapesFilled
DRAW OUTLINES
Flag that controls whether or not outlines are drawn around item shapes. Property name: drawOutlines Property type: Boolean
554
AggreGate Documentation
3.15.10.10.2 XY Renderer
XY Renderer is a base renderer for data items on an XY Plot own properties.
521 .
542 's
Properties
BASE ITEM LABEL GENERATOR
The default XY Item Label Generator Property name:
530
used to create item labels when no custom generator is set for the series.
baseItemLabelGenerator
used to create tool tips when there is no custom generator set for the series.
baseToolTipGenerator
AggreGate Server
555
seriesItemLa belGenerator
Data Table
520
seriesItemLabelGenerators
seriesToolTipGenerators
RENDERER ANNOTATIONS
Renderer annotations have two differences from plot annotations
522 :
1. It's possible to specify a Layer for every annotation, making it appear under of over the data. 2. When an XY chart is added as a subchart to a Mixed XY Chart 469 , plot's annotations are defined within a parent chart and bind to its primary axes, while sub-chart's renderer annotations are bind to the axes used by a sub-chart. Render annotation properties: Property Annotatio n Name Type Description Annotation type and properties table. The following standard annotation types are available: Box Annotation
528 529
Pointer Annotation Polygon Annotation Shape Annotation Text Annotation Title Annotation Layer layer String
534
534 535
Property name:
rendererAnnotations
556
AggreGate Documentation
Properties
SERIES LINES VISIBLE
The table defining item-to-item line visibility for individual data series. Property Index Series Lines Visible Name index seriesLine sVisible Type Description
Intege Series index. r Boole an Flag controlling visibility of item-to-item lines for the series.
Property name:
seriesLinesVisible
Intege Series index. r Boole an Flag controlling visibility of item shapes for the series.
Property name:
seriesShapesVisible
Intege Series index. r Boole an Flag controlling filling of item shapes for the series.
Property name:
seriesShapesFilled
AggreGate Server
Property name: baseShapesVisible
557
LEGEND LINE
This renderer allows a simple customization of the legend display where you can specify the shape but any shape is permitted) that will represent each series in the legend. Property name: legendLine Property type: Data Table
594
(typically a line,
DRAW OUTLINES
Flag that controls whether or not outlines are drawn around item shapes. Property name: drawOutlines Property type: Boolean
3.15.11 Gauges
Gauges ensure easily readable visualization of numeric values. The following gauge types are supported: Simple Gauge
558
563
558
AggreGate Documentation
Radial Bargraph Gauge Arc Gauge Half-Round Gauge Quarter-Round Gauge Linear Gauge Linear Bargraph Gauge Counter Gauge
Common Properties
Width
586
, Height
586
, Bindings
586 ,
Enabled
586 ,
Visible
587 ,
Border
587 ,
Cursor
587 ,
Popup Menu
588
Custom Properties
DATA VALUES (Default Property
586 ) 586 .
A list of data values that will be indicated by the gauge. This is an indexed property Property name: datasets Property type: Data Table
BACKGROUND
Gauge background (may be a solid color, linear/radial gradient or texture). Fields of gauge background: Field Visible Paint Type Boolean Data Table Description Flag that determines whether or not the background is drawn. Paint
590
AggreGate Server
559
FRAME
Properties of Circle-type frame. Fields of gauge frame: Field Visible Background Paint Foreground Paint Radius Stroke Type Boolean Data Table Data Table Float Data Table Description Flag that determines whether or not the frame is drawn. Paint 590 used to fill the space between the double lines around the outer edge of the frame circle. Paint
590
used to draw the double lines around the outside of the gauge.
VIEW
The dimensions of the dial plot are calculated relative to a framing rectangle, but in some cases it is required only a subset of the dial to be presented in the plot area. The View parameter allows it by setting the viewing rectangle relative to the plots framing rectangle. Fields of view: Field X Y Width Height Type Float Float Float Float Description The relative position of the viewing rectangles x-coordinate with reference to the framing rectangle. The value can be in the range 0.0 to 1.0. The relative position of the viewing rectangles y-coordinate with reference to the framing rectangle. The value can be in the range 0.0 to 1.0. The relative width of the viewing rectangle with reference to the framing rectangle. The value can be in the range 0.0 to 1.0. The relative height of the viewing rectangle with reference to the framing rectangle. The value can be in the range 0.0 to 1.0.
CAP
Gauge cap. This is the circle in the middle of the gauge (to which the needles connect). Fields of gauge cap: Field Visible Fill Paint Outline Paint Outline Stroke Radius Type Boolean Data Table Data Table Data Table Float Description Flag that determines whether or not the cap is drawn. Paint Paint
590 590
used to fill the cap. used to draw the cap outline. used to draw the caps outline.
Stroke
593
Radius for the cap, as a percentage of the size of the gauges framing rectangle.
SCALES
A table of gauge scales and their associations with Data Values defines which data value will be indicated on the scale.
558 .
560
AggreGate Documentation
The scale can display major and minor tick marks at user-specified intervals, and numerical labels for the major tick marks. To control the arc through which the scale is drawn on the gauge, you can specify the starting angle and the extent (in degrees). Fields of the scales table: Field Data Value Index Scale Type Integer Data Table Description Index of the data value indicated on the scale. Scale properties.
Fields of gauge scale: Field Visible Lower Bound Upper Bound Start Angle Extent Tick Radius Description Flag that determines whether or not the scale is drawn. Lower bound for the scale. Upper bound for the scale. Angle (in degrees) for the starting point of the scale. Extent (in degrees) for the scale. The tick radius determines how far out on the gauge the tick marks are drawn (typically they will appear near the outer edge of the gauge, but for a gauge that shows more than one scale you might want to show a scale closer to the center). The tick radius defines the reference point for the major and minor tick marks, as well as the labels for the major tick marks. It is specified as a percentage of the gauges framing rectangle. Interval between major tick marks. Length of the major tick marks, expressed as an amount to be subtracted from the tick radius. Paint
590
Major Tick Increment Major Tick Length Major Tick Paint Major Tick Stroke Minor Tick Count Minor Tick Length Minor Tick Paint Minor Tick Stroke Tick Label Font Tick Label Formatter Tick Label Offset Tick Label Paint Tick Labels Visible First Tick Label Visible
used to draw the major tick marks. used to draw the major tick marks.
Stroke
593
Number of minor tick marks to display between each pair of major tick marks. Length of minor tick marks, as a radius specified as a percentage of the gauges framing rectangle. Paint
590
used to draw the minor tick marks. used to draw the minor tick marks.
Stroke Font
590
593
Number formatter 1322 used to convert the tick label values to strings. The anchor point for each label is determined using the tick radius adjusted by an offset value. Once the anchor point is determined, the value label is centered on the anchor point. Paint
590
Flag that controls whether or not the tick labels are visible. Flag that controls whether or not the first tick label is visible.
RANGES
Gauge ranges. Every range is painted as a color arc. It is used to highlight a range of values, e.g. normal, high and extreme. The range is primarily defined by its lower and upper bounds. The range highlights are drawn at a specified radius within the gauge. Fields of gauge range:
AggreGate Server
561
Field Visible Scale Index Lower Bound Upper Bound Inner Radius Outer Radius Paint
Description Flag that determines whether or not the range is drawn. Range is measured relatively to a scale with specific index. Lower bound for the range, in data units. Upper bound for the range, in data units. Radius for the inner highlight of the range, as a percentage of the size of the gauges framing rectangle. Radius for the outer highlight of the range, as a percentage of the size of the gauges framing rectangle. Paint
590
NORMAL POINTERS
A list of normal pointers, drawn as long triangular shapes. Pointers are used for indicating the current value on the gauge. Fields of normal pointer: Field Data Value Index Visible Fill Paint Outline Paint Radius Width Radius Type Integer Boolean Data Table Data Table Float Float Description Index of data value
558
Flag that determines whether or not the pointer is drawn. Paint Paint
590 590
used to fill the pointer. used to draw the outline of the pointer.
Length of the pointer, as a percentage of the size of the gauges framing rectangle. The width of the base of the pointer is specified as a radius, in percentage terms relative to the size of the gauges framing rectangle.
PIN POINTERS
A list of pin pointers. A pin pointer that is drawn as a thin straight line. Pointers are used for indicating the current value on the gauge. Fields of pin pointer: Field Data Value Index Visible Paint Radius Stroke Type Integer Boolean Data Table Float Data Table Description Index of data value
558
Length of the pointer, as a percentage of the size of the gauges framing rectangle. Stroke
593
VALUE INDICATORS
562
AggreGate Documentation
558 .
A list of value indicators showing current data values Fields of value indicator: Field Data Value Index Visible Angle Radius Font Frame Anchor Type Integer Boolean Float Float Data Table String Description
558
Flag that determines whether or not the indicator is drawn. The anchor point for positioning the indicator is specified in terms of an angle and a radius. This property is the angle, in degrees, for calculating the anchor point. Radius, relative to the gauges framing rectangle. Font
590
The value indicator is displayed as a text item in a frame. The frame anchor specifies the point on this frame that will be aligned to the anchor point (which is calculated from the angle and radius). Insets (top, left, bottom, right) which determine the white-space around the indicator value. Number formatter 1322 used to format the value. Paint
590
Insets Number Format Outline Paint Outline Stroke Paint Background Paint Template Value
Data Table String Data Table Data Table Data Table Data Table Float
used to draw the outline around the indicator. used to draw the outline around the indicator.
593
590 590
used to display the indicator value. used to fill the background of the indicator.
To ensure that the value indicator has a fixed width regardless of the current value in the dataset, a template value is used to calculate the dimensions of the indicator. This template value will be formatted using the current number formatter, then the dimensions of the string will be used to determine the dimensions of the value indicator. The value anchor determines the point to which the value text will be aligned. Point on the text that is aligned to the value anchor.
String String
TEXT ANNOTATIONS
A list of text annotations. Text annotation is a text string displayed at an arbitrary location on a gauge. Fields of text annotation: Field Label Visible Angle Radius Anchor Paint Font Type String Boolean Float Float String Data Table Data Table Description Text displayed by the annotation. Flag that determines whether or not the annotation is drawn. The anchor point for the text label is defined by an angle and a radius. This property is the angle (in degrees) that determines the text anchor point. Radius used to determine text anchor point, as a percentage relative to the gauges framing rectangle. Anchor specifies how text is aligned to its anchor point. Paint Font
590 590
AggreGate Server
563
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Common Properties
Width
586
, Height
586
, Bindings
586 ,
Enabled
586 ,
Visible
587 ,
Border
587 ,
Cursor
587 ,
Popup Menu
588
Custom Properties
DATA VALUES (Default Property
586 ) 586 .
A list of data values that will be indicated by the gauge. This is an indexed property Property name: datasets Property type: Data Table
BACKGROUND
Gauge background (may be a solid color, linear/radial gradient or texture). Fields of gauge background: Field Visible Paint Type Boolean Data Table Description Flag that determines whether or not the background is drawn. Paint
590
FRAME
Fields of gauge frame:
564
AggreGate Documentation
Field Visible Foreground Paint Start Angle Extent Inner Radius Outer Radius Stroke
Type Boolean Data Table Float Float Float Float Data Table
Description Flag that determines whether or not the frame is drawn. Paint
590
used to draw the double lines around the outside of the gauge.
Arc start angle, in degrees. Arc extent angle, in degrees. Arc inner radius, expressed as a percentage relative to the framing rectangle. Arc outer radius, expressed as a percentage relative to the framing rectangle. Stroke
593
VIEW
The dimensions of the dial plot are calculated relative to a framing rectangle, but in some cases it is required only a subset of the dial to be presented in the plot area. The View parameter allows it by setting the viewing rectangle relative to the plots framing rectangle. Fields of view: Field X Y Width Height Type Float Float Float Float Description The relative position of the viewing rectangles x-coordinate with reference to the framing rectangle. The value can be in the range 0.0 to 1.0. The relative position of the viewing rectangles y-coordinate with reference to the framing rectangle. The value can be in the range 0.0 to 1.0. The relative width of the viewing rectangle with reference to the framing rectangle. The value can be in the range 0.0 to 1.0. The relative height of the viewing rectangle with reference to the framing rectangle. The value can be in the range 0.0 to 1.0.
CAP
Gauge cap. This is the circle in the middle of the gauge (to which the needles connect). Fields of gauge cap: Field Visible Fill Paint Outline Paint Outline Stroke Radius Type Boolean Data Table Data Table Data Table Float Description Flag that determines whether or not the cap is drawn. Paint Paint
590 590
used to fill the cap. used to draw the cap outline. used to draw the caps outline.
Stroke
593
Radius for the cap, as a percentage of the size of the gauges framing rectangle.
SCALES
A table of gauge scales and their associations with Data Values defines which data value will be indicated on the scale.
558 .
The scale can display major and minor tick marks at user-specified intervals, and numerical labels for the major tick marks. To control the arc through which the scale is drawn on the gauge, you can specify the starting angle and the extent (in degrees).
AggreGate Server
Fields of the scales table: Field Data Value Index Scale Type Integer Data Table Description Index of the data value indicated on the scale. Scale properties.
565
Fields of gauge scale: Field Visible Lower Bound Upper Bound Start Angle Extent Tick Radius Description Flag that determines whether or not the scale is drawn. Lower bound for the scale. Upper bound for the scale. Angle (in degrees) for the starting point of the scale. Extent (in degrees) for the scale. The tick radius determines how far out on the gauge the tick marks are drawn (typically they will appear near the outer edge of the gauge, but for a gauge that shows more than one scale you might want to show a scale closer to the center). The tick radius defines the reference point for the major and minor tick marks, as well as the labels for the major tick marks. It is specified as a percentage of the gauges framing rectangle. Interval between major tick marks. Length of the major tick marks, expressed as an amount to be subtracted from the tick radius. Paint
590
Major Tick Increment Major Tick Length Major Tick Paint Major Tick Stroke Minor Tick Count Minor Tick Length Minor Tick Paint Minor Tick Stroke Tick Label Font Tick Label Formatter Tick Label Offset Tick Label Paint Tick Labels Visible First Tick Label Visible
used to draw the major tick marks. used to draw the major tick marks.
Stroke
593
Number of minor tick marks to display between each pair of major tick marks. Length of minor tick marks, as a radius specified as a percentage of the gauges framing rectangle. Paint
590
used to draw the minor tick marks. used to draw the minor tick marks.
Stroke Font
590
593
Number formatter 1322 used to convert the tick label values to strings. The anchor point for each label is determined using the tick radius adjusted by an offset value. Once the anchor point is determined, the value label is centered on the anchor point. Paint
590
Flag that controls whether or not the tick labels are visible. Flag that controls whether or not the first tick label is visible.
RANGES
Gauge ranges. Every range is painted as a color arc. It is used to highlight a range of values, e.g. normal, high and extreme. The range is primarily defined by its lower and upper bounds. The range highlights are drawn at a specified radius within the gauge. Fields of gauge range: Field Visible Type Boolean Description Flag that determines whether or not the range is drawn.
566
AggreGate Documentation
Scale Index Lower Bound Upper Bound Inner Radius Outer Radius Paint
Range is measured relatively to a scale with specific index. Lower bound for the range, in data units. Upper bound for the range, in data units. Radius for the inner highlight of the range, as a percentage of the size of the gauges framing rectangle. Radius for the outer highlight of the range, as a percentage of the size of the gauges framing rectangle. Paint
590
NORMAL POINTERS
A list of normal pointers, drawn as long triangular shapes. Pointers are used for indicating the current value on the gauge. Fields of normal pointer: Field Data Value Index Visible Fill Paint Outline Paint Radius Width Radius Type Integer Boolean Data Table Data Table Float Float Description Index of data value
558
Flag that determines whether or not the pointer is drawn. Paint Paint
590 590
used to fill the pointer. used to draw the outline of the pointer.
Length of the pointer, as a percentage of the size of the gauges framing rectangle. The width of the base of the pointer is specified as a radius, in percentage terms relative to the size of the gauges framing rectangle.
PIN POINTERS
A list of pin pointers. A pin pointer that is drawn as a thin straight line. Pointers are used for indicating the current value on the gauge. Fields of pin pointer: Field Data Value Index Visible Paint Radius Stroke Type Integer Boolean Data Table Float Data Table Description Index of data value
558
Length of the pointer, as a percentage of the size of the gauges framing rectangle. Stroke
593
VALUE INDICATORS
A list of value indicators showing current data values Fields of value indicator:
558 .
AggreGate Server
567
Field Data Value Index Visible Angle Radius Font Frame Anchor
Flag that determines whether or not the indicator is drawn. The anchor point for positioning the indicator is specified in terms of an angle and a radius. This property is the angle, in degrees, for calculating the anchor point. Radius, relative to the gauges framing rectangle. Font
590
The value indicator is displayed as a text item in a frame. The frame anchor specifies the point on this frame that will be aligned to the anchor point (which is calculated from the angle and radius). Insets (top, left, bottom, right) which determine the white-space around the indicator value. Number formatter 1322 used to format the value. Paint
590
Insets Number Format Outline Paint Outline Stroke Paint Background Paint Template Value
Data Table String Data Table Data Table Data Table Data Table Float
used to draw the outline around the indicator. used to draw the outline around the indicator.
593
590 590
used to display the indicator value. used to fill the background of the indicator.
To ensure that the value indicator has a fixed width regardless of the current value in the dataset, a template value is used to calculate the dimensions of the indicator. This template value will be formatted using the current number formatter, then the dimensions of the string will be used to determine the dimensions of the value indicator. The value anchor determines the point to which the value text will be aligned. Point on the text that is aligned to the value anchor.
String String
TEXT ANNOTATIONS
A list of text annotations. Text annotation is a text string displayed at an arbitrary location on a gauge. Fields of text annotation: Field Label Visible Angle Radius Anchor Paint Font Type String Boolean Float Float String Data Table Data Table Description Text displayed by the annotation. Flag that determines whether or not the annotation is drawn. The anchor point for the text label is defined by an angle and a radius. This property is the angle (in degrees) that determines the text anchor point. Radius used to determine text anchor point, as a percentage relative to the gauges framing rectangle. Anchor specifies how text is aligned to its anchor point. Paint Font
590 590
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed
596 , 597 ,
568
597
AggreGate Documentation
597 ,
, Focus Gained
Focus Lost
597
Common Properties
Width
586
, Height
586
, Bindings
586 , 573 .
Visible
587 ,
Border
587 ,
Cursor
587 ,
Popup Menu
588
584 .
Custom Properties
None defined.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
AggreGate Server
569
Common Properties
Width
586
, Height
586
, Bindings
586 , 573 .
Visible
587 ,
Border
587 ,
Cursor
587 ,
Popup Menu
588
584 .
Custom Properties
BAR GRAPH COLOR
Color or the bar graph (one of the pre-defined values). Property name: barGraphColor Property type: Color
PEAK VALUE
The peak value of the gauge. Used in the bargraph gauges to visualize the last displayed value. Property name: peakValue Property type: Double
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Common Properties
570
Width
586
AggreGate Documentation
, Height
586
, Bindings
586 , 573 .
Visible
587 ,
Border
587 ,
Cursor
587 ,
Popup Menu
588
584 .
Custom Properties
None defined.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Common Properties
Width
586
, Height
586
, Bindings
586 , 573 .
Visible
587 ,
Border
587 ,
Cursor
587 ,
Popup Menu
588
584 .
Custom Properties
None defined.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
AggreGate Server
571
Common Properties
Width
586
, Height
586
, Bindings
586 , 573 .
Visible
587 ,
Border
587 ,
Cursor
587 ,
Popup Menu
588
584 .
Custom Properties
None defined.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
572
AggreGate Documentation
Common Properties
Width
586
, Height
586
, Bindings
586 , 573 .
Visible
587 ,
Border
587 ,
Cursor
587 ,
Popup Menu
588
Custom Properties
None defined.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Common Properties
Width
586
, Height
586
, Bindings
586 , 573 .
Visible
587 ,
Border
587 ,
Cursor
587 ,
Popup Menu
588
Custom Properties
None defined.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
AggreGate Server
573
Common Properties
Width
586
, Height
586
, Bindings
586 , 573 .
Visible
587 ,
Border
587 ,
Cursor
587 ,
Popup Menu
588
584 .
Custom Properties
None defined.
Common Events
Hidden 595 , Shown 595 , Moved 596 , Resized 596 , Mouse Clicked 596 , Mouse Pressed 596 , Mouse Released Entered 596 , Mouse Exited 596 , Mouse Moved 596 , Mouse Wheel Moved 597 , Key Typed 597 , Key Pressed 597 , Focus Gained 597 , Focus Lost 597
596 , 597 ,
Basic Properties
BACKGROUND VISIBLE
Defines whether the background image is visible and will be painted. Property name: backgroundVisible Property type: Boolean
BACKGROUND COLOR
The background color of the gauge (one of the pre-defined values). Property name: backgroundColor Property type: String
CUSTOM BACKGROUND
574
AggreGate Documentation
590 .
FOREGROUND VISIBLE
Enables/disables the visibility of the glass effect foreground image. If enabled the foreground image will be painted. Property name: foregroundVisible Property type: Boolean
ORIENTATION
The orientation of the gauge. Property name: orientation Property type: String
VALUE COUPLED
Enables/disables automatic setting of gauge's LCD value when gauge primary value is changed. Property name: valueCouples Property type: Boolean
TIME TO VALUE
The time in milliseconds that the pointer/bar/led needs to move from the minimum value of the gauge to the maximum of the gauge in autoreturn to zero mode. The minimum time is 250 ms and the maximum time is 5000 ms. Property name: rtzTimeToValue Property type: Long
AggreGate Server
Property name: maxMeasuredValueVisible
575
VALUE
Value to display on the gauge. Same value will be displayed in the gauge's LCD if Value Coupling option is enabled. Property name: value Property type: Double
MAX VALUE
Sets the maximum value of the measurement range of this gauge. This value defines the maximum value the gauge could display. Property name: maxValue Property type: Double
MIN VALUE
Sets the minimum value of the measurement range of this gauge. This value defines the minimum value the gauge could display. Property name: minValue Property type: Double
Frame Properties
This section describes properties of gauge frame.
FRAME VISIBLE
Enables/disables the visibility of the frame. Property name: frameVisible Property type: Boolean
FRAME DESIGN
The frame design of the gauge (one of the pre-defined values). The frame design is some kind of a color scheme for the frame of the component. Property name: frameDesign Property type: String
FRAME EFFECT
The pseudo 3D effect of the frame. Property name: frameEffect Property type: String
576
AggreGate Documentation
590
customFrameDesign
Glow Properties
This section describes properties of gauge glow effect.
GLOW VISIBLE
Enables/disables the glow indicator. Property name: glowVisible Property type: Boolean
GLOW PULSATING
Enables/disables the pulsating of the glow effect. Property name: glowPulsating Property type: Boolean
GLOWING
Enables/disables glowing of the glow indicator. Property name: glowing Property type: Boolean
GLOW COLOR
The color that will be used for the glow indicator. Property name: glowColor Property type: Color
Led Properties
This section describes properties of gauge LEDs. Each gauge may have up to two LEDs: a threshold LED and a usercontrolled LED.
LED VISIBLE
Enables/disables visibility of the threshold LED (one of the pre-defined values). Property name: ledVisible Property type: Boolean
LED COLOR
The color of the threshold LED. Property name: ledColor Property type: String
USER LED ON
Switches the user LED on or off. Property name: userLedOn
AggreGate Server
Property type: Boolean
577
LED POSITION
The position of the gauge threshold LED defined as (X, Y) values. The X and Y should be in range 0...1 as they indicate LED position within the gauge space. Property name: ledPosition Property type: Data Table
Scale Properties
This section describes properties of gauge scale.
578
AggreGate Documentation
NICE SCALE
Enables/disables the calculation of nice values for the min and max values of the scale. Property name: niceScale Property type: Boolean
LOG SCALE
AggreGate Server
Enables/disables logarithmic scaling for the axis. Property name: logScale Property type: Boolean
579
Track Properties
Track is an area that could be defined by a start value, a section value, and a stop value. This area will be painted with a gradient that uses two or three given colors. E.g. a critical area of a thermometer could be defined between 30 and 100 degrees celsius and could have a gradient from green over yellow to red. In this case the start value would be 30, the stop value would be 100 and the section could be somewhere between 30 and 100 degrees. The track can be used in addition to gauge Areas and Sections.
TRACK VISIBLE
Controls visibility of the track. Property name: trackVisible Property type: Boolean
TRACK START
Value where the track will start. Property name: trackStart Property type: Double
TRACK SECTION
Value of the middle point between Track Start and Track Stop. Property name: trackSection Property type: Double
TRACK STOP
Value where the track will end. Property name: trackStop
580
AggreGate Documentation
Title Properties
This section describes properties of gauge title and unit labels.
TITLE
The title of the gauge, e.g. "Temperature". Property name: title Property type: String
UNIT STRING
Unit string of the gauge, e.g. "[cm]". Property name: unitString Property type: String
LABEL COLOR
Color of the title and unit labels. Property name: labelColor Property type: Color
Threshold Properties
This section describes properties of gauge's threshold indicator.
THRESHOLD VISIBLE
Controls visibility of the threshold indicator. Property name: thresholdVisible Property type: Boolean
THRESHOLD
AggreGate Server
Value at that the threshold indicator is displayed. Property name: threshold Property type: Double
581
THRESHOLD TYPE
Type of the threshold indicator (Arrow or Triangle). Property name: thresholdType Property type: String
THRESHOLD COLOR
Color of the threshold indicator (one of the pre-defined values). Property name: thresholdColor Property type: String
Area Properties
Areas are visual pie sections of a gauge that visualize certain value ranges. Areas can be used in addition to gauge Track and Sections.
AREAS VISIBLE
Sets the visibility of the areas. Property name: areasVisible Property type: Boolean
AREAS
List of the areas. Each ares is defined by a start value, a stop value, and a color. Property name: areas Property type: Data Table
HIGHLIGHT AREA
Enables/disables highlighting of the area that contains the current value. Property name: highlightArea Property type: Boolean
Section Properties
582
AggreGate Documentation
Sections are colorized parts of gauge's scale. Sections can be used in addition to gauge Track and Areas.
SECTIONS VISIBLE
Controls visibility of the sections. Property name: sectionsVisible Property type: Boolean
SECTIONS
List of the sections. Each section is defined by a start value, a stop value, a color, and a highlight color. Property name: sections Property type: Data Table
HIGHLIGHT SECTION
Enables/disables highlighting of the section that contains current value. Property name: highlightSection Property type: Boolean
LCD Properties
Each gauge may display an LCD-like display with numeric presentation of gauge value. This section describes LCD display properties.
LCD VISIBLE
Enables or disables visibility of the LCD display. Property name: lcdVisible Property type: Boolean
COLOR
Background color of the LCD display. Property name: lcdColor
AggreGate Server
Property type: String
583
DECIMALS
Number of decimal digits that will be used to visualize values in the LCD display. Property name: lcdDecimals Property type: Integer
INFO STRING
Arbitrary text displayed on the top of LCD display. Property name: lcdInfoString Property type: String
INFO FONT
Font
590
NUMBER SYSTEM
Number system that will be used to display the current LCD value (Decimal, Hexadecimal, or Octal). Property name: lcdNumberSystem Property type: String
SCIENTIFIC FORMAT
Enables/disables the scientific format of LCD value. Property name: lcdScientificFormat
THRESHOLD VISIBLE
Enables/disables visibility of the LCD threshold indicator. Property name: lcdThresholdVisible
THRESHOLD
Value of the LCD indicator's threshold. Property name: lcdThreshold Property type: Double
VALUE FONT
Font
590
584
AggreGate Documentation
UNIT STRING
Text of unit label displayed on the LCD. Property name: lcdUnitString Property type: String
UNIT FONT
Font
590
that will be used to visualize the unit label on the LCD display.
DIGITAL FONT
Enables/disables usage of the digital font in the LCD display. Property name: digitalFont Property type: Boolean
POINTER TYPE
Type of the pointer (one of the pre-defined types). Property name: pointerType Property type: String
FOREGROUND TYPE
The type of foreground that will be used for the radial gauge (one of the pre-defined values). Property name: foregroundType
GAUGE TYPE
The type of the gauge: Type 1 - a quarter gauge (90 degrees) Type 2 - a two quarter gauge (180 degrees) Type 3 - a three quarter gauge (270 degrees) Type 4 - a four quarter gauge (300 degrees)
AggreGate Server
Property name: gaugeType Property type: String
585
Knob Properties
This section describes properties of the center knob of a radial gauge.
KNOB TYPE
The type of the knob (one of the pre-defined values). Property name: knowType Property type: String
KNOB STYLE
The the style of the knob (one of the pre-defined values). Property name: knowStyle Property type: String
Frame Properties
FRAME TYPE
Defines the type of frame that will be used for the radial gauge. It could be round our square. Property name: frameType Property type: String
Scale Properties
DIRECTION
The direction of the tickmark label counting (Clockwise or Counter Clockwise). Property name: tickmarkDirection Property type: String
ORIENTATION
The orientation of the tickmark labels (Normal, Horizontal or Tangent). Property name: ticklabelOrientation
Section Properties
EXPANDED SECTIONS ENABLED
Enables/disables the use of wider sections.
586
AggreGate Documentation
expandedSectionsEnabled
Property name:
Property Types
Description of each widget component property includes property type. Property type is the type of value returned by a component property reference 606 appearing in widget binding (String, Boolean, Integer, etc.).
Indexed Properties
Indexed property is a property that has several elements, i.e. that is represented by array or list. Elements of indexed properties must be referred from bindings 604 by adding zero-based element index into a binding target 605 .
Default Property
Default property is a component's property which is targeted by an automatically created binding 604 . For example, when you drag some server variable and drop in on a Label 323 , the binding created by this operation will change label's text, since Text is the default property of a Label component.
WIDTH
The preferred width of the component, in pixels. If there is not enough space to display a component, this setting may be ignored and the component's actual width will be smaller. If set to zero, the component's width is calculated automatically based on its contents and the display area available to it within the widget layout. Property name: width Property type: Integer
HEIGHT
Preferred height of a component, in pixels. If there is not enough space to display a component, this setting may be ignored and the component's actual height will be smaller. If set to zero, the component's height is calculated automatically based on its contents and the display area available to it within the widget layout. Property name: height Property type: Integer
BINDINGS
This property contains a table of all bindings 604 related to this component (meaning, bindings with an expression target 605 or activator 607 referring to the component's properties). Property name: bindings Property type: Data Table
606 ,
ENABLED
This flag indicates a component is active. Disabled components do not respond to user input, and on most interfaces are rendered as grayed-out:
AggreGate Server
Property type: Boolean
587
VISIBLE
This flag indicates a component is visible. Property name: visible Property type: Boolean
FOREGROUND
This property defines a component's foreground color. The exact elements rendered in the foreground color are component-specific. Property name: foreground Property type: Color
BACKGROUND
This property defines a component's background color. The exact elements rendered in the background color are component-specific. Property name: background Property type: Color
OPAQUE
Indicates that component is opaque. It is a Boolean value - can be "True" (Opaque) or "False" (Transparent). A transparent component's background is not rendered -- the background color 587 property is ignored. Property name: opaque Property type: Boolean
BORDER
See Border
588
FONT
Defines which font is used by the component. This property is relevant for components using labels or other text elements (e.g, Text Field 325 ). Properties of font are described here 590 . Property name: font Property type: Data Table
CURSOR
Defines what mouse cursor should be used when mouse hovers over the component. Available cursors: Default Crosshair Text Wait Resize (N, S, E, W, NE, NW, SE, SW) Hand Move Property name: cursor Property type: Integer
TOOLTIP
588
AggreGate Documentation
Text for the component's tooltip. Tooltips usually appear when the mouse hovers over the component:
POPUP MENU
The property configures component's context menu that is shown upon right mouse click on the component. The menu items table contains the following fields: Field Name Description Icon Name name Type String Description Name of menu item used to refer this item from any binding activator Textual description of the item, i.e. the text that will appear in menu. Item icon image.
607 .
835 .
Add Custom Property. Adds new custom property to the component those properties are being edited. Edit Custom Property. Allows to edit parameters of selected custom property. Remove Custom Property. Removes custom property definition from the component.
section.
3.15.12.2 Border
Every component comprises an inner and an outer border. Properties are specified separately for each.
Border Properties
Field Position Type Top Name pos type top Type String String Integer Description Inner or Outer, read-only field. One of None, Empty, Line, Lowered, Raised or Etched. Thickness of border at the top side of component. Applicable to Empty and Line borders.
AggreGate Server
589
Left Bottom Right Primary Color Secondary Color Title Title Color Title Justification
Thickness of border at the left side of component. Applicable to Empty and Line borders. Thickness of border at the bottom side of component. Applicable to Empty and Line borders. Thickness of border at the right side of component. Applicable to Empty and Line borders. Color of the border, or color of the main part of the border for two-color borders. Applicable to Line, Lowered, Raised and Etched borders. Color of the border's shadow or other decorations. Applicable to Lowered, Raised and Etched borders. Text for the border's title. Color of border's title. Justification of border title - Left, Center or Right.
Border Examples
An empty border is not visible, but may be used to add a title to the element:
Lowered border:
Raised border:
Etched border:
590
AggreGate Documentation
3.15.12.3 Font
This section describes font properties. Different fonts are used by widget components to display text strings.
Font Properties
Field Name Type Boolean String Description Enable this parameter to allow a custom font for the component. Name of the typeface to be used. If you pick a custom font, it might not be available on all clients running this widget. In this case, the default font will be used. Use well-known fonts like Verdana, Times New Roman, etc. Size Bold Italic size bold italic Integer Boolean Boolean Font size, in points. Make font bold. Make font italic.
3.15.12.4 Paint
Paints are used by widget components to fill different areas, draw lines and other shapes. There are four basic types of paints: Color
590 590 591
Color
This paint uses a single solid color for drawing and filling.
Linear Gradient
The linear gradient provides a way to fill a shape with a linear color gradient pattern. The user may specify two or more gradient colors, and this paint will provide an interpolation between each color. The user also specifies start and end points which define where in user-space the color gradient should begin and end. The user must provide an array of floating point numbers specifying how to distribute the colors along the gradient. These values should range from 0.0 to 1.0 and act like keyframes along the gradient (they mark where the gradient should be exactly a particular color). In the event that the user does not set the first keyframe value to 0 and/or the last keyframe value to 1, keyframes will be created at these positions and the first and last colors will be replicated there. So, if a user specifies the following values to construct a gradient: Relative Location 0.3 0.7 Color Blue Red
this will be converted to a gradient with the following keyframes: Relative Location 0.0 0.3 Color Blue Blue
AggreGate Server
591
0.7 1.0
Red Red
The user may also select what action the gradient paint should take when filling color outside the start and end points. If no cycle method is specified, Disabled will be chosen by default, which means the endpoint colors will be used to fill the remaining area. The image below demonstrates each of the three cycle methods applied for a linear gradient with the following parameters: Start X, Start Y: 0.0 End X, End Y: 50.0 Colors: Relative Location 0.0 0.2 1.0 Color Red White Blue
Radial Gradient
The radial gradient paint provides a way to fill a shape with a circular radial color gradient pattern. The user may specify 2 or more gradient colors, and this paint will provide an interpolation between each color. The user must specify the circle controlling the gradient pattern, which is described by a center point and a radius. The user can also specify a separate focus point within that circle, which controls the location of the first color of the gradient. By default the focus is set to be the center of the circle. This paint will map the first color of the gradient to the focus point, and the last color to the perimeter of the circle, interpolating smoothly for any in-between colors specified by the user. Any line drawn from the focus point to the circumference will thus span all the gradient colors. Specifying a focus point outside of the circle's radius will result in the focus being set to the intersection point of the focus-center line and the perimeter of the circle. The user must provide an array of floats specifying how to distribute the colors along the gradient. These values should range from 0.0 to 1.0 and act like keyframes along the gradient (they mark where the gradient should be exactly a particular color). In the event that the user does not set the first keyframe value to 0 and/or the last keyframe value to 1, keyframes will be created at these positions and the first and last colors will be replicated there. So, if a user specifies the following values to construct a gradient: Relative Location 0.3 0.7 Color Blue Red
this will be converted to a gradient with the following keyframes: Relative Location 0.0 0.3 Color Blue Blue
592
AggreGate Documentation
0.7 1.0
Red Red
The user may also select what action the radial gradient paint should take when filling color outside the bounds of the circle's radius. If no cycle method is specified, Disabled will be chosen by default, which means the the last keyframe color will be used to fill the remaining area. The image below demonstrates each of the three cycle methods applied for a radial gradient with the following parameters: Start X, Start Y: 50.0 Radius: 25.0 Focus X, Focus Y: 50.0 Colors: Relative Location 0.0 0.2 1.0 Color Red White Blue
Another image demonstrates each of the three cycle methods applied for a radial gradient with the same parameters, but with non-centered focus point (Focus X, Focus Y: 40.0):
Texture
The texture paint provides a way to fill a shape with an image texture. Texture image is resized to the rectangle specified by Start X, Start Y, End X and End Y parameters. This rectangle is replicated infinitely in all directions of the space of filled shape.
Paint Properties
Field Type Color Start X Start Y End X End Y Radius Name type color startx starty endx endy radius Type Integer Color Float Float Float Float Float
AggreGate Server
593
3.15.12.5 Stroke
The stroke defines a basic set of rendering attributes for different parts of widget components. The rendering attributes defined by the stroke describe the shape of the mark made by a pen drawn along the outline of some shape and the decorations applied at the ends and joins of path segments of the shape. These rendering attributes include:
Line Width
The pen width, measured perpendicularly to the pen trajectory.
End Cap
The decoration applied to the ends of unclosed subpaths and dash segments. The three different decorations are: None, Round , and Square.
Line Join
The decoration applied at the intersection of two path segments. The three different decorations are: Bevel, Miter, and Round .
Miter Limit
The limit to trim a line join that has a Miter decoration. A line join is trimmed when the ratio of miter length to stroke width is greater than the Miter Limit value. The miter length is the diagonal length of the miter, which is the distance between the inside corner and the outside corner of the intersection. The smaller the angle formed by two line segments, the longer the miter length and the sharper the angle of intersection. The default Miter Limit value of 10.0 causes all angles less than 11 degrees to be trimmed. Trimming miters converts the decoration of the line join to bevel.
Dash Array
Dash Array and Dash Phase attributes define how to make a dash pattern by alternating between opaque and transparent sections. Dash Array is a number of values representing the lengths of the dash segments. Alternate entries in the array represent the user space lengths of the opaque and transparent segments of the dashes. As the pen moves along the outline of the shape to be stroked, the user-space distance that the pen travels is accumulated. The distance value is used to index into the dash array. The pen is opaque when its current cumulative distance maps to an even element of the dash array and transparent otherwise.
594
AggreGate Documentation
Dash Phase
The dash phase is a distance that represents an offset into the dashing pattern. In other words, the dash phase defines the point in the dashing pattern that will correspond to the beginning of the stroke. The image below illustrates how strokes with different dash arrays and phase look like:
Stroke Properties
Field Line Width End Cap Line Join Miter Limit Dash Array Dash Phase Name lineWidth endCap lineJoin miterLimit dashArray dashPhase Type Float Integer Integer Float Data Table Float
3.15.12.6 Shape
The shape represent a geometric primitive, such as rectangle of star. The following types of shapes are supported: Rectangle Rounded Rectangle Ellipse/Circle Arc Line Polygon Star
Shape Properties
Field Type X Coordinat e Y Coordinat e Width Name type x Type Description
Intege Shape type. r Float The leftmost point of a Rectangle, Rounded Rectangle , Ellipse/Circle , Arc, Line or Star . The topmost point of a Rectangle, Rounded Rectangle , Ellipse/Circle , Arc, Line or Star . The width point of a Rectangle, Rounded Rectangle , Ellipse/Circle , or Arc;
Float
width
Float
AggreGate Server
595
End X - Start X distance for a Line. Height height Float The height point of a Rectangle, Rounded Rectangle , Ellipse/Circle , or Arc; End Y - Start Y distance for a Line. Arc Width arcWidth Float Float Float Float Width of Rounded Rectangle 's corner arc. Height of Rounded Rectangle 's corner arc. Start of an Arc shape (in degrees). Extent of an Arc shape (in degrees).
Arc Height arcHeight Start Extent Arc Type start extent arcType
Intege Arc type: r Open: arc with no path segments connecting the two ends of the arc segment Chord: arc closed by drawing a straight line segment from the start of the arc segment to the end of the arc segment Pie: arc closed by drawing straight line segments from the start of the arc segment to the center of the full ellipse and from that point to the end of the arc segment
Polygon points, i.e. an array of (X, Y) points. By default, polygons point array specifies a cross shape. Inner radius of a Star . Outer radius of a Star .
HIDDEN
This event is fired when a component is hidden. Event name: hidden Event fields: Field ID Name id Type Integer Description Event type ID.
SHOWN
596
AggreGate Documentation
This event is fired when a component is shown. Event name: shown Event fields: Field ID Name id Type Integer Description Event type ID.
MOVED
This event is fired when a component is moved within its parent container. Event name: moved Event fields: Field ID Name id Type Integer Description Event type ID.
RESIZED
This event is fired when a component is resized. Event name: resized Event fields: Field ID Name id Type Integer Description Event type ID.
MOUSE CLICKED
This event is fired when a mouse button is clicked over the component. Event name: mouseClicked Parameters: see mouse event
598 .
MOUSE PRESSED
This event is fired when a mouse button is pressed over the component. Event name: mousePressed Parameters: see mouse event
598 .
MOUSE RELEASED
This event is fired when a mouse button is released over the component. Event name: mouseReleased Parameters: see mouse event
598 .
MOUSE ENTERED
This event is fired when a mouse cursor enters the component area. Event name: mouseEntered Parameters: see mouse event
598 .
MOUSE EXITED
This event is fired when a mouse cursor leaves the component area. Event name: mouseExited Parameters: see mouse event
598 .
MOUSE MOVED
AggreGate Server
This event is fired every time when a mouse cursor moves over the component area. Event name: mouseMoved Parameters: see mouse event
598 .
597
KEY TYPED
This event is fired when a keyboard key is typed while the component is in focus. Event name: keyTyped Parameters: see keyboard event
599 .
KEY PRESSED
This event is fired when a keyboard key is pressed while the component is in focus. Event name: keyPressed Parameters: see keyboard event
599 .
KEY RELEASED
This event is fired when a keyboard key is released while the component is in focus. Event name: keyReleased Parameters: see keyboard event
599 .
FOCUS GAINED
This event is fired when the component gets input focus. Event name: focusGained Event fields: Field ID Temporary Name id temporary Type Integer Boolean Description Event type ID. Identifies the focus change event as temporary or permanent.
FOCUS LOST
This event is fired when the component loses input focus. Event name: focusLost Event fields:
598
AggreGate Documentation
Field ID Temporary
Name id temporary
Description Event type ID. Identifies the focus change event as temporary or permanent.
Y on Screen Button
yOnScreen button
Integer Integer
AggreGate Server
599
4096 - Mouse button 3 Popup Trigger popupTrigger Integer Defines whether or not this mouse event is the popup menu trigger event for the platform.
altGraphDow Boolean n controlDown shiftDown metaDown actionKey keyChar Boolean Boolean Boolean Boolean String
Key Codes
Key VK_0 Key Code 48
600
AggreGate Documentation
VK_1 VK_2 VK_3 VK_4 VK_5 VK_6 VK_7 VK_8 VK_9 VK_A VK_ACCEPT VK_ADD VK_AGAIN VK_ALL_CANDIDATES VK_ALPHANUMERIC VK_ALT VK_ALT_GRAPH VK_AMPERSAND VK_ASTERISK VK_AT VK_B VK_BACK_QUOTE VK_BACK_SLASH VK_BACK_SPACE VK_BEGIN VK_BRACELEFT VK_BRACERIGHT VK_C VK_CANCEL VK_CAPS_LOCK VK_CIRCUMFLEX VK_CLEAR VK_CLOSE_BRACKET VK_CODE_INPUT VK_COLON VK_COMMA VK_COMPOSE VK_CONTEXT_MENU VK_CONTROL VK_CONVERT VK_COPY VK_CUT
49 50 51 52 53 54 55 56 57 65 30 107 65481 256 240 18 65406 150 151 512 66 192 92 8 65368 161 162 67 3 20 514 12 93 258 513 44 65312 525 17 28 65485 65489
AggreGate Server
601
VK_D VK_DEAD_ABOVEDOT VK_DEAD_ABOVERING VK_DEAD_ACUTE VK_DEAD_BREVE VK_DEAD_CARON VK_DEAD_CEDILLA VK_DEAD_CIRCUMFLEX VK_DEAD_DIAERESIS VK_DEAD_DOUBLEACUTE VK_DEAD_GRAVE VK_DEAD_IOTA VK_DEAD_MACRON VK_DEAD_OGONEK VK_DEAD_SEMIVOICED_SOUND VK_DEAD_TILDE VK_DEAD_VOICED_SOUND VK_DECIMAL VK_DELETE VK_DIVIDE VK_DOLLAR VK_DOWN VK_E VK_END VK_ENTER VK_EQUALS VK_ESCAPE VK_EURO_SIGN VK_EXCLAMATION_MARK VK_F VK_F1 VK_F10 VK_F11 VK_F12 VK_F13 VK_F14 VK_F15 VK_F16 VK_F17 VK_F18 VK_F19 VK_F2
68 134 136 129 133 138 139 130 135 137 128 141 132 140 143 131 142 110 127 111 515 40 69 35 10 61 27 516 517 70 112 121 122 123 61440 61441 61442 61443 61444 61445 61446 113
602
AggreGate Documentation
VK_F20 VK_F21 VK_F22 VK_F23 VK_F24 VK_F3 VK_F4 VK_F5 VK_F6 VK_F7 VK_F8 VK_F9 VK_FINAL VK_FIND VK_FULL_WIDTH VK_G VK_GREATER VK_H VK_HALF_WIDTH VK_HELP VK_HIRAGANA VK_HOME VK_I VK_INPUT_METHOD_ON_OFF VK_INSERT
61447 61448 61449 61450 61451 114 115 116 117 118 119 120 24 65488 243 71 160 72 244 156 242 36 73 263 155
VK_INVERTED_EXCLAMATION_M 518 ARK VK_J VK_JAPANESE_HIRAGANA VK_JAPANESE_KATAKANA VK_JAPANESE_ROMAN VK_K VK_KANA VK_KANA_LOCK VK_KANJI VK_KATAKANA VK_KP_DOWN VK_KP_LEFT VK_KP_RIGHT VK_KP_UP VK_L VK_LEFT 74 260 259 261 75 21 262 25 241 225 226 227 224 76 37
AggreGate Server
603
VK_LEFT_PARENTHESIS VK_LESS VK_M VK_META VK_MINUS VK_MODECHANGE VK_MULTIPLY VK_N VK_NONCONVERT VK_NUM_LOCK VK_NUMBER_SIGN VK_NUMPAD0 VK_NUMPAD1 VK_NUMPAD2 VK_NUMPAD3 VK_NUMPAD4 VK_NUMPAD5 VK_NUMPAD6 VK_NUMPAD7 VK_NUMPAD8 VK_NUMPAD9 VK_O VK_OPEN_BRACKET VK_P VK_PAGE_DOWN VK_PAGE_UP VK_PASTE VK_PAUSE VK_PERIOD VK_PLUS VK_PREVIOUS_CANDIDATE VK_PRINTSCREEN VK_PROPS VK_Q VK_QUOTE VK_QUOTEDBL VK_R VK_RIGHT VK_RIGHT_PARENTHESIS VK_ROMAN_CHARACTERS VK_S VK_SCROLL_LOCK
519 153 77 157 45 31 106 78 29 144 520 96 97 98 99 100 101 102 103 104 105 79 91 80 34 33 65487 19 46 521 257 154 65482 81 222 152 82 39 522 245 83 145
604
AggreGate Documentation
VK_SEMICOLON VK_SEPARATER VK_SEPARATOR VK_SHIFT VK_SLASH VK_SPACE VK_STOP VK_SUBTRACT VK_T VK_TAB VK_U VK_UNDEFINED VK_UNDERSCORE VK_UNDO VK_UP VK_V VK_W VK_WINDOWS VK_X VK_Y VK_Z
3.15.14 Bindings
If widget components 322 form the "body" of the widget, then its "engine" is constructed of bindings. Bindings define relations between widget components and data from server contexts, such as their variables 869 and functions 878 . Every binding is evaluated at different points during widget execution. Evaluation results are used to modify widget components or context data. Widget bindings extend server bindings 952 . While server binding define relations of server-side objects, widget bindings can also define relations between server objects and visual components. However, widget bindings use the same syntax. Widget bindings may be viewed, created or edited: By editing the Bindings 586 property of any widget component in GUI Builder component includes only bindings involving this component. By editing the All Bindings widget.
376 827 .
376 .
GUI Builder greatly simplifies creation of bindings. Most bindings may be created using intuitive Drag and Drop operations. Details of this procedure are described here 842 .
Binding target is a special type of reference 925 that points to where the evaluation result of binding expression will be written when the binding is processed. Check the binding target 605 section for details.
AggreGate Server
605
Expression Activator
This is an AggreGate Expression 911 that is evaluated every time a binding is processed. The evaluation result is stored in the binding target. See Binding Expression 606 for details. This is a reference that points to some event or property of the widget that will trigger the processing of the binding. The Activator parameter is available only when On event parameter is enabled. See Binding Activator 607 for details. Condition is an AggreGate Expression 911 that is evaluated first after binding activation. If this expression results to false, the binding execution is skipped. When this parameter is enabled, the binding is processed every time the widget is launched. When this parameter is enabled and an Activator is specified, the binding is processed whenever there's a changes in the property the activator refers to. If the Activator refers to an event, the binding will be processed when the event fires. If On event is enabled and an Activator is not specified, the binding will be automatically processed: The binding's Expression includes references, pointing to one or more variables. A change in any of these variables will cause the binding to run. For example, let's take the following binding, and say that no Activator was specified for it: Target: users.admin.deviceservers.ds1.devices.thermostat:
1. Component Property
form/component:property
This binding target points to a specific property of a widget component. Binding target that refers cell of the tabular property within the specific row and field has the following format:
form/component:property$field[row]
Example: form/textField1 A binding with this target will write its result to the default property of the textField1 component. If textField1 is a text field 325 , its text property will be changed. Example: form/image1:imageTable$imageData[0] This binding target changes a binary image in the first row of Image component's Image Table
351 .
606
AggreGate Documentation
Example: form/gauge:datasets[1] This binding target changes the value of a second dataset (with index=1) of a gauge
558
component.
2. Widget Script
form/script()
This type of binding target is used to launch the widget script 610 named script upon processing the binding, passing the binding evaluation result to the script as its parameter. Bindings with such targets are created automatically upon adding new scripts to the widget template. However, initial properties 952 of such binding does define any script launch conditions. It's necessary to modify these properties to make the script start on widget startup, some event or just periodically. Example: form/refreshChart() This binding launches the refreshChart widget script displaying the most recent data.
610
384
component to make it
variables
869
or functions
878 ,
Component
322 .
Component References
A component reference points to a property of a widget component (e.g. the text of a Label format:
323 ).
322 you want to work with. The component name is shown in and in the title of the Component Properties Window 835 when the component is selected in GUI
property is the name of a specific property within the component. Property names can be found in the description of
properties of every widget component. Property part of a component reference is optional. If it is omitted, the reference points to the default property 586 of the component. Type of property 586 , i.e. type of value returned by a component property reference, may be found in the description of this property in the components reference 322 .
{form/userNameField:} {form/userNameField:text}
Both of these two references resolve to the text currently contained in userNameField (assuming that's a text field 325 ). The first variant points to the default property 586 of component, which is text, and the second one names it explicitly (:text).
AggreGate Server
607
or event
595
of a widget component
954 )
A property (variable) or event of a server context (see server binding activator An item of widget component's context menu
A change of the widget/server variable, an occurrence of the widget/server event, or a selection of context menu item force this binding's processing. Widget binding activators support all syntax variants of server binding activators The following additional syntax variants are supported:
954 .
is pressed.
variables
869
or functions
Component
322 .
608
AggreGate Documentation
Root panel has another performance-related setting: Maximum Concurrent Bindings. It defines how many threads can be created for widget binding processing and, thus, how many bindings can be processed simultaneously.
604
Specify it's Launch Widget 774 action as binding Target 605 , i.e. set Target to action/users.admin.widgets. bindingsDemo:launch, where users.admin.widgets.bindingsDemo is context path of widget to launch. Leave binding Expression empty.
Binding configuration: Target Expres sion Activat form/button1:click@ or Conditi on Option s
action/users.admin.widgets.bindingsDemo:launch
On Event
It's also possible to close current widget (one with the Button) before the action execution. To configure this: Open Operations property of the Button Add a record with Close operation
red if a voltage alert is reported by the controller. In other cases the panel will
Note that the expression and the target reference use relative context paths (".") to make the widget compatible with multiple similar controllers. The widget should be relative 314 and valid for all "voltage controller" devices. Target Expres sion Activat or Conditi on Option s
On Startup, On Event
It's possible to modify the above binding to make the panel red if temperature reading is over 50 degrees:
is moved.
AggreGate Server
First binding is used to read current setpoint value from the controller and initialize the slider: Target Expres sion Activat or Conditi on Option s
609
form/slider1:value {.:currentTemperature$temperatureCelsius}
On Startup
Second binding writes new setpoint to the controller once the slider is moved: Target Expres sion Activat or Conditi on Option s
.:currentTemperature$temperatureCelsius {form/slider1:value}
On Event
Note that first parameter of executeQuery function is single-quoted to make the system processing it as expression. Target Expres sion
form/result:dataTable {:executeQuery('{form/queryText:text}')}
On Event
It's possible to use alternative syntax for the above binding's expression:
610
AggreGate Documentation
On Event
Note that we're using relative context path (" .") in the target to make calculation widget compatible with many calculation agents. To use it with just one agent, specify absolute path, e.g. users.my_user.devices.my_agent. In this example calculation result returned by multiply operation will be discarded. But what is we want to put it into another widget component (such as a label 323 )? Here is the solution:
On Event
Note that relative device context path (returned by dc() function) is used. To use absolute context path change dc() to full device path, e.g. users.my_user.devices.my_agent. There is another (more compact) style of writing the above binding expression to obtain exactly the same result. This style uses a function reference
927
{.:multiply('{form/argument1:text}',
'{form/argument2:text}')$result}
606
is processed;
914 .
Scripts are executed in bindings processing thread, so script those execution takes a long time may hand processing of other widget bindings. It's recommended to create new threads for executing time-consuming tasks from widget scripts.
AggreGate Server
611
Managing Scripts
Scripts are created and managed by editing the Scripts
377
Script Interface
Every script is a single Java class that must implement a WidgetScript interface: public interface WidgetScript { public void execute(WidgetScriptExecutionEnvironment }
environment,
Object...
parameters);
This interface declares a single execute() method that is called when the script is executed. Result of binding expression's evaluation is passed to the widget script as parameter object.
environment,
Object
parameter);
Instance of WidgetScriptExecutionEnvironment provides access to an object implementing GUIEngine interface (it is obtained by calling getEngine() method). GUIEngine provides access to objects responsible for widget execution.
925 (object of type Reference) that caused processing of binding that gave rise to script execution. This reference may point to some server data or property of widget component.
Script Template
When a new script is created, its text is not empty. It contains an auto-generated stub of a class implementing WidgetScript interface with an empty execute() method. Here is the default script text: import com.tibbo.platform.guibuilder.*; public class users_admin_widgets_scripts_refresh implements WidgetScript { public void execute(WidgetScriptExecutionEnvironment environment, Object { } }
parameter)
Developing Scripts
See Programming Guidelines
980
WRITING SCRIPTS
Basically, scripts should do several things: Read/write properties of widget components Generate widget component events Read/write server context variables (i.e. hardware device settings and server resource properties) Call server and device operations (functions) In most cases, all activities should be performed via Context interface. To obtain a Context matching any server-side object, use the following code:
612
AggreGate Documentation
WidgetEngine engine = environment.getEngine(); ContextManager contextManager = engine.getServerContextManager(); Context serverContext = contextManager.get("server.context.path"); To obtain a Context matching a certain widget component, write the following code: Context componentContext = environment.getComponentContext("widget_component_name");
Once an instance of Context is retrieved, you can read/write variables using getVariable() and setVariable() methods. For widget component contexts, most variables directly match component properties (e.g. Font, Width, Color, etc.)
Context dataTableEditorContext = environment.getComponentContext("dataTableEditor1"); DataTable dataTable = dataTableEditorContext.getVariable("dataTable"); // Process the data here
public class %ScriptClassNamePattern% implements WidgetScript { public Object execute(WidgetScriptExecutionEnvironment environment, Object... parameters) { ClientUtils.removeFrame(ClientUtils.createWidgetFrameKey("users.admin.widgets.test", "")); return null; } }
public class %ScriptClassNamePattern% implements WidgetScript { public Object execute(WidgetScriptExecutionEnvironment environment, Object... parameters) { try { Desktop.getDesktop().browse(new URI(parameters[0].toString())); } catch (Exception ex) { throw new IllegalStateException("Error opening url '" + parameters[0].toString() + "'", ex); } return null;
AggreGate Server
613
} }
, the Event Log is opened automatically when the widget is started icon in the widget window toolbar
Widget Events
The following event types are shown in the widget event log:
LOAD ERROR
This event occurs if component's property or the whole component cannot be properly decoded from XML-based widget template.
loadError
1 :
Field Type String String Notes Name of component that cannot be loaded. Property name, or NULL if the whole component cannot be decoded from template. Error message.
error
String
BINDING ERROR
This error event is fired when a binding be properly written into binding target.
604
error occurs, i.e. binding expression cannot be evaluated or its result cannot
bindingError
1 :
Field Type String String String String String Data Table Notes Binding target
605 .
606 .
607 .
Binding execution mode: on startup, on event, or periodical. Error text. Stack trace of error source.
614
AggreGate Documentation
A widget running inside AggreGate Client may cause considerable CPU load and memory usage on AggreGate Client itself, AggreGate Server, or both. Widget's CPU load impact is a multiplication of the following: Number of widget instances launched by system operators. Number of widget's bindings. Frequency of widget binding processing. It may either be explicitly specified in the binding options (for Periodic bindings) or implicitly defined by the frequency of events or state changes that trigger binding execution (for On Event bindings). Complexity and impact of binding expressions. See expressions performance
924
Impact of writing binding targets. Writing a binding target is in most cases writing a context variable or calling a context function. See variables performance 878 and functions performance 880 for more information. Impact of custom widgets scripts
610
Java code.
Templates 314 of the widgets are cached in the server memory to ensure quick widget startup. A large number of complex widget can cause noticeable constant server memory usage. Running widgets that have hundreds of complex dynamic components (such as tables 344 , event logs graphs 369 or dynamic vector images 352 ) may cause considerable constant client-side memory load.
345 ,
maps
616 ,
Running widgets may also cause additional short memory usage bursts in case if large datasets (e.g. lots of historical events 882 ) are loaded by widget bindings or charts 384 .
launching widget inside a touch panel connected to an industrial or home automation controller; starting some important monitoring widget without running AggreGate Client itself.
Parameters Dialog
If widget player is started without command line parameters, it shows a dialog allowing to specify connection/ authorization settings, path of widget to start, and path of it default context 315 :
AggreGate Server
615
server_address is IP or host name of the AggreGate Server (e.g. localhost); server_port is AggreGate Server port accepting client connections (6460 by default); username is the name of AggreGate Server user account password is AggreGate Server user account password; widget_context_path is full path of context of the widget to be launched, e.g. users.admin.widgets. myCustomWidget; If Widget Player can't connect to the AggreGate Server with specified command line parameters (or command line parameters are not set) it displays an authorization dialog prompting to enter Widget Player options.
108
OTHER OPTIONS
-c Specifis full path of the default context 315 that will be used during widget operation, e.g. users. default_contex admin.devices.myDevice. This parameter is relevant only for relative 314 widgets. t_path -f -h
Enable full-screen mode. Displays command line parameters help.
616
AggreGate Documentation
Currently, the Web Widget Player is in BETA-testing stage. Please contact Tibbo if you experience some troubles with the player. To access widgets in a production environment, please use Widget Player application. To access the web widget player: Open Web Control Center
631 614
desktop
Navigate your browser to https://server.address:8443/widget or http://server.address:8080/widget. Check your web application settings 59 if you've problems accessing both pages. Enter your AggreGate Server username and password Enter full context path 863 of your widget context default context 315 (only if your widget it relative
651
314 )
Click on Log In. The widget will open in the browser window.
component in the background. This image (raster or vector) contains the maps itself.
Several device 367 components that represent monitored hardware. Every device component is colored depending on device status and supplemented with labels showing device status. Buttons
334
Any other components showing overall statistics and any additional data: tables
charts
384 ,
labels
323 ,
etc.
New devices are added to the map by dragging a Device Context from Entity Selector container in the Work Form 830 (see details here 846 ).
AggreGate Server
617
2. Operating system's onscreen keyboard application or any third-party onscreen keyboard application
Type and style of on-screen keyboard are selected in widget's Root panel settings
377 .
Each component that should show an onscreen keyboard when it's clicked in a touch panel should have its Onscreen Keyboard setting configured to either Single Click or Double Click.
3.16 Dashboards
Dashboards are designed to built interactive data presentation views for system operators. A dashboard displays multiple dynamic components together on separate display within AggreGate Server User Interface (e.g. AggreGate Client 776 ). In many cases, a dashboard contains multiple Widgets 312 . Each widget represents a solid data processing/presentation unit (such as chart), while dashboard is used to group multiple units to show multiple aspects of a monitored device/ resource at once. However, dashboards may contain other modules, such as Event Logs
791
or Query
271
854 ).
Administering Dashboards
Two contexts are used to administer dashboards: One is the general Dashboards 672 context, which serves as a container. The other is the Dashboard 673 context, which holds the information for a single dashboard.
Every user
108
618
AggreGate Documentation
Dockable Layout
In the dockable layout, all dashboard's windows are placed on one screen and possibly grouped into tabs. These dockable windows can be managed (closed, moved, re-docked, floated, etc.) as described in Customizing Dockable Windows 781 article. For dockable layout, all properties of each element's location are interpreted exactly as described in window location section.
955
Scrollable Layout
Scrollable dashboards place windows one under another, in several columns. If all windows do not fit into the screen, a vertical scroll bar appears. For scrollable layout, State and Side parameters specified in window location 955 are ignored. Index parameter defines the zero-based index of column to which the window will be added. In each column, windows appear in the same order as in the Dashboard Elements 619 table.
AggreGate Server
619
Absolute Dashboards
Absolute dashboards are most used to display data coming from multiple different sources, e.g. several devices. In some cases, an absolute dashboard may display or control a pre-defined device or resource those name is hardcoded into dashboard elements' 619 parameters. Absolute dashboards are opened by right-clicking on a dashboard context 621 .
673
Relative Dashboards
Relative dashboards show status of a single device/resource that is not hard-coded into dashboard's configuration. A relative dashboard is opened for a certain device/resource by right-clicking on it and selecting launch dashboard action those name match dashboard description (this action's icon is always ).
620
AggreGate Documentation
619
Validity expression that allows to exclude certain elements if target context (i.e. context for that a relative dashboard is opened) doesn't match specific criteria
Element Types
The following dashboard element types are supported: Widget Data Table Properties Event Log System Tree Report
WIDGET
This element opens a widget being opened. Element properties: Widget. The path of widget context
774 . 312 .
314 ,
it's started for the same context for those the dashboard is
DATA TABLE
This element evaluates an expression that should evaluate to a Data Table Table Editor 801 as a part of the dashboard. Data Table element is ideal for showing query Element properties: Icon ID. ID of the icon to show in the title of element's window. Help ID. ID of the help article that the element should refer to. Expression . Expression to be evaluated. Refresh Period. Period of expression re-evaluation, i.e. data refresh rate.
271 854 .
PROPERTIES
Shows a Properties Editor Element properties: Context. Context
863 795
inside a dashboard.
Group. Group of properties to show, or NULL to show manually specified properties. Properties. List of properties to show if Group is NULL. Simple Mode. Use Properties Editor's simple mode
796 .
Initially Read-Only. Lock the editor upon startup. It will be necessary to click Unlock toolbar button to start editing.
EVENT LOG
Shows an Event Log Element properties: Event Filter. Context path of event filter
206 791
inside a dashboard.
to use.
Events. List of specific events to show in the log, specified by "Context Path - Event Name" pairs. This option is active if no filter is specified. Current Events. Flag indicating whether or not to show Current Events section of the log. Event History. Flag indicating whether or not to show Event History section of the log. Preload Event History. Enables/disables loading event history upon Event Log startup. Show Context Names. Controls visibility of Context column.
AggreGate Server
Show Event Names. Controls visibility of Event column. Show Event Levels. Controls visibility of Level column. Show Event Data. Controls visibility of Data column. Show Event Acknowledgements. Controls visibility of Acknowledgements column.
621
SYSTEM TREE
Shows a custom-rooted System Tree Element properties: Root. Path of the tree's root context. Related Actions. Flag that controls visibility of Related Actions pane.
784
REPORT
Shows a report viewer Element properties: Report . Path of a report context.
814
inside a dashboard.
314
622
AggreGate Documentation
Relative dashboards will install their Open Dashboard Action only into contexts that are accessible for the dashboard owner according to his permissions 931 . To be able to launch this action, the user must have an effective permission level contexts: Dashboard context
673 935
of Observer in two
The context on which the dashboard operates, i.e. the one where Launch Action is defined
Dashboard Window
The dashboard is opened in a separate tabbed window in any AggreGate Server User Interface. When dashboard window is closed, all dashboards components are stopped (e.g. if it were running widgets 312 ) and hidden. Here is how a dashboard look like in AggreGate Client:
AggreGate Server
623
673 .
Field Description
Dashboard Name. Name of the dashboard context, required to refer to this dashboard from other parts of the system. It should satisfy the context naming conventions 863 . Dashboard Description. Textual description of the dashboard. This is also the description 864 of the dashboard context. Title Expression . Dashboard title that appears on the top of dashboard window. If title is not specified, its Description used instead. Title can be a plain string or an expression 911 . If it's an expression, it's evaluated into string to allow titles of relative 619 dashboards display values from contexts those data is displayed on dashboard. Example: Assuming we are creating a dashboard that shows device power status, we may set Title Expression to 'Power Status: ' + {.#description}. It will include description of device context, e.g. "Power Status: Device213". Title Expression Resolution Environment
922
Field Name
name
description
title
624
AggreGate Documentation
Default Context
927 927
Environment Variables
Standard
618 ,
931
dockable or scrollable.
Column Count . Number of columns, relevant for scrollable dashboards only. Type . Type
619
Validity Expression. Determines which context(s) may be "understood" by the dashboard. See Resource Validity 948 for more information. Validity Update Rules. A list of context masks and event names. If event specified by Event field of this table occurs in any of context matching to the mask specified by Mask field in the same record, Validity Expression will be recalculated for this context. This allows to make dashboard valid/invalid for a certain context if some changes occur in it. This property may be accessed via the childInfo
674
validityListeners
variable.
Field Description
Title. This is the header odf element's window. Type . Element type, see elements
619
Field Name
title type location
Window Location. Location of element's window within dashboard window. See details here 955 . Parameters. Settings of the element. The settings define what data will be shown and how to present it. List of settings depend to element's Type . Validity Expression. An expression 911 that defines whether the element should be skipped during dashboard rendering. It it evaluates to FALSE, the element will be skipped. Validity Expression Resolution Environment Default Context
927 927 922
parameters
validityExpression
Environment Variables
Standard
931
674
AggreGate Server
625
1233
of AggreGate Client:
It's not possible to reorder actions using the Auto Run container located right under the Server node of System Tree because this container mixes auto run actions that belong to different system users 108 .
You can
626
AggreGate Documentation
of AggreGate.
To make an auto run action connected from a provider server launched by clients connected to a consumer server, make sure that the context path of connected auto run action context on the consumer server matches users.*. autorun.* context mask, i.e. the remote auto run action appears among local actions.
3.18 Favourites
The AggreGate interface is rich in functionality, and the context tree navigation easier, Favourites have been implemented.
863
Favourites allow AggreGate users to execute commonly-used actions 892 with a single mouse click. You don't have to "dig" in the context tree -- you can have instant access to whatever you use the most via the Favourites, which work like "shortcuts" or "quick links" leading to various contexts. The Favourites are easy to locate in all AggreGate user interfaces. For example, this is what they look like in AggreGate Client:
The following columns are displayed in the table: Number: This is the line number of the favourite in the table. Description: This is a textual description of the action which will be executed (can be changed by the user). Server: This is the server on which the favourite is configured. Context Mask: This is the context mask 865 to which the favourite applies or description of the context resolves to a single context (i.e, does not contain any wildcards).
863 ,
if the mask
Action: This is the description of the Action which will be executed on the context mask when the favourite is launched. Every line in the table functions as a link. When the line is clicked, the Favourite is launched. You can click any column. In the AggreGate Client, when a workspace 779 contains several server connections, the resulting favourites table includes all favorites that are available under all accounts. In effect, the favourites are collected from all AggreGate Server connections and displayed in one unified table in the AggreGate Client. This lets you use just one Favourites table to navigate all over your "AggreGate Universe". Unlike actions launched "directly" (e.g. from the System Tree facility may use custom execution parameters 896 . Every user
108 784
AggreGate Server
627
1211
Administering Favourites
Two contexts 863 are used to administer the automatically started actions: One is the general Favourites 697 context, which serves as a container. The other is the Favourite 699 context, which holds the information for one particular favourite item.
You can
Field Description Description. Textual description of the favourite. This is also a description
Favourite context.
864
Field Name
of the description
Context Mask
865 . This defines the scope of the favourite. When executed, the favourite action will be launched from all contexts which correspond to this mask.
mask
Action. Name of the action to be launched. Enabled. The favourite can also be disabled (hidden from favourites list). Parameters. Action execution parameters
896 . 700
of AggreGate.
To make a favourite connected from a provider server appear in Favourites table of clients connected to a consumer server, make sure that the context path of connected favourite context on the consumer server matches users.*. favourites.* context mask, i.e. the remote favourite appears among local favourites.
628
AggreGate Documentation
3.19 Scripts
Scripts allow AggreGate Server administrators and privileged users to execute custom pure-Java code within a Java Virtual Machine (JVM) that runs AggreGate Server. Every script is executed inside server core and has access to all inmemory objects and structures of the server. Thus, scripts are very powerful tool that provide an ability for a full realtime control of the server. Scripts are executed in server JVM and their permissions are not restricted in any way. See Script Security for more information.
631
Script Interface
Scripts are written in Java. Every script is a single Java class that must implement a Script interface: public interface Script { public DataTable execute(ScriptExecutionEnvironment }
environment,
DataTable
parameters)
throws
ScriptExc
This interface declares a single execute() method that is called by AggreGate Server when script is executed. There are two ways to launch a script: Manual execution by calling the execute 748 action of a Script be of any format) will be directly passed to the script.
748
854
(that may
Automatic execution on AggreGate Server startup. The script is executed by the server automatically during startup if the Launch Automatically Upon Server Startup flag is enabled in stript properties 629 . In this case, no input will be passed to a script. The script may return some data in the form of Java DataTable object. This table is returned by the execute 750 function of the Script context. If script returns NULL, a single-cell table with nullable string field is returned by the execute function.
Execution Environment
Every script has access to an object implementing ScriptExecutionEnvironment interface that is passed as an argument to execute() method. Here is what ScriptExecutionEnvironment interface look like: public interface ScriptExecutionEnvironment { public abstract CallerController getCallerController(); } Instance of ScriptExecutionEnvironment provides access to an object implementing CallerController interface (it is obtained by calling getCallerController() method). This object incorporates permissions of a user that initiated script execution. CallerController object is passed as an argument to most of context 863 -related operations (Get Context, Get/Set Variable, Call Function, Add/Remove Event Listener etc.) When a script is launched automatically during server startup, its execution environment contains a system CallerController that suppresses all permission checking.
Developing Scripts
See Programming Guidelines
980
Script Template
When a new script is created, its text is not empty. It contains an auto-generated stub of a class implementing Script interface with an empty execute() method. Here is the default script text: import import import import com.tibbo.aggregate.common.context.*; com.tibbo.aggregate.common.datatable.*; com.tibbo.aggregate.common.script.*; com.tibbo.linkserver.*;
AggreGate Server
629
import import
com.tibbo.linkserver.context.*; com.tibbo.linkserver.script.*;
DataTable
parameters)
throws
ScriptExc
Note, that %ScriptClassNamePattern% will be replaced by an auto-generated Java class name during compilation. Do not change this part of the script to avoid compilation problems. After you've put some meaningful code inside the body of execute() method, you may try to execute a script. Note, that script is re-compiled by Java compiler upon every execution. Any compilation errors are reported to the user. See description of Execute 748 action for more information.
Administering Scripts
Two contexts 863 are used to administer the scripts: One is the general Scripts 747 context, which serves as a container. The other is the Script 748 context, which holds information for one particular script.
Every user
108
Built-In Scripts
Currently, just one pre-defined script is bundled into the core AggreGate Server distribution. This script is called SLA Breakdown Date Calculator , and it's described in Predicting SLA Breakdowns 1276 tutorial.
Field Description
Script Name . Name of the script context 748 , required to refer to this script from other parts of the system. It should satisfy the context naming conventions 863 . Script Description. Textual description of the script. This is also a description the Script context. Script Text. Script source in Java programming language. Launch Automatically Upon Server Startup. Flag that forces server to launch script during startup. These properties may be accessed through the childInfo
749 864
Field Name
name
of
description
text autorun
variable.
630
AggreGate Documentation
The script will receive three strings "123", "456" and "789" as an input (see specifying context function input parameters in the reference 927 for details). It may convert these strings to numbers, perform necessary calculations on them and return the result.
public class %ScriptClassNamePattern% implements Script { public DataTable execute(ScriptExecutionEnvironment environment, DataTable parameters) throws ScriptExc { try { // Getting context of a Device Server Context con = LinkServer.getContextManager().get("users.admin.deviceservers.c1", environme if (con == null) { throw new }
ScriptException("Device
Server
not
available");
// Getting IP address variable DataTable val = con.getVariable("IP_setting", environment.getCallerController()); // Changing IP address val.rec().setValue("IP_setting", "192.168.1.235"); // Writing new value of variable con.setVariable("IP_setting", environment.getCallerController(), val); // Rebooting Device Server con.callFunction("reboot", environment.getCallerController()); return null; } catch { (ScriptException ex)
AggreGate Server
631
Script Execution
To let another user execute scripts, set his permission level execute all scripts in this context.
932
in Scripts
747
To allow execution of a single script, set the user's permission level in that Script
context to Admin.
Script Modification
Only users that have Administrator effective permission level 932 in the Script context may modify script configuration and code. This ensures maximum security for script operations.
Once the Control Center is open, you can select one of the following options: Install and launch AggreGate Client. Installs and immediately launches AggreGate Client in the Java Web Start mode 776 .
632
AggreGate Documentation
776 .
Open AggreGate Client in the Browser. Immediately starts AggreGate Client in the browser window Open Web Desktop (beta version). Allows to access the Web Desktop Desktop is enabled 59 .
632 .
Open Web Services Admin Console. Opens administration console for Web Services
827
Otherwise, Web Desktop provides full configuration, control and monitoring functionality for AggreGate Server, all its resources (alerts, user accounts, trackers, etc.) and all connected devices. Currently, the Web Desktop is in BETA-testing stage. The current Web Desktop version will not let you access several vital options. To access AggreGate Server in a production environment, please use AggreGate Client desktop application.
776
section of AggreGate Server Global Configuration to find out details of embedded web
If Enable non-secure access to web applications 60 global configuration setting is active, it is also possible to access the Web Desktop via a non-secure connection using this URL:
http://xxx.xxx.xxx.xxx:8080/wd
AggreGate Server
633
If AggreGate Server uses non-standard port numbers (secure 60 and/or non-secure 60 ) to accept web connections, the connection to Web Desktop using the above URLs will fail. In this case: Check current port numbers in AggreGate Server configuration file 52 or by connecting to AggreGate Server using AggreGate Client 776 and browsing global configuration Substitute port number in one of the above URLs and try accessing the server again
Connection Troubles
If you still cannot access the Web Desktop after verifying that it's active and you are using correct URL, try the following: Check AggreGate Server log file
74
If it doesn't give you a hint, send the log file to Tibbo for analysis
Enter your username and password in the auth dialog and click Login to get authenticated and start using Web Desktop. Help link opens the most recent online version of AggreGate documentation. Register link allows to create a new AggreGate Server user account global configuration option is enabled.
108
54
634
AggreGate Documentation
Self-registration
Once you've clicked Register link in the auto dialog, you will be redirected to a self-registration page:
Enter your desired username, password and other information in the form and click on Register to create a new user account. You will be redirected to the login form again.
Logout
To log out from the Web Desktop, click on the Log Out button on the main window toolbar before closing browser window.
AggreGate Server
Default layout of the main dashboard includes the following parts: A System Tree
636 637
635
window
651
window
640 ,
Widget
312 ,
643
3.21.3.1 Toolbar
The Web Desktop toolbar includes several buttons: Close/Open System Tree. Toggles visibility of System Tree Close/Open Close/Open Favourites. Toggles visibility of Favourites Trackers. Toggles visibility of Trackers
651 . 636 . 633 . 651 . 636 .
Log out. Finishes Web Desktop work session and de-authenticates current user. Redirects to the login form
636
AggreGate Documentation
863
to check the difference between context tree visible in System Tree and real server context
For some nodes, the context menu also contains a "Group Actions" submenu. It contains action you can apply on every child of the current node. See action grouping 894 for more info. Here's what the System Tree context menu for a Device node looks like:
AggreGate Server
637
Both parts have a toolbar that helps to access frequently used functions. In the left part of both toolbars the is a drop down box that allows to select an Event Filter. Initially, these the selected filter is <Empty Filter> what means that no events are shown. In some cases Event Log component shows a predefined set of event types. In this case list of Event Filters and related buttons ("Reactivate Filter", "Configure Filter") are not available. It is possible to sort events. To enable sorting, click on the column header. Subsequent clicks will change sorting order for this column between ascending and descending. Clicking on a button in the Data column next to any event opens Data Table 643 .
854
Event Log uses Date Pattern , Time Pattern and Timezone settings specified in User Account Properties to properly convert and render different timestamps. All date/time values are shown in active user's timezone.
110
638
AggreGate Documentation
206
that will be used to filter events that will be shown in the log.
Reactivate Current Filter. This operation allows to re-enter filter parameters. Configure Current Filter. Edit settings of currently selected filter.
View Severity Statistics. Shows the number of events of each level Export . Exports
640
882
Clear Current Events . Clearing the current events table doesn't remove these events from the server and doesn't prevent new events from appearing in the table.
selected in the drop-down box is used to filter out events that will be shown.
Reactivate Current Filter. This operation allows to re-enter filter parameters. Configure Current Filter. Edit settings of currently selected filter.
View Severity Statistics. Shows the number of events of each level history. Export . Exports
640
882
Only events shown in the currently selected range will be exported. To export larger number of events, increase value in Events combo box (see below). Refresh. Refreshes event history. This operation causes the server to reload the history according to the current filter. The actual visible events may change after this operation. First. Scrolls history list to the first page. Previous . Loads previous page of the history list. Next. Loads next page of the history list. Last. Scrolls history list to the last page. The Events combo box in the middle of toolbar defines how many events are shown at once. The total number of events corresponding to the filter and range of currently shown events is indicated in the right part of toolbar.
643 .
Acknowledge Event. Allows user to set event acknowledgement. This operation is available only for persistent events.
AggreGate Server
View Acknowledgements . View event acknowledgements in the Data Table Editor
643 .
639
Delete Event. Permanently delete event from event history. This operation is available only for persistent events. Event context menu also contains a Related Actions submenu with list of actions event was occurred or related to the event 895 itself.
892
863
where
For example, for a Device-related event, "Reboot Device", "Configure Device" and other operations may be shown. Event context menu example:
When acknowledgement is set, its time, author and text appear in the Acknowledgements column of the events table:
640
AggreGate Documentation
Technically, the Properties Editor allows changing the values of one of more variables 869 (properties) of a context. When the editor starts up for a given context, it loads the value of every variable for the context, and then allows the user to edit these values and writes them back to the context. Every property (variable) is edited in a separate Data Table Editor single Data Table 854 . The Properties Editor consist of a Toolbar and a Properties Pane:
643
Toolbar
Reload. Reloads values of all properties from the source context. Values that were recently changed in the editor are lost. Save . Saves values of changed properties to the source context. Saved values are marked as unchanged. Import properties. Import Export properties. Export
800
800
If Properties Editor is shown on a separate page, it has OK and Cancel buttons. The OK button saves the values of any properties which were modified, and closes the dialog. The Cancel button aborts the operation without saving. Most elements of the Properties Editor, as well as the actual properties, often have tooltips. These appear when the mouse cursor hovers over the element for some time.
AggreGate Server
641
Context Menu
The context menu is shown when right-clicking one of the properties in the Properties Editor. It contains a list of Variable-Related Actions 895 that "know" what to do with the selected variable. The number and types of available Variable-Related actions depend on the type of variable for which the context menu is shown.
The property's name and detailed description are shown in a tooltip of its tab:
642
AggreGate Documentation
EXPANDED MODE
In Expanded Mode, properties are grouped according to their variable group a separate tab. Group names are shown as tab headers.
870 .
Properties of every group are represented as a table with two or three columns. The first column is optional, and may contain a status icon for the property. The properties editor constantly monitors the status of every variable and updates the status icon with every change. Hovering the mouse over the icon pops up a tooltip with the status details:
The Property column contains property descriptions. Cell tooltips provide information about each property's name and its detailed description:
The Value column's contents changes according to the variable definition 869 of the context being edited. If the Data Table 854 representing the value of a property always has just a single field with a single record, the Data Table Editor 643 is shown directly in the third column. In other cases, the third column will contain a [...] button, which would open a Data Table Editor on a separate page. A Data Table Editor that is embedded into the table is marked in red on the picture below:
AggreGate Server
643
Properties can be exported to and imported from external files. By default, property files have a .prs extension. Properties are imported by name: if the Properties Editor contains a property with the same name as one saved in the file, their values are merged by a Data Table Smart Copy 861 operation. Properties import procedure cannot just override values contained in the editor with ones read from a file because they may have different format 855 . But in any case the best efforts are made to import as much data as possible.
It is used:
to edit context
863
variables
869 880
Most elements of the Data Table Editor, such as column headers and data cells, usually have tooltips which pop up when the mouse hovers over the element. The tooltip for the column header contains the field type and help string specified in the table's format
855 ,
if any.
The tooltip for a cell contains a string representation of the cell's value, and the type of field used for this cell. For example, it may be useful: If a cell's value too long to fit into the cell itself, If the cell editor has selection values box.
856
and you want to see the value itself, not its description from the drop-down
If cell tooltip provides some important extended information, the cell is marked with a small blue triangle:
644
AggreGate Documentation
Data Table Editor uses Date Pattern , Time Pattern and Timezone settings specified in User profile properly convert and render different timestamps. All date/time values are shown in active user's timezone.
110
to
Single record mode is used by the DTE when the table being edited contains just one record, and no extra records may be added. This mode features a two-column layout: the left column shows field names, and the right one contains values:
Toolbar
The Data Table Editor toolbar provides access to the operations that may be performed with the data table Add Row
854 .
Insert a new row before the currently selected one. If no row is selected, a new row is added to the end of table. This button is disabled or hidden if rows may not be added to the table.
AggreGate Server
645
Remove the currently selected row(s). This button is disabled or hidden if rows may not be removed. Move current row up. This button is not shown if rows may not be reordered. It changes actual data in the table (in contrast to the sorting operation, which merely changes how the data is shown.) Move currently row down. This button is not shown if rows may not be reordered. It changes actual data in the table (in contrast to the sorting operation, which merely changes how the data is shown.) Undo all changes that were made to the table. This button is enabled only after a change is made. Imports Exports
649
Reset Changes Import Data Table Export Data Table Make Report
649
Generate a report
Some (or even all) toolbar buttons may be hidden or disabled if their respective operations are not available in the editor. A button is hidden if the operation is not applicable to the current table at all. If an operation is simply not available at the moment (e.g. the Remove Selected Rows is disabled when no rows are selected), its button is disabled.
Special Renderers/Editors
There are some special cases when non-standard editors are used:
646
AggreGate Documentation
If Extendable Selection Values 856 flag is set in Field Format, any custom value can be typed in the text field next to the combo box if Other option is selected in it:
Standard Renderers/Editor
STRING/INTEGER/LONG/FLOAT FIELDS
Integer, Long, String and Float values are edited in a normal text field:
BOOLEAN FIELDS
Boolean values are edited using checkboxes and are represented by Yes (for TRUE) or No (for FALSE) in read-only mode:
DATE FIELDS
Date and Date/Time values are edited using a Date Picker:
COLOR FIELDS
Colors are selected using a Color Picker:
AggreGate Server
647
Additional Renderers/Editors
DATE-ONLY EDITOR
Date-only editor allows to specify a date using Date Picker, but time specification is not allowed:
TIME-ONLY EDITOR
Time-only editor allows to specify a time in string form, but date cannot be selected:
BAR RENDERER
Bar renderer shows Integer , Long , Float and String values as percentages of maximum defined by Editor Options:
PERIOD EDITOR
Period editor allows to specify a time period as a certain number of selected time units:
648
AggreGate Documentation
PASSWORD EDITOR
Password editor is very similar to the usual text area, but types characters are now shown:
REFERENCE RENDERER
Reference editor displays clickable references in blue underlined font:
TEXT AREA
Long String values can be alternatively viewed and edited in a Text Area editor:
649
SOUND/IMAGE/FILE EDITORS
Data Block fields may contain images, sounds or generic files. Files, sound and images are inserted into the cells using a File Selector:
Images contained into the Data Table are displayed as a thumbnail (see previous screenshot). Clicking on a thumbnail opens a full-size image view.
AggreGate Server
Sounds can be played back by clicking on the Play button.
649
Reset Cell To Default Fill Column With Cell Value Reset Table View Table Format
of current table.
When the Data Table Editor is being used to modify the value of a context variable 869 (as opposed to raw data coming from another source), the context menu within the editor contains additional actions related to this variable 895 .
variables
869 ,
functions
878 ,
events
880
to check the difference between context tree visible in Entity Selector and real server context
Content can be filtered so that only certain entity types are shown for selection. Here is what the Entity Selector looks like when used to select a single context:
650
AggreGate Documentation
2. The Entity Selector is used to select contexts and context masks when editing context path/mask fields in a Data Table Editor 643 .
AggreGate Server
651
3.21.9 Favourites
The Favourites window displays a list of Favourites
626 .
651
and, thus, provides the same toolbar, context menu, and other
Context menu of the favourites table has two additional items: Configure. Starts Configure Favourite Delete. Starts Delete Favourite
905 904
action.
action.
3.21.10 Trackers
The Trackers window displays a list of Trackers
257 .
643
and, thus, provides the same toolbar, context menu, and other
Context menu of the trackers table has two additional items: Configure. Starts Configure Tracker Delete. Starts Delete Tracker
905 904
action.
action.
which apply to this context only. which apply to many different contexts in AggreGate Server.
Advanced information about the context. Available context states Context variables
869 865
652
AggreGate Documentation
878
3.22.1 Administration
This context is a system context that provides access to different data related to the overall operation of AggreGate Server. It is not shown in the visible context tree.
Advanced Information
Context Information
Context Type Context Name
864
: administration : administration
864
863
: Administration
: administration : administration
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. No access allowed. No access allowed. No access allowed. No access allowed. All operations.
[?
869 ]
[?
878 ]
885
LOG
Fired when some message is added to a server event log Event Name Permissions:
Expiration Period: log
74
79
932
AggreGate Server
653
Notes Message level. Message text. Message cause (exception stack trace). Server thread that produced the message. File and line number of the message source.
ACTION
Fired when a system operator 108 executes an action 892 , or an action is automatically executed by one of the server components (e.g. upon schedule 266 or alert 216 ). Event Name Permissions:
Expiration Period: action
932
:
Field Type String Integer Notes Username of system operator Execution mode. The following modes are distinguished: Normal. The execution was initiated by a human operator. Redirect . This action was started by some other action. Batch. Multiple actions were started at once. Headless . Generic automatic execution mode, i.e. when an action is executed under control of a server plugin 950 . Alert. Alert's corrective action mode. Scheduler. Scheduled job mode.
Path of context
863
Fired when AggreGate Server receives an incoming email message. Event Name Permissions:
Expiration Period: email
932
654
AggreGate Documentation
FAILOVER
87
932
: none.
3.22.2 Alerts
This context
863
216
Unique Actions
893
)
229
This action is used to create new alert. It allows the user to specify the basic properties configure it immediately after creation.
Create
905 932
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
Variable-Related Actions [?
CREATE ALERT
895 ]
This action creates a new alert with a single Variable State Trigger 217 . User is prompted to select which variable fields will be checked by the trigger expression and specify comparison operators for them.
Event-Related Actions [?
CREATE ALERT
This action creates new alert with a single Event Trigger 222 that raises the alert if an event of this type occurs. User is prompted to select which event fields will be checked by the trigger expression and specify comparison operators for
AggreGate Server
them. If no fields were selected, any event occurrence will trigger the alert.
655
icon.
Advanced Information
Context Information
Context Type Context Name
864
: alerts : alerts
864 :
863
Alerts
: users.USER_NAME.alerts : users.*.alerts
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Alert creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates new alert.
1
: Same as childInfo
657
variable in Alert
656
context.
0
none
Public Events [?
656
AggreGate Documentation
885
3.22.3 Alert
This context
863
216
Unique Actions
893 ) 229
of alert.
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
Action Type:
Configure
904
This shows a list of pending 236 alerts using Show Event Log 898 UI Procedure. This action is normally used to acknowledge 228 the pending alert instances in order to deactivate them.
Action Name: Non-Interactive Mode 893 : Permissions: pendingAlerts Not Supported Accessible at Observer permission level [?
651 ] 909 , 932
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
906 ,
909 ,
View Status
910
Alert is escalated
Advanced Information
Context Information
Context Type Context Name
864
863
provided by user
: users.USER_NAME.common.ALERT_NAME : users.*.alerts.*
865
865
Context Permissions [?
AggreGate Server
657
Description No access allowed. Receiving the alert. Basic event monitoring. Status browsing.
Same as Observer. Alert configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
875 ,
875
ALERT PROPERTIES
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name name description enabled message expressions
855
229
childInfo
Nullable
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name
855
230
eventTriggers
mask event
658
AggreGate Documentation
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name mask variable filter monitorStateChange period delay level deactivator deactivationDelay message
855
230
variableTriggers
ALERT NOTIFICATIONS
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name notifyOwner ackRequired
855
231
notifications
AggreGate Server
659
Data Table
ALERT ESCALATION
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name pending numberEscalation numberThreshold timeEscalation timeThreshold
855
232
escalation
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name mask action input condition runFromSource
855
232
alertActions
233
660
AggreGate Documentation
interactiveActions
ALERT STATUS
The variable contains different run-time alert parameters, such as number of pending alert instances. The variable is shown by View Status 910 action. Variable Name: Records: Permissions: Record Format
Field Name
855
status
Indicates whether alert is enabled. Number of pending (non-acknowledged) alert instances. Life time of the oldest pending alert instance. Indicates whether alert is escalated. Escalation reason(s).
ACTIVE INSTANCES
235
and pending
236
alert instances.
activeInstances
(hidden field).
235
and Pending
236
AggreGate Server
661
Alert raise time. Alert level. Alert source context, i.e. context those event/state has originated the alert. Alert message. Alert trigger message. Alert cause. Alert data.
Table indicating statuses of individual event triggers action. Variable Name: Records: Permissions: Record Format
Field Name trigger active details
855
222
910
eventTriggerStatus
Table indicating statuses of individual variable triggers action. Variable Name: Records: Permissions: Record Format
Field Name trigger active details
855
217
910
variableTriggerStatus
662
AggreGate Documentation
Flag indicating whether trigger is active for the above context. Time elapsed since the registration of activating condition (if inactive) or deactivating condition (if active). Once this time exceeds Period (or Deactivation Period), trigger will activate (deactivate). Flag indicating whether flapping is detected for the above context.
Public Functions
[?
878 ]
Public Events
[?
880 ]
885
890
ALERT
See description of the event and its fields here Event Name Permissions:
Expiration Period: alert
224
932
:
Notes
Field Type
Alert name. Alert description. Context defining event/variable that has triggered an alert. Name of variable if alert was triggered by variable state/state change or name of event if alert was triggered by event Alert cause. Alert message. Alert trigger message. Alert data.
625
Unique Actions
664
(Default Action
893
AggreGate Server Launches all Auto Run actions that are defined by the children of this context exactly like they're launched on startup. Useful for testing.
Action Name: Non-Interactive Mode 893 : Permissions: autorun Not Supported Accessible at Observer permission level [?
651 ] 932
663
Common Actions
Create From Template
905
, Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions 906 , Monitor Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
icon.
Advanced Information
Context Information
Context Type Context Name
864
: autorunActions : autorun
864
863
: Auto Run
: users.USER_NAME.autorun : users.*.autorun
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Auto run action creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates new Auto Run action.
664
AggreGate Documentation
855
Input Format
665
664
context.
Public Events
[?
885
)
895
This action adds a new action that will be automatically launched on startup. This Drag and Drop action accepts contexts of any type. Action Flow: 1) Select a context as described in Drag and Drop Actions 2) Specify
896 895
3) A new Auto Run Action context is created with the parameters specified in (1) and (2).
Action Type: Action Icon: Action Name: Non-Interactive Mode 893 : Permissions: add Not Supported Accessible at Manager permission level
932
895
625
action.
Unique Actions
893
)
626
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
Action Type:
Configure
904
LAUNCH ACTION
AggreGate Server
665
Common Actions
Delete
Status
905
[?
908
651 ]
, Make Copy
, Replicate
909
906
909 ,
View
910
Advanced Information
Context Information
Context Type Context Name
864
863
: provided by user
: users.USER_NAME.autorun.AUTORUN_ACTION_NAME : users.*.autorun.*
865
865
Context Permissions [?
Level None Observer Description
No access allowed. Auto run action execution. You should also have enough permissions to access the action that the auto-run item points to.
Basic event monitoring. Status browsing. Operator Manager Engineer Administrat or Same as Observer. Auto run action configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
875 ,
875
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
855
626
666
AggreGate Documentation
Public Functions
[?
878 ]
Public Events
[?
880 ]
885
890
668
Unique Actions
893
)
264
This action is used to create new Common Table. It allows user to specify basic properties table and configure it immediately after creation.
Action Type: Permissions: Create
905 932
of a new
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
icon.
Advanced Information
Context Information
Context Type Context Name
864
: commonData : common
864
863
Context Description
: Common Data
667
: users.USER_NAME.common : users.*.common
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Common table creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions [?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates new common table.
1
:
669
668
context.
1
: Name Type Description
context variable
String String
0 None
880 ]
Public Events
[?
668
AggreGate Documentation
885
article.
3) A new Common Table is created. Action Type: Action Name: Non-Interactive Mode 893 : Permissions: Drag and Drop
895
260
Unique Actions
264
of a common table.
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
Action Type:
Configure
893 )
904
263
of a common table.
Configure
editData [?
651 ]
904
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
909 ,
906 ,
909 ,
View Status
910
icon.
Advanced Information
Context Information
Context Type
864
: commonDataTable
669
: provided by user
864
: provided by user
: users.USER_NAME.common.COMMON_TABLE_NAME : users.*.common.*
865
865
Context Permissions [?
Level None Observer Description
No access allowed. Basic event monitoring. Status browsing. Common table contents browsing.
Operator Manager
Common table contents editing. Common table fields and properties configuration. Common table removal.
Engineer Administrat or
[?
869 ]
875 ,
validity (Validity)
876 ,
875
TABLE PROPERTIES
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format Field Name name description minRecords maxRecords recordPermissions
FIELDS
855
264
childInfo
1 Readable at Observer permission level : Field Type String String Integer Integer Boolean Notes
1-50 characters 1-50 characters
932
See description of the variable and its fields here Variable Name: Records:
fields
264
0...unlimited
670
AggreGate Documentation
932
Field Type String String String String Boolean Boolean Boolean Data Table Boolean String String
Key field, value may contain only letters, numbers and underscore.
CUSTOM PROPERTIES
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name enabled validityExpressi on validityListeners
855
265
customProperties
Data Table
COMMON TABLE
This variable is used to access and change data of the common table. Variable Name: Records: Permissions: Record Format
TABLE STATUS
855
value
Depends on minRecords and maxRecords fields of Table Info Readable at Observer permission level : dynamic, depends on the value of Fields
932 669
669
variable.
AggreGate Server This variable some common table status metrics. Variable Name: Records: Permissions: Record Format
Field Name modified
855
671
status
Public Functions
Public Events
[?
880 ]
885
3.22.8 Config
This context is a system context that provides access to AggreGate Server global configuration is not shown in the visible context tree.
53
. It
Advanced Information
Context Information
Context Type Context Name
864
: config : config
864
863
: Config
: config : config
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. No access allowed. No access allowed. No access allowed. No access allowed. All operations.
[?
869 ]
This context defines one public variable per every setting group described in Global Configuration Options 53 . Please, see this section for more information about format of these variables and descriptions of their fields.
Public Functions
[?
878 ]
672
AggreGate Documentation
Public Events
[?
880 ]
885
3.22.9 Dashboards
This context
863
617
Unique Actions
893
)
623
This action is used for creating new dashboards. It allows user to specify basic properties new dashboard and configure it immediately after creation.
Action Type: Permissions: Create
905 932
of the
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
icon.
Advanced Information
Context Information
Context Type
Context Name
864
: dashboards
863
: dashboards
864 :
Dashboards
: users.USER_NAME.dashboards : users.*.dashboards
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Dashboard creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
AggreGate Server
673
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates new dashboard.
1
: Same as format of childInfo
674
variable in Dashboard
673
context.
0
none
880 ]
Public Events
[?
885
3.22.10 Dashboard
This context
863
617
Unique Actions [?
CONFIGURE
623
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
Action Type:
Configure
[?
651 ]
904
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
909 ,
906 ,
909 ,
View Status
910
Advanced Information
Context Information
674
AggreGate Documentation
864
863
: provided by user
: users.USER_NAME.dashboards.DASHBOARD_NAME : users.*.dashboards.*
865
865
Context Permissions [?
Level None Observer Description
No access allowed. Opening the dashboard. Basic event monitoring. Status browsing.
Same as Observer. Dashboard configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
875 ,
validity (Validity)
876 ,
875
PROPERTIES
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format Field Name
name description title type validityExpression validityListeners
855
623
: Field Type
String String String Integer String Data Table
Notes
1 - 50 characters 1 - 50 characters Nullable
ELEMENTS
See description of the variable and its fields here Variable Name: Records:
elements
624
0...unlimited
675
932
Public Functions
[?
878 ]
Public Events
[?
880 ]
885
3.22.11 Devices
Thiscontext
863
113
of a certain user
108
Unique Actions
893
This action is used to add a new Device to the system. It consists of several steps:
1. User is prompted to specify 896 Device name (i.e. name of Device Context Device Driver 129 that will communicate with Device). 2. A new Device Context
677
677
2. The user configures the connection properties for the new Device using an Edit Properties Procedure.
Action Name: Action Icon: Permissions: Accessible at Manager permission level
932
UI
create
902
This context may provide some other unique actions, depending on the Device Driver 129 managing it. For example, if it is managed by an AggreGate Agent 130 driver, it will contain a Configure Agent action, to configure an Agent 848 application. Action Name: Action Icon: guide
676
AggreGate Documentation
Common Actions
Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions 909 , various Grouped Actions 894 according to child contexts.
906 ,
909 ,
Search/Filter
icon.
Advanced Information
Context Information
Context Type Context Name
864
: devices : devices
864
863
: Devices
: users.USER_NAME.devices : users.*.devices
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Device creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
ADD DEVICE
Creates new device account.
1
: Name Type Description
AggreGate Server
677
driver
name
String
String
129
description
Output Records: Output Format
855 :
String
Account description.
0 None
880 ]
Public Events
[?
885
3.22.12 Device
This context
863
113 .
Unique Actions
Some actions of this context depend on the type of Device represented by it. AggreGate Server creates one Call Function 903 action in this context per every operation provided by Device. Actions corresponding to the Device operations are accessible at Operator permission level 932 .
Groups of settings, operations and events that should be synchronized and made available within AggreGate Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
Configure setup
904
932
)
for the device. If no relevant dashboards are found, simply starts Configure
948
manage
CONFIGURE DEVICE
This action is used to edit the settings of a hardware Device. New setting values are stored in the server cache during editing and written to the actual Device on next synchronization. See description of the Device Driver 129 that manages
678
AggreGate Documentation
Device for more information. This context may provide some other unique actions, depending on the Device Driver 129 managing it. For example, if it is managed by an AggreGate Agent 130 driver, it will contain Device-specific actions.
Action Type:
Configure
904
Configure
904
configureDynamically
SYNCHRONIZE
This action immediately starts synchronization between AggreGate Server and Device. Action Type: Action Name: Action Icon: Permissions: Accessible at Operator permission level
932
903
903
Common Actions
Delete
905
, Replicate
909 ,
909 ,
View Status
910
Variable-Related Actions [?
AggreGate Server
679
Icon
Code 20 21 22 23 30 31 32 33 40 41 42 43 50 51 52 53 70 71 72 73 80 81 82 83 90 91 92 93
State Offline, synchronized Online, synchronized Suspended, synchronized Connection status unknown, synchronized Offline, waiting for synchronization Online, waiting for synchronization Suspended, waiting for synchronization Connection status unknown, waiting for synchronization Offline, synchronization error Online, synchronization error Suspended, synchronization error Connection status unknown, synchronization error Offline, not synchronized or synchronization in progress Online, not synchronized or synchronization in progress Suspended, not synchronized or synchronization in progress Connection status unknown, not synchronized or synchronization in progress Offline, connecting (extended status only) Online, connecting (extended status only, reconnection has been requested by AggreGate Server) Suspended, connecting (extended status only, means that Device has been suspended during connection attempt) Connection status unknown, connecting (extended status only) Offline, reading metadata (extended status only, means that connection has been lost during metadata reading and synchronization is being interrupted) Online, reading metadata (extended status only) Suspended, reading metadata (extended status only, means that Device has been suspended during metadata reading) Connection status unknown, reading metadata (never occurs in practice) Offline, synchronizing settings (extended status only, means that connection has been lost during settings synchronization and it is being interrupted) Online, synchronizing settings (extended status only) Suspended, synchronizing settings (extended status only, means that Device has been suspended during settings synchronization) Connection status unknown, synchronizing settings (never occurs in practice)
Advanced Information
Context Information
Context Type Context Name
864
863
Context Description
680
AggreGate Documentation
863
: users.USER_NAME.devices.NAME_OF_THIS_CONTEXT : users.*.devices.*
865
865
Context Permissions [?
Level None Observer Description
No access allowed. Device settings browsing. Basic event monitoring. Status browsing.
Operator
Device settings editing. Executing device operations. Device event monitoring. Explicit device synchronization requesting.
Manager
Device account properties configuration. Device removal. Device driver resetting. Viewing statistical data.
Engineer Administrat or
[?
869 ]
Some public variables of this context depend on the type of Device represented by it. AggreGate Server creates one public variable in this context per every Device setting. Variables corresponding to the Device settings are readable at the Observer permission level 932 and writable at Operator permission level. Common Variables: groupMembership (Group Membership)
875 ,
875
123
of the Device.
genericProperties
AggreGate Server
681
STATISTICS CHANNELS
This variable allows to manage statistics channels Variable Name: Records: Permissions: Record Format
Field Name name variable properties
855
117
of this Device.
statisticsProperties
of the channel.
Contains Per-Setting Synchronization Options Variable Name: Records: Permissions: Record Format
Field Name name description mode updateHistoryStor ageTime syncPeriod filter master
855
115
of the Device.
settingSyncOptions
ASSETS
113
provided by Device.
0...unlimited
682
AggreGate Documentation
932
Human-readable description of the asset. Flag indicating whether asset is enabled and its members (settings, operations and events) are available within AggreGate. List of nested assets. It has the same format as this variable.
children
Data Table
STATUS
Returns status of the Device. Variable Name: Records: Permissions: Record Format
Field Name
855
status
status
String
Custom textual device status. Calculated by the Status Expression 125 , which is a setting of device account. Custom device status color. Calculated by the Color Expression , which is a setting of device account. Device Driver Date/time of last synchronization between AggreGate Server and Device. Device connection status.
125
color
Color
driver syncTime
String Date
Integer
Integer String
Returns synchronization status information Variable Name: Records: Permissions: Record Format
Field Name
855
128
settingsStatus
AggreGate Server
683
869
Setting description, i.e. description of setting variable. Date/time of last synchronization. Duration of last synchronization, i.e. time elapsed by device driver for reading/writing settings value from the hardware. Updated on Server flag that is true if setting value was updated in the server cache and new value is not yet written to the hardware. Textual description of current setting synchronization status.
updated
Boolean
syncStatus
STATISTICS
String
This variable is a view of device statistics, i.e. aggregated data collected by device's statistical channels 117 . Variable Name: Records: Permissions: Record Format
Field Name name variable statistics
855
statistics
LOCATION
Returns current location of the device. See Tracking Device Location Variable Name: Records: Permissions: Record Format
Field Name
855
128
for details.
location
latitude longitude
Float Float
Current device latitude in floating point number format. Current device longitude in floating point number format.
VARIABLE STATUSES
684
AggreGate Documentation
Public Functions
Some public functions of this context depend on the type of Device represented by it. AggreGate Server creates one public function in this context per every operation provided by Device. Functions corresponding to the Device operations are accessible at Operator permission level 932 .
SYNCHRONIZE
Starts synchronization between Device and AggreGate Server. See Synchronize action
678
for details.
0
: None
0
none
0
: None
0
none
880 ]
Public Events
[?
Public events of this context depend on the type of Device represented by it. AggreGate Server creates one public event in this context per every type of event that may be generated by Device. Common Events: info (Information)
885
890
AggreGate Server
685
Unique Actions
[?
651 ]
893
)
130
Configure
[?
651 ]
904
Common Actions
Edit Context Permissions child contexts.
906 ,
909 ,
Search/Filter
909 ,
894
according to
icon.
Advanced Information
Context Information
Context Type Context Name
864
863
: "plugins" for global settings, "users.USER_NAME.plugins" for user settings : "plugins" for global settings, "users.*.plugins" for user settings
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Description
No access allowed. No access allowed. No access allowed. No access allowed. No access allowed - for global settings. All operations - for user settings.
Administrat or
All operations.
[?
869 ]
Public Functions
[?
878 ]
Public Events
[?
880 ]
686
AggreGate Documentation
885
129
at certain level
130
Unique Actions
893
This action is used to edit properties of the plugin. See description of plugin for the information about its properties. In contrast to a standard Configure action, the Edit Plugin Properties action prompts to reboot the server when editing is finished. Rebooting is required to activate plugin configuration changes. Action Type:
Configure
[?
651 ]
904
Common Actions
Edit Context Permissions
906 ,
909
icon.
Advanced Information
Context Information
Context Type Context Name
864
: pluginConfig : plugin-dependent
864
863
Context Description
Context Path 863 : "plugins.NAME_OF_THIS_CONTEXT" for global settings, "users.USER_NAME.plugins. NAME_OF_THIS_CONTEXT" for user settings Context Mask 865 : "plugins.NAME_OF_THIS_CONTEXT" for global settings, "users.*.plugins. NAME_OF_THIS_CONTEXT" for user settings
Context Permissions [?
Level None Observer Operator Manager Engineer Description
865
No access allowed. No access allowed. No access allowed. No access allowed. No access allowed - for global settings. All operations - for user settings.
Administrat or
All operations.
[?
869 ]
Every device driver defines its own public variables in this context.
Public Functions
[?
878 ]
AggreGate Server
687
Public Events
[?
880 ]
885
206
Unique Actions
893
)
211
This Create 905 is used to create a new filter. It allows the user to specify basic properties new filter and configure it immediately after creation.
Action Type: Permissions: Create
905 932
for the
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
Variable-Related Actions [?
895 ]
Event-Related Actions [?
CREATE EVENT FILTER
This action creates new single-rule
211
User is prompted to select which event fields will be checked by filter expression and specify comparison operators for them. If no fields were selected, any event occurrence will pass the filter. Action Name: Non-Interactive Mode 893 : Permissions: filterForEvent Not Supported Accessible at Manager permission level
932
icon.
Advanced Information
Context Information
Context Type
864
: eventFilters
688
AggreGate Documentation
863
Context Name
: filters
864
: Event Filters
: users.USER_NAME.filters : users.*.filters
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Filter creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates new event filter.
1
:
689
688
context.
Public Events
[?
885
206
Unique Actions
Parameterize
692
CONFIGURE FILTER
211
of an event filter.
AggreGate Server
689
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
Action Type:
Configure
[?
651 ]
904
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
909 ,
906 ,
909 ,
View Status
910
Advanced Information
Context Information
Context Type Context Name
864
863
: provided by user
: users.USER_NAME.filters.FILTER_NAME : users.*.filters.*
865
865
Context Permissions [?
Level None Observer Description
Same as Observer. Filter configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
875 ,
875
FILTER PROPERTIES
See description of the variable and its fields here Variable Name: Records: Permissions:
childInfo
211
690
AggreGate Documentation
855
Record Format
Field Name name description defaultFilter
:
Field Type String String Boolean Boolean Notes 1-50 characters 1-50 characters
Boolean
Boolean
FILTER RULES
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name description mask event enabled level expression parameterized color
855
211
rules
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name
855
212
shownFields
Field Type
AggreGate Server
691
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name name description edescs shown
855
212
additionalFields
CUSTOM HIGHLIGHTING
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name mask event level expression color
855
210
customHighlighting
213
692
AggreGate Documentation
historySettings
useCustomEndTimePoint customEndTimePoint
Public Functions
GET PARAMETERS
[?
878 ]
Returns an initial (non-filled) parameters table that can be filled and used for activating a parameterized filter
213 .
1
: Name realtime Type Boolean Description Indicates whether a parameters table suitable for real-time (if true) or historical (if false) section of the Event Log should be returned.
0...unlimited Dynamic
880 ]
Public Events
[?
885
event filter.
3. The server generates parameterization data and stores it in filter properties. 4. A parameterized filter is opened for editing using the Edit Properties
Action Name: parameterize
897
UI Procedure.
AggreGate Server
693
3.22.17 Events
This context is a system context that provides access to different data and operations related to event 880 management. It is not shown in the visible context tree.
Unique Actions
[?
651 ]
Advanced Information
Context Information
Context Type Context Name
864
: events : events
864
863
: Events
: events : events
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Description
No access allowed. Accessing event history. Acknowledging events. Deleting events. Mass-deleting events. Explicitly removing expired events.
Administrat or
All operations.
[?
869 ]
Public Functions
[?
878 ]
ACKNOWLEDGE EVENT
Adds a new acknowledgement
882
to the event.
694
AggreGate Documentation
acknowledge Accessible at Operator permission level
932
1
: Name Type Description
Context of the event to acknowledge. Name of the event to acknowledge. ID of event to acknowledge. Acknowledgement text. Acknowledgement author (optional field, username of the active user is used if author was not specified). This is just a plain text field; it is not actually linked to a system user, and thus should not be considered auditable (always accurate).
0 None
ENRICH EVENT
Adds a new enrichment
883
to the event.
1
: Name Type Description
Context of the event to acknowledge. Name of the event to acknowledge. ID of event to acknowledge. Enrichment name. It can contain only English letters, numbers, and underscores. Enrichment value string. Numbers, dates and other types of enrichments should be encoded into strings using any method preferred by tools that are supposed to analyze this enrichment later.
String
0 None
DELETE EVENT
Permanently deletes event from event history.
AggreGate Server
695
0...unlimited
: Name Type Description
context event id
Output Records: Output Format
855 :
Path of context event was occurred in. Name of event. Event ID.
0 None
0
:
None 0 None
0
: Name Type Description
mask
String
Context mask defining a number of context to select events from. Event type name. Text of expression 911 to use for event filtering or NULL to disable filtering.
Timestamp used to select only events which occurred after a certain date. If it is NULL, all oldest events will be selected. Timestamp used to select only events which occurred before a certain date. If it is NULL, all recent events will be selected.
event filter
String String
fromDate
Date
toDate
Date
696
AggreGate Documentation
dataAsTable
Boolean
This is a hidden field. If false (default), each event data table's field is put to a separate field of function output. If true, each event's data table is put to a single field (DataTable-type) or function output.
sortField
String
This is a hidden field. It defines event sort order: context - sort by source context path name - sort by event type name creationtime - sort by creation time expirationtime - sort by expiration time level - sort by level count - sort by duplicate events count
sortAscendin g limit
Boolean
This is a hidden field. It defines whether ascending sort order should be used. This is a hidden field. It defines maximum number of events to load or NULL to load all available events. This option is not compatible with filtering.
Integer
0...unlimited
Dynamic:
Name Type Description
Long Date
Date
Event source context path. Event type name. Event level. Number of events (if similar events were suppressed by deduplication. Event acknowledgements
Event-specific data. This field will be included into output only if dataAsTable input setting is enabled. Remaining fields will be added only if dataAsTable input setting is disabled. Number, names, types and other parameters of fields will match ones declared in event definition.
AggreGate Server
697
DELETE EVENTS
Deletes events from event history.
1
: Name Type Description
mask
String
Context mask defining a number of context to delete events from. Event name. Nullable. If specified, only events occurred after startDate are deleted. Nullable. If specified, only events occurred before endDate are deleted.
event startDate
String Date
endDate
Date
0 None
880 ]
Public Events
[?
885
3.22.18 Favourites
This context
863
626
Unique Actions
Add to Favourites
698
(Default Action
[?
651 ]
893
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
icon.
Advanced Information
Context Information
Context Type Context Name
864
: favourites : favourites
864
863
: Favourites
: users.USER_NAME.favourites : users.*.favourites
865
698
AggreGate Documentation
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Favourite creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates new favourite.
1
:
700
variable in Favourite
699
context.
Public Events
[?
885
895
AggreGate Server
699
Action Icon: Action Name: Non-Interactive Mode 893 : Permissions: add Not Supported Accessible at Manager permission level
932
3.22.19 Favourite
This context
863
626
action.
Unique Actions
893
CONFIGURE
627
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
Action Type:
Configure
[?
651 ]
904
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
909 ,
906 ,
909 ,
View Status
910
Advanced Information
Context Information
Context Type
Context Name
864
: favourite
863
: provided by user
864 :
provided by user
: users.USER_NAME.favourites.FAVOURITE_NAME : users.*.favourites.*
865
700
AggreGate Documentation
865
Context Permissions [?
Level None Observer Description
No access allowed. Access to favourite. You should also have enough permissions to access the action that the favourite points to.
Basic event monitoring. Status browsing. Operator Manager Engineer Administrat or Same as Observer. Favourite configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
875 ,
875
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format Field Name
name description mask action enabled executionParameters
855
627
: Field Type
String String String String Boolean Data Table
Notes
1 - 50 characters 1 - 100 characters
Public Functions
[?
878 ]
Public Events
[?
880 ]
885
AggreGate Server
701
3.22.20 Groups
This context
863
248
of a particular type
249
Unique Actions
893
)
253
This action is used for creating new groups. It allows the user to specify basic properties group and configure it immediately after creation.
Action Type: Permissions: Create
905 932
of a new
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
icon.
Advanced Information
Context Information
Context Type
864
: groups
108
Context Name 863 : name of primary container context + "_groups" (e.g. "user_groups" for user groups); "devgroups" for container of Device 113 groups Context Description
864
108
groups, etc.
Context Path 863 : "users.USER_NAME.container_groups" where container is the primary container name (e.g. "users.admin.user_groups" for user 108 groups container); "users.USER_NAME.devgroups" for container of Device 113 groups Context Mask 865 : "users.*.container_groups" where container is the primary container name (e.g. "users.*.user_groups" for all user 108 groups containers); "users.*.devgroups" for container of Device groups
113
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
865
No access allowed. Basic event monitoring. Same as Observer. Group creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
702
AggreGate Documentation
880
CREATE
Creates new group.
1
:
704
variable in Group
702
context.
Public Events
[?
885
3.22.21 Group
This context
863
248
Unique Actions
707
893
)
253
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
Action Type:
Configure
904
CREATE IN GROUP
This action is used to create new object and add it to group immediately after creation. Object type matches group type, e.g. Alert for Alert Group, etc. Action flow: 1. Start Create Alert Group.
905
109 's
2. Add newly created object to the group. Action Name: Action Icon: Non-Interactive Mode 893 : Permissions: Not supported Accessible at Observer permission level
932
create
This is a Drag-and-Drop action 895 that accepts contexts of the same type as group members, i.e. User contexts 759 for the User groups etc. The Logic of this action is completely different in two cases:
AggreGate Server When accepted context is not member of this group When accepted context is already member of the group
703
In the first case accepted context is just added to the list of group members. No interaction of the used it performed in this case. In the second case this action behaves as the Replicate member's configuration to all other group members.
909
This action is very convenient to add new members to the group. New members are added by just dragging them and dropping on the Group context.
Action Type: Action Name: Non-Interactive Mode 893 : Permissions:
895
932
Common Actions
Delete
905
909 ,
Search/Filter
909 ,
View Status
910
Advanced Information
Context Information
Context Type Context Name
864
863
Context Description
: provided by user
108
Context Path 863 : "usergroups.GROUP_NAME" for user GROUP_NAME" for Device 113 group Context Mask
865
group, "users.USER_NAME.devgroups.
113
108
groups
704
AggreGate Documentation
865
Context Permissions [?
Level None Observer Description
No access allowed. Group member list browsing. Access to group member list does not mean access to the group members themselves. See Group Member Permissions 934 for details. Basic event monitoring. Status browsing.
Group member management. Group configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
875 ,
validity (Validity)
876 ,
875
GROUP PROPERTIES
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format Field Name
name description autoReplication hideMembers validityExpression validityListeners
855
253
: Field Type
String String Boolean Boolean String Data Table
Notes
1 - 50 characters 1 - 50 characters
GROUP STATUS
See description of the variable and its fields here Variable Name: Records: Permissions: groupStatus 1
253
932
705
: Field Type
Boolean String String Data Table
Notes
REPLICATION OPTIONS
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format Field Name variable description replicate useMaster master
STATIC MEMBERS
855
254
This variable lists group members that were manually added by devices operators. The list includes only members that are accessible to the party that reads this variable. Note that certain static group members can also appear in the Validity list (e.g. match dynamic group expression).
250 's
validity
staticMembers
This variable lists individual status of all group members. Those individual statuses are used to calculate aggregated group status 250 .
706
AggreGate Documentation
: Field Type
String String
Notes
Member context path. Member status string.
Public Functions
ADD MEMBER
[?
878 ]
1
: Name context Type String Description Path of context to add.
0 None
REMOVE MEMBER
Removes member context from the group.
1
: Name context Type String Description Path of context to remove.
0 None
AggreGate Server
Input Format
855
707
function parameters
String String
Context path. Indicates whither execution was successful. Text of error message, if execution has failed. Function output, if execution was successful.
return
Data Table
Public Events
[?
880 ]
885
890
708
AggreGate Documentation
3.22.22 Models
This context
863
303
Unique Actions
893
)
307
This action is used to create new model. It allows the user to specify the basic properties configure it immediately after creation.
Create
905 932
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
icon.
Advanced Information
Context Information
Context Type Context Name
864
: models : models
864 :
863
Models
: users.USER_NAME.models : users.*.models
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Model creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates new model.
Function Name:
create
709
932
1
:
710
variable in Model
709
context.
Public Events
[?
885
3.22.23 Model
This context
863
303
Unique Actions
CONFIGURE
This Configure
904
307
of the model.
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
Action Type:
Configure
[?
651 ]
904
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
909 ,
906 ,
909 ,
View Status
910
Advanced Information
Context Information
Context Type Context Name
864
863
provided by user
: users.USER_NAME.models.MODEL_NAME : users.*.models.*
865
865
Context Permissions [?
Level None Observer Description
710
AggreGate Documentation
Status browsing. Operator Manager Engineer Administrat or Same as Observer. Model configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
Absolute 304 models add variables they declare to their own context. Thus, one variable is created per each record in the model's Variables 308 table. Common Variables: groupMembership (Group Membership)
875 ,
validity (Validity)
876 ,
875
PROPERTIES
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name name description template type validityExpressio n validityListeners
855
307
childInfo
Data Table
VARIABLES
This variable contains definitions of model variables
308 .
modelVariables
AggreGate Server
711
FUNCTIONS
This variable contains definitions of model functions
309 .
modelFunctions
EVENTS
This variable contains definitions of model events
309 .
modelEvents
712
AggreGate Documentation
RULE SETS
This variable contains model's rule sets
305 .
ruleSets
BINDINGS
This variable contains model bindings
311 .
bindings
AggreGate Server
713
Returns statistical information about model's threa pool. Variable Name: Records: Permissions: Record Format
Field Name
855
threadPoolStatus
Integer Long
Total number of tasks. Pool core size. Pool largest (peak) size. Pool maximum allowed size. Task queue length.
This variable is a view of model variable statistics, i.e. aggregated data collected by model variables' statistical channels 309 . Variable Name: Records: Permissions: Record Format
Field Name name variable statistics
855
statistics
Public Functions
[?
878 ]
Absolute 304 models add functions they declare to their own context. Thus, one function is created per each record in the model's Functions 309 table. Additionally one function is created per each record in model's Rule Sets 310 table.
Public Events
[?
880 ]
Absolute 304 models add events they declare to their own context. Thus, one event is created per each record in the model's Events 309 table.
714
AggreGate Documentation
885
3.22.24 Queries
This context
863
271
Unique Actions
893
)
278
This action is used for creating new queries. It allows user to specify basic properties query and configure it immediately after creation.
Action Type: Permissions: Create
905 932
of the new
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
Variable-Related Actions [?
CREATE QUERY
895 ]
This action creates a new query that selects: Value of this variable from multiple contexts, or History of this variable, or Statistics
936
of this variable
Action workflow: 1. Select what the query should be based on: current values of the variable, variable history, or variable statistics. This will form the FROM clause of the query. 2. If variable history was selected at step 1, select a time frame to extract the historical data for: all time or specific time frame. 3. If specific time frame was selected at step 2, define a range of historical/statistical data to include in the query results. 4. If variable statistics was selected at step 1, select a statistical channel those data will be included in the query results. The query creation will be finished at this point. 5. Select a resource or mask of resources that the query should select data from. This resource/mask will be included in the FROM clause. 6. If a single-row variable initially selected to build the query, choose between building a query over a single variable or multiple variables. The variables will be listed in the FROM clause of the query. 7. If multiple variables were selected at step 6, select some other single-row variables to include in the query results. 8. Select what variable fields to include in the query results: all fields of selected variables or selected fields only. The fields will be listed in the SELECT clause of the query. 9. If selected fields option was chosen at step 8, check one or more fields to include in the query results. 10.Add one or more conditions to the WHERE clause of the query. Each condition is defined by a variable, a comparison operation, a string-encoded value to compare the variable to, and an OR/AND operation applied to the other conditions. 11.The query is created at this point and its configuration is opened for editing.
AggreGate Server
715
icon.
Advanced Information
Context Information
Context Type
Context Name
864
: queries
863
: queries
864 :
Queries
: users.USER_NAME.queries : users.*.queries
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Query creation, export and import. Same as Manager. Native query execution.
[?
869 ]
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates new query.
1
: Same as format of childInfo
717
variable in Query
716
context.
0
none
880 ]
Public Events
[?
885
716
AggreGate Documentation
. It calls the
This query affects the underlying AggreGate Server database directly, bypassing the AggreGate Server Query Language 271 engine and AggreGate Server permission checking 931 . Incorrect queries may corrupt the data and make AggreGate Server installation non-operative.
Action Type: Action Name: Permissions: Call Function
903
3.22.25 Query
This context
863
271
Unique Actions [?
Execute Query
718
(Default Action
DEBUG QUERY
This action is used to execute query in debug mode 278 . Its has only one difference from the Execute Query 718 action: if query produces any debug output, debug report is shown to the user immediately after query execution using Edit Data 896 UI Procedure in read-only mode. When user closes debug report, query result is shown.
Action Name: Non-Interactive Mode 893 : Permissions: debug Not Supported Accessible at Observer permission level
932
CONFIGURE
278
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
Action Type:
Configure
[?
651 ]
904
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
909 ,
906 ,
909 ,
View Status
910
icon.
Advanced Information
AggreGate Server
717
Context Information
Context Type Context Name
864
863
: provided by user
: users.USER_NAME.queries.QUERY_NAME : users.*.queries.*
865
865
Context Permissions [?
Level None Observer Description
Same as Observer. Query configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
875 ,
875
QUERY PROPERTIES
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format Field Name
name description query parameterized fields disableEditableResult
855
278
: Field Type
String String String Boolean Data Table Boolean
Notes
1 - 50 characters 1 - 50 characters
QUERY RESULTS
This variable is used to execute query and get its result. Variable Name: data
718
AggreGate Documentation
Public Functions
EXECUTE QUERY
[?
878 ]
1
: Dynamic, may change when query properties
278
are edited.
If the query is not parameterized 282 , the input format is empty, i.e. it's possible to execute a query without specifying any input. If the query is parameterized, the input format of this function matches format defined in query parameterizer. Output Records: Output Format
855 :
0...unlimited
Dynamic
880 ]
Public Events
[?
885
2. Parameters entered on step 1 are used to produce final query text according to the text of parameterized query 3. Query is executed 4. Query result is shown to the user using Edit Properties 897 UI Procedure. If query result contains some editable fields, user can edit them and save changes. All changed data will be saved back to the contexts 863 from which it originally came.
If query is Parameterized or Disable Editable Result flag is enabled in query properties is shown using Edit Data 896 UI Procedure instead of Edit Properties.
278 ,
query result
If some errors occur during query execution or parameterization, they are shown to the user using Show Error 899 UI Procedure.
AggreGate Server
719
execute Not Supported Accessible at Observer permission level Query Result Window Location :
955 932
3.22.26 Reports
This context
863
241
Unique Actions
893
This action is used for creating new reports. Action Flow: 1. Specify 2. Set up
896
basic properties
245
of a new report.
896
3. Report template is generated 1325 by the server and a new report context 4. Decide
901
is created.
776
932
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
Variable-Related Actions [?
CREATE REPORT
895 ]
This action creates new report that displays value of the variable. Action workflow: Select what the report should be based on: variable history table or current value of the tabular variable. Create a new report with a Source Data Expression
241
Prompt user to specify report template properties 1325 . Obtain the variable's value and generate
1325
a Report Template
242
720
AggreGate Documentation
Mode
893
Permissions:
Event-Related Actions [?
CREATE REPORT
This action creates new report that displays event history. Action workflow: Prompt user to specify Period and Maximum Event Count . Prompt user to specify report template properties 1325 . Create a new report with a Source Data Expression context.
241
695
a Report Template
242
icon.
Advanced Information
Context Information
Context Type
Context Name
864
: reports
863
: reports
864 :
Reports
: users.USER_NAME.reports : users.*.reports
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Report creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
AggreGate Server
721
879 ,
delete (Delete)
880
CREATE
Creates new report.
1
: Same as format of childInfo
723
variable in Report
721
context.
0
none
880 ]
Public Events
[?
885
3.22.27 Report
This context
863
241
Unique Actions
725
725
893
This action is used to build and view the report. Action Flow: 1. [Optional] User is prompted to enter report parameters using an Edit Data 2. A report template is compiled on the server and filled with data. 3. The report is shown to the user using Show Report
Action Name: Action Icon: Non-Interactive Mode 893 : Permissions: Execution Parameters
896 900 896
UI Procedure.
UI Procedure.
show
CONFIGURE
245
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
722
AggreGate Documentation
Action Type:
Configure
904
776
826
932
VIEW HISTORY
723
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
906 ,
909 ,
View Status
910
Advanced Information
Context Information
Context Type Context Name
864
863
723
: users.USER_NAME.reports.REPORT_NAME : users.*.reports.*
865
865
Context Permissions [?
Level None Observer Description
No access allowed. Report launching. Report source data viewing. Basic event monitoring. Status browsing.
Same as Observer. Report configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
875 ,
validity (Validity)
876 ,
875
REPORT PROPERTIES
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format Field Name
name description expression template type validityExpression validityListeners defaultContext
855
245
: Field Type
String String String String Integer String Data Table String
Notes
1 - 50 characters 1 - 100 characters
REPORT HISTORY
Provides access to the instances of this report that were filled earlier and saved in the database. A new record in this table is created every time the report is filled, but only when a Save History 245 flag of the report is enabled.
724
AggreGate Documentation
System operators can delete historical reports by simply removing necessary records from this table and saving changes to the server. Variable Name: Records: Permissions: Record Format Field Name
date user report
855
: Field Type
Date String Data Block
Notes
Report creation date. System user
108
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format Field Name parameter value
855
245
Notes
Public Functions
1
: Name Type String Description
file
Path of resulting file (absolute or relative, with or without extension). Report format.
format
Output Records: Output Format
855 :
Integer
0 None
AggreGate Server
725
1
: Name Type String Description
recipients format
Output Records: Output Format
855 :
Integer
0 None
880 ]
Public Events
[?
885
266
for details.
schedule
932
726
AggreGate Documentation
Microsoft Excel (XLS) Rich Text Format (RTF) Character Separated Values (CSV) Extensible Markup Language (XML) Open Office (ODT) It may be very convenient to schedule report by e-mail.
266
903
932
is the root of AggreGate Server's context tree. It has some basic actions
892
Unique Actions
[?
651 ]
CONFIGURE SERVER
This action is used to view or edit the global configuration options 53 of AggreGate Server. Its only difference from a standard Configure 904 action is that prompts 901 the user to reboot the server once the new settings are saved (a reboot is needed to apply the changes). Additional information about server configuration may be found here 51 .
Action Type: Action Name: Action Icon: Permissions: Accessible at Administrator permission level
932
Configure
904
configureServer
Active Client Connections. The list of currently connected clients including remote address and connection type/ time. Threads . List of server threads along with their state and stack trace. This information is may be requested by AggreGate support team. Thread Pool Statistics. The list of active and completed tasks for every server thread pool. This information may be helpful for analyzing server CPU load. Server Environment. Information about Java Runtime environment and machine/operating system it's running on. Configure
904
Action Type:
(read-only mode)
AggreGate Server
727
viewServerInfo
932
CREATE RESOURCES
This action is used to create pre-build resources (alerts, reports, widgets, etc.) that are included in AggreGate distribution. See Managing Pre-Built Resources 107 for details.
createResources
932
DELETE RESOURCES
This action is used to delete pre-build resources (alerts, reports, widgets, etc.) that are included in AggreGate distribution. See Managing Pre-Built Resources 107 for details.
deleteResources
932
STOP SERVER
This action allows to stop AggreGate Server. There are two options: immediate and delayed shutdown. In case of delayed shutdown all active operators are informed about the shutdown time and reason. This helps them to set current jobs aside and save all changes before the shutdown. Action Type: Action Name: Action Icon: Permissions: Accessible at Administrator permission level
932
903
RESTART SERVER
This action allows to restart AggreGate Server. There are two options: immediate and delayed restart. In case of delayed restart all active operators are informed about the restart time and reason. This helps them to set current jobs aside and save all changes before the restart. Automatic restart is possible only when AggreGate Server is running in service mode server must be stopped and started again manually.
46
. In other cases
903
932
CHANGE PASSWORD
This Call Function Action Type: Action Name: Permissions:
903
action is used to change the password of the currently authenticated user. Call Function
903
728
AggreGate Documentation
869 .
This Call Function 903 action is used to access and view the update history of a certain variable specify 896 the following options: Context where variable is defined; Name of variable; From Date to track update history backwards up to a certain date only.
It prompts user to
This action outputs variable update history in the form of table. Every field of monitored variable's format 855 is shown in a separate field of resulting table. If variable value contains several rows, only data of the first row is shown. Action Type: Action Name: Action Icon: Permissions: Accessible at Administrator permission level
932
Call Function
903
variableHistory
From Date to select only events which occurred after a certain date. Here is an example of output (selecting user Expression = ""):
108
903
932
896
Name of event; Start Date to delete only events which occurred after a certain date (optional); End Date to delete only events which occurred before a certain date (optional).
AggreGate Server
729
903
932
896
903
Call Function
903
viewRawStatistics
IMPORT
Used to import generic data into the system using a script. Action Flow: 1. Select 2. Select
902 896
730
AggreGate Documentation
896
3. [Optional] Specify
import options, if any options are available for the format of the selected file.
4. At this point, data is read from the file and converted to a Data Table. 5. Review
896
6. At this point, the import script is launched and imported Data Table is passed to its input. The script should process table data record by record and make necessary modifications to the system (e.g. create/modify resources).
Action Name: Action Icon: Non-Interactive Mode 893 : Permissions: Not Supported Accessible at Administrator permission level
932
import
SEND EMAIL
903
SEND SMS
903
EXECUTE APPLICATION
This Call Function 903 action is used to launch an external application by calling execute 765 function of this context. It may be used, for example, to launch some program in response to the raised alert (see Executing Non-Interactive Actions On Alert 227 for more information).
Action Type: Action Name: Permissions Action Group: Call Function execute Accessible at Administrator permission level Advanced Actions
932 903
. Event/property
903
AggreGate Server
731
UPDATE HOST
903
instructs AggreGate Server add or remove host from a DNS using a dynamic DNS
903
932
Common Actions
Edit Context Permissions
906 ,
909
Advanced Information
Context Information
Context Type Context Name
864
863
865
Context Permissions [?
Level None Description Users login.
Users self-registration. Observer Operator Manager Engineer Administrat or Executing plain text AggreGate queries. User password self-changing. Creating bundled resources
107 .
Requests for checking and processing incoming mail. Viewing server information. Server stopping and restarting. Executing plain text native queries. Executing external applications. Accessing variable/event history and statistics. Viewing database statistics. Sending E-mail and SMS messages.
[?
869 ]
732
AggreGate Documentation
SERVER VERSION
Returns version of AggreGate Server. Variable Name: Records: Permissions: Record Format
Field Name
855
version
version
SERVER STATUS
String
Returns run-time information about AggreGate Server. Variable Name: Records: Permissions: Record Format
Field Name
855
status
Server instance description. Server version. Server startup timestamp. Server uptime. Free memory in the currently allocated Java Virtual Machine (JVM) heap.
Maximum allowed size of JVM heap. Controlled by -Xmx parameter Current size of JVM heap. Server context event dispatcher queue length.
46
DATABASE STATISTICS
Returns statistical overview of AggreGate Server database. Variable Name: Records: Permissions: Record Format
855
database
AggreGate Server
733
Field Name
Field Type
Notes
queries transactions
loaded
Number of queries executed since server startup. Number of transactions completed since server startup. Number of objects fetched from the database since server startup. Number of objects updated in the database since server startup. Number of objects inserted into the database since server startup. Number of objects deleted from the database since server startup. Maximum execution time of all database queries performed since server startup.
updated inserted
Long Long
deleted
Long
maxQueryTime
Long
Returns detailed statistics of AggreGate Server database tables. Variable Name: Records: Permissions: Record Format
Field Name
855
tables
table
loaded updated inserted deleted
Table name. Number of objects fetched from the table since server startup. Number of objects updated in the table since server startup. Number of objects inserted into the table since server startup. Number of objects deleted from the table since server startup.
CONTEXT STATISTICS
Returns statistical information AggreGate Server contexts, variables, functions, events, and actions. Variable Name: Records: Permissions: Record Format
Field Name
855
sysinfo
734
AggreGate Documentation
context variableCount
function Count eventCount actionCount variablesRead
Name and description of the AggreGate Server context. Total number of variable definitions in the context. Total number of function definitions in the context. Total number of event definitions in the context. Total number of action definitions in the context. Number of variable read operations performed since server startup. Number of variable write operations performed since server startup. Number of function call operations performed since server startup. Number of events fired since server startup.
variablesWritten
Long
functionsCalled
Long
eventsFired
Long
LICENSE INFORMATION
Returns information about active AggreGate Server license. Variable Name: Records: Permissions: Record Format
Field Name
855
license
License issue date. License holder. Server version pattern. Trial period (days), or NULL for non-trial license. Remaining trial period (days), or NULL for non-trial license. Maximum number of devices allowed by the license. Current number of registered devices.
Server activation key.
ACTIVE PLUGINS
950
735
id type
name
Returns information active client connections. Variable Name: Records: Permissions: Record Format
Field Name
855
connections
user type
date address
108
CLUSTER STATUS
87
cluster
id role
time
THREADS
736
AggreGate Documentation
threads
Thread unique ID. Thread name. Thread group name. Thread priority. Thread state. True if thread is a daemon thread. True if thread has been interrupted. Thread stack track with the following fields: Class name Method name File name Line number
Returns statistical information about server thread pools. Variable Name: Records: Permissions: Record Format
Field Name
855
pools
Total number of tasks. Pool core size. Pool largest (peak) size.
AggreGate Server
737
maximumSize queueLength
Integer Integer
SERVER ENVIRONMENT
Returns information about Java Virtual Machine that is running AggreGate Server and server/PC that it is running on. Variable Name: Records: Permissions: Record Format
Field Name
855
environment
property value
String String
Returns statistical information collected by event processing rules is reset upon server restarts. Variable Name: Records: Permissions: Record Format
Field Name
855
70
eventRuleStatistics
Context path. Event name. Number of events that were suppressed by this rule. Number of events that passed the rules and were saved in the server database.
EVENT STATISTICS
Returns counts of events name. Variable Name: Records: Permissions: Record Format
855
880
80
eventStatistics
738
AggreGate Documentation
Field Name
Field Type
Notes
Database table name. Context path. Event name. Number of events of the above type that occurred in the above context. Note, that all events of a certain type that occurred in a single context are always stored in a single table.
VARIABLE STATISTICS
Returns how many variables Variable Name: Records: Permissions: Record Format
Field Name
855
869
values are stored in the database for each AggreGate Server context.
variableStatistics
context count
String Long
Context path. Number of context variable's values that are currently stored in the database. Note, that default variable values are not saved to the database, and, thus, counts may be very low right after server installation.
Public Functions
[?
878 ]
1
: Name username Type String Description Name of account.
AggreGate Server
Output Format
855 :
739
None
LOGIN
Pass authentication/authorization and continue session with access permissions of a certain user
108 .
1
: Name username password Type String String Description Username of user to authenticate as. User account password.
0 None
LOGOUT
Log out to continue session with None user permissions.
0
: None
0
none
CHANGE PASSWORD
Changes password of a currently authenticated user account.
1
: Name oldPassword newPassword repeatPasswor d Type String String String Description Old password for the account. New password. Must match the new password.
0 None
EXECUTE QUERY
Executes a custom Query
271
Function Name:
executeQuery
740
AggreGate Documentation
Accessible at Observer permission level
932
1
: Name query Type String Description Query text.
0...unlimited Dynamic
1
: Name query update Type String Boolean Description Query text. Flag indicating that query is an update query (DELETE, INSERT, UPDATE, etc.).
0...unlimited Dynamic
RESTART SERVER
Restarts AggreGate Server.
1
: Name instantly Type Boolean Description Allows to choice between immediate and delayed restart. Delay before scheduled restart. Reason of scheduled restart.
Long String
0
none
STOP SERVER
Stops AggreGate Server.
AggreGate Server
Input Format
855
741
: Name instantly Type Boolean Description Allows to choice between immediate and delayed shutdown. Delay before scheduled shutdown. Reason of scheduled shutdown.
Long String
0
none
880 ]
Public Events
[?
885
CONTEXT ADDED
Fires when a new context of any type is added to the server context tree. This event may fire multiple times for the same context, e.g. during each server startup. Event Name Permissions:
Expiration Period: contextAdded
932
:
Field Type String Notes Path of context.
CONTEXT REMOVED
Fires when a new context of any type is removed from the server context tree. This event may fire multiple times for the same context, e.g. during each server shutdown. Event Name Permissions:
Expiration Period: contextRemoved
932
:
Field Type String Notes Path of context.
CONTEXT CREATED
Fires when a new resource context (e.g. alert 216 , widget 312 or device 113 ) is created. In contrast to contextAdded event this event fires only once for every resource upon its initial creation. It will not fire again on server startup. Event Name
contextCreated
742
AggreGate Documentation
Permissions:
Expiration Period:
932
:
Field Type String Notes Path of context.
CONTEXT DESTROYED
Fires when a resource context (e.g. alert 216 , widget 312 or device 113 ) is permanently destroyed. In contrast to contextRemoved event this event fires only once when the resource is being deleted. It does not fire during server shutdown. Event Name Permissions:
Expiration Period: contextDestroyed
932
:
Field Type String Notes Path of context.
FEEDBACK
Server generates this event to report its activity related to a currently logged user Event Name Permissions:
Expiration Period: feedback
108
932
:
Field Type String Notes Server message.
266
Unique Actions
893
)
270
This action used for scheduling new jobs. It allows user to specify basic properties configure it immediately after creation.
AggreGate Server
743
Create
905 932
This action also adds a new scheduled job. It is implemented as a Drag-and-Drop action 895 that accepts contexts of any type. The user is prompted to select an action to schedule from the context that was dropped onto the Scheduled Jobs context.
Action Type: Action Name: Non-Interactive Mode 893 : Permissions:
895
932
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
icon.
Advanced Information
Context Information
Context Type Context Name
864
: jobs : jobs
864 :
863
Scheduled Jobs
: users.USER_NAME.jobs : users.*.jobs
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Job creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
744
AggreGate Documentation
CREATE
Creates new scheduled job.
1
:
745
744
context.
Public Events [?
885
266
Unique Actions
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
Action Type:
Configure
904
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
906 ,
909 ,
View Status
910
Advanced Information
Context Information
Context Type
864
: job
AggreGate Server
Context Name
863
745
: provided by user
864 :
provided by user
: users.USER_NAME.jobs.SCHEDULED_JOB_NAME : users.*.jobs.*
865
865
Context Permissions [?
Level None Observer Description
Operator Manager
Engineer Administrat or
[?
869 ]
875 ,
875
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name name description enabled mask action input
855
270
jobDetailsView
SIMPLE SCHEDULE
See description of the variable and its fields here Variable Name: Records: Permissions:
triggersView
270
746
AggreGate Documentation
855
Record Format
Field Name startTime endTime repeatCount repeatInterval
:
Field Type Date Date Integer Long Notes
ADVANCED SCHEDULE
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name dayOfMonth month dayOfWeek year time startTime endTime
855
270
cronTriggersView
JOB STATUS
The variable provides scheduled job status data. It is shown by View Status Variable Name: Records: Permissions: Record Format
Field Name
855
910
action.
status
Notes
previousFireTime nextFireTime
Time elapsed since previous job execution or NULL if it was not executed yet. Time to next job execution or NULL if the job won't execute anymore.
Public Functions
AggreGate Server
747
EXECUTE
This forces AggreGate Server to perform immediate single execution of a scheduled job in non-interactive mode. The function is synchronous, i.e. it won't exit until the job has finished execution.
0
:
None. 0
None.
880 ]
Public Events
[?
885
890
3.22.31 Scripts
This context
863
628
Unique Actions
893
)
629
This action used for creating new scripts. It allows user to specify basic properties
Action Type: Permissions: Create
905 932
of a new script.
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
icon.
Advanced Information
Context Information
Context Type
Context Name
864
: scripts
863
: scripts
864 :
Scripts
: users.USER_NAME.scripts : users.*.scripts
865
865
Context Permissions [?
Level None Observer Description
748
AggreGate Documentation
Same as Observer. Script creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates new script.
1
: Same as format of childInfo hidden.
749
variable in Script
748
0
none
880 ]
Public Events
[?
885
3.22.32 Script
This context
863
628
Unique Actions [?
893
This action causes the server to compile and launch the script. If any errors occur during compilation or are produced by the script itself, they are reported to the user using the Show Error 899 UI Procedure.
Action Name: Non-Interactive Mode 893 : Permissions: execute Not Supported Accessible at Engineer permission level
932
CONFIGURE
629
932
in the Script
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
AggreGate Server
749
Action Type:
Configure
904
EDIT SOURCE
This action starts the built-in text editor (with syntax highlighting) and allows the user to edit the script source. The text editor available in AggreGate Client 776 is described here 819 .
Action Name: Non-Interactive Mode 893 : Permissions: editSource Not Supported Accessible at Administrator permission level [?
651 ] 909 , 932
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
906 ,
909 ,
View Status
910
icon.
Advanced Information
Context Information
Context Type Context Name
864
863
: provided by user
: users.USER_NAME.scripts.SCRIPT_NAME : users.*.scripts.*
865
865
Context Permissions [?
Level None Observer Description
Same as Observer. Script configuration and removal. Script execution. Script source editing.
[?
869 ]
875 ,
875
SCRIPT PROPERTIES
See description of the variable and its fields here Variable Name: Records: childInfo 1
629
750
AggreGate Documentation
932
Notes
1 - 50 characters 1 - 50 characters Text can only be changed under Administrator permission level.
Public Functions
EXECUTE SCRIPT
[?
878 ]
Executes the script and returns the data it generates. A list of parameter objects passed to the script as input is constructed from the function input Data Table by taking the values of its cells field-by-field, starting from the first row. If the script returns a Data Table object, this function will return it unchanged. If the script returns another value type that is supported by the Data Table format 856 , this object is wrapped into a single-cell table with a field of a corresponding format. If script returns a value of a type that is not supported by the Data Table format, this value is converted to a string (by calling Java Object.toString() method) and wrapped into a single-cell Data Table with a string field.
Public Events
[?
885
3.22.33 Trackers
This context
863
257
Unique Actions
Build Tracker
752
893
)
258
This action is used for creating new trackers. It allows the user to specify the basic properties new tracker and configure it immediately after creation.
Action Type: Permissions: Create
of a
905 932
Variable-Related Actions [?
AggreGate Server
751
CREATE TRACKER
This action creates a new tracker that tracks the value of a variable. If variable has more than one field, user is prompted to select which field will be displayed by the tracker. If the variable belongs to a Device Context 677 (e.g. it is a Device setting), the user is prompted 901 to create an Offline status 257 for the newly created tracker. Tracker in Offline state is indicated by gray color (this is a default color -- it may be changed). This state is activated when the Device is disconnected from the server.
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
Monitor
icon.
Advanced Information
Context Information
Context Type
Context Name
864
: trackers
863
: trackers
864 :
Trackers
: users.USER_NAME.trackers : users.*.trackers
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Tracker creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates new tracker.
Function Name:
create
752
AggreGate Documentation
Accessible at Manager permission level
932
1
: Same as format of childInfo
754
variable in Tracker
753
context.
0
none
880 ]
Public Events
[?
885
TRACK
This event is fired when tracker value and state is re-evaluated. Event Name Permissions:
Expiration Period: track
932
:
Notes
Field Type
Tracker name. String representation of tracker value. Description of tracker status. Color associated with tracker status.
Action Flow: 1. Select a context as described in Drag-and-Drop actions 895 article. For example, in the Drag-andDrop selection method, click a System Tree node you wish to apply this action to. Keep the left mouse button pressed and drag it onto the Favourites node. 1. Select 2. Select
896 896
a variable those state will be tracked. a tracked field of the above variable.
properties of the newly created tracker, e.g. add some statuses. Drag and Drop
build Not Supported Accessible at Manager permission level
932
895
AggreGate Server
753
3.22.34 Tracker
This context
863
257
Unique Actions [?
893
)
258
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
Action Type:
Configure
[?
651 ]
904
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
909 ,
906 ,
909 ,
View Status
910
Advanced Information
Context Information
Context Type Context Name
864
863
: provided by user
: users.USER_NAME.trackers.TRACKER_NAME : users.*.trackers.*
865
865
Context Permissions [?
Level None Observer Description
Same as Observer. Tracker configuration and removal. Same as Manager. Same as Manager.
754
AggreGate Documentation
[?
869 ]
875 ,
875
TRACKER PROPERTIES
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format Field Name
name description expression enabled period
855
258
: Field Type
String String String Boolean Long Measured in milliseconds
Notes
1 - 50 characters 1 - 50 characters
STATUS TABLE
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format Field Name description expression color level
STATISTICS CHANNELS
855
258
Notes
One or more characters.
This variable allows to manage statistics channels Variable Name: Records: Permissions: Record Format
855
259
of this tracker.
statisticsProperties
AggreGate Server
755
Notes Name of the channel. Name of variable the channel is based on. Properties
938
of the channel.
TRACKER
This variable provides access to the current tracker value. If a non-zero History Storage Time is set in the tracker settings 258 , changes of this variable are persisted in the database and may be used for building charts etc. Variable Name: Records: Permissions: Record Format Field Name value
STATISTICS
855
This variable is a view of tracker statistics, i.e. aggregated data collected by tracker's statistical channels 259 . Variable Name: Records: Permissions: Record Format
Field Name name variable statistics
855
statistics
Notes Name of the channel. Name of variable the channel is based on. Brief statistical data.
Public Functions
Public Events
[?
880 ]
885
STATUS CHANGE
This event is fired when tracker state has been changed. Event Name
statusChange
756
AggreGate Documentation
Permissions:
Expiration Period:
932
:
Notes
Field Type
String String
3.22.35 Users
This context
863
759
(user accounts
108
).
Unique Actions
New User Account
(Default Action
759
893
902
108
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
Monitor
icon.
Advanced Information
Context Information
Context Type Context Name
864
: users : users
864 :
863
Users
: users : users
865
865
Context Permissions [?
AggreGate Server
757
Description No access allowed. No access allowed. No access allowed. No access allowed. No access allowed. All operations.
[?
869 ]
Public Functions
USER LIST
[?
878 ]
This function returns information about all User Accounts that are accessible with current permissions. Account properties are described here 110 .
0
:
None
0...unlimited Name Type Description
name firstname lastname password country region zip city address1 address2 comments company department
String String String String Integer String String String String String String String String Nullable Nullable Nullable Nullable Nullable Nullable Nullable Nullable Nullable Nullable
758
AggreGate Documentation
Public Events
[?
880 ]
885
LOGIN
108
authentication.
932
:
Field Type String String String String Notes Name of authenticated user. Connection type (desktop, web, web service, etc.) Client's IP address or host name. User's permissions at the moment of authentication.
LOGOUT
108
932
:
Field Type Notes
AggreGate Server
759
username
String
action is used to create a new user account. The following parameters should be specified:
section for more information about the default settings for a new account.
903
110
903
3.22.36 User
This context
863
108
Unique Actions
893
)
110 .
Action Type:
Configure
904
DELETE ACCOUNT
This is a standard Delete Action Name: Action Icon: Non-Interactive Mode 893 : Permissions: Supported Accessible at Administrator permission level [?
651 ] 906 , 932 905
delete
Common Actions
Replicate
909
909 ,
View Status
910
760
AggreGate Documentation
865 .
icon.
Advanced Information
Context Information
Context Type Context Name
864
863
provided by user; contains username, first name and last name of a user
: users.USER_NAME : users.*
865
865
Context Permissions [?
Level None Observer Description
Operator Manager
Engineer Administrat or
Same as Manager. User profile editing. User permissions editing. User removal.
[?
869 ]
875 ,
875
USER INFORMATION
110
of a User Account.
childInfo
Name
Type
Description
AggreGate Server
761
region zip city address1 address2 comments company department email phone fax timezone locale datepattern timepattern dsautoregistratio n
PERMISSIONS
String String String String String String String String String String String String String String String Boolean
Nullable Nullable Nullable Nullable Nullable Nullable Nullable Nullable Nullable Nullable Nullable
111
of a User Account.
permissions
Field Name
Field Type
Notes
mask type
ACCOUNT SETTINGS
String String
111
settings
762
AggreGate Documentation
Field Name
Field Type
Notes User login is not allowed if this flag is disabled. If not NULL, user is not allowed to log in until this time. If not NULL, user is not allowed to log in after this time.
111
table.
resources
Field Name
Field Type
Notes Resource type description. Flag indicating whether user's account will have a container node for resources of this type.
description available
String Boolean
USER PHOTO
User's photo
111
.
photo
Field Name
Field Type
Notes
photo
USER STATUS
Data Block
Returns status
112
of a User Account.
status
AggreGate Server
763
Field Name
Field Type
Notes
Account creation time. Last account modification time. Last login time, or NULL if the user has never logged in.
Public Functions
0
: None
0
none
880 ]
Public Events
[?
885
3.22.37 Utilities
This context is a system context that provides miscellaneous operations. It is not shown in the visible context tree.
Unique Actions
SHOW DATA
[?
651 ]
This action fetches some data from the system by calculating an expression 911 , shows it to the user using Edit Data UI procedure, and enables automatic re-retrieving and auto-refreshing of the shown data. Action Name: Non-Interactive Mode 893 : Permissions: Execution Parameters
896
896
showData Not Supported Accessible at None permission level 1. Data Acquisition: : Expression to calculate Refresh period 2. Data Presentation: Title of the data window Help, the text to show in the data window Icon, the icon ID string of the data window icon 3. Location
955 932
Variable-Related Actions [?
895 ]
764
AggreGate Documentation
variable definition
895 ]
870
Event-Related Actions [?
event definition
870
Advanced Information
Context Information
Context Type Context Name
864
: utilities : utilities
864
863
: Utilities
: utilities : utilities
865
865
Context Permissions [?
Level None Observer Description
Basic system internal operations. Accessing and deleting variable/event history. Accessing and deleting variable statistics. Accessing device topology.
Sending E-mail and SMS messages. Same as Operator. Requests for incoming mail checking. External application execution.
[?
869 ]
Public Functions
[?
878 ]
1
: Name Type Description
AggreGate Server
765
toDate
Date
dataAsTable
Boolean
limit sortAscendin g
Output Records: Output Format
855 :
Integer Boolean
Maximum number of historical values to retrieve. Flag switching between ascending and descending sorting of historical values.
0...unlimited Dynamic, has at least vUpdateTime field that contains timestamps of historical values.
1
: Name command directory Type String String Description Command fully qualified name with arguments. Working directory, may be omitted.
1
Name exitCode output errors Type Integer String String Description Command exit code. Capture of command output. Capture of command error output.
CHECK MAIL
Instructs AggreGate Server to fetch and process incoming e-mail messages.
766
AggreGate Documentation
checkMail Accessible at Engineer permission level
932
0
: None
0
none
SEND EMAIL
Sends an email. This function will work properly only if mail sending
63
1
: Name Type Description
0 None
SEND SMS
Sends an SMS message. This function will work properly only if SMS sending configuration.
69
1
: Name Type Description
recipient
String
message
Output Records: Output Format
855 :
String
0 None
UPDATE HOST
Updates host in a dynamic DNS.
AggreGate Server
Input Format
855
767
host
String
Host name to update. DNS zone to be updated is configured in Dynamic DNS global settings. IP address of the host.
61
ip remove
String Boolean
0 None
LIST VARIABLES
This function returns a list of values of all single-cell (i.e. non-tabular and non-array) variables in all contexts matching to a certain mask and belonging to a certain group.
1
: Name mask group Type String String Description Mask of context to list variables from. Variable's group.
0...unlimited
Name context variable value Type String String String Description Context description. Variable description. String representation of variable's value.
STATISTICS
This function returns last values for a statistical channel
936
1
: Name mask channel key Type String String String Description Mask of context to fetch statistical data from. Name of channel. Dataset key or NULL to use default dataset.
768
AggreGate Documentation
period
String
Time period to show last values for. If NULL, the data will be fetched for all periods. Period names: millisecond or ms for Milliseconds second, sec or s for Seconds minute, min or m for Minutes hour, hr or h for Hours day or d for Days week or w for Weeks month for Months (Note, that month is zero-based , i.e. value for January is 0.) year or y for Years
full
Boolean
If true, all statistical values are returned according to the above period (e.g. all hourly averages). If false, only last collected values are returned (e.g. last full hour averages). Show average value for the last period of selected type. Default is true. Show minimum value for the last period of selected type. Default is false. Show maximum value for the last period of selected type. Default is false. Show total value for the last period of selected type. Default is false. Show first value for the last period of selected type. Default is false. Show last value for the last period of selected type. Default is false.
average
Boolean
minimum
Boolean
maximum
Boolean
sum
Boolean
first
Boolean
last
Boolean
0...unlimited
Name context start end key average minimum maximum sum first Type String Date Date String Float Float Float Float Float Description Name of context that originated data. Start of time period. End of time period. Dataset key or NULL if default dataset was used. Average value for the time period. Minimum value for the time period. Maximum value for the time period. Total value for the time period. First value for the time period.
AggreGate Server
769
last
Float
RAW STATISTICS
This function returns raw statistical data for a statistical channel
936 .
1
: Name context name Type String String Description Name of context to fetch statistics from. Name of channel to fetch statistics from.
0...unlimited
Dynamic
DELETE STATISTICS
This function is used to purge all data collected by a statistical channel
936 .
1
: Name mask channel Type String String Description Mask of contexts to look for statistical channels. Name of channel to purge data from.
0
None
SELECTION VALUES
This function returns a data table suitable to be used as selection values of another data table's field. It's most often used in an expression of a data table binding 860 that's targeted to choices 860 property of the field. The function first constructs an intermediate data table by evaluating an expression. It then goes through this table rowby-row and evaluates two other expressions for each row. First one returns the selection values itself and second one returns its description.
1
: Name tableExpressio n valueExpressio Type String Description Expression that should return a table those records will be used to construct selection values list. Expression that's calculated over each record of the
String
770
AggreGate Documentation
above table and should return a string representation of a selection value. String Expression that's calculated over the same record and should return a description of the selection value.
descriptionExpr esssion
0...unlimited
Name value description Type String String Description String representation of a selection value. Description of the selection value.
Public Events
[?
880 ]
885
3.22.38 Widgets
This context
863
312
Unique Actions
893
)
314
895
action is used to create a new widget. It is described here Drag and Drop
895
map properties (name, description, background image, size of device images, etc.). the Device to show on the map.
827
902
932
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
Variable-Related Actions [?
895 ]
AggreGate Server
771
CREATE CHART
This action creates a new widget with a chart 384 component and several other components for controlling chart parameters on-the-fly. These components form a toolbar. Chart is configured to show historical changes of variable's values. At first step, the following parameters should be specified: Chart type (line, area, or bar) Toolbar (enabled/disabled) One of the two pre-defined validity expressions only or with all contexts of the same type.
948 ,
that allow this chart to later used with the current context
At next step, one or more named chart trends should be created. Each trend is defined an expression that may refer one or more variable fields.
CREATE WIDGET
This action generates new widget that may be used to edited value variable. Newly created widget may be customized immediately after creation to form a good-looking custom editor for this type of variable. Widget template 314 produced by this action is best suit for editing values of complex variables those format defines multiple fields but single row. Template consist of main panel with two columns and and button panel in the bottom. Left column of main panel displays field names using widget labels 323 . Right column contains different components used to view/edit field values. In the button there are two buttons: Submit button causing widget to commit changes and exit, and Close button that stops widget without saving changes. Here is how an auto-generated widget looks like for User Account Properties 110 variable of User context:
772
AggreGate Documentation
Event-Related Actions [?
CREATE CHART
This action creates a new widget with a chart 384 component and several other components for controlling chart parameters on-the-fly. These components form a toolbar. Chart is configured to show data value taken from history of current event. At first step, the following parameters should be specified: Chart type (line, area, or bar) Toolbar (enabled/disabled) One of the two pre-defined validity expressions only or with all contexts of the same type.
948 ,
that allow this chart to later used with the current context
At next step, one or more named chart trends should be created. Each trend is defined an expression that may refer one or more event fields.
AggreGate Server
773
Permissions:
932
icon.
Advanced Information
Context Information
Context Type Context Name
864
: widgets : widgets
864 :
863
Widgets
: users.USER_NAME.widgets : users.*.widgets
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Widget creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates new widget.
1
:
775
variable in Widget
774
context.
Public Events
[?
885
774
AggreGate Documentation
3.22.39 Widget
This context
863
312
Unique Actions
CONFIGURE WIDGET
This Configure
904
315
of the widget.
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
Action Type:
Configure
904
893
for Relative
314
widgets)
776
827
932
for Absolute
316
314
widgets)
launch Not Supported Accessible at Observer permission level Widget Window Location : [?
651 ] 909 , 955 932
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
906 ,
909 ,
View Status
910
Advanced Information
Context Information
Context Type Context Name
864
863
provided by user
: users.USER_NAME.widgets.WIDGET_NAME
AggreGate Server
Context Mask
865
775
: users.*.widgets.*
865
Context Permissions [?
Level None Observer Description
Same as Observer. Widget configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
875 ,
validity (Validity)
876 ,
875
WIDGET PROPERTIES
See description of the variable and its fields here Variable Name: Records: Permissions: Record Format
Field Name name description template type validityExpressio n validityListeners defaultContext
855
315
childInfo
Public Functions
[?
878 ]
Public Events
[?
880 ]
885
776
AggreGate Documentation
4 AggreGate Client
AggreGate Client is a software product using a Graphical User Interface (GUI) to access a AggreGate Server installation. It can be used for: 1. Server configuration and administration 2. Management and configuration of Devices 3. Event monitoring and receiving alert notifications In short, it can be used for just about anything having to do with AggreGate Server. The AggreGate Client is your "window" into AggreGate Server. This is where the average user spends most of his time. AggreGate Client the uses AggreGate Communications Protocol 1303 to communicate with AggreGate Server.
40
BROWSER MODE
AggreGate Client can run in any web browser. To launch AggreGate Client in a browser window, open AggreGate Server Control Center 631 and select Open AggreGate Client in the Browser. Use tray menu
108
When running in Browser mode, AggreGate Client doesn't allow to create workspaces and server connections Instead, it is connected to a single server only.
779 .
and select
to install and launch AggreGate Client from a server running on the localhost.
Once AggreGate Client has been installed via Java Web Start, a desktop icon will be created, allowing to re-launch it later without navigating through the web pages. AggreGate Client will be auto-updated to match version of the server it was installed from upon every startup. Note that AggreGate Client will update to the same version as the server it was installed from. It's not the latest version available on Tibbo website! To update the whole installation to the latest version offered by Tibbo, perform the server upgrade first, and all AggreGate Clients launched via Java Web Start will be updated upon the next startup.
AggreGate Client
777
mode.
Tibbo supplies pre-packaged installation files for the following operating systems: Windows 98, NT, 2000, XP, 2003 Server, Vista, 2008 Server, and 7 (compatible with Windows Embedded) Different versions of Linux (compatible with embedded Linux) Mac OS X Installers for the other Java-enabled operating systems (FreeBSD and other *nix, Solaris, etc.) are available on demand. To install the product, just run the installer executable file and follow the instructions. On some systems, you need to make the installation package 'executable' before running it.
System Requirements
Operating System: Any Java-enabled OS, including embedded environments (e.g. ARM Linux) RAM: 256MB minimum HDD: 200MB of free space Recommended screen resolution: 1280x1024 or more
-a -c -l <context>:< action>
Automatically start action <action> from context <context>. This option allows to open necessary information upon AggreGate Client startup. For example, if a device was clicked in a third-party system (e.g. billing system), the latter may start AggreGate Client executable and immediately show dashboard of a clicked device to the operator.
-u <username> -p <password> -s
Name of workspace
779
to load on startup.
If both -u and -p options are specified, the authorization dialog is not shown and workspace selected by -u option is loaded automatically. This combination should be used only in secure environments - it grants instant access to your AggreGate Server installation. You can also use -u and -p to run the AggreGate Client and instantly show several widgets 312 (by using Auto Run 662 feature) with monitoring information for some contexts (such as in a monitoring station on a factory floor). I.e, you can have AggreGate Client run from a desktop shortcut (or automatically when the computer is started), and show various gauges and bars on a screen in a factory floor, to help determine the status of various machines.
778
AggreGate Documentation
4.4 Uninstallation
AggreGate Client is uninstalled by running uninstall executable file from AggreGate Client installation directory. It's necessary to close the application before uninstallation. AggreGate Client uninstaller does not remove files created or modified by the AggreGate Client itself during its operation (workspaces, logs, etc.). To completely wipe out all AggreGate Client data, delete its installation directory with all contents when uninstaller has finished working. This may be necessary to perform a "clean" reinstallation.
mode.
The AggreGate Client is started by a special Launcher created during the installation process. Launcher type depends on the operating system: Under Unix , it's the ag_client shell script, while under Windows it is a small exe file accessible through the Start menu (Start > Programs > AggreGate > Client) or as a desktop shortcut:
User interface language, memory usage, and some other parameters of AggreGate Client may be configured using the Launcher Properties File (ag_client.vmoptions) those format is the same as AggreGate Server's Launcher Properties File 45 .
Workspace Login
Once AggreGate Client is launched, you need to login to the workspace in the dialog:
779 .
If you are using AggreGate Client for the first time, just enter any desired workspace name and password to create a new workspace. If a workspace with the given name does not exist, you will be prompted to create a new one:
AggreGate Client
779
In all other modes AggreGate Client has no workspaces and a single server connection to the server it's launched from. A Workspace is just a special directory on the AggreGate Client installation that stores the data used by a single AggreGate Client user. Note that this is the AggreGate Client user - a person who actually uses this specific installation of AggreGate Client to control one or more AggreGate Servers. It is not the same as user account 108 on the AggreGate Server. Even though every AggreGate Client user usually has an AggreGate Server user account, it's important to keep the distinction. A AggreGate Client user may have more than one AggreGate Server user account, and theoretically, you could also have someone run the AggreGate Client without having any valid AggreGate Server user account to work with (to test it, etc). The AggreGate Client itself would still work (you couldn't do much with it, but it would work...). A Workspace: Contains definitions of zero or more server connections, Contains a window layout (windows size, position, docked/floating status, etc.), Is stored in the AggreGate Client installation folder, Is encrypted (the workspace password unlocks it), Is never transferred to the server completely or partially. A server connection: Is stored within the workspace (securely encrypted), Includes server address, port, name of user account on the server and password to this account, Is just a local configuration definition - AggreGate Client will attempt to connect to the AggreGate Server installation using these credentials. If they're correct (i.e, the server is where it's supposed to be, and an account which matches the credentials), it will work.
Workspaces
Workspaces are stored in the /workspaces folder of the AggreGate Client directory, i.e. /workspaces/test/*.* contains the test workspace. Workspaces can be transferred between the AggreGate Client installations, but workspaces saved in older AggreGate Client versions may not load correctly on newer versions.
780
AggreGate Documentation
window
824
window
795 ,
Widget
312 ,
or Report Viewer
814
The System Tree, Properties Editor, Trackers, Event Log and other windows are dockable
781 .
File Menu
Save Workspace . Saves current workspace immediately, without waiting until shutdown. Switch Workspace . Saves and closes current workspace
779
AggreGate Client
781
View Menu
Reset layout. Set sizes and positions of all windows and components to default. System Tree. Show/hide System Tree Favourites. Show/hide Favourites Trackers. Show/hide Trackers
824 . 824 . 784 .
When the System Tree is shown, this item has a check mark next to it.
When the favourites are shown, this item has a check mark next to it.
When the trackers are shown, this item has a check mark next to it.
225 .
Alerts . Disable this checkbox menu item to suppress popup alert notifications and sounds always enabled by default, its state is not saved in the workspace.
Auto Run. Disable this checkbox to prevent auto run 625 actions execution for all server accounts. The auto run actions won't be launched when this workspace will be opened next time(s). Value of this item is always enabled by default, its state is saved in the workspace. Show all Event Logs. Shows Event Log for every active server connection. Hide all Event Logs. Hides all Event Logs.
Help Menu
Open Help. Open AggreGate manual in a browser window (HTML). Open Interactive Guide. Starts the Interactive Guide About . Shows software version and copyright.
847 .
- Auto-Discovery started - Found admin.c1 at 0.1.2.3.4.5 (192.168.1.100) - Found admin.c2 at 0.1.2.3.4.6 (192.168.1.101) ...
782
AggreGate Documentation
Many operations allow to specify location their data window(s) as a parameter and store it on the server. See details in Window Location 955 section.
Window Operations
Every window can be dragged by its title bar and dropped in any of the following positions: As a dockable window that is docked to other windows As a floating window that "floats" over other windows As a side bar window that normally appears as an icon in the corner of the client frame, but can be expanded when the icon is clicked (or on mouse-over). As a new tab for a tabbed windows. This happens when you drop a window directly on top of another window. And of course, many windows (like the System Tree 784 window, or Event Log (closed) and later restored using the corresponding Main Menu 780 items. The window's default appearance is similar to this:
791
This is what it looks like when the windows have been undocked and dropped onto one another, to create a floating tabbed pane. Note the tabs at the bottom:
AggreGate Client
783
And this is what it looks like when the windows have been undocked and are used as floating mini-windows in cascaded form:
784
AggreGate Documentation
If you've played around too much and now your layout is messy, you can always reset it using the main menu
780 .
AggreGate Client
785
The System Tree consists of a toolbar, the tree itself and a context-sensitive list of related actions . Every tree node represents a context 863 (and may have sub-contexts under it). Click here tree.
868
to check the difference between context tree visible in System Tree and server-side context
786
AggreGate Documentation
If used for a Server Node the server. Expand Node Recursively Collapse Node Recursively Search/Filter Text Field
789 ,
Expands the selected node and all its children recursively. This button is disabled if selected node is a leaf (i.e. has no children). Collapses the selected node and all its children recursively. This button is disabled if selected node is a leaf. Enables node searching/filtering
789 .
There are two types of node expansion and collapse: normal and recursive. Normal expansion and collapse are performed when you click on a [+] or [-] icon next to the node. Recursive expand and collapse operations are activated using node context menu or System Tree toolbar. Normal mode expands only the node itself, and any children-nodes which can be expanded remain collapsed. Recursive mode expands a given node as well as all of its child nodes which can be expanded. The same applies to collapse operations. The toolbar is also used to search and filter
789
nodes.
Related Actions
The related actions list is the same as the bottom part (after the horizontal separator) of the context menu currently selected node(s). You can use it to launch an action with a single click.
786
for the
Tooltips for the action list items show action names , rather than descriptions. These action names are needed for referring to these actions in many components of the system.
AggreGate Client
787
For some nodes, the context menu also contains a "Group Actions" submenu. It contains action you can apply on every child of the current node. See action grouping 894 for more info. Here's what the System Tree context menu for a AggreGate Server node
789
looks like:
It's convenient to add multiple objects to a group 248 by opening the group in a separate System Tree using Search/Filter 909 action and drag-and-droping objects from the "main" System Tree to the group node in group's System Tree.
788
AggreGate Documentation
This feature helps to: Reorder server accounts Change launch sequence of Auto-Run Actions Reorder Trackers
257 625
and Group
248
members
AggreGate Client
789
Pattern matching mode: match from start, match exactly or match anywhere Match leaf nodes only Hide nodes without children Keep children if any of their ancestors match
789
Custom Actions
CONFIGURE WORKSPACE (default action)
This lets you edit the configuration for the currently open workspace. Currently, there is only one workspace configuration parameter: workspace password. This is the password used to encrypt the passwords for the server connections 779 contained in the workspace.
Connection with the server is automatically established when the node is added or AggreGate Client is launched. If connection or login fails for some reason (server not available, invalid password etc.), the node is shown in Disconnected state. If login fails, you will be prompted to register a new user account on the server:
790
AggreGate Documentation
Registering a new account is possible only if "Users self-registration" global configuration option 53 is enabled in AggreGate Server global configuration. You'll get the prompt even if this option is disabled on the server, because AggreGate Client has no way of telling whether or not it's enabled. AggreGate Client constantly monitors the connection with every AggreGate Server. Is the server becomes unavailable at any time, the node is shown as Disconnected . If a Server node is in the Disconnected state, AggreGate Client will periodically attempt to connect to it. To manually initiate a connection attempt, double-click the node.
Custom Actions
EDIT SERVER CONNECTION PARAMETERS
This is a default action when connection with the server is established. If not, double clicking on a node causes AggreGate Client to try connecting to the AggreGate Server. This action is used to change the settings for the current Server Connection IP Address or Host Name. Address of the server. Port Number. Port used for AggreGate Client connections. Username. Name of user account
108 779 :
on the server.
Password. User account password. Description . Server name or other textual description of account. Disabled. Flag that indicates that the account is disabled. AggreGate Client does not attempt to establish a connection using disabled accounts. Connection Timeout. Specifies how long will the client wait until a non-responding server will be considered unavailable. This parameter should be increased for remote servers available via slow or unreliable connections. Command Timeout. Specifies maximum execution time for a single command. This parameter should be increased in rare cases when the server has some extremely slow operations, e.g. building of a report may take several hours.
mode.
AggreGate Client
791
Server accounts located under the Servers node may be reordered using Drag and Drop.
Custom Actions
NEW SERVER CONNECTION (default action)
Registers a new Server Connection
779
IP Address or Host Name. Default address is 'localhost', it is used when AggreGate Server is installed on the same machine as AggreGate Client. Port Number. AggreGate Server port used for AggreGate Client connections. Default is 6460. Username. Name of user account
108
on the server.
This feature makes it easier for users new to the system to get access to the AggreGate Server for testing purposes and initial system set-up.
To allow using Event Filters 206 , AggreGate Client creates one Event Log component per every server connection 779 when it is active (established). Event Log component is automatically closed when connection to the corresponding server is broken. Event Log window consist of two main parts: Current Events and Event History:
792
AggreGate Documentation
Both parts have a toolbar that helps to access frequently used functions. In the left part of both toolbars the is a drop down box that allows to select an Event Filter. Initially, these the selected filter is <Empty Filter> what means that no events are shown. In some cases Event Log component shows a predefined set of event types. In this case list of Event Filters and related buttons ("Reactivate Filter", "Configure Filter") are not available. Columns of event tables can be resized and reordered. To resize a column click on its margin and drag the mouse to left or right. To change column order, drag column header and drop it to a new location. Column size and order is applied to the current filter only. It is stored in the workspace and reused when AggreGate Client is restarted. It is also possible to sort events. To enable sorting, click on the column header. Subsequent clicks will change sorting order for this column between ascending and descending. Double-clicking the separator between headers of two columns will auto-fit the left-hand's column width (i.e, resize it to fit everything in it). It is important to note that sorting of event history is performed on the server, so it may take considerable time. Double clicking on any event opens Data Table
854
801 .
Event Log uses Date Pattern , Time Pattern and Timezone settings specified in User Account Properties to properly convert and render different timestamps. All date/time values are shown in active user's timezone.
110
of events:
AggreGate Client
793
that will be used to filter events that will be shown in the log.
Reactivate Current Filter. This operation allows to re-enter filter parameters. Configure Current Filter. Edit settings of currently selected filter. Enable/Disable Horizontal Scrolling. If disabled, width of all columns is adjusted automatically to fit the width of Event Log window. If enabled, Event Log has a horizontal scrollbar and width of all columns is adjusted to fit their contents. This option is disabled by default. View Severity Statistics. Shows the number of events of each level Export . Exports
795 882
Clear Current Events . Clearing the current events table doesn't remove these events from the server and doesn't prevent new events from appearing in the table.
selected in the drop-down box is used to filter out events that will be shown.
Reactivate Current Filter. This operation allows to re-enter filter parameters. Configure Current Filter. Edit settings of currently selected filter. Enable/Disable Horizontal Scrolling. If disabled, width of all columns is adjusted automatically to fit the width of Event Log window. If enabled, Event Log has a horizontal scrollbar and width of all columns is adjusted to fit their contents. This option is disabled by default. View Severity Statistics. Shows the number of events of each level history. Export . Exports
795 882
Only events shown in the currently selected range will be exported. To export larger number of events, increase value in Events combo box (see below). Refresh. Refreshes event history. This operation causes the server to reload the history according to the current filter. The actual visible events may change after this operation. First. Scrolls history list to the first page. Previous . Loads previous page of the history list. Next. Loads next page of the history list.
794
AggreGate Documentation
Last. Scrolls history list to the last page. The Events combo box in the middle of toolbar defines how many events are shown at once. The total number of events corresponding to the filter and range of currently shown events is indicated in the right part of toolbar.
801 .
Acknowledge Event. Allows user to set event acknowledgement. This operation is available only for persistent events. View Acknowledgements . Shows event acknowledgements available only for persistent events. View Enrichments. Shows event enrichments persistent events.
883 882
801 .
This operation is
Delete Event. Permanently deletes event from event history. This operation is available only for persistent events.
863
where
For example, for a Device-related event, "Reboot Device", "Configure Device" and other operations may be shown. Event context menu example:
When acknowledgement is set, its time, author and text appear in the Acknowledgements column of the events table:
AggreGate Client
795
standard and
1312
Data Table is encoded according to Data Tables XML Encoding and written to a file.
standard
Technically, the Properties Editor allows changing the values of one of more variables 869 (properties) of a context. When the editor starts up for a given context, it loads the value of every variable for the context, and then allows the user to edit these values and writes them back to the context. Every property (variable) is edited in a separate Data Table Editor single Data Table 854 . The Properties Editor consist of a Toolbar and a Properties Pane:
801
796
AggreGate Documentation
Toolbar
Reload. Reloads values of all properties from the source context. Values that were recently changed in the editor are lost. Save . Saves values of changed properties to the source context. Saved values are marked as unchanged. Enable/Disable Tabbed Layout. Switches Properties Editor from tabbed layout to single page layout and back. Toggle Read-only. Temporarily switches editor to and from the read-only mode Import properties. Import Export properties. Export
800 796 .
800
Help. Shows documentation for the properties being edited. If Properties Editor is shown inside a dialog window, it has OK and Cancel buttons. The OK button saves the values of any properties which were modified, and closes the dialog. The Cancel button aborts the operation without saving. Most elements of the Properties Editor, as well as the actual properties, often have tooltips. These appear when the mouse cursor hovers over the element for some time.
Context Menu
The context menu is shown when right-clicking one of the properties in the Properties Editor. It contains a list of Variable-Related Actions 895 that "know" what to do with the selected variable. The number and types of available Variable-Related actions depend on the type of variable for which the context menu is shown.
AggreGate Client
797
If tabbed layout is enabled, the value of every property is shown in a separate tab. The property's name and detailed description are shown in a tooltip of its tab:
If tabbed layout is disabled, all properties are shown on a single page. The value of each property is shown in a separate collapsible pane. This pane may be collapsed and expanded by clicking on it. The property's name and detailed description are shown in a tooltip of its collapsible pane:
798
AggreGate Documentation
EXPANDED MODE
In Expanded Mode, properties are grouped according to their variable group 870 . Properties of every group are represented as a table with two or three columns. The first column is optional, and may contain a status icon for the property. The properties editor constantly monitors the status of every variable and updates the status icon with every change. Hovering the mouse over the icon pops up a tooltip with the status details:
The Property column contains property descriptions. Cell tooltips provide information about each property's name and its detailed description:
The third column's contents changes according to the variable definition 869 of the context being edited. If the Data Table 854 representing the value of a property always has just a single field with a single record, the Data Table Editor 801 is shown directly in the third column. In other cases, the third column will contain a [Click to open...] button, which would open a Data Table Editor in a new window. A Data Table Editor that is embedded into the table is marked in red on the picture below:
AggreGate Client
799
If tabbed layout is enabled, the properties of each group are shown in a separate tab. Group names are shown as tab headers:
If tabbed layout is disabled, all properties are shown on a single page. The properties of every group are shown in a separate collapsible pane. This pane may be collapsed and expanded by clicking on it. Group names are shown as headers of collapsible panes:
800
AggreGate Documentation
In expanded mode, the background color of modified properties changes from gray to dark gray:
Keyboard Navigation
Alt-L Als-S Reload properties Save properties
AggreGate Client
801
Most elements of the Data Table Editor, such as column headers and data cells, usually have tooltips which pop up when the mouse hovers over the element. The tooltip for the column header contains the field type and help string specified in the table's format
855 ,
if any.
The tooltip for a cell contains a string representation of the cell's value, and the type of field used for this cell. For example, it may be useful: If a cell's value too long to fit into the cell itself, If the cell editor has selection values box.
856
and you want to see the value itself, not its description from the drop-down
If cell tooltip provides some important extended information, the cell is marked with a small blue triangle:
Table columns can be resized and reordered. To resize a column click on its margin and drag the mouse to left or right. To change column order, drag the column header and drop it in a new location. Double-clicking the separator between headers of two columns will auto-fit the left-hand's column width (i.e, resize it to fit everything in it). Data Table Editor uses Date Pattern , Time Pattern and Timezone settings specified in User Account Properties 110 to properly convert and render different timestamps. All date/time values are shown in active user's timezone.
802
AggreGate Documentation
There are also two data presentation modes: Multiple records mode Single record mode In multiple records mode, the table header shows the description for every column, and every row represents one Data Table record:
Single record mode is used by the DTE when the table being edited contains just one record, and no extra records may be added. This mode features a two-column layout: the left column shows field names, and the right one contains values:
Toolbar
The Data Table Editor toolbar provides access to the operations that may be performed with the data table Add Row
854 .
Insert a new row before the currently selected one. If no row is selected, a new row is added to the end of table. This button is disabled or hidden if rows may not be added to the table. Remove the currently selected row(s). This button is disabled or hidden if rows may not be removed. Move current row up. This button is not shown if rows may not be reordered. It changes actual data in the table (in contrast to the sorting operation, which merely changes how the data is shown.) Move currently row down. This button is not shown if rows may not be reordered. It changes actual data in the table (in contrast to the sorting operation, which merely changes how the data is shown.) Undo all changes that were made to the table. This button is enabled only after a change is made. If horizontal scrolling is disabled, width of all columns is adjusted automatically to fit the width of Data Table Editor window. If scrolling is enabled, Data Table Editor has a horizontal scrollbar and width of all columns is adjusted to fit their contents. This option is disabled by default. Imports Exports
810
810
Generate a report
Some (or even all) toolbar buttons may be hidden or disabled if their respective operations are not available in the editor. A button is hidden if the operation is not applicable to the current table at all. If an operation is simply not available at the moment (e.g. the Remove Selected Rows is disabled when no rows are selected), its button is disabled.
AggreGate Client
803
Special Renderers/Editors
There are some special cases when non-standard editors are used:
856
flag is set in Field Format, any custom value can be typed inside the combo box:
Standard Renderers/Editor
STRING/INTEGER/LONG/FLOAT FIELDS
Integer, Long, String and Float values are edited in a normal text field:
BOOLEAN FIELDS
Boolean values are edited using checkboxes and are represented by Yes (for TRUE) or No (for FALSE) in read-only mode:
804
AggreGate Documentation
DATE FIELDS
Date and Date/Time values are edited using a Date Picker:
COLOR FIELDS
Colors are selected using a Color Picker:
AggreGate Client
805
Additional Renderers/Editors
DATE-ONLY EDITOR
Date-only editor allows to specify a date using Date Picker, but time specification is not allowed:
TIME-ONLY EDITOR
Time-only editor allows to specify a time in string form, but date cannot be selected:
BAR RENDERER
Bar renderer shows Integer , Long , Float and String values as percentages of maximum defined by Editor Options:
806
AggreGate Documentation
PERIOD EDITOR
Period editor allows to specify a time period as a certain number of selected time units:
PASSWORD EDITOR
Password editor is very similar to the usual text area, but types characters are now shown:
REFERENCE RENDERER
Reference editor displays clickable references (links) in blue underlined font:
Clicking on a reference initiates a server-side action. Right-clicking on a link brings a context menu of object that the link points to.
TEXT AREA
String values can be alternatively viewed and edited in a Text Area editor that is shown in a separate window:
TEXT EDITOR
Another option for editing String values is the more advanced Text Editor code, XML document or other text data suitable for syntax highlighting.
819 .
CODE EDITOR
Yet another option for editing Strings is Code Editor 820 . It's used when a string contains some Java source code, i.e. Java class representing a server script 628 or widget script 610 .
AggreGate Client
807
When editing the path/mask, you can press Space to get list of contexts that may be appended to the currently edited mask. Choose a context from the drop down list to append it to the current mask:
815
EXPRESSION EDITOR
Expressions 911 are edited in a text field with a [...] button that opens an Expression Builder validating an expression in point-and-click mode.
817
SOUND/IMAGE/FILE EDITORS
Data Block fields may contain images, sounds or generic files. Files, sound and images are inserted into the cells using a File Selector:
Images contained into the Data Table are displayed as a thumbnail (see previous screenshot). Clicking on a thumbnail opens a full-size image view.
808
AggreGate Documentation
Vector images (in SVG format) can be also opened for editing in the Text Editor highlighting. Sounds can be played back directly from the table cell:
819
Reset Cell To Default Fill Column With Cell Value Duplicate Record Reset Table View Table Format
of current table.
AggreGate Client
The context menu of Data Table Editor header provides access to the following features: Auto Resize This Column Auto Resize All Columns Group This Column (soft ascending) Group This Column (soft descending) Expand All Collapse All Hide This Column Show All Hidden Columns Reset Columns To Default More... Select All Cells Clear Selection Auto-adjust size of clicked column to fit all data. Auto-adjust size of all columns to maximize the amount of visible data.
809
Enables row grouping by the values of current column's cells, with ascending sorting. Enables row grouping by the values of current column's cells, with descending sorting. Expand all row groups. Collapse all row groups. Hides current column. Shows all currently invisible columns. Resets columns widths. Opens a popup dialog allowing to select visible columns. Selects the whole table. Clears cell selection.
In addition, header context menu contains checkable menu items allowing to show/hide individual columns.
Sorting Rows
You can sort the rows of a Data Table being edited or viewed. To enable sorting, click the column header. Clicking a header already used for sorting will reverse the sorting order.
Filtering Rows
Another convenient feature is data filtering. To enable filtering, enter some text in filter text field located in Data Table Editor toolbar (and indicated by a looking glass icon). Table contents will be filtered to show only rows matching to the filter. Context menu of the filter bar contains the following operations: Column Selection Case Sensitive Case Insensitive Use Wild Cards Use Regular Expressions Match From Start Match Exactly Match Anywhere Allows to perform searching in all columns or selected columns only. Enables case sensitive searching. Disables case sensitive searching. Enables/disables wildcard search mode. Wild cards may include * or ? characters that match any characters or any character, respectively. Enables/disables regular expression
1318
search mode.
Filter text must appear in the beginning of cell text. Filter text must exactly match cell text. Filter text may appear anywhere in the cell text.
810
AggreGate Documentation
During import operation, data read from a file is not inserted into Data Table Editor as is. Instead, it is merged with the data currently contained in the Data Table Editor using a Data Table Smart Copy 861 operation.
AggreGate Client
811
Properties import procedure cannot just override values contained in the editor with ones read from a Excel file because they may have different format 855 . But in any case the best efforts are made to import as much data as possible. When importing data, it is possible to choose what fields will be imported. You can only import fields that exist both in the imported Data Table and Data Table currently being edited, and are writable in the table being edited:
If you are exporting to or importing from a Character Separated Values (CSV) file, you will be prompted to specify CSV encoding/decoding options 1325 .
Examples
Original Data Table:
The same table exported to CSV format (Header Record contains field descriptions, screenshot taken in a text editor):
The same table exported to HTML format (as shown in a web browser):
812
AggreGate Documentation
The same table exported to XLS format (as shown in Microsoft Excel):
When you click OK, AggreGate Client generates 1325 a report design, fills it with the data from the editor, and opens the generated report in a Report Viewer 814 . You can then print it, or export it to PDF, HTML, CSV etc. This is what such a report looks like:
AggreGate Client
813
Bindings are edited in a nested Data Table Editor that has two fields: Target. Defines the field (and optional row number) to write the expression result into. Expression . Defines binding expression
911
The Apply button instructs Data Table Editor to save new/modified bindings inside the "primary" table and recalculate table data according to new bindings.
814
AggreGate Documentation
The Report Viewer's main window consists of toolbar and the report itself. Toolbar provides access to the number of operations: Save Report. Export the report to a file. Print Report. Reload Report. First Page. Go to the first page. Previous Page. Go to the previous page.
AggreGate Client
815
Next Page. Go to the next page. Last Page. Go to the last page. Go To Page. Go to a specific page. Actual Size. Zoom to the actual size. Fit Page. Zoom to fit a complete page in window. Fit Width. Zoom to fit page width in window. Zoom In. Increate zoom ratio. Zoom Out. Decrease zoom ratio. Zoom Ratio. Change zoom ratio. The Report Viewer can print reports, and also export to several file formats: PDF (Adobe Acrobat) RTF (Rich Text Format) XLS (Microsoft Excel, single or multiple sheets) HTML (Hypertext Markup Language) CSV (Character Separated Values, may be imported into many different applications) XML (Extensible Markup Language) To export a report, click the Save button. The Save File dialog is shown:
variables
869 ,
functions
878 ,
events
880
to check the difference between context tree visible in Entity Selector and server-side context
Content can be filtered so that only certain entity types are shown for selection. Here is what the Entity Selector looks like when used to select a single context:
816
AggreGate Documentation
827
2. In GUI Builder 827 , the Entity Selector can be used to drag various entities and drop them on various components ("widgets") in the main window. 3. In Expression Builder 817 , a double-click on the Entity Selector's tree node adds new a Reference Expression 911 being edited.
925
to the
4. Finally, the Entity Selector is used to select contexts and context masks when editing context path/mask fields in a Data Table Editor 801 .
AggreGate Client
817
"Closed" Context (for context nodes which are currently collapsed). This icon is shown if context doesn't provide a custom icon. "Open" Context (for context nodes which have been expanded). This icon is shown if context doesn't provide a custom icon. Group of variables, functions or events. Variable. This icon is shown if variable definition doesn't provide a custom icon. Function. This icon is shown if function definition doesn't provide a custom icon. Event. This icon is shown if event definition doesn't provide a custom icon. Action. This icon is shown if action definition doesn't provide a custom icon. Input field (for entering values for variables, events and functions). Description and type of field are shown. Output field (used by functions). Description and type of field are shown.
Searching/Filtering Nodes
Entity selector window has a filter field in the top. If something is typed in this field, only nodes those names contain typed text are shown.
This
818
AggreGate Documentation
Expression Text Area in the top that is used for directly editing expression text. Button Bar with two groups of buttons. Buttons on the left are used for inserting different operators and other Expression Language elements into the current caret position in expression area. Buttons on the right are used to validate expression syntax (Validate button) and calculate the expression result in the current environment ( Evaluate button). There is also a Functions combo box, for quick insertion of functions 914 . A Server Data area that contains an Entity Selector 815 component. Double-clicking on any entity inserts its Reference 925 into the current caret position in the expression area. A Components area that contains another Entity Selector allowing to insert references to widget component properties. This section is available only when editing widget binding expressions 606 . A Relative References list (not visible on the above screenshot) that shows relative references available in the current environment. If no relative references are available, this part is not visible. Double-clicking on a reference inserts its textual representation into the current caret position in expression area. Relative references are references with relative context part or with no context /entity specification at all. See References 925 article for details. A Reference Editor used to edit the reference that is currently selected in the expression area. Any part of a reference may be changed independently. When changes are made, expression text is updated. The Resolve button allows to calculate current value pointed by the edited reference. Evaluate button allowing to calculate expression output. The button image changes from the green checkmark ( to red cross ( ) if syntax of the whole expression (or its selected part, if any) is incorrect. Functions button that brings up the function selector, allowing to insert a function
914 :
AggreGate Client
it's not possible to evaluate the expression correctly from the Expression Builder. Here are some examples: If editing event filter
206
819
expression, there is no specific event that provides data for the expression.
Same applies for alert 216 's event trigger 222 expression - there is no event to test it with, and, thus, no "real" default data table in the expression evaluation environment.
Keyboard Shortcuts
This is a list of keyboard shortcuts supported by the text editor component. Shortcut Ctrl-A Ctrl-D Ctrl-I Ctrl-J Ctrl-C Ctrl-X Ctrl-V Ctrl-Z Ctrl-E, Ctrl-Z Ctrl-ShiftBackspace Description Select all Delete line Indent lines Join lines Copy Cut Paste Undo Redo Delete to line start
820
AggreGate Documentation
Ctrl-Shift-Delete Ctrl-Left Ctrl-Right Ctrl-Up Ctrl-Down Ctrl-Shift-Left Ctrl-Shift-Right Shift-Left Shift-Right Shift-Home Shift-End Shift-Up Shift-Down Shift-Page Up Shift-Page Down Ctrl-Shift-Up Ctrl-Shift-Down Ctrl-Shift-Home Ctrl-Shift-End Ctrl-Backspace Ctrl-Delete Ctrl-Home Ctrl-End Ctrl-[ Ctrl-] Ctrl-E, Ctrl-[ Ctrl-E, Ctrl-] Ctrl-' Ctrl-/ Alt-' Alt-/ Ctrl-E, Ctrl-A Ctrl-E, Ctrl-U Ctrl-E, Ctrl-J Ctrl-E, Ctrl-N
Delete to line end Go to previous word Go to next word Go to previous paragraph Go to next paragraph Extend selection back by one word Extend selection by one word Extend selection back by one character Extend selection by one character Extend selection to line start Extend selection to line end Extend selection back by one line Extend selection by one line Extend selection back by one page Extend selection by one page Extend selection back by one paragraph Extend selection by one paragraph Extend selection to document start Extend selection to document end Delete character before caret Delete character after caret Go to document start Go to document end Select code block Go to matching bracket Go to previous bracket Go to next bracket Scroll up one line Scroll down one line Scroll up one page Scroll down one page Append selected text to clipboard, leaving it in the editor Append selected text to clipboard, removing it from the editor Scroll to current line Center caret on screen
AggreGate Client
Bracket matching Code folding Auto indent
821
Keyboard Shordcuts
The below table lists default keyboard shortcuts available in Code Editor. To edit them, click on Configure Keyboard Shortcuts label in the Code Editor's status bar. Name Shortcut Key Description
BASIC EDITING
Backspace Delete to Word Start Delete Delete to Word End Delete Current Line Insert Line Break Split Line Start New Line BACK_SPACE Control BACK_SPACE DELETE Control DELETE Control Y ENTER Control ENTER Shift ENTER Delete the previous char at the caret position. Delete previous chars until it see a non-word char. Delete the next char at the caret position. Delete next chars until it see a non-word char. Delete current line. Insert a line break at the caret position. Insert a line break at the caret position and keep current caret position. Start a new line next to the caret line and put caret at the beginning of the new line.
822
AggreGate Documentation
Indent Selection Unindent Selection Join Lines Toggle Insert/ Overwrite Toggle Rectangular Selection
TAB Shift TAB Control Shift J INSERT Control BACK_SLASH Alt Shift INSERT Control Shift U
Indent the caret line if no selection and all selected lines if there is selection. Indent the caret line if no selection and all selected lines if there is selection. Join the next line with caret line if no selection, or join all selected lines as one line if there is selection. Toggle the override/insert status. Toggle from regular selection to rectangular selection.
Toggle Case
AggreGate Client
823
Move Caret to Previous Line Move Caret to Next Line Select Previous Line Select Next Line Goto Line Select Word at Caret Select to Matching Bracket Duplication Selection Line Comments Block Comments
Move caret up by one line. Move caret down by one line. Select from the caret position up by one line. Select from the caret position down by one line. Prompt a dialog to let user type in a line index and scroll to it. Select the current word. Select the current block that starts and ends with two matching brackets.
Duplication the selection. If no selection, the caret line will be duplicated. Using line style comment for comment a line or several lines. Using block style comment a line or several lines.
UNDO/REDO
Undo Redo Control Z Control Shift Z Undo the last editing operation. Redo the last undone editing operation.
CLIPBOARD OPERATIONS
Clipboard Cut Control X Shift DELETE Clipboard Copy Control C Control INSERT Clipboard Paste Control V Shift INSERT Clipboard Paste with Dialog Control Shift V Control Shift INSERT Prompt a dialog to allow user to select one of the previous clipboards and paste it. Paste whatever on the clipboard to the current caret position. Copy the currently selected text. If nothing is select, copy the current line. Cut the currently selected text. If nothing is selected, cut the current line.
FOLDING OPERATIONS
Fold Selection Expand Folding Collapse Folding Control PERIOD Control EQUALS Control MINUS Create a folding which contains the currently selected text. Expand the current folding. Collapse the current folding.
824
AggreGate Documentation
4.17 Favourites
The Favourites window displays a list of Favourites 626 . It combines favourites obtained from all server connections that are configured in AggreGate Client. Clicking on a favourite launches a corresponding server-side action.
779
The table includes Favourites even from servers with which AggreGate Client does not have an active connection at the moment. Upon first connecting to a new server, AggreGate Client obtains the list of Favourites and retains it locally from this point onwards. Favourites component is based on Data Table Editor functionality.
801
and, thus, provides the same toolbar, context menu, and other
Context Menu
Context menu of the favourites table has two additional items: Configure. Starts Configure Favourite Delete. Starts Delete Favourite
905 904
action.
action.
4.18 Trackers
The Trackers window displays a list of Trackers 257 . It combines trackers obtained from all server connections are configured in AggreGate Client. Color of the tracker indicate its state.
779
that
801
and, thus, provides the same toolbar, context menu, and other
Context Menu
Context menu of the trackers table has two additional items: Configure. Starts Configure Tracker Delete. Starts Delete Tracker
905 904
action.
action.
AggreGate Client
825
There are four types of Context Tree nodes: Context nodes that can be expanded Variable nodes, shown using normal font Function nodes, shown in bold Event nodes, shown in bold italics Expanding a context node forces the Device Browser to request the server for info about the node's children. Clicking on a context node shows information about that context's variables, functions and events. Double-clicking on a variable node shows its current value in a Data Table Editor
801 .
Double-clicking on a function node allows to enter function parameters using Data Table Editor. Then function is called and its output shown in Data Table Editor.
826
AggreGate Documentation
791
AggreGate Client
827
OR click the "Close Window" icon in the top-right corner to discard your changes and exit report editor immediately.
All reports are shown in Report Viewer 814 by default. However, it is possible to select a different destination using the Preview menu (located in main menu). Reports can be directly exported into PDF, HTML or TXT format.
312
templates
314
or build
Main Window
GUI Builder always opens in a separate window:
828
AggreGate Documentation
The main window has several primary components: Main Menu Toolbar
829 830 833 828
Work Form
Component Palette
834 835
Most components in GUI Builder are implemented as dockable panes and may be removed, resized, docked/undocked, put into tabs etc. For more information, see Customizing Dockable Panes 781 . Properties Editor 795 article has more information on using the Properties Editor. Component properties are described in the component reference 322 .
FILE MENU
New Template. Clears the template of the widget currently being edited. Open Template . Loads a new widget template from file. The template currently being edited will be lost.
AggreGate Client
Save Template to File. Saves the currently edited template to file.
829
VIEW MENU
Items in this menu may be enabled or disabled. They are used to show or hide different parts of GUI Builder. Resource Window. Toggles Resource Window Palette Window . Toggles Component Palette
833 .
834 . 835 .
Properties Window. Toggles Component Properties Window Entity Selector Window . Toggles Entity Selector
834 .
HELP MENU
Open GUI Builder help. Opens GUI Builder documentation in browser. Open Widgets help. Opens widgets documentation in browser.
4.21.2 Toolbar
Provides quick access to commonly used operations: Done. Finishes editing of widget template and saves changes to the AggreGate Server. Cancel. Stops editing and abandons any changes. Toggle Decorations. Enables or disables decorations of panel layout grid cells. See cell decorations details.
831
for
Save Template. Stores currently edited template on the server by updating template field in the widget properties 315 . Editing is not interrupted. Undo. Discards previous operation. This function has global keyboard shortcut: Ctrl-Z. Redo. Repeats previously undone operation. This function has global keyboard shortcut: Ctrl-Y . Run Widget. Runs the widget currently being edited, for testing. This function has global keyboard shortcut: F5. Fill Horizontal. Toggles horizontal fill 320 of currently selected component. Available for components that are located in container with Grid Layout 318 . Fill Vertical. Toggles vertical fill in container with Grid Layout 318 .
320
Set anchor: Center. Set anchor 319 of currently selected component to Center. Available for components that are located in container with Grid Layout 318 . Set anchor: North. Set anchor 319 of currently selected component to North. Available for components that are located in container with Grid Layout 318 . Set anchor: East. Set anchor 319 of currently selected component to East. Available for components that are located in container with Grid Layout 318 . Set anchor: South . Set anchor 319 of currently selected component to South. Available for components that are located in container with Grid Layout 318 . Set anchor: West. Set anchor 319 of currently selected component to West. Available for components that are located in container with Grid Layout 318 . Set anchor: North-West. Set anchor 319 of currently selected component to North-West. Available for components that are located in container with Grid Layout 318 . Set anchor: North-East. Set anchor 319 of currently selected component to North-East. Available for components that are located in container with Grid Layout 318 . Set anchor: South-East. Set anchor 319 of currently selected component to South-East. Available for components that are located in container with Grid Layout 318 . Set anchor: South-West. Set anchor 319 of currently selected component to South-West. Available for components that are located in container with Grid Layout 318 . Align Top. Align selected components by their top edge. Available for components that are located in container with Absolute Layout 322 .
830
AggreGate Documentation
Align Bottom. Align selected components by their bottom edge. Available for components that are located in container with Absolute Layout 322 . Align Left. Align selected components by their left edge. Available for components that are located in container with Absolute Layout 322 . Align Right. Align selected components by their right edge. Available for components that are located in container with Absolute Layout 322 . Align Horizontal Axis. Align selected components to horizontal axis by their center. Available for components that are located in container with Absolute Layout 322 . Align Vertical Axis. Align selected components to vertical axis by their center. Available for components that are located in container with Absolute Layout 322 . Make Same Width (by minimal). Set width of all selected components equal to the minimal width of them all. Make Same Width (by maximal). Set width of all selected components equal to the maximal width of them all. Make Same Height (by minimal). Set height of all selected components equal to the minimal height of them all. Make Same Height (by maximal). Set height of all selected components equal to the maximal height of them all. Distribute by Centers Horizontal. Align components so that the distance between their centers along the horizontal axis will be equal. The leftmost and rightmost components are not moved. This button is available when three or more components are selected. Distribute by Spacing Horizontal. Align components so that the distance between edges of adjacent components along the horizontal axis will be equal. The leftmost and rightmost components are not moved. This button is available when three or more components are selected. Distribute by Centers Vertical . Align components so that the distance between their centers along the vertical axis will be equal. The topmost and bottommost components are not moved. This button is available when three or more components are selected. Distribute by Spacing Vertical. Align components so that the distance between edges of adjacent components along the vertical axis will be equal. The leftmost and rightmost components are not moved. This button is available when three or more components are selected.
during construction and editing. This is the main part of the GUI
The work form always displays the core container of a widget - its root panel. If is contains any child components or containers, the entire hierarchy is shown in the work form. In other words, when cell decorations 831 are disabled, the widget in the work form closely resembles what it'll look like when actually running in AggreGate Client 776 . You can put new components on the work form, move components within current container or to other containers, resize components and change their margins 320 , create new bindings 842 etc. See editing widget layout 836 for details. Here is what the work form looks like when editing a widget template
314 :
AggreGate Client
831
Components in GUI Builder look similar to what they'll look like when the widget is executed in AggreGate Client, with some differences: 1. Most user input is ignored (e.g. buttons are not visually "pressed" when user clicks on them). 2. If Toggle Decorations button (see below) is pressed all containers have borders showing their titles:
318
The borders of these rectangles are used for resizing GUI components and defining their borders. For further details on how to use the borders, see Editing Widget Layout 836 .
Cell Decorations
When a cell of a Grid Layout 318 is shown in a work form, it may have additional decorations. These decoration make it easier to edit the layout, but make the widget appear different then what it looks like during normal execution 317 . You can toggle them using the Toggle Decorations button in GUI Builder toolbar 829 . Additional visible elements shown when decorations are enabled: 1. Empty cells of Grid Layout are shown as white rectangles. 2. Every cell of Grid Layout has a border, to help find separate and joined cells. 3. Containers 376 have title borders showing their names. If a container has multiple panes, each pane also gets a title border with its name. Here is what the same panel with grid layout looks like, with and without decorations:
832
AggreGate Documentation
Without decorations:
With decorations:
322 ,
Context Menu
Right-click on a component within the work form will bring up the same context menu that appears inside Resources Window. See descriptions of menu items here 833 .
AggreGate Client
833
The resource tree may be used for selecting components and panes of multi-pane containers. When a component or pane is selected in the resource window, it is also selected in the work form. Its properties are shown in the Component Properties Window 835 . Invisible components (with Visible property set to FALSE) are shown in grey.
Node Icons
Root panel Container Regular
376 376
322
component.
604
Rename. This is the way to change the name of a component, container or pane. Delete. Permanently delete the selected node (container, component or pane). The context menu for a node may also contain some component-specific operations. For example, the context menu for a Tabbed Panel node contains an Add Tab item. Similarly, the Button Groups 375 node has an Add Button Group operation. Clone. Make a copy of the component. If selected node is a container component in this container.
376 ,
its context menu also has a Create submenu used to create a new widget
830 .
Renaming Components
Component's name is used to refer it by bindings is how renaming looks like:
604 .
834
AggreGate Documentation
If the renamed component had any bindings, these bindings will be shown in the popup window to allow adjusting them to reflect component name change.
Searching/Filtering Components
Use the filter field in the top of resources window to display only components those names/types contain specified string.
Drag-and-Drop Operations
The resource tree supports the following Drag-and-Drop operations: If a component is dragged from a component palette 834 and dropped on a container's node with Grid Layout 318 , a new component is placed on the first free cell in the component's grid. If the container has no free cells, a new cell is created. If a component is dragged from a component palette a new component is placed at position X=0, Y=0. If a component is dragged from the work form tree, they exchange places.
830 834
322 ,
604 .
842
for details.
AggreGate Client
Containers . Contains all containers
376 . 397 .
835
Category Charts. Contains all category charts XY Charts. Contains all XY charts
429 . 478 .
836
section for more information on how to use component palette to add new components
Note that properties marked with icon have bindings property context menu (see below).
312
When properties are changed, changes are saved immediately. There's usually no need to click the Save button in the Properties Editor toolbar. If a new property value cannot be automatically saved (e.g. because it was filled with an invalid value, such as a negative width, for example), the status of this property is set to "Modified" in the Properties Editor. Modified properties are highlighted in dark grey, and you have to correct them and then click the Save button in the toolbar to save them. If such explicit saving fails, an Error Dialog 846 pops up, describing the problem.
Context Menu
The context menu of Component Properties Editor allow to manage bindings component. It contains the following menu items:
604
588
of a
605 .
Bind Property. Create a new binding that will change current property, i.e. have this property as a target prompted to specify other binding properties 952 first.
User is
Edit Bindings. Opens a dialog allowing to configure all bindings associated with current property, i.e. having it as a target 605 , an activator 607 , or appearing inside binding expression 606 .
836
AggreGate Documentation
870
855 .
Add Custom Property. Allows to create new custom property for current component. Edit Custom Property. Opens parameters of selected custom property for editing. Remove Custom Property. Removes selected custom property.
830
Before reading this section make sure that you read and understood how widget layout
is organized.
The effect of all operations described in this section may be obtained by manually editing the constraints widget components.
318
of
It's possible to clone component by moving it to another location with the mouse when Ctrl key is pressed.
A component may be dropped... 1. On an empty cell in the layout grid, 2. Over an existing component, 3. On a drop zone, causing automatic creation of new row and/or column in the panel layout grid, or 4. On a drop zone leading to the implicit creation of a new Panel
378 .
It's possible to drag and drop individual components and event component sub-trees between different widgets, each of them being edited in a separate instance of GUI Builder.
AggreGate Client
837
When a component is dragged onto the work form and the mouse hovers over an empty cell (one marked with a white background, if decorations 831 are enabled), the cell is highlighted in blue:
838
AggreGate Documentation
Dropping the component over one of the first eight locations (illustrated in yellow in the example above) puts it into a new row and/or column of the layout grid. More on this in the description for method 3, below. Dropping the component over locations 9-16 (green, above), creates a new Panel 378 container in the cell occupied by label1. This panel will now hold two components: label1 and the component that was dropped. More on this below, in the description of method 4.
If we now drop the new component, a new column will be created to the right of label1:
AggreGate Client
839
In the above case, the new component will be placed on a new row and column created to the bottom and to the right of label1. As a side-effect, two empty cells will be created:
This is what the "ghost" frames look like in a more complicated layout:
This is what this layout looks like once the component is dropped:
840
AggreGate Documentation
If the component is dropped on this location, a new panel will be created, containing two cells in one row:
For location 16, "ghost" frames show that the new panel will contain four cells. label1 will be placed in row 1, column 1, while the dropped component will be placed in row 2, column 2:
AggreGate Client
841
To resize the component, drag the blue dots. To change its margins, drag the green dots. When margins are set to nonzero values, they are drawn as green dashed rectangles around the component:
Holding Shift key during component resize will cause it to preserve its proportions. Holding Alt key during resize will resize component relatively to its center instead of its top-left point. The Root panel never has margins (it must occupy all available space in the widget window).
376
842
AggreGate Documentation
Snapping Grid
It's often very convenient to preserve regular component spacing within absolute layout. The widget will look better if components are properly aligned to each other. Despite GUI Builder's toolbar 829 provides many component alignment tools, one of the best ways to ensure proper alignment is using snapping grid. Don't mix absolute layout's snapping grid with the grid layot
318 .
Snapping grid may be visible only if a widget is being edited in GUI Builder. It has two steps: primary step that may be optionally used to snap components during drag and drop operations, and secondary step which is always ten times larger than primary step.
The snapping grid can be controlled separately in each container using absolute layout. There are three component properties 322 controlling snapping grid demeanor: Show Grid . Enables/disables snapping grid visibility. Grid Step. The primary step of snapping grid in pixels. Snap to Grid . If enabled, all component's corners are always attached to grid nodes during drag and drop operations 844 . Despite snapping grid controls are visible in properties window and saved into widget template like any other properties, they do not somehow influence the behavior of running widgets. The only objective of snapping grid is component placement facilitation in GUI Builder.
using intuitive visual operations. There are several ways to create and
AggreGate Client
You can drag a node from the Entity Selector Window 833 .
834
843
830
or in the Resource
If the node is then dropped onto the component, the new bindings are created. Newly created bindings are shown in the popup window and may be adjusted.
835
window
Open All Bindings tabular property and edit it Click OK to save the changes
Similarly to all other tables, All Bindings table support sorting and filtering of the bindings list.
or Work Form
830
Binding a Property
To create a new binding targeting 605 a certain component property, right click on the name of this property in the Component Properties 835 window and select Bind Property. The binding settings dialog will pop up, allowing to set up
844
AggreGate Documentation
Editing a Binding
Different parts of a binding can be edited in different visual editors. Binding Target
605
606
817
607
Drag and Drop Operations Between Entity Selector and Work Form
1. DRAGGING A VARIABLE FIELD AND DROPPING IT ON A COMPONENT
In this case, two bindings are created: A binding that reads the variable field on startup and reset component's default property 586 .
378
A bindings that writes the value of the component's default property back to the context variable upon the submit event of the root panel.
AggreGate Client
845
344
COMPONENT
A binding that reads the variable value on widget startup and writes it to the default property of the Data Table Editor, i.e. the table this editor operates on. A binding that writes the table contained in the Data Table Editor back to the context upon the submit root panel.
378
event of the
A binding that sets the Enabled 586 property of the Data Table Editor according to the Writable property of the variable definition, to make sure that value of read-only variables can't be edited.
334
COMPONENT
This operation does not actually create new bindings. Instead, it finds all widget bindings: Whose target points to the input field of this function, or Whose expression contains references to the output fields of this function and sets their activators to the action 337 event of the button component. This makes them working together within one bindings processing session 607 that is started upon button click (when action event is fired). If a widget has no bindings related to the input or output fields of the dragged function, this drag and drop operation won't be allowed.
375
This operation creates three bindings, which let you use the buttons in the group to change the field's value:
If the field has selection values 856 , this operation also changes the Value 339 property of all radio buttons that belong to the group to the available selection values. If you have 5 selection values (for example) yet only 3 radio buttons, only the first 3 values will be used - no error will be shown.
340
OR LIST
331
846
AggreGate Documentation
856
adds an extra binding whose purpose is to display the selection values or list.
It has three buttons: The More Info button shows detailed information about the error message. Advanced users can use this for troubleshooting.
The Send Report button submits the error details to Tibbo. The email contains the text shown when you click More Info. No additional information is transferred. The PC where AggreGate Client is installed must have Internet access for the report to be sent. Error report is sent using HTTP protocol to the Tibbo server. The Close button just closes the dialog. If logging details) in the log.
848
is enabled, you can later find the error message (along with its
AggreGate Client
847
848
AggreGate Documentation
4.24 Logging
Similarly to the AggreGate Server, AggreGate Client uses Apache Log4J logging library for log output of its own internal events. It is highly customizable and allows multiple levels and sources of logging information along with numerous log destinations. Logging output can be redirected to: Console Text files XML files Windows event logs UNIX syslog Database Remote network server E-mail messages Java Message Service (JMS) And many other destinations.. Logging of AggreGate Client is configured and managed exactly in the same way as the logging of AggreGate Server. In effect, this means you're most likely to use the default configuration. If you want to change anything, you're going to have to directly edit AggreGate Client logging configuration file, which is logging-client.xml, in the installation directory. The structure of this file is briefly described in logging configuration file 74 section. More info on logging: Configuring Logging
74
of AggreGate Server
74
80
This may seem like a bit of a terse explanation, but it's just because logging is a complex topic, and is only used for troubleshooting. If we were to delve into logging in detail, we would effectively be writing another manual for Log4J. We opted for using a third-party logging tool because it is robust, flexible, and very well documented.
5 AggreGate Agent
The AggreGate Agent is one of the most complex and versatile concepts in the AggreGate universe. In this part of the manual, we will attempt to explain its purpose, function, and importance. The term Agent bears defining. The inspiration for this term comes from the following sense of the word: Agent: somebody representing another; somebody who officially represents somebody else in business. [Microsoft Encarta 2006. 1993-2005 Microsoft Corporation.] In this documentation, Agent means one of the following, depending on the context: 1. A special application that intercommunicates with AggreGate Server server using AggreGate communication protocol 1303 . This application converts data collected from hardware into AggreGate format and/or converts third-party communication protocols into AggreGate protocol. It can be implemented in virtually any programming language, while Tibbo provides reference implementations in Tibbo BASIC, Java (including Android version) and .NET (including .NET Compact). 2. An external hardware device (programmable controller or computer) that runs a Agent application.
AggreGate Agent
AggreGate Server internals and Java programming.
849
2. Via an Agent : The Agent is a separate hardware device (controller, module, or PC) running a special-purpose application. This hardware/software combination acts as a mediator between the actual hardware device (connected to Agent using serial, Wi-Fi, GPRS or other link) and the AggreGate Server. Connection between AggreGate Server and Agent is established over IP network. Agent application may be also integrated into device design and executed by the device's main CPU. Alternatively, a communication coprocessor running Agent application may interact with the main CPU responsible for device "business logic" via SPI interface. Let's discuss this second modus operandi a bit further: When using an Agent, data conversion is done in hardware. The device running the Agent application receives a stream of data from the hardware device using the device's own native protocol. It then converts this stream into a AggreGate Server generic protocol, and sends it to the AggreGate Server. When receiving instructions from the AggreGate Server, the Agent converts them back into the device-specific protocol and sends them to the device. In effect, the Agent application is composed of two primary parts: 1. Device-Specific side: This part of the code is written specifically for the particular hardware device connected to the Agent hardware platform. This is the only part which has to be modified to make AggreGate work with any new hardware device. 2. Network side: This part of the code handles all AggreGate Server communications. This is a generic part. In effect, it communicates with AggreGate Server using the AggreGate Communications Protocol 1303 . This part never has to be changed to make AggreGate work with a new device. You may think of the AggreGate as a hardware-based driver or protocol converter. If you have a hardware device you wish to plug into AggreGate so it would exploit all of the power and benefits of the system, all you have to do is just include an open-source Agent library to your firmware/software, and voila - you've got complete AggreGate connectivity for your device! Agent application provides AggreGate operators several methods to control, monitor and configure hardware devices connected to it: It exposes the internal settings of your device to AggreGate Server, so that settings such as Number of Records to Keep (for a time clock) or Maximum Permitted Speed (for a forklift) will be seamlessly displayed and edited in any AggreGate Server User Interface (such as AggreGate Client 776 ). It allows to execute different operations with the device, such as Perform Self Test or Send Message To Device LCD. Operators may specify input parameters for every operation and view their execution results. It helps to monitor events generated by a device, such as User has entered the area or User has exited the area for the Access Control Terminal. AggreGate Server stores all device events persistently and provides access to their history for system operators. In addition, one Agent hardware platform can be connected to several different devices. For example, you could use a 4-port DS1000 Programmable Controller manufactured by Tibbo as your hardware platform, and connect it to 4 serial devices (time clocks, for example). Your Agent application will allow access to each of these time clocks as if it were individually connected to the network.
130 .
850
AggreGate Documentation
Agent SDK
For information about implementing Agent as a part of a PC-based application based on Java or .NET technology, see Agent SDK 972 section.
PRIOR KNOWLEDGE
In order to proceed with connecting your devices to AggreGate with Agent, you should be familiar with different concepts of the system, such as representing of devices as contexts containing a set of variables, functions and events. We suggest reading the following basic topics before starting the customization: Introduction
27 31
848
It is also highly recommended to learn about the internal representation of device data in the system: Contexts Variables Functions Events
880 854 863 869 878
Data Tables
Also, you may want to take a look on two articles about communications between AggreGate Server and Agent: AggreGate Communications Protocol 1303 Data Table Encoding
1306
The Agent application maps data provided by hardware into variables, functions, and events of a single context 863 (Agent's context). AggreGate Server creates a Device context Agent application.
677
All variables (settings) provided by Agent are read and cached on the server side (see synchronization
All control requests (function calls) to AggreGate Server's Device context are directly forwarded to Agent for execution. Replies are sent back to AggreGate Server. AggreGate Server receives and persistently stores all events received from Agent.
Agent Startup
1. When a programmable controller running AggreGate powers up or PC-based Agent application is started, it tries to
AggreGate Agent
establish a connection with AggreGate Server.
851
2. If a connection is established, it completes the login sequence by sending some commands to the server and checking the replies. This involves checking the validity of AggreGate password stored in server-side Device account. 3. After that, the AggreGate Server starts a full synchronization 131 . It reads information about context provided by Agent along with the definitions of its variables, functions and events, synchronizes Agent's real-time clock with the server time and then switches to "normal operation". During normal operation AggreGate Server: Periodically synchronizes variable values between the server and agent contexts; Forward operation requests to Agent and receives execution results; Receives device events from Agent and processes/stores them.
852
AggreGate Documentation
Every context (i.e. device) should provide definitions for its variables, functions and events. A definition contains the metadata for the variable, function or event, such as description, format and some other information.
Event Confirmation
Some Agents require reliable event delivery. Such Agents should declare a confirmEvent() 853 function that will be called by the server each time it has received and successfully processed an non-system event from an Agent.
functions
878
and events
880
date
1 Root context :
Field Type Notes
Field Description
Value of the real-time clock onboard the programmable controller or PC running Agent.
Date
MODTIME
This variable contains timestamps for the latest modification time of every "device setting" variable in Agent's device contexts. These modification times are usually stored in EEPROM to assure correct synchronization after restarts. After each synchronization of device settings between AggreGate Server and Agent, the server updates variable modification times stored in the Agent by setting this variable. When a device setting is modified internally (e.g. using the device's keypad and LCD screen), Agent must properly update its modification time to keep the new values from being overwritten by the old ones, stored in the server cache, during the next synchronization. In some cases, Agent may not support modification times for some or all device setting variables. The modtime variable should not contain records for such variables. Even if it does, their modification timestamps must be set to NULL.
AggreGate Agent Variable Name: Records: Availability: Record Format Field Name
variable modtime
855
853
date
Field Description
Name of device setting variable. Date/time of the last modification of this variable's value. [?
878 ]
Public Functions
SYNCHRONIZED
AggreGate Server calls this function to instruct Agent that synchronization is finished and the latter may start sending events 852 .
synchronized
0
: None
0
none
CONFIRM EVENT
If this function is defined by an Agent, AggreGate Server calls it every time it receives and successfully processes a non-system event.
confirmEvent
1
: Name id Type Long Description ID of an Agent-generated event that was successfully received, stored and processed by the server
0 None
854
AggreGate Documentation
First, AggreGate Server gets information about context declared by the Agent. The following commands are sent: 1. Get Variable 1305 info 2. Get Variable children
871 872 872 873
of the Agent context to the current time in the Agent's Device Account timezone
124 .
D. FINISHING SYNCHRONIZATION
1. Call function synchronized
853
AggreGate Server never explicitly starts or stops listening for Agent's events by sending Add Event Listener 1306 or Remove Event Listener 1306 commands of AggreGate Communication Protocol. It listens for events implicitly, without notifying Agent about that it has started listening. Therefore, Agent may start sending events of any defined type to the server immediately after synchronization is complete, i.e. after the server has called the synchronized 853 function from Agent's root context.
6 System Internals
This chapter discovers the details of AggreGate internal components and concepts.
System Internals
855
Even the most simple variables, containing just a single string or number, are represented by a Data Table with just one record and one field. This may seem strange at first glance, but the concept of Data Tables significantly simplifies complex operations.
is represented by a Data
Function input and output values. Input and output values for each function 878 in every AggreGate Server context is represented by a Data Table. Its format 855 is specified by function definition 878 . Event data. Every AggreGate Server context event 880 has a separate Data Table associated with it. This Data Table contains event-specific data. Its format 855 is specified by event definition 880 .
856
AggreGate Documentation
878 ,
To define the format for the input and output values of context functions To define the format for a Data Table associated with an event Table format defines the following table properties: Property Minimal and maximal record count Reorderable Record Validators Table Validators Bindings Naming Expression Description
880 .
The number of records should be within this range, otherwise the table will be treated as invalid. This flag indicates that records in this table may be swapped (re-ordered) during table processing Rules for validating every record in a table. These are used internally and are not userconfigurable. Rules for validating the whole table. These are used internally and are not userconfigurable. A list of data bindings 860 that define how the values in the table are changed when other table cells, or environment variables, are changed during table processing. An Expression
911
that defines how the table is presented to the users in the interface.
Field Format
The Table Format consists of several Field Format descriptors describing each field. Most of these descriptors are never configured by the user (or administrator). They're internal settings, and are only covered here for reference. Field properties: Property Name Description Help Default Value Nullable Non-Replicatable Key Field Selection Values Extendable Selection Values Validators Editor/Renderer Options Icon Group Description Field name. Textual field description. Detailed description of a field. Default value of the field. You can omit this only if the field is nullable (see below). Flag indicating that field can contain NULL ("Undefined") values. Flag that indicating that field should be skipped during Data Table Smart Copy
861
operation. operation
Flag designating field as a key field. Key fields force the Data Table Smart Copy to employ a special copy algorithm. List of values that can be selected for the field, along with textual descriptions.
861
Flag indicating the field may be set to any value, including ones not listed in Selection Values. List of validators used to check if value is suitable for the field. AggreGate Server features several pre-configured validators, internally used by the system to verify user input. This parameter defines how the field is shown and modified in the user interface. Allowed editor/renderer codes are listed and described here 857 . Editor/renderer options that allow fine-tuning rendering of field values in the UI. Syntax of option strings for different editor/renderer types are described here 857 . String ID of field icon. Human-friendly field group description.
Field Types
There are several predefined field types that may appear in Data Tables: Field Type Integer field Desctiption Contains a 32-bit signed integer number.
System Internals
857
Long field String field Boolean field Float field Double field Date field Data Table field Color field Data Block field
Contains a 64-bit signed integer number. Long fields are often used to hold time periods expressed in milliseconds. Contains a string (unlimited length). A "flag" field with two possible values: TRUE or FALSE. Contains a 32-bit floating point number. Contains a 64-bit floating point number. In most cases, Double should not be used in favor of Float. Contains a millisecond-precision timestamp. It may be treated as date, time, or a timestamp (date + time). Contains a nested Data Table. Contains a color definition (RGBA). Contains binary data that may be treated as a generic file, image, sound etc.
6.1.2 Editors/Renderers
This section lists all Data Table field editors and renderers renderer options.
856
Editor/ Description Render er Code list List Editor. Renders field that have Selection Values as a list of radio buttons instead of usual combo box. This editor will not work properly for fields that have Extendable Selection Values flag enabled. Date Editor . Allows to specify only date for Date fields. Time specification is not allowed. Time Editor. Allows to specify only time for Date fields. Date specification is not allowed. Spinner. Renders a spinner next to the numeric text box allowing to increase/decrease values using a mouse.
Options
None allowed.
Date
date
None allowed.
Date
time
None allowed.
Intege r
spinner
None allowed.
bar
Progress Bar Renderer. Displays a Options string will be interpreted a numeric integer progress bar indicating current field maximum value for a bar, i.e. its high limit. The low limit is value. The highest value of the bar is always zero. specified by Editor Options. If no options are defined, the maximum value is assumed to be 100. Example: 10000. This options string will force the bar to render values in range from 0 to 10000.
bytes
Bytes Renderer. Interprets the field Options string will be interpreted a Boolean value. If value value as byte count or byte rate and is false the field will be rendered as byte count (this is a renders it as: default mode). If value is true, the field will be rendered as byte rate. number of bytes, kilobytes, megabytes of gigabytes, OR Example: 0. This options string will force field values to be rendered as Bytes, KBytes, etc. number of bytes, kilobytes, megabytes of gigabytes per Example: 1. This options string will force field values to be second rendered as Bytes/s, KBytes/s, etc. Time Period Editor. Allows to Options string must have the following form: MIN_UNIT
Long
period
858
AggreGate Documentation
specify a time period as a combination of a Time Unit (from milliseconds to year) and the number of Time Units entered as a number. The resulting field value is number of milliseconds.
String
expressi Expression Editor. Allows to enter on an AggreGate expression 911 using Expression Editor. passwor Password Editor. Password editor d is a text field that substitutes all characters with "*". text Text Editor. Uses fully-functional text editor with syntax highlighting support for editing text strings.
String
None allowed.
String
Options string will be interpreted as a syntax highlighting mode, one of the following:
aggregate - AggreGate Expression html - HTML markup java - Java code shellscript - Unix shell script smi-mib - SNMP MIB file syntax sql - SQL query xml - XML markup
String
html
Options string will be interpreted a numeric integer number of characters to show in the main table (i.e. until the text opens in a separate dialog). By default, 30 characters are shown. Example: 100. This options string will cause first 100 characters of the string to be shown in the table.
String
textarea Text Area Editor. Uses text area opening in a separate dialog for editing text strings. It provides more space for editing longer values and has scrolling capabilities.
Options string will be interpreted a numeric integer number of characters to show in the main table (i.e. until the text opens in a separate dialog). By default, 30 characters are shown. Example: 100. This options string will cause first 100 characters of the string to be shown in the table. Options string will be interpreted a numeric integer maximum number of characters to show in every line of text area. If the text is longer, more lines will be added to the text area. Default number is 20. Example: 50. This options string will cause rendering of text area having width enough to display 50 characters and height enough to fit the whole text.
String
etextare Embedded Text Area Renderer . a Uses text area component appearing inside the table cell to render multiline text values.
String
context
System Internals
859
Example: widget. This options string will allow selecting only Widget Contexts 774 . String String context mask Context Mask Editor. Allows user to specify context mask. Same as above. Syntax of options string must match syntax of a Reference 925 of the following form:
referenc Reference Renderer. Allows user e to initiate an action by clicking on the reference. Action to execute and its parameters are specified via renderer options.
action/contextPath:actionName (parameter_list)$icon
The editor options of a Reference Editor define: What action 892 to call upon a click on the reference link, and from which context 863 What parameters will be passed to the action (parameters are specified as parameter_list, see References 925 article to discover the syntax) What icon should be shown next to the link text If parameter list includes expressions 911 , the following resolution environment will be used to resolve them: Expression Parameters Resolution Environment Default Context
927 922
Default context of the current editor. Data Table being viewed/edited in the editor. Row containing the clicked reference. Standard
931
927
variables only.
Example: action/users.admin.widgets.chart1: launch('{field2}', '{field3}'). This options string will cause launching widget users.admin. widgets.chart1 and passing values of fields field2 and field3 from current record to this widget. String font Font Editor. Allows to select a font from the list of fonts installed on the machine where AggreGate Client runs. IP Address Editor. Allows to enter an IP address. Host names are not allowed. None allowed.
String
ip
None allowed.
Color
box
Box Renderer. Normally, color None allowed. values are rendered as small colored rectangles along with numeric RGB valuess of a color. Box renderer does not show numeric RGB values and displays a large colored rectangle instead. Data Block Text Editor. Same editor as above, but used to edit a Data Block field as text. Image Editor. Allows to insert images into Data Block fields an view them. Sound Editor. Allows to insert sounds into Data Block fields an play them. Hex Editor . Allows to view/edit Reserved for internal use.
dtext
image
sound
hex
None allowed.
860
AggreGate Documentation
Block
individual bytes of a data block in the hex format. When editing a data block, it's also possible to change size of the block by entering new size (in bytes) inside a text field.
Creating Bindings
In most cases, bindings are added to the table format programmatically, e.g. when creating a device driver writing a server script 628 . See Working with Data Tables 983 for details.
129
or
However, in some cases bindings are created by system operators using the Data Table Editor 813 . These bindings are then used to modify tables on-the-fly without operator intervention, e.g. during a headless action 892 execution.
Binding Target
variable$field[row]#property
All elements of the binding target are optional, except for field. It indicates the field in the table to which changes should be applied. If a variable is specified, we've just created a cross-table binding. This is a binding in which values stored in one Data Table are copied into another Data Table. Such a binding will work only if the values of both variables are being edited within a single Edit Properties 897 UI Procedure. If row is not specified, the binding will be applied to every row in the table. If property is not specified, the evaluation result is written to field. Properties are used to modify the behaviour of a given field when it's being edited. You can use them to conditionally enabled/disable the field, or to make a field into a drop-down list. Supported properties: Property enabled Explanation Binding expression should resolve to a Boolean value in this case. If this value is TRUE, editing of the cell specified by the binding target will be enabled, otherwise this cell will be switched to read-only mode. Binding expression should also resolve to a Boolean. If it is TRUE, the table field specified by the binding target will be hidden in all rows and its editing will not be allowed. Note, that it is not possible to hide a single cell (i.e. field in a certain row). Binding expression should resolve to a Data Table containing list of Selection Values available for the cell pointed by binding target. Binding expression should resolve to a String that represents new editor options
856 856
hidden
choices options
that will be
Binding Expression
The binding expression may contain only standard references 926 . If a reference points to a cell within the table being edited, it will resolve to the value currently contained in the cell (which may be edited by a user, or written by other binding). In all other cases value will be retrieved from the server context, as described in standard references 926 section.
922
May vary, see individual Data Table bindings processing cases for details.
System Internals
861
Current table, i.e. the table on that the bindings are evaluated.
Default Row
927
Current row, if the binding does not refer a specific row and is evaluated for each table row individually. Zero otherwise. May vary, see individual Data Table bindings processing cases for details.
Example
recipient#enabled = {mailSendingEnabled}
When this binding is processed, editing of the recipient field (probably, e-mail recipient) is enabled for a user only if the Boolean field "mailSendingEnabled" contains a TRUE value (i.e. mail sending is enabled). If a Data Table has several records, this binding will apply to every record separately.
A key field is a field or set of fields of a table which together form a unique identifier for a record (a table entry). The aggregate of these fields is usually referred to simply as "the key". The first method is selected if the format 855 of the target Data Table defines a non-zero number of key fields. When there's no key field, the second method is used. With both methods, the system ensures that the number of records in the target table does not exceed minimum and maximum values (defined by the format of Variable Definition 869 ).
into the record of the target table with the same key, if one
862
exist.
AggreGate Documentation
3. For every remaining record of the source table, a new record is created in the target table and data from the source record is copied 862 into the new record.
3. If number of records in the Source table is greater than in the Target table, new records are created in the Target table to make the number equal. Data from the Source record is copied 862 into the new record with the same number.
Rules for encoding/decoding values of different types to/from strings may be found here
Each cell in the table gets its value from the corresponding argument in the argument list (i.e. the value of the first cell is the value of the first argument in the list). If a Data Table to be constructed has dynamic (unspecified) format, the system constructs a single-row Data Table with all string fields. Every source parameter is put in a separate field.
Very rarely, a function might expect more than one row of fields (i.e, more than one "record") as its input. If the function's input format defines N fields, the first N arguments are used for filling the first row, second N arguments for the second row etc.
System Internals
863
Example: Let's say you have a function, func1 (just an arbitrary name), which expects the following input Data Table with two fields and two rows: string_field "abc" "xxx" integer_field 123 456
You would then call it from a reference 926 or a query 271 like this: func1("abc", "123", "xxx", "456"). So, since you have two parameters per row, the first two parameters are used to fill the first row. The next two parameters are used to fill the second row, etc. Note that although the integer values above have double quotes, func1("abc", 123, "xxx", 456) will give the same result. The difference is that integers will be treated as expressions (which consist of simple integer literals) and processing may be slightly slower.
922
Standard
931
variables only.
6.2 Contexts
One of the key concepts introduced in this manual is the context. A context is a logical "container" for data related to some object or hardware device. It also provides methods for manipulating this data and monitoring the object's state. For example, AggreGate Server internally works with contexts that correspond to Devices 113 . It creates a "Device context", and this context is used to monitor and change Device settings, view its events etc.
Context Tree
Almost all data managed by AggreGate Server is represented by contexts. Contexts are organized into a hierarchical structure called a context tree. Every installation of AggreGate Server contains a single context tree. This tree is dynamic, so contexts can be added and removed from it during normal server operation. All contexts available in AggreGate Server are described in Context Reference
651 .
Context Naming
Every context has a name. This is a string that may contain only letters, numbers and underscore character ("_"). For example, the context for the admin user is called "admin". Some context names are pre-defined and built into the system. In other cases the user can specify the name of the context. For example, when creating a new Device account, the name of the Device Account is used as the context name. As mentioned above, the context tree is hierarchical, and every context in the tree may be addressed using its context path. The context path may also referred as the context's full name. The path consists of one or more context names separated by dot (".") characters.
864
AggreGate Documentation
Example 1: the users context corresponds to all users in the system. It provides some generic user-related data and operations like "New User Account Registration" operation etc.
Example 2: the users.admin.devices.dev1 context (shown here in its full name) corresponds to a Device called dev1 registered under the admin user. This context provides access to the settings of Device and related operations, e.g. "Configure Device" etc. The context tree "grows" from a so-called root context. The root context is unique in that its name is "" (empty string).
One more term related to contexts in the tree is parent-child relationship. Every context in a tree except for the root context has a parent context. Also, every context may have zero or more children. For example, users.admin is a child context for users (which makes users a parent context, obviously...).
Context Descriptions
A "Description" is a user-friendly name for a context. It is used to refer to this context all throughout the user interface. For example, the context description of the context plugins is "Drivers/Plugins Per-account Configuration". Sometimes the user may specify the description manually, such as when creating a new Favourite. In this case, the user-specified description will be used to refer to the favourite in the user interface. Having separate properties for the name and the description allows AggreGate to maintain one name for a context internally, while allowing maximum user friendliness by using a simple description. In addition, changing the description for an object will smoothly alter its appearance in the GUI without "breaking" it (because internally, it will still have the same name).
Context Types
System Internals
865
The "Context Type" property of a context helps AggreGate decide if the same operations may be applied to different contexts, such as properties between them. For example, you can copy the properties of a Device to another Device, but it would be meaningless to try and copy the properties of that Device to an Alert 216 context. Therefore, AggreGate only allows copying context properties between contexts (also known as "replication the context type is identical between two contexts. Context type is a string that may contain only letters, numbers and underscore character ("_").
866 ")
when
Context Entities
Every context contains a number of so-called entities . There are three types of entities: Variables Functions Events
880 869 878
(Properties) that allow to view or change some data associated with a context. used to execute some actions associated with a context.
Context Permissions
When a user 108 tries to access a context or some of its entities, it does that under his current effective permission level 932 for this context. The latter is defined by user's permissions table 933 . The effective permission level defined what a user can do with the context, for example: Can not access the context at all Can execute only read-only operations and see values Can execute control operations and edit values Etc. The Context Reference
651
section describes what each effective permission level means for every context type.
Higher permission levels always include all permissions allowed by lower permission levels, so this is not explicitly reflected in the Context Reference.
Resolving Masks
The context mask can be resolved to a list of context paths. For example, the mask users.* may be resolved to the following list of context paths: users.admin users.user1 users.user2 etc.
866
AggreGate Documentation
And the mask users.*.deviceservers.* may be resolved to users.admin.deviceservers.c1 users.admin.deviceservers.c2 users.admin.deviceservers.c3 users.user1.deviceservers.ds1 users.user1.deviceservers.ds2 users.user2.deviceservers.plc The mask resolution process always involves permission checking 931 . For example, the users.* mask is resolved to the list of user contexts 759 accessible with the permissions of the user 108 that requested the operation. It will be resolved to the list of all users in the system only if the user originating the operation has permissions to access all user accounts.
Matching to Masks
A context path may match to a context mask. Also, context mask may extend a context path, or context path may extend a context mask. To match a context mask, context path must contain the same number of segments (parts between ".") at mask. Also, if any context mask segment is not a wildcard ("*") segment, it should be equal to the correspondent segment of context path. If a path extends a mask, the leading segments of the path must match the mask, but the path may contain any number of additional segments. Similarly, if a mask extends a path, its beginning should match the path, but it will contain additional mask segments.
EXAMPLES
Path users.admin matches mask users.* Path users.admin doesn't match the external_device_servers.* mask Path users.admin.deviceservers.c1 extends mask users.* (i.e, it's longer than that mask - matches the beginning and adds additional segments) Path users.admin.deviceservers.c1 doesn't extend mask users.*.alerts (because the mask don't match to the three leading segments of the path) Mask users.*.deviceservers.* extends path users.admin (because it adds additional information to it) Mask users.*.deviceservers.* doesn't extend path reports.impacts_report (because it doesn't match)
The Copy configuration operation is used to configure one context similarly to another. It can be a User account 108 , a Device 113 , an Event Filter 206 , an Alert 216 , etc. This operation can be initiated through the AggreGate Client User Interface, for example, by dragging one System Tree 784 node and dropping it on another node of the same type. Internally, this operation modifies the values of the variables 869 (properties) of the target context 863 (the copy destination) according to the values of the variables in the source. A given value is copied from the source context only if the variable supposed to contain it (i.e, a variable with the same name) already exists on the destination context. The replication operation flows like this: If a variable is not readable in the source context, operation with this variable is aborted If a variable is not writable in the target context, operation is aborted too The server reads the variable value from the source context into the Data Table Then it reads the variable value from the target context into the Data Table B Data from the Data Table A is copied into the Data Table B using Data Table Smart Copy The server rewrites value of the variable in the target context by the Data Table B
861 854
operation
System Internals
867
If an error occurs on any step, operation with the current variable is aborted. The copy process proceeds to the next variable. Just before the operation begins, users may select 896 variables to be copied. It is also possible to prevent certain fields from being replicated. In addition, new value of every variable may be corrected:
The copy operation returns a report in the following format: Variable description Copy successful (yes or no) Here's what a report looks like: List of errors encountered during copy if this variable
868
AggreGate Documentation
Target context
Variable name
Under Devices node showing Devices of the active user (those context path is users.username.devices) Under Devices node combining all Devices in the system (those context path is just devices) And under one or more Device Group nodes (with context path like users.username.devgroups.group1)
The nodes indicated by arrows on the above picture all correspond to a single server-side context. Its absolute server path may be found out by holding mouse over System Tree node and checking its tooltip:
This difference may cause unexpected results when checking paths of contexts visible in the tree. Here is an example:
System Internals
869
the tree may show a Device ABC context under Root > Devices. However, the real server path of this context is users.Owner_Name.devices.deviceABC where Owner_Name is the AggreGate Server user 108 owning the device. The server-side Devices context has no real children at all, as it is a so-called mapped context.
Container Paths
New AggreGate users often mix "real" and "mapped" container contexts. Most contexts in the root of System Tree are mapped. For example, if we hover a mouse over Devices node, we'll see that its context path is devices:
If we expand this node and check a path of device context located right under it, we'll see that its path is users. admin.devices.virtual:
It actually means that the real container of our device named virtual is users.admin.devices. It belongs to a system user 108 called admin. We can find this real container by going to Users => admin (Administrator) => Devices (note the third arrow on the below image):
6.3 Variables
Variables contain context 863 -related data. For example, the users.admin context has the childInfo variable (property) that contains a username, password, e-mail and some other properties of a given user. In AggreGate Server, value of every variable is actually a Data Table 854 . Even simple numeric and string values are represented by one-cell Data Tables. This helps to a use a generic approach for the processing of variable values. All variables can be processed using the routines for handling tables (such as smart data table copy 861 ), even if they contain just a single number or string. Context variables are sometimes referred as properties. These two words are interchangeable in AggreGate jargon. They're one and the same.
870
AggreGate Documentation
854
Variable Definition
Every variable is defined using a Variable Definition which contains several options: Variable Name. The name is unique within context where variable is defined. This is a string that may contain only letters, numbers and underscore character ("_"). Variable Format. Table Format 855 of the Data Table 854 for the variable. This actually defines what the variable can look like - minimum and maximum rows, field types, possible field values, validation rules, etc. Readable. Flag indicating that it is possible to get value of the variable from the context. This can be useful for sending messages to a device without getting a reply, such as when sending out a string to be displayed on an attached LCD screen. Writable. Flag indicating that it is possible to change value of the variable to a new one. Description . Description of the variable. Help. Detailed description of the variable. Group. Shows that variable belongs to a variable group. The group may be not defined, i.e, there can be variables which do not belong to any group. Groups help to select a number of variables for processing. For example, a Device context may have a Configure action 892 for configuring the Device Account, and another action for configuring the hardware DS. Each action will operate with all variables of a separate group. Group name may be pre-defined on the AggreGate Server or come from some hardware device, but it cannot be changed by the user. Read Permissions . Permission level Write Permissions. Permission level
932 932
required to get value of this variable. required to change value of this variable.
AggreGate Server processes variables in various ways. If you pass a Data Table as the value of a variable, you won't necessarily get the same exact table back when you try and retrieve the value of the variable. Internally, variables are divided into several types: In-memory structures that are not saved when AggreGate Server is stopped. Persistent settings that are stored in the database
854 .
Settings of Devices that are read/written from a remote device and cached by the server.
System Internals
"Virtual" variables. The value of virtual variables is generated on-the-fly, and they're not permanently stored.
871
If there are problems in setting or getting variable values, an exception may be thrown. In the case of "get variable" operation, no value is returned. "Set variable" might throw an exception even though variable value was indeed set, due to some other reason. The exception contains a textual description of the problem.
Variable Status
Variables of AggreGate contexts may also have custom status. Variable status is a combination of a status code and human-readable status description. Variables statuses are displayed in the leftmost column of Properties Editor 795 . However, there are some other ways to see variable statuses. For example, statuses of device setting variables are shown in the Device Status 910 dialog.
Examples
In the User 759 context there is a variable called childInfo ("User Information"). Its value always contains one record (as specified by Variable Format) with several fields that store the user's first name, last name, phone number etc. In the Event Filter 688 context there is a variable called rules ("Filter Rules"). Its value may include numerous records ("lines"), each of describing an event type to be shown when the event filter 206 is activated.
info
Field Description
Description 864 of the context, i.e. textual information about its purpose. Type
864
String
of the context.
848 .
Context icon ID. Used for visual representation of context in the user interface. Should be NULL in Agent 848 . Used within the distributed architecture 99 . Path of the mount point's root in the local (consumer server) context tree. Used within the distributed architecture 99 . Path of mount point's root in the remote (provider server) context tree. If null, this context is local (i.e. not a proxy from any remote provider server). Used within the distributed architecture 99 . Path of this context in the remote (provider server) context tree. Returns true if context's children are mapped (e.g. for group and aggregation contexts).
localRoot
String
remoteRoot
String
Nullable
remotePath
String
mapped
Boolean
872
AggreGate Documentation
children
Field Description
String
variables
Field Description
Name of the variable. Format of variable encoded 1307 into String. If this field is NULL, the variable has a dynamic format -- it may return data of any format. Variable description. Flag indicating that variable is readable at your permission level. Flag indicating that variable is writable at your permission level. Detailed variable description. Variable group, or NULL if variable does not belong to any group. ID of icon used to represent the variable (for internal use). ID of documentation article describing the variable (for internal use).
description readable
String Boolean
writable
Boolean
help group
String String
Nullable Nullable
iconId helpId
String String
Nullable Nullable
System Internals
873
functions
Field Description
Name of the function. Format of function input encoded 1307 into String. If this field is NULL, the function has a dynamic input format -- it may accept data of any format. Format of function output encoded 1307 into String. If this field is NULL, the function has a dynamic output format -- it may return data of any format. Description of the function. Detailed description of variable. Variable group group.
870 ,
outputform at
String
Nullable
events
Field Description
Name of the event. Format of event data encoded 1307 into String. If this field is NULL, the event has a dynamic format -- it may contain data of any format. Description of the event.
descriptio
String
874
AggreGate Documentation
n help level group Detailed description of the event. Default level of the event. Event group group.
881 ,
Nullable
Nullable
actions
Field Description
Name of the action. Description of the action. Detailed description of the action. Action hotkey. Drag-and-drop activation rules.
String String String String Data Table Nullable Nullable Nullable Nullable
Action visibility flag. Action availability flag. Action icon ID. Action group. Action execution group.
Boolean
Variable Name:
contextStatus
875
Field Description
Integer String
Nullable Nullable
activeAlerts
Field Description
Defines location of the alert within a distributed installation 99 . Local means that the alert active for this context is defined on the consumer server while Remote indicates that the alert is defined on the remote provider server. ID of alert event
224 . 656 .
Integer
Long String
Hidden field.
Instance type: Active Alert raise time. Alert level. Alert message. Alert trigger message. Alert cause. Alert data.
235
and Pending
236
groupMembership
876
AggreGate Documentation
Field Name
location
Field Description
Field Type
Notes
Defines location of the group within a distributed installation 99 . Local means this context is a member of the group defined on the consumer server while Remote indicates that this context is added to a group located on the remote provider server. Full path of group context
702
Integer
group
String
for.
validity
Field Description
702
String
Storing aggregated history in a round-robin database (see statistics module Each of these methods has its own pros and cons.
936 )
RAW HISTORY
In the "raw history" storage mode, every historical value of a variable is stored as a separate record in one of the tables of server database 80 . Pros of this method:
System Internals
Full precision of old values, regardless to the sampling rate Cons of this method: Large volume of historical data Slow storage Slow retrieval of historical values, especially if loading samples collected during a long time frame
877
STATISTICS
When variable history is stored in the statistical process control 936 database, its old values are not kept "as is". Instead, server calculates a numeric "aggregate" of every value and uses it to calculate hourly/daily/weekly/monthly/yearly averages, minimums and maximums. Pros of this method: Compact file-based storage of historical data Size of preserved historical values does not increase with time Fast storage Extremely fast access to historical values, regardless of the time frame length Cons of this method: Only aggregated historical values are available, the original "raw" values as not saved Precision of calculated aggregates decreases with time
and create a
BUILDING A CHART
To build a chart values):
384
that displays historical trend of a variable (this method is valid for graphing both raw and statistical
312
Create a widget
429 ,
XY Area Chart
436
or XY Bar Chart
440
to it.
Set chart's Data Source Type to Variable. Edit Source Variables table and add new series Point the series to the necessary variable. Write series expression that refers fields of the variable or statistical channel that is based on this variable. Make sure that Include Historical Data option of a chart is enabled.
393 .
878
AggreGate Documentation
Exporting data to third-party systems To obtain such a table of "raw" historical values, use variableHistory 764 function of Utilities context. This function loads a certain subrange of raw historical values and returns it them as a table. Here is an example of expression devices.meter:
911
"temperature",
"2012-05-03
If the raw history of your variable is not being saved, but there is a statistical channel that aggregates its historical values, you can use statistics 767 function of Utilities context to get the table of the following format: Period Start Period End Aggregated Numeric Value (Average, Minimum or Maximum)
Here is an example of expression 911 that returns hourly averages, minimums and maximums for a statistical channel named temperature that is defined for device users.admin.devices.meter:
variable from a Query context triggers query execution, involving associated CPU and memory load
If value of any remote variable was requested (e.g. an AggreGate Client has requested it from an AggreGate Server or a consumer server has requested it from a provider server in a distributed environment 99 ), additional time will be required to send a corresponding request to the remote server and get the response. This time is generally equal to the round-trip time reported by ping command.
6.4 Functions
Functions are operations that can be executed on a context 863 . For example, the users.admin.devices.dev1 context may contain a reboot function that reboots the admin.dev1 Device . Every function has an input and output value. Both values are actually Data Tables 854 . Each of these Data Table may have many lines and fields and even contain nested Data Tables in its cells, so the number of possible input and output parameters of a function is virtually unlimited. The input and output values of every context function is a Data Table
854 .
Function Definition
Every function is defined using a Function Definition. The Definition contains several options: Function Name. The name is unique within the context in which the function is defined. This is a string that may contain only letters, numbers and underscore character ("_"). Input Format. Table Format
855
854
Output Format. Table Format of a Data Table used to output the result of the function. Description . Description of the function. Help. Detailed description of the function. Permissions. Permission level
932
System Internals
879
Group. Shows that function belongs to a function group. Groups help join several similar functions together during different operations.
If a function is unable to finish its job, it will throw an exception containing a a textual description of the problem.
EXAMPLES
The Users 756 context has a function called list ("List Users") that returns a list of all User Accounts that are accessible for the user calling it. The Scheduled Jobs specified parameters.
742 108
on the server
266
context has a function called create ("Schedule New Job") that creates a new job
with the
Note that functions are non-interactive in themselves. These are internal server operations - they happen "behind the scenes". To provide input for a function (or to view its output), UI Procedures 896 are used. When a function is used with interactive UI Procedures, it is called an Action 892 .
makeCopy
932
Name context
Type Strin g
Description Path of a context copy of that will be created under current context.
Output Records: 0...unlimited Output format 855 : Name variable Type Strin g Boole an Strin g Description Name of variable those value was replicated.
successful
errors
880
AggreGate Documentation
delete
932
Name name
Type Strin g
0
none
126
and returns.
Execute query 739 function will generally have noticeable performance effect which depends on query complexity and size of its source dataset. Calling a function that matches a device operation takes time required for device I/O but don't cause server-side CPU load. If a remote function was called (e.g. an AggreGate Client has called it from an AggreGate Server or a consumer server has called it from a provider server in a distributed environment 99 ), additional time will be required to send a corresponding request to the remote server and get the response. This time is generally equal to the round-trip time reported by ping command.
6.5 Events
An Event for a given context 863 is fired if something happens in that context. For example, the login event defined in the users context indicates that a new user has been logged in to the AggreGate Server. An event in a Device context may occur if it is initiated by the hardware device. Every event in AggreGate Server has a special structure called Data Table 854 associated with it. This Data Table contains event-specific data. For example, the login event may contain one record with a username field containing the user name of the newly logged user. Event-specific data is formatted as a Data Table
854 .
Event Definition
Every event is defined in its context using an Event Definition. An Event Definition contains several options: Event Name. The name is unique within the context where the event is defined. This is a string that may contain only letters, numbers and underscore character ("_"). Event Format. The Table Format
855
of a Data Table
881
Description . Description of the event. Help. Detailed description of the event. Expiration Period. Defines how long persistent event is stored in the event history
882 .
System Internals
881
Level . Severity of the event. This is the default level for this event, but the actual event fired in the context may have another severity level. The levels are listed below 882 . Permissions. Permission level
932
Group. Shows that event belongs to a event group. Groups help join similar event instances together during different operations.
Examples
The Alert
656
216
is triggered.
has a login ("User Login") event which fires when a user logs in to the server.
Creation time Expiration time Event level Event-specific data in the form of Data Table Acknowledgements Enrichments
883 882 854
882
AggreGate Documentation
207 ):
System Internals
883
Example: Server Failure event can be acknowledged by a system operator who added "Replaced defective memory stick." message. Acknowledgements are usually generated by humans. They're useful for accountability - you can be certain that a human operator saw the event, and can also tell which operator it was, when they saw it and what they had to say about it.
Field Name
author time text
Field Type
String Date String
Notes
Username of acknowledgement creator. Acknowledgement timestamp. Acknowledgement text.
Event enrichments are associated with a certain instance of event, not its type. Each event instance can be enriched immediately after its creation or later at any time.
The enrichments can be browsed in Event Log
791 : 206
Right-click on an event and select View Enrichments to browse detailed information about enrichments of a particular event. Newly created event instances can be automatically enriched by AggreGate Server. See Enrichments Event Processing Rules article for more information.
71
section in
Field Name
name
Field Type
String
Notes
Enrichment name. The name can contain only English letters, numbers, and underscores. Enrichment content. Enrichment timestamp. Username of enrichment creator.
884
AggreGate Documentation
. Masking means ignoring events that come from sources that depend on system elements that are
Event correlation 885 . Correlation engine finds simple relations between similar events, usually one of them marking an outset of a certain process or state, and the second marking its termination. Root cause analysis 885 . This is the most complex stage of event management process. It involves analyzing relations between events and their environment followed by finding a cause of each event.
System Internals
885
776
have
1. Some system component wants to fire an event during its operation. For example, the component responsible for communications with a particular Device (it is called a Device Driver ) fires an info event in the this Device's context when the connection with the Device is broken. 2. Permissions 931 of the event generator are checked. If its permissions does not allowing firing this type of event in this particular context, event generation fails. 3. If Prefilter Expression
70
4. If Deduplication ID Expression 70 is defined, it is now evaluated. That the system tries to find another event with the same deduplication ID, and if it's found current event it dropped but occurrence counter of the previous one is increased. 5. Event is enriched
883
6. If the event is defined as persistent, it is saved to the event history. You cannot make an event permanent if it's not already defined as such (most events are permanent). You can, however, change the "time to live" of an event (its expiration time). This is done by changing the Event Expiration Times 70 table in AggreGate Server Global Configuration (See Event History 882 section). 7. Every registered listener receives a notification.
info
932
886
AggreGate Documentation
Expiration Period:
1 week 1
855
: Notes
Field Type
String
childAdded
932
1 : Notes
Field Type
String
Name of child.
childRemoved
932
: Notes
Field Type
String
Name of child.
System Internals
887
variableAdded
932
872
variable.
variableRemoved
932
: Notes
Field Type
String
functionAdded
932
873
variable.
888
AggreGate Documentation
functionRemoved
932
: Notes
Field Type
String
eventAdded
932
873
variable.
eventRemoved
932
: Notes
Field Type
String
System Internals
889
actionAdded
932
874
variable.
actionRemoved
932
: Notes
Field Type
String
actionStateChanged
932
874
variable.
890
AggreGate Documentation
infoChanged
932
871
variable.
status: an Integer number indicating the new state for the context comment: a String containing a human-readable description for the new state This event is defined in all AggreGate Server contexts that have different states history 882 .
865 .
contextStatusChanged
Accessible at context's permission level 1 week for Group Context 1 week for Alert Context
702
932
656 753
1 : Notes
Field Type
Integer String
Integer
932
System Internals
891
Expiration Period:
891
Notes
Name of changed variable. New value of the variable.
932
Notes
Name of changed variable. New value of the variable. Value of the variable encoded into string, without format. This field is filled only when "value" field is NULL.
892
AggreGate Documentation
6.6 Actions
Actions are human-executable operations that are associated with a context for example, in the context menu for a System Tree 784 node.
863 .
There is a key difference between context actions and context functions 878 : Unlike functions, actions may interact with a user by generating some output or requesting data input. Not all actions are interactive, but most involve several steps that require user attention. Actions interact with the user using UI Procedures 896 . Every action is a combination of UI Procedures and server-side data operations, such as function 878 calls, changing or analyzing variable 869 values, etc. For more information, see the UI Procedures 896 chapter. The sequence of server-side data processing operations and UI procedures performed by an action is called action flow.
Just for contrast, here are some Actions: The Data Terminal 677 context has a Configure action that interacts with the user and lets them change the settings for a Data Terminal 113 The Alerts 654 context has a Create New Alert action that prompts for the basic settings of a new Alert 216 , creates it (by calling the "Create new alert" function ) and then interacts with the user again, allowing him to configure the newly
System Internals
created alert. And here are some Functions: The Root context The Users
756 726
893
of the AggreGate Server has a Stop Server ("stop") function that stops the server.
context has a Delete User Account ("delete") function that removes a given user account.
As you can see, functions are "machine" operations, while actions actually require user intervention and input.
Default Action
Most contexts have a so-called default action. This action is executed when user double-clicks the context in the AggreGate Client System Tree 784 , for example. Here are two examples of default actions: The default action for the Event Filters The default action for the Query its output to the user.
716 687
Mode
893
(Non-Interactive) Mode
880 .
894
AggreGate Documentation
Target: File Path (file), String Expression: "alerts_report_" + year(now()) + "_" + month(now()) + "_" + day(now ()) + ".pdf"
Example: We can execute an external application upon alert by adding Execute Application 730 action to the list of alert's corrective actions 227 . However, it's often necessary to pass alert message and other alert parameters to this application. In this case, the following and similar bindings should be added to the Input: Execute Application or Operating System Command table:
Example: To send an e-mail message upon an alert with custom text that describes alert cause, add Send Email automatic corrective action to the alert, open its input parameters, get inside Input: Send E-Mail table:
Target: Message (message), String Expression: "An alert was raised, it is caused by value of custom field: " + cell(cell({env/parameters},'data'),'customField')
This expression refers parameters environmenal variable 930 those value is a Data Table associated with alert event 224 . It then uses first (inner) cell() function to extract data table that corresponds to value of variable (or data of an event) that has caused the alert. Another (outer) cell() function extracts custom field out of this data table. The field value is appended to e-mail message text.
922
Context the action is executed from. Current table, i.e. the table on that the bindings are evaluated.
Default Row
927
Current row, if the binding does not refer a specific row and is evaluated for each table row individually. Zero otherwise.
Some types of actions change their behaviour drastically when launched in a grouped mode. For example, when Configure 904 action is grouped for several contexts, properties are being read from the first context in the group, but changed settings are written to all contexts in the group, allowing to configure multiple objects at the same time. Other actions support grouping at the level of UI Procedures 896 . For example, when the Call Function Action 903 is invoked for a group of contexts, it allows the user to apply one confirmation to all actions in the group (i.e, the user has to confirm only once). The input parameters for the function being called can be also provided once for all actions. A
System Internals
895
single window is then used to provide feedback from the execution of all actions, rather than a separate popup for every action.
880
on
In AggreGate Client 776 Variable-Related actions are launched by right-clicking on a variable in Properties Editor selecting an action to run from context menu.
795
and
Here is what variable-related actions may be available for a hardware Device setting variable (screenshot made in AggreGate Client):
869
In AggreGate Client 776 Event-Related actions are launched by right-clicking on an event in Event Log an action to run from Related Actions menu.
791
and selecting
896
AggreGate Documentation
action
6.6.7 UI Procedures
When AggreGate Server wants to talk to a human user, it can pop up a message, show a data table editor, or possibly show a list with checkboxes to let the user select one or several options. When you think about it, just a handful of interaction types are enough to fully interact with a user. There's no need to pop up a special, custom dialog whenever the user has to interact with the software. Standardizing user interaction in this way lets a user quickly gain familiarity with the system. The learning curve is less steep, because you only have to figure out the data shown in the dialog - not the dialog itself. User Interface Procedures (UI Procedures) are the basic building blocks of actions 892 . These UI Procedures are used for showing alerts, confirming actions, editing properties, etc. Every action is a combination of server-side operations and UI Procedures. Depending on action logic and the runtime environment, an action may invoke UI Procedures in various combinations. For example, the Call Function Action 903 lets a user edit the input parameters of a called function using an Edit Data 896 UI Procedure, then calls the function, and then decides what UI Procedure will be started: Show Error 899 if function execution has been failed, Edit Data 896 in read-only mode if function has returned some output or just Show Message 899 to indicate that function has been successfully executed. Another key advantage of using UI Procedures comes to light when considering AggreGate as a multi-platform system. When using a web interface or a Smartphone to interact with the AggreGate system, obviously the actual GUI controls shown to the user are somewhat different. However, the GUI controls always derive from the same UI procedures. I.e, even on a Smartphone, you will have some way to show an error message, or allow a user to perform a multipleselection. So an action can run on any platform -- you won't have an action that can run only in the GUI AggreGate Client. Here too, this reduces the learning curve and improves consistency.
Data can be displayed in editable mode or just as read-only data. The dialog itself may have scrolling enabled or disabled, and it can also be shown in a separate window or as a part of the main window of the UI. All of these are configurable parameters for this UI Procedure. In AggreGate Client, editing is performed using the Data Table Editor component:
801
Grouping Support
This UI Procedure supports action grouping
894 .
In AggreGate Client, the Data Table Editor will contain additional All button in this case (shown as the middle button below, between OK and Cancel). It is used to apply the data being edited to all actions that are executed in the group:
System Internals
897
component:
Grouping Support
This UI Procedure supports action grouping
894 .
In AggreGate Client, the Properties Editor will contain only properties and their fields that are common to all contexts whose properties are being edited. The list of these contexts is shown in the header of the Properties Editor window:
898
AggreGate Documentation
Note, that data shown in the Properties Editor is actually read from the first context of the list (so-called Master Context ). However, all changes made in the Properties Editor will be applied to Master Context and all other edited contexts ( Slave Contexts).
component:
component:
System Internals
899
just shows a custom message to the user and waits for a reaction.
In AggreGate Client, this UI Procedure shows a popup dialog with a single "OK" button:
Grouping Support
This UI Procedure supports action grouping 894 . With action grouping, messages provided for the UI Procedure by different actions in a group are shown together. In AggreGate Client, a single popup window is used in this case:
It displays an error
900
AggreGate Documentation
241
to different formats.
814
component:
System Internals
901
6.6.7.9 Confirm
This simple UI Procedure 896 is used to obtain user confirmation for various operations. In AggreGate Client, it shows a popup dialog with "OK" and "Cancel" buttons:
Grouping Support
This UI Procedure supports action grouping 894 . With action grouping, the user is able to choose an "Apply to all" option to apply his positive or negative choice to all actions in the group. In AggreGate Client, an Apply to all checkbox is shown in the confirmation dialog:
902
AggreGate Documentation
6.6.7.10 Browse
This UI Procedure 896 opens a web page in browser. It is used to view AggreGate documentation, access Device Servers 1003 that work through HTTP Proxy 1011 etc.
component:
Grouping Support
This UI Procedure supports action grouping all actions in the group.
894 .
In AggreGate Client, the Entities Selector dialog contains an additional All button in this case:
starts an interactive tutorial. Interactive tutorials teach users how to use different components of
847
chapter.
905
a context is an action. So is
Some contexts have actions which apply only to them. For example, the Initiate Auto-Run action would not make
System Internals
much sense in the Device context. It only makes sense for the Auto Run
662
903
However, other actions can apply to many different contexts. The configure 904 action, for example, lets you configure a Device, an Auto Run entry, or an alert without much difference. It applies to all of these contexts in a similar manner. Thus, it is called a common action. Below are all common actions supported by AggreGate Server.
Action Flow
1. [Optional] User is prompted to confirm the execution using the Confirm
878 901
UI Procedure.
2. [Optional] User is prompted to edit input parameters of a function to be called using an Edit Data 896 UI Procedure. If the user cancels this UI Procedure (i.e. by clicking Cancel in the Data Table Editor 801 dialog), the action is aborted. 3. The function specified by the Call action is now invoked, and the server performs all necessary operations (like creating a new Alert, or reading a list of all <%DS%s and returning it as its output). If function input parameters were not specified on step 2, the function is called using its default parameters. 4. If the function returns an error, it is shown to the user using a Show Error 899 UI Procedure. If the user was prompted for input parameters on step 2, the flow now returns back to step 2 so that the user could specify different parameters. 5. [Optional] If the function returned any data, it may be shown to the user using an Edit Data only mode.
896
UI Procedure in read-
6. [Optional] In some cases, a "Successfully Completed" or other message may be shown to the user using a Show Message 899 UI Procedure to indicate that the function has been successfully called.
Grouping Support
This action supports action grouping
894 .
If confirmation is required, it may be applied to all actions in the group. The same input parameters may be applied to all actions in the group. All "Successfully Completed" messages for the actions in the group are shown in a single window.
Examples:
Connect Device Server to AggreGate Server in External Device Server context has "Successfully completed" message)
1027
904
AggreGate Documentation
756
716
Buzz in Device Server context 1018 (no user interaction at all, just performs the requested operation)
6.6.8.2 Configure
This action allows users to change the settings for various hardware devices (such as Data Terminals for system objects (such as Alerts 216 ). This action may also run in read-only mode, allowing the user to only view the property values. Action Name: Action Icon: Keyboard Shortcut Non-Interactive Mode 893 : Permissions: Execution Parameters
896 113 )
or properties
configure (may differ in some cases) (may differ in some cases) F2 Not Supported Accessible at Observer permission level Properties Editor Window Location :
955 932
System Internals
905
Action Flow
1. Check if the context has any variables which can be configured. If it doesn't, pop up an error message for the user. This can also mean the context is not currently available for configuration, such as when trying to configure a Device 113 which is currently offline. 2. Change values of context variables by using an Edit Properties
897
UI Procedure
Grouping Support
This action supports action grouping
894 .
If the action is called for a group of contexts, it uses an Edit Properties UI Procedure to open the settings for the first context in the group. However, upon saving those settings, the modified settings (properties) will be written to all contexts in the group.
6.6.8.3 Create
This action is used to create new objects like Alerts Action Name: Action Icon: Non-Interactive Mode 893 : Permissions: Supported Accessible at Observer permission level
932 216 ,
Event Filters
206
etc.
create
Action Flow
1. Pop up a dialog (or some sort of data entry form) using the Edit Data settings for the context to be created. 2. Create the new context
863 896
on the server.
3. Use the Edit Data 896 UI Procedure again to let the user configure the newly created context. The user can now access more properties.
createFromTemplate
Action Flow
Once a template object is selected, the flow of this action is the same as Make Copy
908
action's flow.
6.6.8.5 Delete
This common action is used to permanently delete various contexts, such as Event Filters, Widgets, Favourites etc. Deleting a context stops its functioning (for example prevents all future executions of a Scheduled Job or raising of an Alert), removes all associated settings (including permanent properties stored in the AggreGate Server database 80 ) and removes context from the Children List of its parent context. Delete Action is based on a Call Function require confirmation.
903
Action. It doesn't ask for parameters or show any output, but it does
906
AggreGate Documentation
Action Name: Action Icon: Keyboard Shortcut Non-Interactive Mode 893 : Permissions:
delete
have access
The table is not permanently stored on the server. It is generated on-the-fly when the Edit Context Permissions action is executed. To generate this table, AggreGate Server reads the permission tables 933 of all users in the system. If the permission level of a particular user for the current context is greater than None, a new record is added to the context permissions table, with the fields specified above (user and permissions ). The current user (whose username and password you are using to access this action) is not shown in the context permissions table, because a user may not modify his own permissions. You can add new records to the context permissions table while editing it, thus allowing new users to access this context. When the context permissions table is saved, it is not stored "as is" on the server. Instead, the server modifies the permission tables of individual users according to the permissions defined in the table being saved. Action Name: Action Icon: Non-Interactive Mode 893 : Permissions: Not Supported Accessible at Administrator permission level
932
perms
EXAMPLE
Let's say the initial user permissions table for the user john looks like this:
Next we execute the Edit Context Permissions Action from users.admin.alerts.water_level_warning (this context represents a "Water Level Warning" alert that is registered under the admin account). We'll see a permissions table similar to this:
This particular table shows two users with access to this alert: the newadmin user has administrative access and and test user has normal level of access. The admin user also has some permissions but we don't see them here because that's the account we're using right now. Next we'll add a new record to context permissions table. Select john in the User field and Manager in Permissions field. The table should look like this:
System Internals
907
Next we'll save the changes and open the user permissions table for john again. We see that the table was modified so that he now has access to the "Water Level Warning" alert:
Now john has access to the "Water Level Warning" alert. He can see, configure and use it, for example, using the System Tree 784 of AggreGate Client:
931
6.6.8.7 Export
The Export action is used to save selected properties of devices or resources to a file. It helps to select certain data fields from the children contexts of the context in that it is defined.
Example: If you launch Export action from Cardholders context located under a certain Department context, you will be able export names, emails, addresses, and other details of cardholders belonging to this department. This example came from AggreGate Time and Attendance solution.
Action Flow: 1. Select 896 export type: all variables (ideal for further reporting) or writable variables only (convenient for future data re-import). 2. Check one or more resources to retrieve export data from. 1. Select
896
3. User is prompted to review and fine-tune the generated query using Edit Text 4. At this point the selection query is executed. 5. Data retrieved by a query is presented to the user using Edit Data mode).
896
UI procedure.
6. User may sort, filter and export data using controls and toolbar buttons of the Data Table Editor. It it is also possible to build a printable report based on the selected data.
Action Name: export
908
AggreGate Documentation
Action Icon: Non-Interactive Mode 893 : Permissions: Not Supported Accessible at Manager permission level
932
6.6.8.8 Import
The Import action is used to create several resources and apply parameters read from a file. Action Flow: 1. Select
896
a file to be imported.
896
2. [Optional] Specify
import options, if any options are available for the format of the selected file.
3. Data is now read from the file and converted to a Data Table. 4. Review
896
5. Map 896 properties of resources to be created to the fields of imported Data Table (file). The Source/Expression field can contain a field selected from the list or manually entered expression referring to one or more fields and/or making necessary type/value conversions.
The system does its best to figure out the suitable mappings based on field names and descriptions. In most cases, only some of the mappings would need to be specified manually.
Example 1: To convert a phone field into international format during import, you may specify the following Source/Expression (for US phone numbers): "+1" + {phone} Example 2: You may want to use a comments field of the created resources to note the date of import. In this case Source/Expression will not contain any references to the imported data fields, but will be simply something like: format(now(), "d MMM yyyy HH:mm:ss")
6. The system starts processing every record of an imported Data Table (file). A new resource is created first, with the name specified by the Name field mapping. After that, all mappings are processed and properties of the newly created resource are updated. 7. A status report is shown 896 to the user. It contains a list of the created objects along with any errors which occurred during the import process.
Action Name: Action Icon: Non-Interactive Mode 893 : Permissions: Not Supported Accessible at Manager permission level
932
import
makeCopy
Not Supported
System Internals
909
Mode
893
Permissions:
Action Flow
1. A new context is created, of the same type as context being copied. Its name is auto-generated by appending "_copy" to the name of the copied context. Its description is also auto-generated by appending the word "Copy" to the Description of the original context. 2. User is prompted
896
3. All settings are copied from the original context to the newly created one. Read-only variables and fields are not copied. For more information about the logic behind copy operations, see Context Copy Operations 866 for more info.
monitor
Not Supported Accessible at Observer permission level Event Log Window Location
955 932
context, "info
677
885 "
context, "event" ("Data Terminal Event") event is fired when new event is received from the
6.6.8.11 Search/Filter
This action opens subtree of the server context tree with the current context as a root, using the Show System Tree UI Procedure. The opened System Tree has a Filter toolbar for filtering or finding contexts. Action Name: Action Icon: Non-Interactive Mode 893 : Permissions: Not Supported Accessible at Observer permission level
932 900
filter
6.6.8.12 Replicate
This is a Drag-and-Drop 895 action that is used to copy properties from a given context to another one of a similar type. It lets you copy the values of one, several or all properties of this context (like User Account 759 or Device Account 677 ) from the "accepted" context. For more information, see Context Copy Operations 866 . As a Drag-and-Drop 895 action, Replicate action accepts contexts of the same type as type of context in that it is defined. Thus, properties may be replicated only between the contexts of the same type. Action Name: replicate
910
AggreGate Documentation
Action Icon: Non-Interactive Mode 893 : Permissions: Not Supported Accessible at Manager permission level
932
Action Flow
1. An Edit Data 896 UI Procedure allows the user to select variables and their fields to replicate. It's also possible to correct variable values on-the-fly. 2. AggreGate Server performs the replication. 3. A Replication Status Report is shown to the user using the Edit Data 896 UI Procedure in read-only mode. It includes one record per every replicated variable. This record shows the replication status (Successful/Unsuccessful) and a any errors which occurred during replication of this variable.
replicate
Action Flow
1. An Edit Data 896 UI Procedure allows the user to select variables and their fields to replicate. It's also possible to correct variable values on-the-fly. 2. Server performs the replication. 3. A Replication Status Report is shown to the user using the Edit Data 896 UI Procedure in read-only mode. It includes one record per every replicated variable. This record shows the replication status (Successful/Unsuccessful) and a any errors which occurred during replication of this variable.
Configure
status
904
(read-only mode)
System Internals
911
An expression is like a "sentence", or a line of text, which you let AggreGate process and come some result. For example, if someone were to tell you "All apples are blue", you would think a very brief moment and would then conclude that it'sFALSE wrong , in (or computing jargon). You just processed an expression, on your very own.
In AggreGate, an expression is a combination of values, also known as literals, ("True", "False", "5", "John"), operators (like +, -, * etc, a full list is below) and references (such as users.admin.deviceservers.ds1:buzz() ). You mix all these together in a particular way, and end up with a line of text (an expression) that AggreGate can understand, and thus evaluate. When AggreGate evaluates an expression, it processes it. It systematically goes through the expression, executing the operations it calls for (getting variable values, running functions included in it and getting their results, etc) until it finishes evaluating and winds up with some result. This is the value of the expression -- its result. In AggreGate, expressions are used widely throughout the system. They're always written the same way, like in a language. This language (or "way of composing references") is called AggreGate Expression Language. Here are some examples of expressions usage: Expressions that evaluate to a Boolean result are used in Event Filters filter. Expressions that evaluate to a Boolean determine when an Alert condition).
216 206
Widgets 312 are based on expressions that define relations between widget components and data coming from various contexts within the server. Every argument of an expression is also an expression in itself, and thus, expressions may be nested. Once an expression is evaluated, it gives a certain value (result). This value can be an integer, a string, a Boolean variable or any other date type defined in AggreGate Server. The value type is dependant on whatever is being evaluated: An expression such as 1 + 1 will return an integer (2), while an expression such as "the" + " dog" will return a string ("the dog"). If the expression contains a reference (such as {username} + 1), you can't really know for sure what the value type will be, because it depends on the data type of whatever is being referenced.
Side Effects
Evaluation of an expression may have side effects. For example, if an expression contains a reference to the Buzz function of a Device Server context 1018 , its evaluation will cause a hardware Device Server to blink its LEDs. This is what is called side effect.
This is a super-type of all types. If some function is declared to return an Object, it may return value of any type, depending on the input parameters. This is a super-type of all numeric types. If some function is declared to accept a number, it may accept Integer, Long, Float or Double. In addition, all other objects will be converted to numbers on a best effort basis. 32-bit signed integer number. 64-bit signed integer number. A floating point number. A double-precision floating point number. String of any length. Strings may also contain binary data. TRUE or FALSE An 8-bit RGB color value. A timestamp that includes both date and time parts. May be consumed by date/time processing functions 916 .
912
AggreGate Documentation
Data Table
A Data Table
854 . 856 .
All types have their analogs among Data Table field types
Type Conversion
The expression language processing engine does its best to perform all necessary type conversion and evaluate an expression to get some result. For example, if a numeric argument is passed to a function that accepts strings, the number is auto-converted to its string representation. Another example: if floating point number is added to an integer number the resulting value is also floating point number. This helps avoid rounding errors. If proper type conversion is not possible, the evaluation of an expression fails with error. The explicit type conversion is performed by using type conversion functions
920 .
Operators Functions
References Comments
6.7.2.1 Literals
A literal is a constant. It is "taken literally" by AggreGate - the system just takes it as it is, and uses it as a basis for calculations etc. It is a constant value. AggreGate Expression Language defines several types of literals: Null Literal: null Boolean Literals: true of false Decimal Literals (0, 1, 123, -1234567890, ...) Hexadecimal Literals (0x0A , 0xFFFF, ...) Binary Literals (0b01, 0b00110011) Octal Literals (00 , 055, 01234567 , ...) Floating Point Literals (3.1 , -44.5, 1.3E12, ...) String Literals ("This is a String", 'test', ...)
STRING ESCAPING
Backslashes (" \ ") that appear within strings must be escaped using another backslash (i.e. \ becomes \\).1 Quotes must be also escaped using backslash character (\" , \') if the same type of quotes was used to quote the string. Examples: "There are double quotes \"inside\" this string" 'There are single quotes \'inside\' this string'
System Internals
913
6.7.2.2 Operators
An operator is a symbol which applies to certain data (such as numbers or strings) and tells the system what it should do with it. Once the system executes the operator on the data (i.e, once the operator "operates"), you always get some result, or value. Common operators include + (addition, as in 1+1), - (subtraction, such as 2-1), etc. A single expression may contain many operators, such as 1 + 2 * 3. The operators are evaluated in a certain sequence -- not as they're written in the line (from left to write). For example, 1 + 2 * 3 evaluates to 7 and not to 9, because the multiplication operator has a higher precedence than addition operator. The following table also shows operator precedence - the topmost operators are the first to be evaluated when the system evaluates an expression.
Operators Precedence
Description Parenthesis Bitwise NOT operator Logical NOT operator Multiplicative operators Additive operators Syntax () ~ ! * + / < >= <= % Example (1 + 2) * 3 ~{a} !{x} > 0 {d} * 3 {b} + {c} {a} >= 123 {name} == "test" Argument Types Any Numeric Boolean Numeric Numeric (or Strings for "+") Numeric Any (Strings only for "!=") Result Type Any Numeric Boolean Numeric Numeric (or String for "+") Boolean Boolean
Relational operators > Equality operators and regular expression 1318 match operator Bitwise AND operator Bitwise XOR operator Bitwise OR operator Logical AND operator Logical OR operator ==
!=
~=
& ^ | && ||
{z} & 0xFFFF {y} ^ 0x1A {x} | 0xFF {z} = 1 && {x} > 0 {x} > 5 || {y} < 1 {y} > 5 ? 1 : 0
Numeric Numeric Numeric Boolean Boolean Boolean for first argument, any type for other arguments
Conditional operator ? :
PARENTHESIS
Expressions may also include parenthesis that change operators precedence. Example:
1 + 2 * 3
but
evaluates to 7
(1 + 2) * 3
CONDITIONAL OPERATOR
evaluates to 9
The conditional operator, ?:, can be used to conditionally evaluate expressions. It has three agruments: The first argument should evaluate to a Boolean value. If it evaluates to TRUE, the operator result is the second argument. If the first argument is FALSE, the operator result is the third argument.
914
AggreGate Documentation
Example:
2 * 2 == 4 ? "Yes" : "No"
Resolves to a String, "Yes".
ADDITIVE OPERATOR
If at least one of arguments is String, second argument is converted to its string representation. In this case evaluation result is result of concatenation of these strings. Example:
"test" + 123
resolves to String "test123".
6.7.2.3 Functions
Expression language functions perform some processing of their input parameters and return some value. Several functions (such as random ) do not have input parameters at all. It is important to keep the distinction between expression language functions and context functions may appear inside references 921 .
878
that
System Internals
915
(Number number, String pattern) ge(Long first, Long second) gt(Long first, Long second) le(Long first, Long second) log(Float value) log10(Float value) lt(Long first, Long second) min(Float first, Float second) max(Float first, Float second) ne(Long first, Long second) pi() pow(Float base, Float power) random()
here
1322 .
Returns true if first argument is greater or equal than second argument (same as >= operator). Returns true if first argument is greater than second argument (same as > operator). Returns true if first argument is less or equal than second argument (same as <= operator). Returns the natural logarithm (base e) of a value. Returns the base 10 logarithm of a value.
Returns true if first argument is less than second argument (same as < operator). Boolean Returns the smaller of two values. If argument types are Integer or Long, return value is Long. Returns the greater of two values. If argument types are Integer or Long, return value is Long. Returns true if first argument is not equal to the second argument (same as != operator). Returns the ratio of the circumference of a circle to its diameter. Returns the value of the first argument raised to the power of the second argument. Returns a value with a positive sign, greater than or equal to 0.0 and less than 1.0. Returned values are chosen pseudorandomly with (approximately) uniform distribution from that range. Returns the closest integer to the argument. Returns the signum function of the argument; zero if the argument is zero, 1.0 if the argument is greater than zero, -1.0 if the argument is less than zero. If argument type is Integer or Long, return value is Long. Boolean Float Float Float Float Float
Long Float
sin(Float value) sinh(Float value) sqrt(Float value) tan(Float value) tanh(Float value)
Returns the trigonometric sine of an angle. Angle is measured in radians. Returns the hyperbolic sine of a value. Returns the correctly rounded positive square root of a value. Returns the trigonometric tangent of an angle. Angle is measured in radians. Returns the hyperbolic tangent of a value.
Integer Integer
Integer Integer
916
AggreGate Documentation
substring, Integer fromIndex) length(String string) replace(String string, String target, String replacement)
the specified substring, searching backward starting at the specified fromIndex. If substring is not found, -1 is returned. Returns the length of the string . Replaces each substring of the string that matches the target substring with the specified replacement string. The replacement proceeds from the beginning of the string to the end, for example, replacing "aa" with "b" in the string "aaa" will result in "ba" rather than "ab". Returns true if string starts with the specified prefix. Note also that true will be returned if the prefix is an empty string or is equal to the string . Returns a new string that is a substring of the string . The substring begins with the character at the specified beginIndex and extends to the end of the string. Examples: Integer String
Boolean String
substring("unhappy", 2) returns "happy" substring("Harbison", 3) returns "bison" substring("emptiness", 9) returns "" (an empty string)
substring(String string, Integer beginIndex, Integer endIndex) Returns a new string that is a substring of the string. The substring begins at the specified beginIndex (inclusively) and extends to the character at index endIndex - 1 . Thus the length of the substring is endIndex beginIndex. Examples: String
Returns day of week of the specified timestamp (0 for Sunday Integer ). Returns number of milliseconds since Epoch for the specified timestamp. Constructs date by the specified year, month, day, hour, minute, and second values. Note, that month is zero-based, i.e. value for January is 0. The default time zone used to construct timestamps is UTC. Custom time zones can be specified in the string form, e.g.: GMT-8 Long Date
System Internals
917
GMT-08:00 America/Los_Angeles dateDiff(Date first, Date second, String unit) Calculates time passed since first date till second date, measured in named unit(s). Unit names: millisecond or ms for Milliseconds second, sec or s for Seconds minute, min or m for Minutes hour, hr or h for Hours day or d for Days week or w for Weeks month for Months (Note, that month is zero-based, i.e. value for January is 0.) year or y for Years dateAdd(Date date, Integer count, String unit) formatDate(Date date, String pattern) Adds count periods of time specified by named unit(s) to the date, and returns the result. See unit names above. Formats Date value to a String. Date formatting patterns are described here 1321 . To format a date to string suitable for reconstructing a Data Table from string parameter list 862 , use the following pattern: yyyy-MM-dd HH:mm:ss.SSS. printPeriod(Long period) Intelligently formats a time period (expressed in milliseconds) as a string in form: X days X hours X minutes X seconds. String Date String Long
Adds one or more columns to the table. Format of the first added DataTable column is specified by format1 argument, its value is defined by expression1, etc. Format is encoded into string as specified by format encoding 1307 section (visible separators are used). Value for this field is calculated by evaluating the expression that may contain references 925 to the other cells of this table. If row is not specified in the reference, it defaults to the current row (i.e. one for that new field's value is calculated). Example: addColumns({.:hrStorageTable},
918
AggreGate Documentation
"<usage><S>", "{hrStorageUsed} * 100 / {hrStorageSize} + ' %') returns a copy of original table with
one new column named usage of type String. Values for this column are calculated using {hrStorageUsed} * 100 / {hrStorageSize} + ' %' expression that references two other columns of the same table. aggregate(Object source, String expression, Object initialValue) Calculates some "aggregate value" for a Data Table (if source Object argument is a Data Table) or a number of contexts (if source argument is a String representing context mask). If the first argument is a Data Table, goes through every record of it and calculates an expression for it, making source Data Table a default table 927 , and current row a default row 927 . If source is a context mask, expression is calculated for every context which matches the mask, making it a default context 927 . The expression usually operates over two values: the value of the previous calculation that may be referred using {env/previous} reference (see Environment References 931 ) and value(s) from the current context/record referred by standard references 926 . During the first calculation, {env/previous} returns the value of initialValue argument. Example 1: aggregate("users.*.devices.*",
max({env/previous},
{field}), 0)
The above expression will return maximum value found in the field column. Example 4: ({env/previous} * {#row} + {num}) /
({#row} + 1)
The above expression will calculate an average value of a table column. cell(DataTable table [, String field [, Integer row [, Boolean description]]]) Returns value contained in the cell of Data Table passed in the first argument. Cell is specified by field and row parameters. If row is not specified, value of field in the first row is returned. If field is a number, it is considered to be field index instead of its name. If description parameter is specified and is true, the function returns description of cell value instead of the value itself (only if field format specifies selection values 856 ). If field is unspecified, this function returns content of the first cell of the table (e.g. from first field and first row). Example: cell({users:list()}, "firstname", 5) will return firstname field from 6th row (index = 5) of table containing a list of user accounts (obtained by calling list 759 () context function 878 from Users 756 context). clear(DataTable table) Removes all records from the table. If minimal record count allowed by the table's format is greater than zero, removes records starting from the end of the table until the minimal record count is reached. Converts table to the format specified by format argument. Format is DataTable Object
DataTable
System Internals
919
format)
encoded into string as specified by format encoding 1307 section (visible separators are used). After a new empty table of the specified format is created, the function does its best to copy all data from table to a new table using Data Table smart copy 861 operation. Example: convert({}, '<<f1><S><A=123>> <<f2><B>>') expression will create a table with String field f1 and Boolean field f2 and copy all data from default table 927 to the newly created table. If default table has field f1 of type Integer, field type will be converted, but all data will be preserved.
Copies as much data as possible from the source table to the target table and returns the target table. Adds/removes records from the target table to match the number of records in the source table (if target table's format allows this). Converts value types wherever necessary.
DataTable
describe(DataTable table, String field1, String description1, String field2, String description2, ...)
Changes description of field named field1 to description1, etc. Returns DataTable resulting table. Example: describe({.:ifTable},
"ifDescr", "Name", "ifAdminStatus", "Status", "ifType", "Type", "ifSpeed", "Speed") returns a copy of original table where
descriptions of ifDescr, ifAdminStatus, ifType , and ifSpeed fields are changed to Name, Status, Type, and Speed respectively.
Returns description of the table, i.e. result of its Naming Expression 856 evaluation. Returns a table that contains only those rows of source table that match filterExpression. Example: filter({users:list()}, "contains ({firstname}, 'John')") will return only users whose first names contain John string.
String DataTable
hasField(DataTable table, String field) print(DataTable table, String expression, String separator)
Returns true if table has field named field and false otherwise. Calculates expression for every record of the table and appends output to a resulting string separating results by separator. Example: print({users:list()}, "{firstname}", ", ") will return of user's first names, e.g. Amanda, Michelle, John, Donald, Paul.
Boolean String
Returns number of records (rows) in the table. Removes several columns from the table.
Integer DataTable
Scans table row-by-row and checks if value of fieldToCheck is equal to value . If true, returns value of fieldToSelect from current record. If no matching records found in the table, this function returns NULL. Example: select({users:list()}, "firstname", "username", "john") will return first name of user with username john, selected from the user stats table (see example above).
Object
Changes value table's cell located pointed by field and row to value and returns the changed table.
DataTable
920
AggreGate Documentation
Sorts table's records according to the natural order of field values. Value of ascending flag specifies sort order.
DataTable
Accepts a table as an argument and returns another table that contains only fields whose names are specified by fields argument. Format and content arn preserved in the returned subtable. Example: subtable({users:list()}, "firstname", "lastname") will return a table with two columns containing first and last names of all AggreGate Server users.
DataTable
Creates a new table using format encoded into string using visible separators 1307 and an array of parameters. Rules used to fill table with data are covered here 862 . Example: table("<<from><I>><<to><I>>", 2, 5, 3, 7) will return a table with two Integer columns and two rows. First row will have from field equal to 2 and to field equal to 5. Second row's values will be from=3 and to=7.
DataTable
Converts arguments to a Date. The value argument is first Date converted to an integer number. This number is then interpreted as a Unix timestamp, i.e. number of milliseconds since Epoch.
CONTEXT-RELATED FUNCTIONS
Function available(String context) callFunction(String context, String function, Object parameter1, Object parameter2, ...) dc()
Description Returns true if context with path context exists and is available to the caller. Calls a function 878 named function of a context with path context and returns its output. Function's input Data Table 854 is constructed from array of parameters ( parameter1 , parameter2 , ...). Rules used to fill table with data are covered here 862 . Returns path of default context evaluation.
927
String
System Internals
921
Another way to get path of default context is using {.:} reference 926 . dr() dt() Returns default row
927 927
Integer DataTable
Gets a variable 869 named variable from a context with path context and returns its value.
hasVariable(String context, String Returns true if context with path specified by context argument has variable) variable specified by variable argument. hasFunction(String context, String Returns true if context with path specified by context argument has function) function specified by function argument. hasEvent(String context, String event) variableFormat(String context, String variable) functionInputFormat(String context, String function) functionOutputFormat(String context, String function) eventFormat(String context, String event) Returns true if context with path specified by context argument has variable specified by event argument. Returns string representation of variable format or null if context/ variable is not available or variable's format is dynamic.
Returns string representation of function input format or null if context String /function is not available or function 's input format is dynamic. Returns string representation of function output format or null if context/function is not available or function 's output format is dynamic. Returns string representation of event format or null if context/event is not available or event's format is dynamic. String
String
OTHER FUNCTIONS
Function evaluate(String expression) script(String name, Object parameter1, Object parameter2, ...) Description Evaluates its string argument as an AggreGate expression returns the result.
911
Calls a widget script 610 called name and passes several parameters to it. Returns script output object. This function is available only inside widget binding expressions 606 .
Causes the thread processing this expression to pause execution for the specified number of milliseconds. Logs the value accompanied by the message as a system event to enable expression debugging 923 . Returns the unchanged value .
Null Object
6.7.2.4 References
References are used to access external data values from an expression. See the references description of references and their syntax.
925
References must be enclosed into curly brackets when inserted into expressions. They're resolved when the expression is evaluated. It looks like this: {temperature} <= 100. In this case, temperature is a reference.
922
AggreGate Documentation
6.7.2.5 Comments
Comments
Expressions may include single-line and multi-line comments. A single-line comment starts with a // character sequence and continues to the end of current line. Here is an example of a single-line comment:
that is used to resolve relative context paths that may appear in standard
The default data table 927 that is used to resolve standard references that do not explicitly point to variable/function of a certain context. The default row 927 that is used to determine what data table row should be accessed when resolving standard references that do not explicitly specify a row. Any environment variables that may be retrieved by using environment references expression.
930
inside the
5 + 5 > 7 3 + 2 "Red" + " " + "Line" {speed}>5 {name} == "admin" {failed[3]} == false {env/context} ~= "^abc.*"
System Internals
923
abc".
{int[1]} == {int[2]}
true if both references resolve to values that may be compared to each other (i.e. two numbers, or two strings) and these values are equal. true or false, depending on the values of resolved references, that must resolve to numbers. "mile" Value of pressure reference if it is greater than 100 or 100 otherwise.
Boolean
acos(sin({car_latitude}) * sin({base_latitude}) + cos({car_latitude}) * cos ({base_latitude}) * cos({car_longitude} - {base_longitude})) * 6371 > 500
6371 is Earth's radius in kilometers 500 is maximum allowed distance between car and base station in kilometers
If coordinates are expressed in degrees (that is more likely in the case of GPS receiver data), we just convert degrees to radians, e.g. by writing
{car_latitude}
Tracing
924
AggreGate Documentation
Example: Let's assume that we want to create an alert that will be triggered if pressure is under 20 units and temperature is above 50 units. Our initial variable trigger 217 's expression will look like this:
track({pressure} < 20, "Pressure Condition") && track({temperature} > 50, "Temperature Condition")
The output will be as follows:
System Internals
925
(arithmetic, comparison, logical, conditional, etc.) Default table 927 references (e.g. {field} or
Very high, millions of operations per second won't cause performance degradation.
{temperature [2]})
Context references (e.g. Very high to low, depending on the context location (local or remote) and nature of referred context variable/function.
{.: temperature$c Resolution performance of server-side variable/function references depends on: elsius} or {: Time required to send a corresponding request to the server and get the response. This is not executeQuery relevant for expressions calculated inside the server (e.g. in models bindings 307 ), but relevant ("SELECT * for remote access (e.g. for widget binding 604 expressions) from users.*: info")}) Time and resources (CPU time, memory, database I/O) required to obtain value of referred
variable or function output. See variables performance
878
880
Widget component High, tens of thousands of operations per second won't cause performance degradation. references (e.g.
Very high, millions of operations per second won't cause performance degradation. Very high to high. Minor performance impact is only noticeable when performing operations on very long strings (millions of characters). Very high, millions of operations per second won't cause performance degradation.
String processing functions Date/time processing functions Color processing functions Data Table processing functions Type conversion functions Context related functions
Very high, millions of operations per second won't cause performance degradation. Very high to medium, only operations on very large tables (thousands of records) can generally cause noticeable CPU load impact. Very high, millions of operations per second won't cause performance degradation. Very high to low, depending on the context location (local or remote) and nature of referred context variable/function. See variables performance
878
880
6.8 References
References are used to indicate the location of data. Depending on the context, the referenc used to read data (i.e, data will be fetched from wherever the reference points to) or to writ (data will be saved to wherever the reference points to).
References may refer to any value that represents AggreGate internal data. The generic syntax of a reference is:
schema/server^context:entity(parameter_list)$field[row]#property
All parts of a reference except for field are optional.
926
AggreGate Documentation
Reference Schema
A reference schema defines how the system resolves the rest of the reference. It helps the system "figure out" the meaning of the rest of the reference. Schemas are widely used in computing. For example, in the address http:// www.google.com, the http:// part is the schema. It tells your browser that this is an HTTP link, and that it should treat the rest of the line like this. An FTP link can have a different structure, such as ftp://joeuser:xxx@gmail. com. Here again, the ftp:// part defines the schema, and now your program knows how to handle the rest of the link. In AggreGate, Schemas are used to refer to various parts of the system:
env/ schema is used to refer to environment variables 930 (which are properties immediately concerning the current operation being executed), form/ schema is used in GUI Builder to refer to the properties of graphical components of
that widget is composed. A schema is optional: you don't necessarily have to include it in your reference. It just tells the system that your reference points to an environment variable (env/) or a graphical component (form/). If your reference points to the data coming from a context variable, a function or a cell of a Data Table, etc., you just omit the schema, and write your reference in the default format, which is described in the very next section (Resolving References). For example, a reference like form/TextField1#text uses the form/ schema, and refers to the "text" property of a widget component called "TextField1". A reference like users.admin:childInfo$firstname includes no schema, and refers to the first name of user "admin" (which is a field of the childInfo variable.
312
binding
604
target
605 .
312
binding expressions.
588
binding
604
item selection.
Used in chart dataset expressions (see Event-based Data 392 and Variable-based Data 393 properties of the Chart component). These use the same format as used for the Standard Reference 926 . However, Default Data Table 927 pointed by such reference is a Data Table containing the value for the previous data point (i.e. event data or value of changed variable). See this example 931 to find out how previous/ reference may be used to calculate the difference between two data points.
936
394 .
When used as a data table binding 860 target, instructs the system to replace the whole table those binding is being processed by the one returned by current binding's expression. Used inside a widget 312 binding 604 condition 607 to refer fields of event that caused binding activation (or fields of variable those change caused the activation).
Resolving References
Resolving a reference is the process of getting the current value stored at the location the reference points to. Resolving algorithm depends on the reference schema. If the reference does not specify a schema, it is resolved as a standard reference
926 .
representing values of context variables, input/output of context functions or just some relevant data.
Individual cells of the above tables. Properties of context variable/function/event definitions (e.g. their descriptions or readable/writable flags). Properties of data table fields (e.g. their descriptions and help texts).
System Internals
The full syntax of a standard reference: context:entity(parameter_list)$field[row]#property
927
entity(parameter_list)$field[row] field[row]
927 :
Default Row
If row is not specified, value is taken: From current row, if Data Table is processed row-by-row in the current environment; From row 0 (first row in a Data Table) in all other cases. Full syntax: context:entity(parameter_list)$field Value from Default Context
927 :
entity(parameter_list)$field field
927 :
Default Context
If context is specified in the reference, data is fetched from this context. If context is not specified, data is retrieved from a default context. The default context is automatically defined according to whatever you're doing. For example, when filtering events, the default context is the context in which a given event (the one we're working on) was fired. You might say that the default context is the "current context". Example: When working with widgets
315 ,
the default context is one from which the widget was launched.
Relative
864
context paths (e.g. .devices.device1) are resolved starting from this default context.
Example: childInfo$firstname refers to the default context, while users.admin: childInfo$firstname explicitly refers to a specific context.
{.:} reference will return path of default context. dc() function will also return this path.
{} (empty) reference will return the whole default Data Table (that can be used, for example, by Data Table processing functions 917 ). dt() function will also return this table.
Resolving Entity
928
AggreGate Documentation
The entity part specified in the reference is the name of a variable or function existing in the context you're referring to. It is considered to be a function if the reference contains a parameter_list in parenthesis, and as a variable otherwise. So users.admin:childInfo refers to a variable, while users.admin:delete() refers to a function. If the entity you're referring to (such as delete()) does not exist, resolution will fail. A variable (such as childInfo) may actually be a table containing some fields (such as firstname). To refer to a field of some variable, you have to follow the variable name with a $ sign, followed by the field's name. So, to make the entity part refer to the firstname field of the childInfo variable, you would have to write it as childInfo$firstname. If reference points to a function, and it is called with parameters specified by the parameter_list during resolution. Example: Resolution of reference :register("charlie", "12345", "12345") will cause execution of register function from the root context.
ERROR HANDLING
If an error occurs when getting variable value of calling function, reference resolution fails.
Resolving Properties
Sometimes, you might want to specify a property to find out a certain property of context, variable, function, data table, or data table field. You might be wondering what is the difference between a field and a property. Well, a field contains actual data, while a property contains "meta-data" -- data about data. Let's say we're working with the version variable of the server context (its path is server:version). The variable contains a field (also called version) with actual data, such as "4.01.00" (this is the server version). You can refer to this field as server:version$version. This same variable also has a description property, containing data about the variable. In this case, the property would contain a string, "Server Version". The property is not stored within the variable's Data Table -- rather, it "concerns" the variable definition (rather than its value). You can refer to this property as server:version#description. So, when referring to a field you use the $ sign, and when referring to a property you use the pound sign ( #). This is important because fields often have properties (i.e, a field has a description). More on this below.
CONTEXT PROPERTIES
Context property reference syntax: context:#property Property Type Description
System Internals
929
of the context.
350
component of a Widget
312 .
component of a Widget
312 .
For example, users.admin:childInfo$firstname will return something like "John" (which is the value of the field), while users.admin:childInfo$firstname#description will return something like "User's first name" (which is the field's description property).
PROPERTY-ONLY REFERENCES
If reference consist of a property only (e.g. #property), it is resolved to one of the following properties: Property row Type Integer Description This property resolves to the current row of the Data Table being processed. For example, when widget chart 384 is based on custom data 388 , its Source Data table is processed line by line. For every line Source Data Bindings expressions are calculated. Thus, we may use {#row} in any Source Data Bindings expression to create consecutive series or category names (0, 1, 2, ... ).
930
AggreGate Documentation
Examples
Reference Text Comments This reference returns the value of the recipient field in the default ("current") data table. It's useful, for example, when working with event filter 206 expressions. Same as above, but the value is taken from the fourth row. Resolves to the value of the email field in the Data Table containing the value for the childInfo variable in the user.admin context. Will contain the system administrator's email address in this case. This example starts with a colon. So it refers to the "" (empty string) context, which is the name of the root context. So it returns the description field of the info variable within the root context. Note that while "description" is also the name of a property, you can still have a "description" field as well. The difference is whether you use the # or the $ sign to refer to it. Resolves to the description property of the DS_setting field in the default data table. Resolves to the Data Table returned by "buzz" function in context users.test.deviceservers. To get a data table, the buzz function must be called, thereby causing the ds1 Device Server to blink its lights in the "real world". Resolves to the value of the firstname field in in the childInfo variable of the default ("current") context. This reference use a relative context path ("."). You might as well not put anything before the colon, but a dot works the same. You'll get a string with the user's first name ("Joe").
recipient
recipient[3] users.admin:childInfo$email
:info$description
DS_setting#description users.test.deviceservers.ds1:buzz()
.:childInfo$firstname
.:childInfo$country#svdesc
Returns name of user's country (that is the description of the selection value of country field). Note that .: childInfo$country will return the system internal numeric country code. This reference points to the status output field of the selfTest function defined in the context users. admin.deviceservers.ds1.devices.1. This function is called with one parameter. This reference will resolve to a Data Table returned by dailyActivityData function defined in attendance context. This function will be called with two parameters: Result of evaluating expression {.:}, that is a path of default context ("."). Result of evaluating expression {date}, that is value of date field in first row of default data table
users.admin.deviceservers.ds1.devices.1: selfTest("quick")$status
attendance:dailyActivityData ('{.:}','{date}')
users.admin#icon
).
System Internals
References to environment variables are formatted like this:
931
env/xxx: env is a predefined string (don't change it). You put it there to indicate the schema you're using (i.e, environment variables) and thus invoke the environment variable resolver. xxx is the name of the variable. An
environment variable isn't the same as a context variable operation -- you just write its name. Example:
869 ,
env/level
This environment variable contains the severity level of the current event being processed. This example may not seem very useful at this point: to make it really useful, you have to put it in an AggreGate Expression, which we'll discuss in the next chapter.
Tibbo AggreGate has a flexible and highly customizable security architecture. Most system r have an associated permission level 932 . A permission level describes who may access the resource.
Every user account 108 has a permissions table specified by context masks 865 .
863
932
AggreGate Documentation
Observer
None, Observer
Operator
Manager
Engineer
If you wish to check what permission level is required to access a particular context, variable, function, event or action, please see Context Reference 651 . It may seem counter-intuitive that Events have permission levels. After all, an event just happens , whether you like it or not. A Device disconnects from the system -- that's an event. It's a fact of life, you might say. But you can select whether you want someone to be able to view the event or monitor it -- and this is what event permissions do. They let you determine who may see the event in the Event Log, create Alerts 216 for this event, etc. Advanced information: To understand what we mean when we say a permission includes another permission, you're going to have to think about permissions as binary bitmasks. If you're not sure what a bitmask is, please see http://en.wikipedia.org/wiki/Bitmask. A permission level is internally expressed as a bitmask. For example, the internal bitmask for None is 00000000, while for Observer it is 00000001, and for Administrator is 00011111. So, as you see, the Administrator mask (it's a mask - not just a number) includes the Observer and None masks, because it has a 1 in every position where the other masks have 1. This method is used because it is more versatile and powerful than just a numeric scale (i.e, None is 0, Observer is 1, etc).
Example 1
System Internals
933
If the permission level of a user requesting access to a certain resource is Manager and the required permission level for the resource is Admin, access will be denied because Manager level does not include Admin.
Example 2
If the permission level of a user requesting access to a certain resource is Manager and required the permission level for the resource is Manager, access will be granted because Manager level includes Manager.
Users
Example 1
The default permission level of the Root Context 726 of AggreGate Server is None. It means that even nonauthenticated users may execute some actions with this context. But the Restart Server and Stop Server actions that are defined in this context require Administrator permission level in this context. Thus, only users whose permissions table defines Administrator permission level for the Root context will be able to stop or restart the server.
Example 2
The default permission level of the User 759 context is Observer. But the Delete action defined in this context has an Administrator permission level. Thus, a user having the Observer permission level for this context will be able to view account status, but will not be able to delete it. The Administrator permission level is required for that.
934
AggreGate Documentation
Every resource (variable, function, event, action) of a context has its own permission level, but there is no way to give users a dedicated permission level to a certain context resource. It's only possible to set a user's permission level for the context as a whole. This means that the system provides pre-defined scenarios of interaction with a context, and permission levels for context resources are assigned to avoid access conflicts in these scenarios. For example, if a certain context action changes some variables of this context, the action's permission level must include the permission levels of any accessed variables, otherwise the action may internally fail with Access Denied error even though the user was allowed to execute it.
users.admin.devgroups.my_device_group.*
Such permissions table record will allow access to all members of the my_device_group group at permission level specified in Permissions field.
932
Allowing access to all group members in the way described above creates a potential security risk! Group contents can be changed by operators or even automatically 250 , exposing newly added members for the user having permissions to access all group members. Grant group member permissions to operators only in case of absolute necessity.
Last Records
Last three records of the new user's permissions table have special meaning. Here is an example: Context Mask users.NAME_OF_USER users.* * Permissions Manager None Manager
The first record declares Manager-level access to all contexts that are defined under the user's own User 759 context (e.g. users.NAME_OF_USER.alerts etc.). This level will be used if no dedicated permission level is assigned to a user's resource by the prior records. The second line denies access to contexts of all other AggreGate Server users by setting None-level permissions for them. Thus, the effective permission level for the context users.user123.widgets will be None (Unless, of course, the new account happens to be user123). The third line defines Manager-level to all other contexts that are not related to user accounts. This prevents a new user from executing administrative actions. For example, a new user will not be able to view administrative events because the Default Permission Level 933 of the Administration 652 context is Administrator . They would also not be able to stop or restart the AggreGate Server, because the Stop server and Restart server actions (defined in the Root Context 726 ) require Administrator -level access to this context.
System Internals
935
users.NAME_OF_USER.devgroups users.NAME_OF_USER.filters users.NAME_OF_USER.alerts users.NAME_OF_USER.common users.NAME_OF_USER.jobs users.NAME_OF_USER.queries users.NAME_OF_USER.widgets users.NAME_OF_USER.autorun users.NAME_OF_USER.favourites common users.NAME_OF_USER users.* *
None None Manager None None None Manager None None None Manager None Manager
In the above example, only Alerts and Widgets records were enabled in Default User Permissions during user creation.
Assuming all items in Default User Permissions are enabled, we'll get the following permissions table for a new user: Context Mask users.NAME_OF_USER.widgets external_device_servers users.NAME_OF_USER users.* * Permissions Administrator Administrator User None User
EXAMPLE 1
Supposing that the permissions table of the user john looks like this:
936
AggreGate Documentation
1. John tries to access user.abc.alerts. The permission level required to access that resource is Manager. The first line in the table, users.test, doesn't match or extend the users.abc.alerts mask, so we move on to the second line, users.* and see that it does extend users.test. This second line specifies None as the permission level, and so access will be denied. 2. John tries to access event_filters.filter1, requiring a Manager permission level. John's effective permission for event_filters.filter1 will be defined by the third line in the table, and thus access will be granted. 3. John tries to access users.test.queries, requiring an Administrator permission level. His effective permission level for that context is defined by the first line in the table. It will be Manager (lower than Administrator ), and thus John will be denied access to users.test.queries.
EXAMPLE 2
Permissions table of the default administrator Line 1 Context Mask *
109 :
Permissions Admin
The effective permission level of the default administrator for any context is Admin, because all context paths extend the * mask. So the administrator may execute any operation in any context.
EXAMPLE
John, the guy from the last example, has an Alerts 654 context, users.john.alerts. This path always exists. Initially John can access his Alerts, because Default User Permissions let him do so. He logs onto AggreGate Server and creates an alert, alert1. Then, the administrator adjusts John's permissions table so that John can no longer see his Alerts context (for example, by adding a record with Context Mask users.john.alerts and Permissions None to the beginning of the table). This does not destroy alert1. It doesn't even stop it from working. Some other AggreGate Server users may still have access to this alert, and be able to configure and monitor it. Once the administrator lets John access his alerts again, alert1 will show up under his Alerts context.
6.10 Statistics
AggreGate platform can store long-term time series data in a Round-Robin Database (RRD). The module responsible for collecting, storing and processing time-series data is called Statistical Process Control module, or simply Statistics. Round Robin Database (RRD) aims to handle time-series data like network bandwidth, temperatures, CPU load etc. The data are stored in an circular buffer, thus the system storage footprint remains constant over time. See RRD Technology 945 article for more information. The RRD database has two important benefits for storing long term statistical data: Small and constant database size Extremely fast access to the historical data for any time period
Statistics Channels
In AggreGate, RRD-based statistical data is presented by named Statistics Channels. Each channel processes value of one context variable 869 . However, since channel Primary Data Points 945 are calculated by expressions 911 , channel source values may be based upon any data flowing inside the system. Each channel defines: Expression used to determine values of Primary Data Points
System Internals
Storage type (file or memory) Channel type
942
937
Active aggregation functions (average, minimum, etc.) Storage periods for different aggregation intervals (hourly, daily, etc.) And other options
938
Use of Statistics
Currently, the following AggreGate data processing facilities allow to use statistics: Devices
113
. One or more channels may be created to keep history of every device setting variable. . Each tracker has a pre-created statistical channel to keep changes history.
Trackers
257
Channel Elements
Each statistical channel consists of the following elements: Datasets. Datasets allow to store multiple sets of statistics for one context variable. Simple variables match one dataset, while each row in a tabular variable may be identified by a unique key to form a named Dataset. See Working With Keys 942 for details. Archives. Each dataset includes several Archives that contain data aggregated by different time periods. For example, the dataset may include one Archive with monthly averages, another one with hourly maximums, etc. The available Archive types are Minutely, Hourly, Daily, Weekly, Monthly, and Yearly.
938
AggreGate Documentation
Source Data
System Internals
939
EXPRESSION
The Expression property defines what data is the base of statistics. It is evaluated on every change of variable that the channel is built upon. The expression must evaluate to a number (integer of floating point). If the expression evaluates to any other data type, the system tries to convert it to a number and skips the value if conversion fails. If the expression evaluates to NULL, the system applies NULL Value Handling method to it (see below). Statistics Channel Expression Resolution Environment Default Context
927 927 922
Context that the channel is defined in. Current value of the variable that the channel is based on. 0 if Use Key Field property is disabled. Number of currently processed row if Use Key Field is enabled.
Standard
931
variables only.
Key Fields
A channel may include one or more Datasets for a single context variable. Multiple Datasets can be created for tabular variables. In this case each row in the variable is identified by unique string key (Dataset name). See Working With Key 942 section for further explanation.
Values Post-Processing
Statistics channel provides several options for post-processing values returned by channel Expression : NULL Value Processing Out Of Range Values Processing Minimal Value Maximal Value
Minimal and Maximal Value settings are very useful to handle counter resets and erroneous decreases. If you've a counter that can reset to zero or decrease at any time (e.g. during device reboot), AggreGate Server has no way to detect whether the counter has been reset or overflowed. However in case of counter reset or
940
AggreGate Documentation
decrease calculated per-second rate will be very high. For example, if counter value measured at 18:00:00 was 100 000 and the next reading at 18:01:00 resulted to 1000, statistics module will suppose that the counter was increased up to 2^32 (4.2 billion), overflowed, and increased to 100 during this minute. Thus, calculated per-second rate will be definitely higher than 1 000 000. To exclude such high rates caused by counter resets from your statistics, just set Maximal Value to something definitely higher than your maximum expected per-second rate but lower than abnormal "counter reset rate". For example, if your maximum expected per-second rate is 10 000, set Maximum Value to 100 000 to throw incorrect rates away and avoid statistics cluttering.
Statistics Storage
Basically, statistical data may be stored in files and memory. File-based storage is persistent, while data of memorybased channels is discarded when server is restarted.
STORAGE
Storage property defines statistics storage type. There are three options: Standard file (Lower memory usage, slower) Mapped file (Higher memory usage, faster) Memory Memory based storage guarantees maximum performance, but it doesn't preserve data between server restarts and, therefore, has very limited uses. Here are some guidelines for making a choice between standard files and memory-mapped files: Memory-mapped file caches channel data in memory (borrowed not from JVM, but directly from the underlying operating system), while regular file's data is kept on the disk. Both file-based storage's performance dramatically depend to the operating system, so in most cases it's necessary to perform some tests to finally select one of them.
Channel Type
The channel Type setting defines how are subsequent source values processed to form Primary Data Points channel. See Channel Types 942 for details.
945
for the
Data Aggregation
Statistics module use Aggregation Functions (AF) to convert Primary Data Points into Consolidated Data Points (see RRD Technology 945 for details). There are siz aggregation functions that may be individually enabled/disabled for a channel: Average Minimum Maximum Total First Last Data aggregation functions are applied to all Archives 937 enabled for the channel. For example, if Average aggregation function is enabled, the system keeps Minutely, Hourly and other averages.
AVERAGE
This function calculates an average of Primary Data Points to form a Consolidated Data Point. This is an average of values themselves (for Gauge 943 channel) or value change rates (for Counter 943 and other channel types).
MINIMUM
This function takes finds minimal Primary Data Point to use as a Consolidated Data Point. This is minimal value itself (for Gauge 943 channel) or minimal value change rate (for Counter 943 and other channel types).
MAXIMUM
Similar to Minimum.
System Internals
941
TOTAL
This function sums all Primary Data Points to form a Consolidated Data Point. This is a sum of values themselves (for Gauge 943 channel) or value change rates (for Counter 943 and other channel types).
FIRST
This function takes first Primary Data Point as the value for a Consolidated Data Point.
LAST
This function takes last Primary Data Point as the value for a Consolidated Data Point.
Archives
Each channel can have all or some of the following Archives Minutely Hourly Daily (fixed 24 hours period, see note below) Weekly Monthly (fixed period, see note below) Yearly (fixed period, see note below)
937
enabled:
Important note: the RRD database and statistics module are always dealing with fixed length time periods. This leads to the following consequences: 1. Daily archives are set up for the 24-hour days. This will produce incorrect daily results for days when switching from DST (summer time) to normal time and back occurs. 2. Monthly archives are set up for an average month length during any four consequent years (three normal years and one leap year), which is around 30.43 days. This affects the precision when calculating per-month and per-year statistical values for all months/years. To get more precise monthly and yearly results, you need to base your statistics on daily samples and use additional aggregation on the later steps of processing, e.g. chart's internal data aggregation that will group daily samples by "real" months/ years. To get results with highest possible precision level, base your calculations on hourly statistical samples and use higher-level aggregation to group results by days, weeks, months or years.
Length of each archive, i.e. number of Consolidated Data Points in it, is configurable. To completely disable an archive set its length to NULL (<Not set>).
System administrators define length of archive in "human" time units, while number of Consolidated Data Points is calculated automatically. For example, if length of Minutely archive is set to 1 day, it will contain 1440 CDPs (i.e. 1440 Averages, 1440 Minimums, 1440 Maximums and 1440 Totals, having all that aggregation functions enabled).
Step
Granularity interval for the channel, see RRD Techology Changing Step will reset channel statistics.
945
942
AggreGate Documentation
Since the default step is 60 seconds, the Average, Minimal and Maximal statistical values for the Last Minute period will be equal.
XFiles Factor
The XFiles Factor defines what part of a consolidation interval may be made up from "Unknown" Data Points while the consolidated value is still regarded as known. It is given as the ratio of allowed "Unknown" Primary Data Points to the number of PDPs in the interval. Thus, it ranges from 0 to 1 (exclusive). Changing XFiles Factor will reset channel statistics.
The default value is 0.9, meaning that 90% of initial samples may be missing. To ensure more reliable statistical values, decrease this value. The typical setting is 0.5.
Show In Status
Defines whether this channel's brief statistics should be shown in the status of container (i.e. device or tracker).
If Use Key Field is enabled, one Dataset is created for every record in the source variable's value. This option does, of course, have sense only for channels based on tabular variables. The name of dataset is defined by the unique record key that is constructed according to Key Field property. Here is what action is taken by the system when channel source variable is updated: 1)When Use Key Field is disabled, the channel Expression is evaluated only once, having row number zero as the default row 927 during evaluation. The result of evaluation is converted to a number and the only dataset (that is untitled) is updated with this number. 2)When Use Key Field is enabled, the channel Expression is evaluated once for every row found in the source table. For each row: a) First, the system determines what dataset does current row correspond to. This is performed by either taking value of Key Field or value of first field that is marked as key 856 in variable format. b) Second, channel Expression is evaluated having current row set as the default row c) Third, the dataset those named was determined at step (a) is updated.
927 .
KEY FIELD
This property defines what field of channel source variable is used to determine RRD dataset names when Use Key Field is enabled. Here is how the dataset name is constructed from the Data Table record: If Key Field is non-NULL, value of this field will be used as dataset name; If Key Field is NULL, the value of first key field
856
If Key Field is NULL and no key fields are defined in table format, dataset name will match current record's number.
System Internals
Counter Derive Absolute
943
Gauge
Value of Primary Data Point equals to the channel Expression evaluation result, i.e. the only conversion is application of NULL Value Processing and Out Of Range Value Processing rules. This type is suitable for simple metering like temperature, number of people in the room or stock price.
Counter
Suitable for continuous incrementing counters. The Counter data source assumes that the counter never decreases, except when a counter overflows. The statistics update function takes the overflow into account. The counter is stored as a per-second rate. When the counter overflows, channel checks if the overflow happened at the 32bit or 64bit border and acts accordingly by adding an appropriate value to the result. Simply speaking, Counter will look at the difference between the previous value and the current value (the delta). An example would be an odometer. The Primary Data Point is computed as: delta(counter) divided by delta(time). Examples of counters: - Vehicle travel distance (number of meters passed by the vehicle) - Error count (number of errors occurred since device startup) - Interface traffic (number of ingress/egress bytes on the interface since network device power up). - CPU load caused by a process (number of milliseconds of CPU time consumed by the process since its startup)
Derive
Derive-type channel can measure both increments and decrements. This can be useful for gauges, for example, to measure the rate of people entering or leaving a room. Internally, derive works exactly like Counter but without overflow checks. So if your counter does not reset at 32 or 64 bit you might want to use Derive and combine it with a Minimum Value of 0. Derive is really similar to Counter, but now it can also go back. An example could be something monitoring a bidirectional pump. The resulting pumping rate can be negative as well as positive.
Absolute
Absolute channels are used for counters which get reset upon reading. This is used for fast counters which tend to overflow. So instead of reading them normally you reset them after every read to make sure you have a maximum time available before the next overflow. Another usage is for things you count like number of messages since the last update. Absolute channel is also similar to the odometer, but here the counter is reset every time it is read. Primary Data Point computed as: value divided by delta(time).
944
AggreGate Documentation
5. The value is processed according to the channel Type to form new channel's Primary Data Point. If Type is Gauge, value is left as-is. For Counter, the resulting value will represent the source value's per-second change rate. 6. Primary Data Point value is used to update channel's Consolidated Data Point(s) according to enabled aggregation functions (Average, Minimum, etc.). This is performed for every Archive (Minutely, Hourly, etc.) 7. Consolidated Data Point value(s) are saved in file/memory Storage.
It is possible to graph statistical time series and use a special {statistics/} reference
To build a chart upon variable statistics, create a Variable-based Chart within data series expression to refer statistical data. See Statistics-Based Series
394
393
Example 1: Temperature
Assuming we've a simple variable that represents current temperature in degrees (Celsius). The variable has only one record with a single field called temp . However, we want our statistics to be based on Fahrenheit-scale metering. Here is how the channel properties
938
The channel Expression should be {temp} * 9 / 5 + 32. This will ensure temperature conversion. Since the channel is based on a simple (non-tabular) variable, Use Key Field setting should be disabled.
Label field is a key field according to the above table's format. Here is how the channel properties
938
Our channel Expression will be {Used} Since we need to create a single RRD dataset for every tracked disk, the Use Key Field flag should be enabled If we leave Key Field Name property at default (NULL), the system will use value of Label field (i.e. disk labels) as dataset names. This will happen since Label is a key field. However, this is not convenient, so we set Key Field to Disk. This forces disk names to be used for naming RRD datasets.
System Internals
945
Transforming to a Rate
Everything is processed as a rate. This doesn't mean you cannot work with temperatures, just remember it is processed as if it was a rate as well. There are several ways for SPC module to get a rate from its input (depending on the channel type Gauge: Keep it "as is". The input is already a rate. An example would be a speedometer. This is also the type used for keeping track of temperature and such. Keep it "as-is" does not mean normalization and consolidation are skipped! Only this step is. Counter: Look at the difference between the previous value and the current value (the delta). An example would be an odometer. The rate is computed as: delta(counter) divided by delta(time). Absolute:
942 ):
946
AggreGate Documentation
As the odometer, but now the counter is reset every time it is read. Computed as: value divided by delta(time). Derive: As counter, but now it can also go back. An example could be something monitoring a bidirectional pump. The resulting rate can be negative as well as positive. In each of these four cases, the result is a rate. This rate is valid between the previous update of statistical channel and the current one. SPC module does not need to know anything about the input anymore, it has start, end and rate. This concludes step 1. The data is now a rate, no matter what data source type you use. From this moment on, SPC module doesn't know nor care what kind of data source type you use.
These numbers are all different yet they have one thing in common: rate multiplied by time is a constant. In this picture, it is the surface that is important, not its width nor its height. This is because we look at the amount of data, not at its rate nor its time. Why this is important follows later.
Normalizing Intervals
The input is now a rate but it is not yet on well defined boundaries in time. This is where normalization kicks in. Suppose you are looking at a counter every minute. What do you know? You know counter values at HH:MM:SS. You don't know if the counter incremented at a high rate during a small amount of time (1 second at 60 bytes per second) or during a long time at a small rate (60 seconds at 1 byte per second). Look at the picture above again, each HH:MM:SS will be somewhere in the white areas. This means that the rate you think you know isn't the real rate at all! In this example, you only know that you transfered 60 bytes in 60 seconds, somewhere between MM:SS and the next MM:SS. Its computed rate will be 1 byte per second during each interval of 60 seconds. Let me emphasize that: you do not know a real rate, only an approximation.
Now look at the next image, showing some measured intervals and rates. The samples are taken at 30 seconds past the minute, each colored area represents another measurement. There are four measured intervals, the last one has a rate of zero but it is known (i.e. the last update occurred at 04:30). One expected update, the one at 02:30, did not happen. SPC module can cope with this perfectly well if you let it. The update just happens at 03:30 and is valid from 01:30. The bottom part of the image is the result after normalization. It shows that each interval uses a bit of each input interval. The first interval is built from the blue interval (which started before 00:00) and the red interval (measured between 00:30 and 01:30). Only the blue part that falls inside the 00:00 to 01:00 interval is used, only the red part that falls inside the 00:00 to 01:00 interval is used. Similar for the other intervals. Notice that it are areas that are important here. A well defined part of the blue area is used (in this example exactly half) and a well defined part of the red area is used (dito). Both represent bytes transferred during an interval. In this example we use half of each interval thus we get half of the amount of bytes transferred. The new interval, the one created in the normalization process, has a surface that is exactly the sum of those two amounts. Its time is known, this is a fixed amount of time, the step size you specified for your database. Its rate is its area divided by this amount of time. If you think it isn't right to shift data around like this, think again. Look at the red interval. You know something has happened between 00:30 and 01:30. You know the amount of data transferred but you do not know when . It could be that all of it was transferred in the first half of that interval. It could also be that all of it was transferred in the last half of that interval. In both cases the real rate would be twice as high as you measured! It is perfectly reasonable to divide
System Internals
947
the transfer like we did. You still don't know if it is true or not. On the long term it doesn't make a difference, the data is transferred and we know about it. The rates are now normalized. It are these rates that statistics module works with. Notice that the second and fourth normalized rate (mixture of red and green, mixture of green and white) are lower than the green rate. This is important when you look at maximum rates seen. But as both the red and green rates are averages themselves, the mixture is as valid as its sources. Each normalized rate is valid during a fixed amount of time. Together these are called Primary Data Points (PDPs). Each PDP is valid during the step size. SPC module doesn't know nor care about the input you gave it. This concludes step 2. From now on, SPC module forgets all original input. Even if normalization is a no-op (if you made sure your timestamps are already on well defined boundaries) consolidation still applies.
Consolidating Intervals
Suppose you are going to present your data as an image. You want to see ten days of data in one graph. If each PDP is one minute wide, you need 10*24*60 PDPs (10 days of 24 hours of 60 minutes). 14400 PDPs is a lot, especially if your image is only going to be 360 pixels wide. There's one way to show your data and that is to take several PDPs together and display them as one pixel-column. In this case you need 40 PDPs at a time, for each of the 360 columns, to get a total of ten days. How to combine those 40 PDPs into one is called consolidation and it can be done in several ways: Average: Compute the average of each rate (of those 40) Minimum: Take the lowest rate seen (of those 40) Maximum: Take the highest rate seen (of those 40) Sum: Take the sum of those 40 rates First: Take the first rate seen (of those 40) Last: Take the last rate seen (of those 40) Which function you are going to use depends on your goal. Sometimes you would like to see averages, so you can use it to look at the amount of data transferred. Sometimes you want to see maxima, to spot periods of congestion, et cetera. Whichever function you use, it is going to take time to compute the results. 40 times 360 is not a lot but consider what's going to happen if you look at larger amounts of time (such as several years). It would mean you have to wait for the image to be generated. This is also covered by SPC module but it requires some planning ahead. In this example, you are going to use 40 PDPs at a time. Other examples would use other amounts of PDPs each time but you can know up front what those amounts are going to be. Instead of doing the calculations at use-time, SPC module can do the computations at monitoring time. Each time a series of 40 PDPs is known, it consolidates them and stores them as a Consolidated Data Point (CDP). It are these CPDs that are stored in the database. Even if no consolidation is required, you are going to "consolidate" one PDP into one CDP.
948
AggreGate Documentation
Month Jun 2012 Jul 2012 Aug 2012 Pros of this method:
Device can continue data aggregation even if connection to the server is not available for long time (however some protocols, such as AggreGate protocol, allow device-side buffering) Aggregated statistics is available inside device, e.g. for displaying on the device LCD or internal web interface Cons of this method: Implementation of data aggregation inside the device is quite complicated Aggregated statistics will occupy device-side storage space If many aggregation types are required (e.g. for charting), such as minutely/hourly/daily/weekly/monthly/yearly averages/minimums/maximums, the device must provide multiple aggregation tables for single counter Aggregation tables will fully be re-read from the server during any update, partial reading is not possible Aggregation data will be duplicated in the device and in the server database Charts won't be able to auto-switch between different aggregation types (e.g. from daily to monthly samples)
. If a relative
314
widget is valid for a certain context, it can use this context as its primary data source.
619
dashboard is valid for a certain context, it can be opened so that its elements take
Reports 241 . If a relative 242 report is valid for a certain context, it may take data from this context to fill in the template when report is being created. Groups
248
250 ,
Common Tables 260 . If a certain context is valid for a common table that is used as a custom property custom property will be added to this context.
this
System Internals
949
Models 303 . If a relative model is valid for a context, a dedicated copy of this model will be created and attached to this context in order to interact with it.
Configuring Validity
The validity is configured using two options: Validity Expression Validity Update Rules
Validity Expression
Validity Expression helps AggreGate Server to determine what contexts 863 a resource can work with. It is written using the built-in Expression Language 911 . When a new resource is created, or the validity expression itself is updated, AggreGate Server evaluates this expression for every context in the system. If the expression evaluates to true , the server considers that the resource "understands" the data of this context, and: For widgets
312
316
Example 1: The Validity Expression is often used to check the type 864 of context. This is very useful for creating widgets that work with certain types of Devices or system resources. For example, to make a widget 312 work with every SNMP (Simple Network Management Protocol) device in the system, set the Validity Expression to {.#type} == 'device.snmp'. This expression will resolve to TRUE when the type property for the context being checked (indicated by "." relative context path) equals device.snmp. Example 2: Dynamic groups 250 use Validity Expression for consolidating devices of a certain type. For example, to make a group containing all printer devices in the system, set the Validity Expression to startsWith({.#type}, 'device') && {.:genericProperties$type} == 'printer'. This expression will resolve to TRUE when the type property for the context being checked (indicated by "." relative context path) starts with device word and type field of genericProperties variable (that contains a user-selected type for a device) equals to printer. Validity Expression Resolution Environment Default Context
927 927 922
Environment Variables
Standard
931
variables only.
occurs
950
AggreGate Documentation
Target Expression that, if specified, points to a context those validity should be checked. If Target Expression is not specified (what is suitable in most cases), the system checks validity of context in that Event has occurred. Example 1: Assuming we want to make a Report 241 that is valid for all device contexts has Collector_ prefix. We may use the following Validity Expression:
677
those description
"{env/previous}
This Validity Expression uses aggregate() function to list all rows in visibleChildren table of every context. If path field in current row is equal to the path of context those validity is being checked (returned by dc() function), this context is deemed found among group members, and thus, valid. In this case aggregate() function will return 1 (and 0 otherwise). If we want our dashboard to be registered in context menu of devices right after we add them to test group, we need to add the following Validity Update Rule:
6.12 Plugins
Some functions of AggreGate Server are implemented using plugins. AggreGate Server supports several types of plugins for communicating with different Devices 113 , adding new contexts 863 to a server context tree, building custom reports, localizing and customizing textual and graphical resources etc.
NEW TERM: A Plugin is a computer program that interacts with a main application (a web browser or an
email program, for example) to provide a certain, usually very specific, function on-demand.
System Internals
951
All plugins are loaded by the server at startup. They are located in the /plugins subfolder of the AggreGate Server installation folder. To install new plugin, simply copy plugin archive into the corresponding subfolder of /plugins and restart AggreGate Server. When installing new version of existing plugin received from Tibbo, overwrite the old plugin archive with a new one.
Setting Levels
Every plugin has up to two levels of settings: Global Settings. These affect the default behaviour of plugins. Global settings may be edited only by users with sufficient permissions. User-level Settings . These affect the behaviour of a plugin only when its actions are related to a certain user account 108 . Many plugins have global settings only or no settings at all.
Administering Plugins
Two contexts are used to administer plugins: One is the general Drivers/Plugins Configuration 685 context, which serves as a container. The other is the Driver/ Plugin Configuration 686 context, which holds the configuration for one plugin. There are two types of plugin configuration containers: global container for global settings and user's personal container for storing plugins settings related to a certain user account 108 .
Enabling/Disabling Plugins
Individual plugins may be enabled or disabled using Active Plugins
74
6.13 Bindings
What's in a name? Bindings are called this way because they bind various data to each other. When you bind something in the real world (such as a package to the roof of a car) you actually tie it tightly. That's the core meaning here -- tying something tightly. With data bindings, you tie data tightly to other data. For example, you can have a textbox in a dialog which is grayed-out. You can't write anything in it. This textbox can have a checkbox next to it, saying something like "Enable this setting?". Once the checkbox is checked, the textbox magically becomes white (enabled) and you can write in it. This is done via data bindings -- the value of the checkbox (Enabled or Disabled) is bound to the state of the textbox (Enabled or Disabled). AggreGate data bindings let you do such nice interface tricks using widgets 312 - this is just one example of their power. Every binding consists of two parts:
reference = expression
If you're not sure what a reference 925 or an expression 911 is, you really should check out the previous two articles. Without a thorough understanding of references and expressions, bindings won't make much sense.
reference defines the binding target. This is where the result of the expression will be written to, once the binding is
processed. depending on the processing environment, reference may refer to a Data Table Interface component etc. See references 925 chapter for more info on references.
854
911
that defines the value to be written to the binding target when the binding
See the following chapters for more info on using bindings: Bindings in Data Tables Bindings in Widgets Bindings in Models
604 860
311
952
AggreGate Documentation
3. Context Function
context:function()
This type of target points to the function of a context . When a binding with such target is processed, that function is called. The binding expression should return a Data Table 854 that will be used as the function input.
4. Context Event
context:event@
This target type causes the binding to fire an event of type event in context . The binding expression should return a Data Table those value will be treated as event data 881 . This binding target will have effect only if the binding is running inside AggreGate Server (e.g. in a model 303 ). If the binding is running remotely (e.g. in a widget 312 running inside AggreGate Client), this target will generate a "local" event that will be received by the listeners inside the same AggreGate Client installation. This event will not be forwarded to the AggreGate Server and other clients.
System Internals
953
5. Context Action
action/context:action
This target starts interactive execution of action action from context context . Binding evaluation result is passed to the action as an input value. It should have Data Table 854 type. Action execution is not available inside widget bindings (outside of AggreGate Client).
604
Example: action/cardholders:import Starts cardholders import action (Cardholders module is a part of Time and Attendance and Access Control solutions), that is an action named import in context with path cardholders.
You can
6. Empty Target
If binding target is empty string, the binding will just discard value returned by Expression . However, such binding may still be usable, since expression will still be evaluated and it may have useful side effects (i.e. can perform function calls that do some stuff).
925
which
922
Default Context
927
315
for a widget.
317
table.
Environment Variables
Standard
931
variables only.
880 ,
If the binding was activated by an event environment: Variable Name context event level time acknowledgements enrichments Value Type String String Integer Date Data Table Data Table
Description Full path to the event's context. Name of the event. Event level
882 .
954
AggreGate Documentation
value
Data Table
Data Table
854
References
Binding expressions in context bindings may include references and their fields or properties.
925
322
variables
869 ,
functions
878 ,
More information about standard reference format and resolving algorithm may be found in the Standard References section.
926
922
Default Context
315
for a widget.
317
table.
Default Row
927
System Internals
955
Standard
931
variables only.
880 ,
If the binding was activated by an event environment: Variable Name context event level time acknowledgements enrichments value Value Type String String Integer Date Data Table Data Table Data Table
Description Full path to the event's context. Name of the event. Event level
882 .
Event timestamp. Event acknowledgements table Event enrichments table Data Table
854 883 . 883 .
References
Binding conditions may include the same types of references as binding expressions
954 .
Dashboard
If Dashboard Name and Dashboard Description parameters are specified, window will be located in a non-default dashboard 617 . Dashboards are used to group multiple windows together. If dashboard with a given name does not exist, it will be created.
Top, Left, Bottom, Any integer Right greater than 0 Top, Left, Bottom, Any integer Right greater than 0 N/A
618 ,
State and Side parameters are ignored, while Index parameter defines the zero-based
956
AggreGate Documentation
<form> <format> <![CDATA[ PARAMETERS_FORMAT ]]> </format> <expression> EXPRESSION_TO_PARAMETERIZE </expression> </form>
Parameters Format
PARAMETERS_FORMAT is the format 855 of the Data Table 854 that will be created and shown to the user in editable mode so he could change its fields. The values of these fields will be then converted to strings and inserted into EXPRESSION_TO_PARAMETERIZE. The data table constructed from PARAMETERS_FORMAT always contains just a single record. This table allows the user to interactively define parameter values which will then be used within EXPRESSION_TO_PARAMETERIZE. PARAMETERS_FORMAT is the Table Format 855 encoded to a string using "visible" characters. More information on encoding can be found in the appendix, under Encoding Data Tables 1306 . The minimum and maximum number of records specified by the Table Format are ignored, because there's just a single record. The PARAMETERS_FORMAT string is nested into a CDATA block. CDATA is an element of XML language which allows
System Internals
using normal XML markup characters ("<", ">" etc.) without escaping them. This is needed because the PARAMETERS_FORMAT string employs such characters. Here's an example of a PARAMETERS_FORMAT string:
957
860 .
<<bytype><B><D=Filter by Event Type>> <<type_impact><B><D= <<type_login><B><D= <<type_speed><B><D= <<type_oil><B><D= Show Impact Events>> Show Log On/Off/Auto Events>> Show Speed Events>> Show Oil Warn/Temp Over Events>> Show Maintenance Events>> Show Checklist Events>>
<startdate#enabled={bydate}> <enddate#enabled={bydate}> <username#enabled={byusername}> <userid#enabled={byuserid}> <machine#enabled={bymachine}> <type_impact#enabled={bytype}> <type_login#enabled={bytype}> <type_speed#enabled={bytype}> <type_oil#enabled={bytype}> <type_maintenance#enabled={bytype}> <type_checklist#enabled={bytype}>
958 >
AggreGate Documentation
This format defines many fields and some relations between them that are controlled by bindings ("<B=...>"). For example, the binding "username#enabled={byusername}" makes it so that a user can only fill in the "User Name" ("username") parameter if filtering by user names is enabled (i.e, the "byusername" field is set to TRUE). To learn more about what <B>, <D>, <S>, <I>, <D> etc, see Encoding Data Tables 1306 . When running a filter using this format, the user is prompted to enter parameters using the following dialog (screenshot made in AggreGate Client):
Expression To Parameterize
EXPRESSION_TO_PARAMETERIZE is just the text used to build a query 271 or an AggreGate Expression used by an event filter 206 or a report 241 . This text may contain two special constructs that depend on the values of parameters specified by fields of PARAMETERS_FORMAT. As EXPRESSION_TO_PARAMETERIZE contains XML tags (see below) it cannot be written inside the CDATA block like PARAMETERS_FORMAT. Therefore characters used by XML syntax must be escaped. For example, if & character must appear in the resulting expression, it must be written as & inside the EXPRESSION_TO_PARAMETERIZE.
CONDITIONAL PARAGRAPHS
A conditional paragraph defines a block of text that will be inserted into the parameterized expression only if the expression defined in its header is TRUE. This expression may contain references to various fields within PARAMETERS_FORMAT. Syntax:
<p
enabled="ENABLING_CONDITION_EXPRESSION">TEXT_OF_CONDITIONAL_PARAGRAPH</p>
ENABLING_CONDITION_EXPRESSION is an AggreGate expression 911 that may contain references to the cells of the Data Table built from PARAMETERS_FORMAT. Format of references is {FIELD_NAME} where FIELD_NAME is the name of the field defined by PARAMETERS_FORMAT. More information about references can be found here 925 . Example ENABLING_CONDITION_EXPRESSION:
System Internals
959
In this example, childInfo$phone refers to the "phone number" field within a user information record (You can learn more about this under Queries 271 .) ENABLING_CONDITION_EXPRESSION refers to the Boolean field showOnlyUsersWithPhones defined in PARAMETERS_FORMAT (for example, like this: " <<showOnlyUsersWithPhones><B><D=Show only users that have phone numbers>>"). If this field is set to FALSE by the user during parameterization process, the resulting parameterized expression will be "SELECT * FROM users.*:childInfo". If the field is set to TRUE, the resulting expression will be "SELECT * FROM users. *:childInfo WHERE childInfo$phone IS NOT NULL", i.e. TEXT_OF_CONDITIONAL_PARAGRAPH is included in the result. The conditional paragraph doesn't necessarily have to be at the end of the query/filter string. In the following example, it's in the middle of the expression (right before the ORDER BY clause):
SELECT * FROM users.*:childInfo <p enabled="{showOnlyUsersWithPhones}">WHERE childInfo$phone IS NOT NULL</p> ORDER BY childInfo$name DESC
EXPRESSIONS
As covered above, Expression_to_parameterize is just a string. It's not an AggreGate Expression in itself. However, it may include AggreGate Expressions. Such AggreGate expressions may contain references to the cells of the Data Table built from PARAMETERS_FORMAT. The expression is evaluated, and the result of the evaluation is converted to a string and inserted into the final parameterization result (the AggreGate query or filter expression which is the product of the parameterization process). Syntax:
<e>EXPRESSION</e>
This expression may contain references to the cells of Data Table built from PARAMETERS_FORMAT, exactly like ENABLING_CONDITION_EXPRESSION of conditional paragraph (see above). Example:
THE DIFFERENCE
1) Conditional paragraphs let you add/remove various pieces of your final expression based on a yes/no (Boolean) result of some expression. 2) Expressions let you insert specific values, deriving from their evaluation, into your final parameterization result.
960
AggreGate Documentation
1. Download the Java Communication API for your operating system from Sun Java website. At the time of this writing, it is available at http://java.sun.com/products/javacomm/. 2. Follow the instructions contained in driver distribution package. By default, the Java Virtual Machine that executes AggreGate Server is located in the /jre subdirectory of AggreGate Server installation.
Linux Note
If your server is installed on Linux machine, only ports that follow the standard naming conventions (/dev/ttyS*) will be visible in AggreGate. If your port has the name that doesn't satisfy this, create a symbolic link for it:
for extending AggreGate Server with new data processing and presentation
848
Driver vs Agent We're often asked what is the difference between Device Driver brief explanation:
129
848 ,
so here is the
Device Driver's Java code is a part of AggreGate Server, it is executed inside servers Java Virtual Machine (JVM). Agent is a standalone Java application that runs on a separate PC. Device Driver uses native protocol (usually based on IP or serial communications) to interact with devices, while Agents communicate with AggreGate Server using AggreGate Protocol 1303 .
961
variables
869 ;
854 ;
All communications with AggreGate Server are performed over IP, through a single SSL-secured TCP connection using AggreGate Communications Protocol 1303 .
962
AggreGate Documentation
108
Password for the user account Next, create a RemoteServerController. It will be used for managing server connection:
rlc.connect();
Connection will fail if: Server is not running; Server remote API is disabled; Address/port are not correct; Versions of AggreGate Server and API libraries are not compatible. At this point, your application has established TCP connection, completed SSL handshake and exchanged basic information 1304 with the AggreGate Server. To perform some valuable operations, you need to authorize on the server to obtain a certain permission level. This is carried out by calling login() method of the server controller:
rlc.login();
The call will fail if login/password specified in the RemoteServer constructor are incorrect.
ContextManager cm = rlc.getContextManager();
WORKING WITH CONTEXTS
All further essential AggreGate Server data management operations are performed by calling variable/function/eventrelated methods of different proxy contexts provided by proxy context manager. See Working With Contexts
986
for details.
Related Examples
Example Description This simple example illustrates how to connect to a AggreGate Server remotely using AggreGate Server API and get version of the server. This example shows how to: List available user accounts
108
/src/examples/api/ ManageDevices.java
Creating and destroying Device accounts Viewing Device status and awaiting while Device comes into a certain state Listing, reading and writing Device settings Executing Device operations Receiving and processing Device events
/src/examples/api/ ExecuteAction.java
This is an advanced example that shows how to execute a server action simulating input of a human operator.
892
by
963
Logger.getLogger("ag.core").info("A
or
message");
Logger.getLogger("ag.device.acme").error("Unexpected
error",
exception);
The Log4j library documentation offers comprehensive documentation for all aspects of logging configuration and implementation. The Log class provides pre-defined loggers for common AggreGate logging categories. Here is a usage example:
Log.CORE.info("A message");
or
Retrieve an instance of a relevant Context via ContextManager.get(). This could be a device context 677 (if reporting an issue from a driver), an administration context 652 (if reporting a system-wide issue, such as a plugin startup problem), or any other AggreGate Server context. Call Context.fireEvent() to generate a new context event. The event will be stored in the server database 80 and routed to subscribed listeners (e.g. Event Logs 791 ), making it accessible by system operators and administrators. The below example illustrates how to report an internal recoverable error from a device driver: Context deviceContext = getDeviceContext(); "Something happened inside the driver");
deviceContext.fireEvent(AbstractContext.E_INFO,
Driver Java class that implements DeviceDriver interface. Most implementations extend AbstractDeviceDriver class to avoid implementing irrelevant methods and preserve their default functionality. Driver plugin descriptor
971
that defines driver plugin properties and its place in AggreGate Server plugins hierarchy.
Device Server SDK bundle includes an open-source example of AggreGate Server Device Driver implementation called Demo Device Driver. It is located in examples.driver package and comprises three files: DemoDeviceDriver.java - source code of the driver plugin.xml - driver plugin descriptor build.xml - Ant build file with a single task building driver's JAR archive To try the driver:
964
AggreGate Documentation
for your driver, make a copy of demo driver's plugin.xml file and edit the following in
Change the last word in id attribute of the <plugin> tag to the ID of new plugin. The ID should contain only lowecase letters, digits and underscores. For example, if your desired plugin ID is xyz, set ID attribute to com. tibbo.linkserver.plugin.device.xyz. Change class attribute of <plugin> tag to full name of driver's java class. Enter driver description in the body <doc-text> tag. Change id attribute of the <extension> tag to the new plugin ID.
configuration settings
130 .
To add global and per-user settings, implement globalInit() and userInit() methods respectively. Their implementations should call createGlobalConfigContext() and createUserConfigContext() and provide VariableDefinition's of global and per-user settings. These settings will be exposed to system administrators, their values get persisted in the database. The variables must belong to "default" group, available as ContextUtils. GROUP_DEFAULT constant. To access setting values from any method of the plugin, retrieve global or per-user config contexts using getGlobalConfigContext() or getUserConfigContext(), then call Context.getVariable() to fetch instances of DataTable representing setting values.
965
AggreGate Server calls the setupDeviceContext() method of the driver when a new device account is created or the server is started. The method receives an instance of DeviceContext interface that is a Device Context 677 representing this device account. Call super.setupDeviceContext() to store its reference inside AbstractDeviceDriver. It will be available via getDeviceContext() method. The main purpose of setupDeviceContext() is adding device-specific communication settings. They are added in the form of context variables belonging to ContextUtils.GROUP_ACCESS variable group. System operator is prompted to edit these settings upon device account creation, and they can be later accessed using Edit Device Properties 677 action. Communication setting variables should be added to device context using Context.addVariableDefinition() method. The actual user-specified values can be later fetched from DeviceContext using Context.getVariable(), e.g. from DeviceDriver.startSynchronization() or DeviceDriver.connect().
DeviceDriver.disconnect() should correctly shutdown the link to hardware. It's called on server shutdown,
account removal, or when reconnection to the device is requested by the system. To force reconnection during driver testing/debugging, use Reset Device Driver
678
action.
readVariableDefinitions() that should examine available device settings (or communication properties if the device protocol does not support self-documentation) and create a VariableDefinition object for every available device setting. depending on the communication protocol, device settings may be also called I/O channels, tags , configuration items , etc. See variable definition 870 for details. readFunctionDefinitions() that should provide one FunctionDefinition object per every operation provided by the hardware. In different communication standards, device operations may be also called device methods, functions, actions, procedures, etc. See function definition 878 for details. readEventDefinitions() that provides one EventDefinition object for every type of event that can be generated by hardware. In some device protocols, events may be also called messages, notifications, etc. See event definition 880 for details. Definitions of variables, functions and events provided by the driver are added to the Device context and cached The driver may not be asked to re-read them until the next full synchronization even if the server was restarted. To force re-reading of device metadata during driver testing/debugging, use Reset Device Driver
678 115 .
action.
966
AggreGate Documentation
action.
Advanced Features
See javadocs of DeviceDriver, DeviceContext and parent interfaces for description of all their methods.
967
action.
If driver supports assets, AggreGate Server calls the following methods to obtain device metadata:
synchronization is skipped.
124
3. Driver's should shouldSynchronize() method is called. If it returns false (e.g. if device communication settings were not yet defined), synchronization is skipped. 4. If extended status
124
128
switches to Connecting.
5. If isUsesConnections() method of the driver returns true: 5.1. If isConnected() returns false or system core requests reconnection to the hardware (e.g. because previous sync has failed and Interrupt Synchronization On Error 124 is enabled), the system calls disconnect() (only if isConnected() is true) and then connect(). 5.2. If connect() doesn't throw an exception, device switches to Online connection status. 6. Certain synchronization tasks called "connect-only" tasks may end at this point. 7. If extended status
124
128
8. startSynchronization() is called. 9. If synchronization parameters request metadata reading (i.e. "full" synchronization is performed): 9.1. If driver supports groups (i.e. isUsesGroups() returns true) and groups has not yet been read from device (or driver was reset), readGroupDefinitions() method is called. 9.2. readVariableDefinitions() is called, new and changed definitions are added to the device context and
968
AggreGate Documentation
cached in database. If driver supports groups, readVariableDefinitions(List<GroupDefinition>) method is called instead. 9.3. If synchronization settings 115 of some newly added variable definitions have custom synchronization period, persetting synchronization tasks are scheduled. 9.4. readFunctionDefinitions() is called, new and changed definitions are added to the device context and cached. If driver supports groups, readFunctionDefinitions(List<GroupDefinition>) method is called instead. 9.5. Corresponding Call Function
903
9.6. readEventDefinitions() is called, new and changed definitions are added to the device context and cached. If driver supports groups, readEventDefinitions(List<GroupDefinition>) method is called instead. 9.7. If any of the above read methods throw a DisconnectionException, the error is logged, device switches to Offline connection status, driver's disconnect() method is called, and synchronization is terminated. 10. If extended status
124
128
11. All device settings (or settings specified in the synchronization parameters) are synchronized with the server. Synchronization algorithm depends on the setting's synchronization mode 115 . Server may call the following driver's methods at that point: 11.1. getVariableModificationTime() to get device-side modification timestamp for a setting. If modification timestamps are not supported by the hardware, this method should return null. In this case server will write setting value to the device if it was modified in the server cache and read it from the device otherwise. 11.2. readVariableValue() to read device-side value of a setting. 11.3. writeVariableValue() to write server-side value to the device. 11.4. updateVariableModificationTime() to store new modification timestamp in the device. 11.5. If any of the above methods throw a DisconnectionException, it is logged, device goes to Offline connection state, driver's disconnect() method is called, and synchronization is terminated. 11.6. If any of the above methods throw some other exception, it is logged, setting synchronization status Error, and synchronization is terminated if Interrupt Synchronization On Error 124 is enabled. 12. finishSynchronization() is called. 13. Device online and synchronization statuses are reevaluated.
117
is set to
AggreGate Server will process new value, save it to the history, and deliver to update listeners once asyncVariableUpdate() is called.
969
variable that contains global connection settings of the driver, i.e. at least port number to listen for incoming device connections. 2. globalStart() method of the driver should open a listening socket and start a separate thread that accepts and services incoming device connections. This method can access global configuration properties of the driver by getting global properties context via getGlobalConfigContext() and retrieving value of global configuration variable from this context. It's possible (hence not necessary) to create a class inherited from SocketServerThread (for normal sockets) or SslSocketServerThread (for SSL-secured sockets) and use this class as a listening socket thread. 3. The aforementioned server socket thread should be interrupted from globalStop() method of the driver. 4. The server socket thread should accept incoming connections and create a new thread (connection controller thread) to service each connection. For example, a non-abstract implementation of SocketServerThread or SslSocketServerThread should include createConnectionThread() method that creates an incoming connection controller thread each time a new device connects to the server. 5. Each device account should in most cases define some unique device ID (such as mobile device's IMEI code) and device password used to authenticate and authorize incoming device connections. A variable containing this information should be added to device account by implementation of setupDeviceContext() method. 6. The connection controller thread should first authenticate and authorize the device by using device's native protocol to retrieve the unique device ID, finding a device account that matches this ID, and checking that device password matches password specified in the device account settings. 7. Once the device is authenticated and matching server-side device account (context) is identified, the device controller thread should: 7.1. Get per-device instance of driver/plugin class by calling deviceContext.getDriver(). 7.2. Register current device controller inside the driver instance to establish temporary relationship between the device account/driver and current incoming connection operated by controller. 7.3. Call deviceContext.requestSynchronization() to order a normal synchronization sequence
967 .
8. All "classic" methods of the driver should perform device I/O through the instance of device controller registered by the incoming connection controller thread. However, incoming connections add several peculiarities to this process: 8.1. shouldSynchronize() method of the driver should return true if an incoming connection controller is currently registered within the driver instance and false otherwise. 8.2. connect() method of the driver should send some test commands to the device to make sure that the incoming connection is still alive. If the TCP/UDP connection is dead or device didn't reply, the connect method should throw an exception to prevent further synchronization. 8.3. disconnect() method of the driver should shutdown incoming connection controller and close its incoming connection if it's alive.
instead of new AggreGate Server plugins to solve simple data processing tasks.
Add new variables 869 , functions 878 , events may be implemented by custom code.
and actions
892
Start any asynchronous code (listening server sockets, threads, etc.) that interacts with existing or custom contexts by changing values of their variables, executing their functions, or generating events in them. Some examples of AggreGate Server plugins: Asset Management plugin that creates a number of common tables associates them with the hardware devices
260
970
AggreGate Documentation
Syslog Server plugin that receives messages from the servers via network and converts them to AggreGate events for storage and future processing Industrial I/O plugin that generates widgets for monitoring status of programmable controllers Device Server SDK bundle includes an open-source example of AggreGate Server Plugin implementation called Demo Plugin . It is located in examples.plugin package and comprises three files: DemoServerPlugin.java - source code of the plugin plugin.xml - plugin descriptor build.xml - Ant build file with a single task building plugin's JAR archive To try the plugin:
Run build.xml using Ant to build demo.jar Copy demo.jar to %AggreGate Server Installation Folder/plugins/context when
AggreGate Server is not running
that defines plugin properties and its place in AggreGate Server's plugin hierarchy.
These components must be packed in the Java Archive (JAR). Plugin descriptor (plugin.xml) must be located in the root folder of the archive.
GLOBAL CONFIGURATION
Certain plugins may have global configuration settings. To add global implement globalInit() method. Its implementations should call createGlobalConfigContext () and provide VariableDefinition's of global settings. These settings will be exposed to system administrators, their values get persisted in the database. To access setting values from any method of the plugin, retrieve global config context using getGlobalConfigContext(), then call Context.getVariable() to fetch instances of DataTable representing setting values.
ContextPlugin interface provides several groups of methods to attach some new elements to the AggreGate Server
context tree 863 . Every group has two methods: one "startup" method called at server startup or context creation and one "shutdown" method called at server shutdown or context destruction. 1. Plugin initialization/deininialization When a new context plugin is created, server calls its initialize() method that may contain some generic initialization code. When the plugin going to be destroyed, server calls its deinitialize() method. 2. Context-based setup Every time when new context is created or re-created on server startup, server calls install(Context method of the plugin. Its implementation may:
context)
971
Please avoid accessing other server contexts from the install(Context context) method. Since server context tree creation is concurrent, certain server contexts may be available at the time of debugging and become unavailable in production environment, causing unpredictable behaviour. To access the whole context tree, add your code to install(ContextManager launch() methods. 3. Context tree-based setup The install(ContextManager contextManager) method is called once right after server context tree finishes loading and all contexts were created. Its implementation may retrieve certain server contexts using ContextManager.get() method and add variable/function/event/action definitions and/or event listeners to them. 4. Plugin launch
contextManager) or
launch() method of the plugin is called in the very end of server startup, when all server contexts and facilities are up
and running. It should be implemented only if some code fails to work properly from any of the methods described above.
for your plugin, make a copy of demo plugin's plugin.xml file and edit the following in
Change the last word in id attribute of the <plugin> tag to the ID of new plugin. The ID should contain only lowecase letters, digits and underscores. For example, if your desired plugin ID is xyz, set ID attribute to com. tibbo.linkserver.plugin.context.xyz. Change class attribute of <plugin> tag to full name of plugin's java class. Enter plugin description in the body <doc-text> tag. Change id attribute of the <extension> tag to the new plugin ID.
<?xml version="1.0" ?> <!DOCTYPE plugin PUBLIC "-//JPF//Java Plug-in Manifest 0.4" "http://jpf.sourceforge.net/plugin_0_4.dtd"> <plugin id="com.tibbo.linkserver.plugin.context.access-control" version="0.0.1" class="com.tibbo.links <doc> <doc-text>Access Control</doc-text> </doc> <requires> <import plugin-id="com.tibbo.aggregate.common.plugin.extensions"/> <import plugin-id="com.tibbo.linkserver.plugin.context.cardholders"/> </requires> <runtime> <library id="tibbo" path="/" type="code"> <export prefix="*"/> </library> </runtime>
972
AggreGate Documentation
<extension </plugin>
plugin-id="com.tibbo.aggregate.common.plugin.extensions"
point-id="context"
id="access-contr
Java-based Agents are ideal for connecting PC-based equipment to AggreGate for monitoring and management. Some examples of devices that can run PC-based Agent: Vending Machines Self Service Kiosks ATMs Remote Data Collection Stations etc. Device Server SDK bundle includes an open-source example of Java-based Agent. It is a runnable Java class DemoAgent located in examples.agent package. To try the demo agent, change server address/port/login/password in the constructor of RemoteServer class run DemoAgent class. It should connect to the server and auto-register a new Device account 113 .
973
961 ,
However, Agent class uses password field as the password for the Agent's server-side Device account doesn't match the password of Agent owner's user account.
It
If Agent account with the name specified in Agent class constructor already exists and passwords of Agent account and Agent application do not match, Agent won't be able to log in to the server. 2. Create an instance of Agent and specify name of Agent's Device account
113
in the constructor.
3. Get an instance of Context using Agent.getContext() and add definitions/implementations of variables, functions, and events using addVariableDefinition(), addFunctionDefinition() and addEventDefinition() methods. 4. Call Agent.connect() to make your Agent connect to the AggreGate Server and authenticate/authorize. This call may fail for many reasons, including server unavailability, wrong server address/port, missing or disabled server-side Agent driver, incompatible Java libraries versions, missing user account, and incorrect Agent's device account password. 5. Start periodically calling Agent.run() method. It will server a single server command and return, so it should be basically called from a separate thread. At this point, your custom VariableGetter, VariableSetter and FunctionImplementation will be called. If run() method throws a DisconnectionException, server communication has failed for some reason and connection should be re-established. 6. Once Agent.getContext().isSynchronized() method will return true, your application may start generating Agent events using Agent.getContext().fireEvent() method. 7. To disconnect from the server and stop the Agent, call Agent.disconnect(). If some events are generated when Agent is not connected to the server or not yet synchronized, these events should be stored locally (in memory or some persistent storage) and sent to AggreGate Server upon first opportunity.
agent.getContext().fireEvent(AbstractContext.E_UPDATED,
("temperature",
newTemperatureValue);
Server-Initiated Disconnections
In certain cases (e.g. if server-side agent device account settings were changed) the server may forcibly close TCP connection with Agent. The latter should be able to detect such situation and reconnect to the server again.
Event Confirmation
The AgentContext class defines an eventConfirmed event that is generated each time an AggreGate Server has confirmed an Agent-generated event successful delivery and processing by calling Agent's confirmEvent() 853 function. It's possible to add a listener for eventConfirmed event and react to event delivery confirmations, e.g. by removing delivered Agent events from Agent's internal database.
974
AggreGate Documentation
An Application Programming Interface (API) is an interface that a program or library provides for other computer programs, to let them make requests to it.
.NET Compact API is not available for direct download on AggreGate website. Please contact Tibbo to obtain . NET Compact API package.
variables
869 ;
RemoteLinkServer
RemoteLinkServerContro This class is used to establish and control connection with the AggreGate Server. It ller provides access to a ContextManager interface which, in turns, lets you access the
server's context tree.
ContextManager
Interface that provides access to the context tree. An instance of the class implementing this interface may be retrieved from the RemoteLinkServerController through the getContextManager() method. Interface letting you work with a single context. Instances of classes implementing this interface are returned by different methods of ContextManager. Implementation of a Data Table 854 . It provides access to the format and records of the table. Instances of this class are returned by getVariable() and
Context DataTable
975
Class implementing format 856 of a single Data Table field. Defines name, type and other parameters of the field, including validators, selection values etc.
Example: creating a AggreGate Server client object in C#: String webServiceAddress = "https://localhost:8443/ws/services/ServerWebService"; String userName = "admin"; String userPassword = "admin"; LinkServerClient lsc = new LinkServerClient(userName, userPassword, webServiceAddress);
To access the Web Service via HTTPS, it is necessary to set up a certificate policy first. For example (in C#): System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy { public TrustAllCertificatePolicy() { } public bool CheckValidationResult(ServicePoint sp, X509Certificate cert, WebRequest req, int { return true; } }
977
getXML, setXML, callXML, setByStringArray and callByStringArray methods are comprehensively described in Web Service 976 article. In most cases it is more convenient to use get, set and call methods that represent Data Tables as objects of type DataTable that is defined in AggreGate namespace. Here are signatures of all methods provided by LinkServerClient:
976
AggreGate Documentation
public String getXML(String context, String variable) public void setXML(String context, String variable, String value) public String callXML(String context, String variable, String parameters)
public void setByStringArray(String context, String variable, String[] values) public DataTable callByStringArray(String context, String variable, String[] values)
public DataTable get(String context, String variable) public void set(String context, String variable, DataTable value) public DataTable call(String context, String variable, DataTable parameters)
AggreGate Server supports Web a Services technology for integration with third-party ERP, CRM an other software systems. It supports the SOAP protocol, used for sending XML-encoded data secure HTTP connections.
Web Services is a set of protocols for generic data exchange between different systems.
AggreGate Servers Web Service allows total control of the server. It is possible to stop/restart the server, manage users, configure and control Devices, view Device events and their status etc. Technically, the Web Service provides methods for getting and setting values of context 863 variables 869 and calling context functions 878 . Real-time listening to context events 880 is not supported, but it's possible to access event history.
server_host_name is the IP address or host name of the server. It may match one of the aliases defined in the host
name aliases list
60
server_ssl_port is the port number on which AggreGate Server accepts incoming secure HTTP (HTTPS)
connections. Default value is 8443. This port is defined by Port number to listen for HTTPS (secure) connections Global Configuration Setting. value is 8080. This port is defined by Port number to listen for HTTP (non-secure) connections Setting.
60
server_non_ssl_port is the port number on that AggreGate Server accepts incoming HTTP connections. Default
Global Configuration
Non-secure HTTP access to the Web Service is disabled by default. It can be enabled by turning on Enable non-secure access to web applications 60 Global Configuration Setting.
977
Example: If AggreGate Server is running on the local host and all settings are set to their defaults, you can access the Web Service using the following URL:
https://localhost:8443/ws/services/ServerWebService
variables
869 .
Return value: this function returns a String that is a Data Table 854 containing the value of requested variable. This value is encoded in XML format. See Data Table XML Encoding 1312 for more information. The resulting XML string is encoded once again according to the URL encoding standard specified by RFC 1738 (Uniform Resource Locators). This is to ensure that the resulting string doesn't contain characters unsafe for SOAP protocol.
2. SETXML
The setXML function allows to change the value for a AggreGate Server context Function parameters: Name username password context variable value Type String String String String String Description Name of AggreGate Server user account 108 that will be used to log in to the server. The Set variable operation will be executed with the this user's permissions 931 . Password for the user account. Path of context to set variable in. Name of variable. New value of the variable encoded in XML format. See Data Table XML Encoding 1312 for more information. The resulting XML document is encoded once again according to URL encoding standard specified by RFC 1738 (Uniform Resource Locators). This is to ensure that the resulting string doesn't contain characters unsafe for SOAP protocol.
863
variable
869 .
Return value: none. In most cases, the value argument passed to this function is a Data Table that was previously retrieved by the getXML function.
3. CALLXML
The callXML function is used to execute AggreGate Server context an XML-encoded Data Table. Function parameters: Name Type Description
863
functions
878 ,
978
AggreGate Documentation
Name of AggreGate Server user account 108 that will be used to log in to the server. The Call function operation will be executed with this user's permissions 931 . Password for the user account. Path of context from which the function is to be called. Name of function. Data Table containing function input parameters. This table is encoded in XML format. See Data Table XML Encoding 1312 for more information. The resulting XML document is encoded once again according to URL encoding standard specified by RFC 1738 (Uniform Resource Locators). This is to ensure that the resulting string doesn't contain characters unsafe for SOAP protocol.
854
Return value: this Web Service function returns a String that is a Data Table value is encoded just like the value input parameter above.
variables
869 .
Cells of the
2. CALLBYSTRINGARRAY
The callByStringArray function allows to execute AggreGate Server context as a String array. Function parameters: Name username password context function parameter s Type String String String String String[] Description Name of AggreGate Server user account 108 that will be used to log in to the server. The Call function operation will be executed with this user's permissions 931 . Password for the user account. Path of context to call function from. Name of function. Array of Strings that are used to fill Data Table representing function input value as described here 862 .
863
function
878
Return value: this Web Service function returns a String that is a Data Table 854 returned by the function executed. This value is encoded in XML format. See Data Table XML Encoding 1312 for more information. The resulting XML string is encoded once again according to the URL encoding standard specified by RFC 1738 (Uniform Resource Locators). This is to ensure that the resulting string doesn't contain characters unsafe for SOAP protocol.
3. ADDRECORDBYSTRINGSRRAY
The addRecordByStringSrray function is used to new record(s) to a tabular context Data Table record are passed to it as an array of String arguments.
863
variable
869 .
Fields of a new
Technically, the function reads variable value, adds new record to it, and writes new value back to the context. Function parameters:
979
Description Name of AggreGate Server user account 108 that will be used to log in to the server. The Get variable/Set variable operations will be executed with this user's permissions 931 . Password for the user account. Path of context where the variable is located. Name of variable. An array of Strings, used to fill new Data Table record with the values as described here
862 .
4. SETVARIABLEFIELD
The setVariableField function is used to change a single cell (specified by field name and row number) of context variable 869 . The new cell value is passed as a String argument. Technically, the function reads variable value, changes a single cell of this value (that is a Data Table (sets) new value back to the context. Function parameters: Name username password context variable field row value Type String String String String String int String Description Name of AggreGate Server user account 108 that will be used to log in to the server. The Get variable/Set variable operations will be executed with this user's permissions 931 . Password for the user account. Path of context where the variable is located. Name of variable. Name of field. Row number. New cell value in the String form.
854 ), 863
and writes
<?php // Creating SOAP client for the server running on localhost $client = new SoapClient("https://localhost:8443/ws/?wsdl"); $username = "admin";
980
AggreGate Documentation
$password = "admin"; $context = "users.admin"; $variable = "childInfo"; try { // Calling getXML Web Service function and decoding its output by URL decoder $childInfoXML = urldecode($client->getXML($username, $password, $context, $variable)); } catch { (SoapFault $fault) occurred while calling remote function: ".$fault->faultcode."
(".$fault->faultstring."
(is_soap_fault($childInfoXML)) echo "Error exit(); occurred while calling remote function: ".$fault->faultcode."
(".$fault->faultstring."
} // Creating DOM document from XML $xml = new DomDocument; $xml->loadXML( $childInfoXML ); // Loading XSLT transformation $xsl = new DomDocument; $xsl->load( 'resources/xslt/dataTable.xslt' // Creating XSLT processor $proc = new xsltprocessor; $proc->importStyleSheet( $xsl
);
);
// Processing out XML document and and showing the output echo $proc->transformToXML( $xml ); ?>
via
This techniques
device drivers
610 )
963 ,
server scripts
628 )
961 ,
Agents
972 )
981
getVariable() method returns a clone of variable value's DataTable even in the case of server-side code (plugins, drivers). To apply new value of the variable to the context, call setVariable() after making
modifications to the data table. Modifications of DataTable returned by getVariable() won't affect the context until setVariable() call is made.
Provides access to its properties, format, getter and setter. Provides access to its properties, input/output formats and
878 .
880 .
982
AggreGate Documentation
Implementations of this interface should provide custom variable value reading logic. Implementations of this interface should provide custom variable value writing logic. Implementations of this interface should provide custom function execution logic, i.e. processing of input and generation of output. A base interface for context event listeners. The listener's handle() method is called when event is fired in the context to that the listener was added. Default implementation of ContextEventListener. Generally, most listeners should extend this class. Implementation of a Data Table 854 . It provides access to the format and records of the table. Instances of this class are returned by getVariable() and callFunction() methods of Context. Implementation of a single Data Table record. Class implementing the format fields.
855
Class implementing the format 856 of a single Data Table field. Defines name, type and other parameters of the field, including validators, selection values etc. The instance of this class is passed to many context operations. It incorporates permissions of the calling side. A special type of caller controller that suppress any permission checking, giving full access to the calling side. Should be used for system calls. A list of permissions (Permission objects) what must be satisfied when accessing a certain server resource. This class provides a set of static methods for getting Permissions to assign for newly added variable/function/event definitions.
or Web Desktop
632
983
o Values of variables, events data, or functions input/output are always opened in the Data Table Editor component. Column, row and cell tooltips in the Data Table Editor show field names and types; o View Variable Information and View Event Definition operations (see above) provide comprehensive information about all field propeties, including their defaults, selection values, etc.
alertContextPath = ContextUtils.alertContextPath("admin",
"myAlert");
Get/set variable, call function, of add event listeners using getVariable(), setVariable(), callFunction(), addEventListner() methods. To construct new value of variable of function input value from scratch, use the following code: new DataTable (VariableDefinition.getFormat()) or new DataTable(FunctionDefinition.getInputFormat()) . When processing a DataTable, you can get a certain DataRecord using getRecord() method. The shortcut for getting first record is rec() method. DataRecord provides generic getValue() and setValue() methods for reading/writing field values. However, there is a set of methods for getting field value casted to a certain type: getInt(), getString(), getBoolean (), etc. To refer named server variables/functions/events/actions and their fields use constants defined in members of com.tibbo.aggregate.common.server package. Example: String
7.4.4 Logging
AggreGate libraries report their activities via logging 74 . To enable and configure logging in the Java application that uses AggreGate Server API 961 or Agent SDK 960 , call Log.start() method and pass the URL of logging configuration file 74 to it. You can copy this file from AggreGate Server or AggreGate Client installation directory. Edit this file by changing logging level in certain categories 76 for debugging purposes. It's also possible to use logging in server or widget scripts. Logging produced by server scripts will be appended to server log file (server.log). Widget script logging will be appended to AggreGate Client log file (client.log) or java applet console (if using Web Desktop 632 ). By default, all categories in the logging configuration files are set up to pass messages at INFO and higher levels. Thus, to write a certain string to a log file, you can use the following code: Logger.getLogger("ag.mycategory").info("Hello world!");
of Data Tables (defining format, adding records, setting cell values, etc.)
985
Manipulation
of Data Tables (iterating records, accessing cell values, cloning tables, etc.)
984
AggreGate Documentation
7.4.5.1 Creation
Data tables are represented by instances of DataTable class. To create a DataTable it's necessary to define its format by creating an instance of TableFormat class: TableFormat tf = new TableFormat(); // For multi-row tables TableFormat tf = new TableFormat(1, 1); // For single-row tables
ADDING FIELDS
After that, it's necessary to add field descriptors to a table format. Each field is represented by a FieldFormat instance. There are many ways to create a field format descriptor:
FieldFormat ff = FieldFormat.create("fieldName", FieldFormat.STRING_FIELD); // The simplest method to crea ff.setDescription("Field Description"); ff.setDefault("Default Value"); ff.setNullable(true);
FieldFormat ff = FieldFormat.create("fieldName", FieldFormat.STRING_FIELD, "Field Description", "Default Va FieldFormat ff = FieldFormat.create("<fieldName><S><D=Field Description><A=Default value><F=N>"); // Same
// After field format is created, we can fine-tune it ff.addSelectionValue("v1", "First option"); ff.addSelectionValue("v2", "Second option"); ff.addValidator(new LimitsValidator(10, 100)); ff.setKeyField(true); //Now we can add our field descriptor to field format: TableFormat tf = new TableFormat(); tf.addField(ff); It's also possible to avoid explicit creation of FieldFormat and pass field options to TableFormat.addField(): TableFormat tf = new TableFormat(); tf.addField("fieldName", FieldFormat.STRING_FIELD, "Field Description", "Default Value", true);
TableKeyFieldsValidator());
CREATING TABLE
When our table format is ready, we can base a table on it: TableFormat tf = new TableFormat(1, 1, FieldFormat.create("fieldName", FieldFormat.STRING_FIELD));
Once TableFormat instance has been used to create a table, it becomes immutable and cannot be modified. To modify format of an existing table: Clone format of the table: TableFormat cloned = table.getFormat().clone(); The cloned format will be mutable. Make necessary modifications to it. Create a new table using cloned format: DataTable newTable = new DataTable(cloned); Copy
861
data from old table to a new one using static helper methods of DataTableReplication class:
DataTableReplication.copy(table,
newTable);
985
ADDING RECORDS
There are several ways to create a record. First method - setting field values explicitly: DataRecord rec = table.addRecord(); rec.setValue("firstField", "Value of first field"); // First field is a string-type field rec.setValue("secondField", true); // First field is a boolean-type field rec.setValue("thirdField", 12345); // First field is an integer-type field Second method - passing field values to addRecord(): DataRecord rec = table.addRecord("Value of first field", true, 12345); Third method - adding values one by one: DataRecord rec = table.addRecord(); rec.addString("Value of first field"); rec.addBoolean(true); rec.addInt(12345); // Explicit type specification is not necessary DataRecord rec = table.addRecord(); rec.addValue("Value of first field"); rec.addValue(true); rec.addValue(12345);
7.4.5.2 Manipulation
It possible to add/remove records from existing table and modify cell values. However, it's not possible to change format of existing table. To access cell data, obtain a DataRecord first: DataRecord rec = table.getRecord(5); // Records are zero-based, so this will return 6th record DataRecord rec = table.rec(); // This returns first record (with zero index) Now you can use methods that return proper value types to get cell values: String Boolean Integer s1 b1 i1 = = = rec.getString("firstField"); rec.getBoolean("secondField"); rec.getInt("thirdField");
ITERATING RECORDS
It's very often necessary to process all table's records. DataTable implements Iterable interface making this very easy: for(DataRecord rec : table) { // Process the record }
986
AggreGate Documentation
DataRecord
clonedRecord
table.rec().clone();
SORTING TABLES
To sort the table according to values of field field1, use this code: table.sort("field1", true); // Ascending sort order
969 , the context manager is passed as a parameter to install(ContextManager cm) and deinstall(ContextManager cm) methods. If inside install(ServerContext context) and deinstall (ServerContext context) methods, use ServerContext.getContextManager().
When developing a Java-based Agent 972 , remember that your Agent has just a single context. However, its context manager can be accessed via Agent.getContext().getContextManager(). When writing a server script 628 , call ScriptExecutionEnvironment.getScriptContext(). getContextManager() to access server context manager. When writing a widget script
610 , call WidgetScriptExecutionEnvironment.getEngine(). getServerContextManager() to access remote server's context manager. Alternatively, you can call WidgetScriptExecutionEnvironment.getComponentContext("componentName"). getContextManager() to access context manager of widget components' context tree.
for details.
863 .
987
Context
deviceContext
contextManager.get("users.admin.devices.device1");
The get() method will return null if requested context does not exist or is no available with current permissions. Calls to ContextManager.get() and ContextManager.getRoot() will return instances of Context interface: Context rootContext = contextManager.getRoot();
Constants defined in Contexts class and static methods of ContextUtils class provide convenient ways to construct paths of different server contexts, such as Alert or Device contexts. Example: Context
name) to
group) - this method will return the list of variables belonging to the group) - this method will return the list
getVariableDefinitions(CallerController caller, String of variables belonging to the certain group and accessible by the caller List<VariableDefinition> variables =
context.getVariableDefinitions(ContextUtils.GROUP_REMOTE);
//
Finding
To retrieve a single variable definition by its name call getVariableDefinition(String name) method. The method getVariableDefinition(String name, CallerController caller) will return a definition or null if variable is not accessible by caller .
988
AggreGate Documentation
The Context interface has two primary methods for manipulating variable values:
getVariable() setVariable()
This methods allow to read and write context variable values respectively.
READING VARIABLES
The getVariable() method reads variable value and returns a DataTable representing this value. It accepts one or two arguments: name of variable to read and optional instance of CallerController that incorporates permissions of calling side (see Dealing with Access Permissions 997 for details). Once the variable value table is obtained, you can access its data. See Manipulating Data Tables Here is an example of how to read variable value: DataTable variableValue = context.getVariable("tabularVariable");
985
for details.
WRITING VARIABLES
There are two primary ways to set a variable: By supplying a pre-built DataTable object. This object can be programmatically created from scratch or obtained via getVariable() call and modified. By supplying individual cell values. Example 1 - setting variable value using a pre-built data table: DataTable variableValue = new DataTable(context.getVariableDefinition("tabularVariable").getFormat()); // // // Adding Adding Setting a record another one variable value //
Example 2 - modifying previous variable value: DataTable variableValue = context.getVariable("tabularVariable"); // // // Adding Adding Setting a record another one variable value
Example 3 - setting variable value using a list of cell values: context.setVariable("tabularVariable", "str1", 111); // Supplying cell values for the first record of new
If you want to change just a single cell or record of variable value, it's not enough to read its value and modify the obtained DataTable. It's necessary to write modified value back to the source context by calling setVariable(). Simply speaking, any modification of variable requires setVariable() call.
By calling ServerContextUtils.getVariableHistory() static Java method. This way is slightly faster than previous one, but it will work inside server JVM only (e.g. in drivers/plugins).
989
DataTable
history
utilsContext.callFunction(UtilitiesContextConstants.F_VARIABLE_HISTORY,
getCallerControl
public static Map<Date, DataTable> getVariableHistory(CallerController caller, String context, String vari throws DaoException, ContextException, DataTableException It returns the map of timestamps indicating time when values were saved and the values themselves.
group) - this method will return the list of functions belonging to the group) - this method will return the list
getFunctionDefinitions(CallerController caller, String of functions belonging to the certain group and accessible by the caller List<FunctionDefinition> functions =
context.getFunctionDefinitions(ContextUtils.GROUP_REMOTE);
//
Finding
To retrieve a single function definition by its name call getFunctionDefinition(String name) method. The method getFunctionDefinition(String name, CallerController caller) will return a definition or null if function is not accessible by caller .
Executing Functions
To call a function, use Context.callFunction() method. It accepts the following arguments: name of function to call, optional instance of CallerController that incorporates permissions of calling side (see Dealing with Access Permissions 997 for details), and optional function parameters. There are two ways to specify function input parameters: By supplying a pre-built DataTable object. This object can be programmatically created from scratch using format obtainable via FunctionDefinition.getInputFormat(). By supplying individual cell values of function input data table. The callFunction() method returns a DataTable representing function output. Example 1 - calling function by supplying a pre-built data table: DataTable input = new DataTable(context.getFunctionDefinition("sendSms").getInputFormat());
input.addRecord().addString("+12345678900").addInt("First message"); // Adding a record input.addRecord().addString("+98765432100").addInt("Second message"); // Adding another one DataTable output = context.callFunction("sendSms", input); // Calling function
990
AggreGate Documentation
group) - this method will return the list of events belonging to the certain group) - this method will return the list of
getEventDefinitions(CallerController caller, String events belonging to the certain group and accessible by the caller List<EventDefinition> events =
context.getEventDefinitions(ContextUtils.GROUP_REMOTE);
//
Finding
all
even
To retrieve a single event definition by its name call getEventDefinition(String name) method. The method getEventDefinition(String name, CallerController caller) will return a definition or null if event is not accessible by caller .
Firing Events
Once a certain system component (e.g. a device driver) detects that something has happened, it may fire a context event. The event may be fired asynchronously from any thread. Note, that there is no generic way to fire any event remotely (from AggreGate Client or when using AggreGate Server API). To fire an event, call Context.fireEvent() method. This method accepts the following parameters: Event name Event level Event parameters (in form of pre-built DataTable or list of its cell values) Example 1 - firing event by supplying event DataTable: DataTable eventData = new DataTable(context.getEventDefinition("myEvent").getFormat()); // Adding a record // Creating empty
eventData);
Example 2: firing event by supplying event table cell value: context.fireEvent("randomValue", EventLevel.INFO, new Float(Math.random() * 1000000));
Subscribing To Events
Server modules may subscribe to context events in order to receive and process their instances. In most cases, this functionality is required when implementing custom server plugins 950 . To subscribe to an event: Create an instance of class implementing ContextEventListener interface Pass this instance to Context.addEventListener() method
ContextEventListener interface has a lot of methods, and in most cases it's more reasonable to inherit your event
listener from an existing implementation: If writing server-side code (e.g. a plugin), inherit your event listener from ServerEventListener to ensure its correct permission level. In other cases, use DefaultContextEventListener as a base.
991
Using DefaultContextEventListener from code running inside the server JVM will lead to no events being received. This happens because default listener does not incorporate proper permissions.
Processing Events
Once you've subscribed to an event by adding a listener, the system will call listener's handle() method each time when an event occurs. Thus, all processing logic should be added to the implementation of this method: DefaultContextEventListener listener = new DefaultContextEventListener() { @Override public void handle(Event event) throws EventHandlingException { // Handling event here int level = event.getLevel(); List<Acknowledgement> acknowledgements = event.getAcknowledgements(); // Accessing event data DataTable eventData = event.getData(); } }; context.addEventListener("eventName", listener);
context. This method will work both locally (inside server drivers/plugins)
By calling Server.getDaoFactory().getEventDao().getEvents() Java method. This way is slightly faster than previous one, but it will work inside server JVM only (e.g. in drivers/plugins).
eventsContext.callFunction(EventsContextConstants.F_GET,
getCallerController(),
con.ge
public List<Event> getEvents(CallerController caller, EntityList eventList, EventsFilter filter, Date from Criterion... additionalCriteria) throws DaoException This method accept list of event types to load, pre-filter (additionalCriteria) and post-filter (filter), start/end dates of loaded events occurrence period, maximum number of events to load, and sort options. fromDate, toDate and maxResults parameters can be set to null to disable time range and count limit. It returns the list of Event objects representing historical events. Usage example: EntityList List<Event> events events = = new EntityList("users.admin.devices.my_device", "my_device_event"); entities, null, null, null,
Server.getDaoFactory().getEventDao().getEvents(caller,
992
AggreGate Documentation
for (Event ev : events) { Date eventTime = ev.getCreationtime(); DataTable eventData = ev.getData(); // Processing }
FieldFormat.STRING_FIELD);
Contex
Java-based Agents should add variables after Agent object creation via Agent.getContext(). addVariableDefinition(). Finally, scripts (both server and widget scripts) should not normally add any variables. For server-side variables, it's might be also necessary to specify read/write permission level // Setting permission level vd.setPermissions(ServerPermissionChecker.getManagerPermissions());
997 :
993
Device setting variables provided by a device driver 129 , along with Agent variables, must belong to a group remote. I be grouped into tabs, append tab description to a group name using "|" as a separator, e.g. remote|Power Managem It's also possible to use nested groups, e.g. remote|Power Management Settings|Auto Power-off. Variable group is specified by calling VariableDefinition.setGroup(). You can use the following syntax: vd.setGroup(ContextUtils.createGroup(ContextUtils.GROUP_REMOTE, "Power Management Settings",
"Auto
Manually added variables (except for device setting variables) should also have a non-null getter implementing VariableGetter interface. The purpose of getter is providing custom variable reading code. Writable variables should also have a non-null setter implementing VariableSetter interface. The setter should somehow store new variable value modified by system operators or different server facilities. Format of data table returned by variable getter must match format contained in its definition. Failure to follow this rule may result in data loss since the system will try convert the data table to definition-provided format preserving as much data as it can.
public DataTable getVvariable(VariableDefinition def, CallerController caller, RequestController request) throws ContextException
The variable is the name of variable being read. If a method with such a signature is found it will be called. This method must return a DataTable representing value of the variable. 4. If a "getter method" was not found, existence of VariableGetter is checked by calling VariableDefinition. getGetter(). If VariableGetter is defined (not null), VariableGetter.get() method is called. The getter must return a DataTable representing value of the variable. 5. If variable getter is not defined (i.e. VariableDefinition.getGetter() returns null), the AbstractContext calls getVariableImpl() method. This method may be overridden in the subclasses of AbstractContext. If the overriding implementation "understands" the variable (i.e. "knows" its name), it should return a DataTable representing value of the variable. In other cases, the getVariableImpl() method should return null. 6. If getVariableImpl() method has returned null, the AbstractContext calls executeDefaultGetter() method. The default getter returns value of the variable that was stored in the database (for server-side code) or cached in memory (for all other cases). 7. If variable value was not previously cached, executeDefaultGetter() method checks whether default value of the variable is defined (non-null) by calling VariableDefinition.getDefaultValue(). This value should be set via VariableDefinition.setDefaultValue(DataTable value) earlier. 8. And finally, if default value is not defined in the VariableDefinition, the default getter constructs and returns a default value by calling new DataTable(variableDefinition.getFormat(), true). 9. DataTable obtained from "getter method", VariableGetter, getVariableImpl() method, or default getter is not immediately returned from getVariable(). It's first checked for accordance with variable format (available via VariableDefinition.getFormat(), this step is skipped if it returns null). If format of the data table matches format provided by the definition (or extends it by adding some fields), this table is returned as is. If format of table does not match or extend format of definition, AbstractContext does its best to convert the table to "proper" format and preserve as much data as possible. This is done by calling DataTableReplication.copy() method.
994
AggreGate Documentation
If code implementing "getter method", VariableGetter or getVariableImpl() needs to access database-stored or memory-stored value of the variable, this code should call executeDefaultGetter() method directly.
public void setVvariable(VariableDefinition def, CallerController caller, RequestController request, DataTable value) throws ContextException
The variable is the name of variable being written. If a method with such a signature is found it will be called. This method must process the DataTable representing new value of the variable. 6. If a "setter method" was not found, existence of VariableSetter is checked by VariableDefinition. getSetter(). If VariableSetter is defined (not null), VariableSetter.set() method is called. The setter must process the DataTable representing new value of the variable. 7. If variable setter is not defined (i.e. VariableDefinition.getSetter() returns null), or the setter has returned false, the AbstractContext calls setVariableImpl() method. This method may be overridden in the subclasses of AbstractContext. If the overriding implementation "understands" the variable (i.e. "knows" its name), it should process a DataTable representing new value of the variable and return true. Otherwise, the setVariableImpl() method should return false. 8. If setVariableImpl() method has returned false, the AbstractContext calls executeDefaultSetter() method. The default setter stores new value of the variable in the database (for server-side code) or memory cache (for all other cases). If code implementing "setter method", VariableSetter or setVariableImpl() needs to store new variable value in the database or memory, this code should call executeDefaultSetter() method directly.
FieldFormat.INTEGER_FIELD);
995
// Creating function output format (scalar, string) FieldFormat off = FieldFormat.create("demoOperationOutputField", TableFormat outputFormat = new TableFormat(1, 1, off);
FieldFormat.STRING_FIELD);
// Creating function (operation) definition. Note that function group should not be changed. FunctionDefinition fd = new FunctionDefinition("demoOperation", inputFormat, outputFormat, "Demo Once done, add the function definition to a context: Definitions of device driver context's functions matching device operations should be returned by overridden DeviceDriver.readFunctionDefinitions() method. Server will add function definitions to the device context and create action 892 definitions for them. Server plugins
950
Operati
Java-based Agents should add functions after Agent object creation via Agent.getContext(). addFunctionDefinition(). Finally, scripts (both server and widget scripts) should not normally add any functions. For server-side functions, it's might be also necessary to specify permission level
997 :
Device operation functions provided by a device driver 129 , along with Agent functions, must belong to a group remote you want them to be grouped logically (and put into nested context menus), append group description to a group name using "|" as a separator, e.g. remote|Maintenance Operations. It's also possible to use nested groups, e.g. remote|Maintenance Operations|Daily. Function group is specified by calling FunctionDefinition.setGroup(). You can use the following syntax: fd.setGroup(ContextUtils.createGroup(ContextUtils.GROUP_REMOTE, "Maintenance Operations",
"Daily"
Manually added functions must have a non-null implementation that is a derived from FunctionImplementation interface. The implementation should analyze function input, process it, and generate the output. Format of data table returned by function implementation method must match output format contained in its definition. Failure to follow this rule may result in data loss since the system will try convert the data table to definition-provided format preserving as much data as it can.
FieldFormat.STRING_FIELD);
format,
"Demo
Event",
ContextUtils.GROUP_DEFAULT);
Java-based Agents should add events after Agent object creation via Agent.getContext(). addEventDefinition(). Finally, scripts (both server and widget scripts) should not normally add any events. For server-side events, it's might be also necessary to specify their expiration period and permission level
997 :
996
AggreGate Documentation
// Setting permission level ed.setPermissions(ServerPermissionChecker.getManagerPermissions()); along with Agent events, must belong to a group remote.
129 ,
Event group is specified by calling EventDefinition.setGroup(). You can use the following syntax: ed.setGroup(ContextUtils.GROUP_REMOTE);
Event Generation
Plugins, drivers and Agents may generate context events using fireEvent() method of Context interface. Here is an example: context.fireEvent("eventName", EventLevel.INFO, new Float(Math.random() * 1000000));
Format of data table passed to fireEvent() method must match format contained in event definition. Failure to follow this rule may result in data loss since the system will try convert the data table to definitionprovided format preserving as much data as it can.
ActionImplementationClass.c
Wizard");
// Setting permission level ad.setPermissions(ServerPermissionChecker.getManagerPermissions()); Once done, add the action definition to a context by calling Context.addActionDefinition() method. Server plugins 950 and drivers 129 should add actions from inside install() and start() methods.
Action Implementation
Action implementation is the class extending ServerAction class. It must override execute() method that performs the actual action, i.e. the combination of server-side operations and interactions with a human operator. Once an action is launched by an operator (or in headless mode), a new instance of action implementation object is created and its execute() method is called. Here is an example of simple action implementation: public class ShowReportAction extends ServerAction { @Override public ActionResult execute(ServerActionInput parameters) throws ContextException { DataTable deviceStatusTable = getDefiningContext().getVariable("status", getCallerController()); String status = deviceStatusTable.rec().getString("statusMessage"); getProcessor().showMessage("Current Device Status", "Device Status: " + status); } }
997
Edit Data
896 897
898
899
Show Report
900
Select Entities
902
issues.
Extending Contexts
When device driver of server plugin adds definitions of variables, functions or events to a server context, it may assign custom permission levels to them using VariableDefinition.setReadPermissions(), VariableDefinition.setWritePermissions(), FunctionDefinition.setPermissions(), and EventDefinition.setPermissions() methods. If permission level of the definition is null, it will match permission level of the parent context. Note, setting definition's permission levels lower or equal to context's permission level is meaningless.
998
AggreGate Documentation
To get predefined values of different permission levels, use the following code: Permission Level None Observer Operator Manager Engineer Administrator Code
For more information, see the HTTP Proxy 1011 chapter within the Device Drivers
129
section.
999
Since the actual connection is established directly to the Device Server you would have to be able to reach it -- i.e, if it has a firewall protecting it, the firewall must be appropriately configured. Configuration would be more complex than with the Link Service 1000 , but you would gain an increase in communications speed. In Dynamic DNS mode, Device Servers connect to the AggreGate Server on startup only, after obtaining IP address from DHCP server. After their registration in DNS they break connection with the AggreGate Server and act exactly as "normal" Device Servers, having no relations with AggreGate Server and other parts of AggreGate. In contrast to Link Service 1000 mode, no connection between Device Server and AggreGate Server is maintained. No data is transferred through the server.
Implementation Details
On the Device Server side, dDNS is enabled through dDNS registration (DD) setting. When this setting is at 1 (enabled) the DS registers on the dDNS Service as soon as it is powered up. During registration, the AggreGate Server creates two DNS entries: one for the external IP-address of the DS, and another one for its "internal" IP address. Example of two DNS entries for the same Device Server: For external IP address: dev1.abccorp.dev.srv1.com For internal IP address: dev1.abccorp.int.srv1.com
Dev1 is the device name, it comes from the Device Name (DN) setting of the DS. Abccorp is the owner name , it comes from the Owner Name (ON) setting of the DS.
Resulting host names are no different from any other host name (or URL) that you have ever used. Input such a name as a destination in any software that can connect to your Device Server and this name will be automatically resolved into current IP-address of this Device Server! This functionality is based on an industry-standard DNS protocol, so no special drivers or software are required for this to work. Device Servers are registered on the external DNS server, like BIND for *nix or Windows DNS Server.
1000
AggreGate Documentation
Only those Device Servers that are registered 1003 at the AggreGate Server can connect to the dDNS Service. Each DS is identified by the AggreGate Server through a combination of data in its Device Name (DN) , Owner Name (ON), and Password (PW)settings.
1001
The only standard solution to this problem is to assign a static IP address to each host you need to connect to. These static IP addresses have to be obtained first. For example, you might need to lease them from your ISP. A single IP-address wouldn't cost much but when a given system is to have many nodes you end up spending considerable amounts of money. Even when the WAN is private and IP addresses are free, there are administration costs related to allocation of static IP addresses.
One possible solution to this is to configure all of the Device Servers for outbound connections, and have them connect to one specific network host. This could save leasing multiple IP addresses, so you would just need a single IP address for this host. Unfortunately, this also means that just this single host would be able to communicate with your Device Servers, as it would be configured as their destination. As you can see, this solution, too, is not an ideal one. So, what is the best way to interconnect Device Servers and their "client" hosts, when they are on different network segments, located behind firewalls, and have no static IP addresses? It is called Link Service.
Link Service
It is usually much easier for a network host to connect out than to accept an incoming connection. Unfortunately, with a normal link, at least one side must accept an incoming connection. Tibbo AggreGate Server provides a workaround for this problem by letting both sides of the link to communicate through a "middle-man" (Link Service), to which they both can establish outbound connections. When you and your friend use ICQ or MSN, you both connect to a central server. Neither of you typically has a static IP address, but the server has a static IP -- and this is what lets the "magic" happen. Both parties make outbound connections, so no firewalls have to be configured and neither side needs a static IP.
The Link Service is a very similar solution, only it is tailor-made for Tibbo Device Servers! Your Device Servers in the field connect to the Link Service (make outbound connections). Hosts that wish to communicate with Device Servers also connect to the AggreGate Server using outbound connections. Both sides meet 'at' the AggreGate Server and can thereby communicate through it.
1002
AggreGate Documentation
Each Device Server that needs to use the Link Service has to be registered on the AggreGate Server first, i.e. have a Device Server Account 1003 . The AggreGate Server recognizes Device Servers through a combination of data in the following settings: Device Name (DN) , Owner Name (ON) and Password (PW). Each registered Device Server is assigned a unique port number during the registration. This is a port on the AggreGate Server to which any client wishing to communicate with this particular Device Server should connect.
The Device Server logs on to the AggreGate Server using its device name, owner name and password. Typically, the DS is preset to do so immediately when it boots (starts up). The AggreGate Server has a single port for Device Server logins -- 6450 by default. Because Device Servers are uniquely identified by their device name, owner name and password, a single login port for all Device Servers is sufficient. A "client" host who wishes to communicate with a particular Device Server establishes a connection to the AggreGate Server, to the specific port that was assigned to this Device Server during registration. The link is thus created and both sides may exchange data. A client host does not need any special login procedure to create this connection to the Device Server via the AggreGate Server. Instead of connecting to the IP address and port of the DS directly, it connects to the IP address of the AggreGate Server and to the port associated with a particular DS -- the difference is in parameter values only. Link Service feature is implemented through a Transparent Data Routing (Link Service) article for further details.
1010
Device Driver
129 .
See this
External Device Server Accounts 1012 The first term refers to a piece of hardware. The latter two terms refer to logical parts of AggreGate Server software. It's important to understand that a single hardware Device Server may be treated by AggreGate as a normal Device Server (i.e, one with a Device Server Account) and also as external (i.e. one with an External Device Server Account) at the same time. A hardware Device Server may be configured to work with AggreGate Server as a normal Device Server, and log in to the server on power-up, but if AggreGate Server detects it while broadcasting 1013 for External Device Servers, an External Device Server Account is automatically created for it.
1003
is used to connect Devices 113 to the AggreGate Server. A hardware Device Server may be physically implemented as a separate device, or embedded into the design of a Device and placed on its printed circuit board (PCB). When the Device Server is a dedicated hardware device, it is usually connected to a Device using an RS-232, ZigBee or WiFi link. When the Device Server is embedded, communication between Device Server IC and main IC of the Device is performed by a serial interface. In an Agent 848 , the Device Server and Device are unified, both physically and logically. In this case, Device Server the logic is implemented by a custom application that runs in the programmable IC. Another part of the same application implements logic of the Device itself. When a hardware Device Server connects to AggreGate Server and tries to log in, the server checks if a corresponding Device Server Account exists and is not blocked.
1004
AggreGate Documentation
It is important to remember that while a Device Server and a Device may be joined physically, AggreGate always treats them as two separate logical units. For a Device Server to connect to AggreGate Server and log in, you have to create a Device Server Account for it. A Device Server Account is a persistent record in the AggreGate Server database 80 that says something like: Device Server named "device1" (same as Device Name setting of the Device Server) is owned by AggreGate Server user " user1" (corresponds to the Owner Name setting of the Device Server) and is permitted to login to AggreGate Server using the password "pass1". Two terms are widely used in this article: hardware Device Server and Device Server Account. The difference between them is further described in a separate article 1002 . A Device Server Account also includes other settings that define how AggreGate Server treats data received from the Device Server and what type of data (i.e, whether to send commands or just a data stream, etc) it sends the Device Server. These settings are explained later on, in Device Server Properties 1006 . A Device Server Account may or may not correspond to an existing hardware Device Server. Simply put, you can create an account even for a Device Server which doesn't exist. If several Device Servers will to login using a the credentials for the same account, only one will be able to stay connected simultaneously. Every hardware Device Server should have a dedicated Device Server account. Device Server Accounts always belong to AggreGate Server users and are therefore registered under user accounts Every user has his own set of Device Server Accounts. By default, every user can manage his own Device Server Accounts. Users with enough permissions default administrator) can also manage Device Server accounts belonging to other users.
931 108 .
(including the
All operations with Device Servers are affected by the Timeouts for Device Server Operations settings of the Device Server plugin.
1009
global
it.
Monitor data 1008 flowing to and from the Device Server Control, configure and monitor Devices
113
1005
Login Sequence
This is how a hardware Device Server logs in to the AggreGate Server: 1. On power-up, the hardware Device Server establishes a TCP connection with the AggreGate Server. The address and port of the AggreGate Server are defined by the Destination IP and Destination Port settings of the hardware Device Server. If some problems occur during the connection, the Device Server plays an error pattern 1018 using its green and red status LEDs. 2. When the connection is established, the hardware Device Server starts exchanging commands with the AggreGate Server. 3. AggreGate Server verifies that the Device Server firmware is capable of working with it. If not, the connection process is aborted. 4. AggreGate Server inspects the Owner Name setting of the hardware Device Server. If a user account whose name matches this setting does not exist, the connection is aborted. 5. A similar inspection is performed for the value of the Device Name setting. If a Device Server Account with this name does not exist under the user account determined on the previous step, the connection is aborted. However, if both Enable Automatic Registration of Device Servers in Device Servers Plugin user-level configuration 1009 and AggreGate Server Auto-registration in the settings of the hardware Device Server are enabled, a new Device Server Account is now created. See Auto-registration of Device Server Accounts 1005 for more information. 6. If the Device Server account exists but is blocked, the connection is also aborted. 7. If the password defined in the settings of the hardware Device Server does not match the password defined in Device Server Account properties, the connection is aborted. 8. The Device Server is registered in DNS
999
1006
9. If Device Driver setting is set to Auto Detect, AggreGate Server asks Device Server which Device Driver 129 is desired for it. When Device Server provides type of driver, it is stored in the settings of Device Server account and will be used during subsequent logins. If Device Server is unable to provide driver type, Dynamic DNS 1010 driver will be used for this account. 10. The Device Driver 129 defined in the settings of the Device Server Account starts processing data received from the hardware Device Server and the Device(s) connected to it.
2. The AggreGate Server Auto-registration (AR) setting of the hardware Device Server that is supposed to autoregister itself has to be enabled, 3. The Enable Automatic Registration of Device Servers parameter must be also enabled in the in Device Servers Plugin user-level configuration 1009 or user those name matches the Owner name of the hardware Device Server Once these conditions are met, and the Device Server tries to log in to the AggreGate Server when it is not yet registered (i.e. has no Device Server Account), AggreGate Server creates a new Device Server account with the default settings for it. After auto-registration takes place, hardware Device Server disconnects from the server and reconnects within several seconds. It now has an account, and should be able to log in.
1006
AggreGate Documentation
Auto-registration should be disabled in production systems for security reasons. It is suggested to enable it for a limited time only to speed up deployment of the AggreGate in your facility.
Username for the Device Server owner. Corresponds to the Owner Name setting of the Device Server. Read-only property. Name of Device Server Account (also, name of the Device Server 1018 context). Corresponds to the Device Name setting of the Device Server. Read-only property. Account password. Device Server must use the same password during its login sequence Comments about the account or hardware Device Server. Defines if the Device Server should be registered in DNS Server.
999 1005.
Device Server is not allowed to log in if its account is blocked. Indicates that the Device Driver 129 associated with this account may send commands to Device Server. Most device drivers do not send commands on their own, but some of drivers forward commands received from the third-party client application that controls the hardware Device Server. For these commands to transfer to the Device Server reliably, this setting must be enabled. The word "inband" here merely refers to the fact that the commands are embedded within the TCP data stream going from the AggreGate Server to the Device Server. All commands are "inband" in AggreGate Server - this is just a legacy designation, from a time when Device Servers were normally controlled over UDP (outside of the TCP data stream, and thus, "out of band"). This option should be disabled in most cases, unless you know it should be used with your device driver. If the device driver sends or forwards inband commands to the Device Server while this option is disabled, the Device Server won't be expecting the commands and won't "understand" them. Thus, the stream of data arriving to it will be considered "corrupted".
Time zone where this Device Server and all connected Devices 113 are located. More information on this can be found under Dealing with Time Zones 108 . Defines which Device Driver Server.
129
Auto Detect value causes AggreGate Server to ask Device Server about the desired driver type during its first login. Auto-detected driver type will be stored in account properties and used during future logins of this Device Server.
1007
action of any Device Server context to see what's going on with it:
Account status includes the following: Online Device Driver status Bytes transferred from Device Server to AggreGate Server Bytes transferred from AggreGate Server to Device Server Creation Time Last Update Time Last Login IP Indicates that Device Server is online (connected to the AggreGate Server and logged in). Status of the Device Driver driver-dependent.
129 .
Amount of data sent to Device Server. Amount of data received from Device Server. Read-only property, showing when account was created. Read-only property, showing when account properties were last updated. IP address from which Device Server last logged in. This is an "external" address, i.e. an address on which the Device Server is visible to the
1008
AggreGate Documentation
AggreGate Server. Last Login Port Last Login Time Internal IP Port number from which Device Server logged in last time. Time when Device Server logged in last time. The internal IP that was set in Device Server when it last logged in. This is the Device Server's address in its local network. It the IP Address setting on the Device Server. It may or may not be the same as the "external" address (Last Login IP, above).
BUZZING
Buzz lets you to visually match a Device Server Account to an actual physical Device Server. It makes the hardware AggreGate Serverplay a fast-blinking pattern on its red and green status LEDs. This way you can easily identify which AggreGate Server a particular account corresponds to.
REBOOTING
This operation reboots the hardware Device Server. Rebooting may be required when settings of Device Server were changed in order to activate them.
an
1009
Setting Levels
Every Device Server plugin has up to three levels of settings: Global Settings. These affect the overall behaviour of plugin. Global settings may be edited only by users with sufficient permissions. User-level Settings . These affect the behaviour of a plugin only if it is assigned to a Device Server that belongs to a certain user account 108 . When the pugin is processing data from a particular Device Server, it uses the user settings stored in the owner's account. Device Server-level Settings . These settings affect the behaviour of the driver assigned to a certain Device Server Account 1003 . When the driver is processing data from a particular Device Server, it uses the Device Server settings that are stored in the Device Server's account. Most Device Server plugins do not use all three setting levels. New Device Server Accounts use the Device Server Plugin defined by the Default Device Server Plugin 53 global configuration setting. The plugin type may be later changed by editing settings of Device Server Account.
context, where they contain global settings context, where they contain user-level settings
If a given plugin doesn't contain settings on one of these levels, the corresponding configuration context will not be created (i.e, won't exist in the System Tree). Device Server Level settings for a driver may be accessed using the Configure Device Driver 1019 action of a Device Server 1018 context.
1010
AggreGate Documentation
The Device Servers Plugin has one user-level setting: Enable Automatic Registration of Device Servers. Defines that Device Server Accounts 1003 should be automatically created for Device Servers that try to log in and have auto-registration on AggreGate Server setting enabled. See Auto-registration 1005 in Device Servers chapter for details.
Plugin Information
Plugin ID: com.tibbo.linkserver.plugin.device.transparentlink
Global Settings
Lowest number of port assigned to Device Servers. Default is 50000. Highest number of port assigned to Device Servers. Default is 60000. These two options define a range of ports that can be assigned for Client connections in the Device Server settings of this driver. This range can be overridden in User-level Settings. Comma-separated list of ports never assigned to Device Servers. Exceptions from the above range. This ports cannot be assigned to Clients neither automatically nor manually.
1011
Despite the name of this driver, Dynamic DNS functionality is built-in to the AggreGate Server core. Dynamic DNS driver just helps Device Servers to stay connected after logging in. It acts like a "stub" that does nothing with a connected Device Server. It other words, it maintains an active connection without any actual data transfer. While the connection is active, a user can check a Device Server's status, configure, reboot or buzz it etc. See more info in the Device Servers 1003 chapter. To ensure that Device Server will be registered in DNS upon login to AggreGate Server, check that: Dynamic DNS is enabled and properly configured in AggreGate Server global settings Register in DNS setting is enabled in Device Server account settings 1006 See Dynamic DNS Service
999 61
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.stub
Global Settings
None defined.
NEW TERM: A proxy server is software which lets clients make indirect network connections to other
network locations. The client connects to the proxy server, requests a connection, file, or other resource available on a different server, and the proxy accesses the resource for the client and relays it to the client. More information about the HTTP Proxy service may be found under HTTP Proxy Service section.
998
30
When the driver is running, the following URLs may be used to access web page provided by the Web Server embedded into the Device Server connected to AggreGate Server:
https://server_address/dev/device_server_owner/device_server_name/page_path/page_name http://server_address/dev/device_server_owner/device_server_name/page_path/page_name
The first example uses a secure HTTPS connection between the Web Browser and AggreGate Server. The second example shows a non-secure HTTP connection.
server_address is the IP of the AggreGate Server or one of the DNS addresses defined in the Host Name Aliases
. If a DNS address is used, it should also be properly configured in DNS (i.e, you also have to configure your DNS server and make sure you can indeed reach the AggreGate Server's IP via this DNS address).
60
108
device_server_name is the name of Device Server Account 1003 page_path and page_name should point to the requested page in the Device Server's embedded Web Server.
1012
AggreGate Documentation
Example:
https://ls.nuclear-sub.com/dev/admin/thermometer/gui/view_temperature.html
This URL will provide access to the page /gui/view_temperature.html contained in the Web Server embedded into the Device Server admin.thermometer when it is connected to AggreGate Server. It assumes AggreGate Server is accessible via the ls.nuclear-sub.com address. The requested page will be viewed through a secure connection, even if connection between AggreGate Server and Device Server is not secure. HTTP Internal Server Error (Error 500) is shown by the HTTP Proxy Web Application in the following cases: User specified in the URL does not exist Device Server specified in the URL does not exist Device Server is offline Device Server is not working through the HTTP Proxy driver See HTTP Proxy Service
998
Driver Information
Driver Plugin
129
ID:
com.tibbo.linkserver.plugin.device.httpproxy
Global Settings
Enable HTTP Proxy web application. Enables/disables access to HTTP Proxy.
1013
The basic concept of External Device Server Accounts is that they are used to access and configure new hardware Device Servers only. This facility should not be used for working with Device Servers which are already configured to connect to AggreGate Server.
2. Automatically connecting all discovered Device Servers to AggreGate Server without user interaction. 3. Manually configuring discovered a Device Server that was not successfully connected by the above functions. 4. Manually connecting a Device Server that was not detected by the discovery process but may be accessed by AggreGate Server.
1014
AggreGate Documentation
Connection Type. "Permanent (Work with AggreGate Server)" or "Dynamic DNS only (disconnect immediately after registration in DNS)". See Connection Modes 1014 for details. Login Password. Required if a password is defined in the settings of the hardware Device Server. This password will be used by AggreGate Server to access the settings of the hardware Device Server. Owner Name. Name of the AggreGate Server user 108 who will own (or already owns) a Device Server Account 1003 that will be used to authenticate this hardware Device Server during its login to AggreGate Server. The "Owner name" setting of the hardware Device Server will be set to this value. Device Server Name. Name of the above Device Server Account Server will be set to this value.
1003 .
Force connection even if Device Server is already configured for AggreGate Server or has incompatible firmware. By default, the connection procedure fails with an error message if the Device Server is already configured to connect to the AggreGate Server or has an outdated firmware version (one that doesn't fully support automated configuration for AggreGate Server). This option disables checking of the Device Server setting values and its version number. The forced connection operation will complete successfully, but Device Server may not be able to actually connect to the AggreGate Server or log in. If the Device Server does not login to the AggreGate Server within several seconds after the forced connection procedure has been completed, proceed to the manual configuration 1015 section. The connection sequence is described here
1015 .
CONNECTING A DEVICE SERVER THAT WAS NOT DISCOVERED BUT IS ACCESSIBLE BY AGGREGATE SERVER
This procedure should be used to connect a hardware Device Server to AggreGate Server that wasn't discovered, but can still be accessed by AggreGate Server. This is suitable, for example, if the Device Server is not located in the same local network segment as the AggreGate Server, but its IP address is accessible to the server. All connection parameters required to access the Device Server should be specified manually for this procedure. Is is initiated by the Connect Device Server to AggreGate Server 1030 action of the External Device Servers 1030 context. To connect a non-discovered Device Server you need to specify the following options: Connection Type. Permanent (Work with AggreGate Server) or Dynamic DNS only (disconnect immediately after registration in DNS). See Connection Modes 1014 for details. Access method . One of Broadcast (UDP), Out-of-band (UDP), Inband (TCP) or Telnet (TCP). MAC address. Should be specified in the case of broadcast access. IP address. Should be specified if access method is not broadcast. Port Number. If specified, this port will be used to contact the Device Server instead of the default port for the selected access method. Owner Name. See description above. Device Server Name. See description above. Force connection even if Device Server is already configured for AggreGate Server of has incompatible firmware. See description above. Connection sequence is described here
1015 .
CONNECTION MODES
A hardware AggreGate Server may be configured to work with AggreGate Server in two different modes: Normal mode Dynamic DNS only mode
1015
Normal mode assumes that the Device Server connects to the AggreGate Server on startup and stays connected for an unlimited period of time. All data that is sent or received from it is processed by the Device Drivers 129 defined in the Device Server 1003 Account. In most cases Device Servers should be connected to the AggreGate Server in normal mode. Dynamic DNS only mode forces the Device Server to disconnect from AggreGate Server immediately after connection. The only thing performed by the server when the Device Server connects is to register it in the Domain Name System (DNS). After disconnecting from AggreGate Server, the Device Server acts as a normal ethernet-to-serial bridge. It does not interact with AggreGate anymore until next power-up. See Dynamic DNS (dDNS) Service 999 for more information on how this mode may be used.
CONNECTION SEQUENCE
The procedure of configuring a hardware Device Server to connect to AggreGate Server on startup involves several steps: 1. If neither a MAC nor IP address is not specified in connection settings, connection process fails with an error 2. If the access method is set to Inband (TCP) or Telnet, AggreGate Server tries to establish an outgoing TCP connection with the Device Server. 3. AggreGate Server tries to detect the proper value for the Destination IP setting of a hardware Device Server (i.e, where should the hardware Device Server connect to). If the Server IP Address 54 global configuration setting of AggreGate Server is defined, the Destination IP is set to its value. Otherwise, AggreGate Server sends a special command, "Tell me my IP address ", to the Device Server. The Device Server inspects the command packet and sends back the IP address from which the command was sent. This way, the server "knows" what IP address is visible for it on the Device Server side (i.e, where the Device Server "thinks" the server is at). If hardware Device Server in moved to another network segment after "Connect to the AggreGate Server" procedure, it may be necessary to change its "Destination IP" setting to the IP address at which the AggreGate Server is available from its new network location. 4. AggreGate Server tries to log in to the Device Server and access its configuration. The password defined in the parameters of "Connect to AggreGate Server" operation is used. 5. If Force connection even if Device Server is already configured for AggreGate Server or has incompatible firmware setting is disabled, the version of Device Server is checked to be compatible with the AggreGate Server. If it is too old, connection procedure fails. 6. If Force connection is disabled, AggreGate Server tries to detect if the Device Server is already configured to connect to this specific AggreGate Server on startup and stops the connection process if this check succeeds. Alternatively, if this setting is enabled, AggreGate Server will overwrite Device Server settings anyway, to make a best-effort attempt to make it connect to AggreGate Server. 7. At this point AggreGate Server decides which user 108 and Device Server 1003 accounts should be used by the connected hardware Device Server If the Owner name and Device name parameters are specified, they are used as the user and Device Server account respectively. If not, AggreGate Server reads Owner name and Device name settings from the hardware Device Server and uses these values as names of user and Device Server accounts. 8. If the user account determined at the previous step does not exist or is inaccessible by the user initiating the connection procedure, the procedure fails with an error. 9. The hardware Device Server settings are now changed to make it to connect to the AggreGate Server on startup. To learn what settings are changed and their new values, see Manual Configuration for AggreGate Server 1015. 10. If a Device Server Account 1003 with the name determined at step 7 exists, its settings are updated let let the new hardware Device Server connect. Otherwise, a new Device Server Account is registered automatically. 11. The hardware Device Server is rebooted. After the above steps Device Server should connect and log in to the AggreGate Server within several seconds. If this doesn't happen, check the Device Server status LEDs 1018 to find out what's going on with the Device Server. You can then use manual configuration (see immediately below) to troubleshoot the connection.
1003
Account
1016
AggreGate Documentation
MAC-address IP-address Registration at dDNS Server Auto-registration on AggreGate Server PPPoE mode Gateway IP-address Subnet mask Connection timeout Transport protocol Link Service login Routing Mode Connection mode Destination IP-address Destination port
Must be set to any valid MAC address that is unique within the local network segment. Default value is suitable in most cases. Must be properly configured for the local network environment. Disabled Enabled Disabled Must be properly configured for the local network environment. Must be properly configured for the local network environment. Disabled (0 minutes) TCP Enabled Client only Immediately (on powerup) IP address of the AggreGate Server Must be equal to the value of the Port number to listen for normal Device Server connections 1009 global AggreGate Server configuration setting.
1014 ,
When the hardware Device Server is configured to work in Dynamic DNS only mode settings should be configured differently: Link Service login: disabled Registration at dDNS Server: enabled dDNS Server IP-address: IP address of the AggreGate Server
some of these
dDNS Server port: Must be equal to the value of Port number to listen for normal Device Server connections 1009 global configuration setting of Device Servers plugin. If the hardware Device Server does not connect to AggreGate Server within seconds after rebooting, see troubleshooting information here 1018 .
REBOOTING
This operation reboots the hardware Device Server. Rebooting may be required after changing Device Server settings.
INITIALIZING
This operation resets a hardware Device Server to factory defaults. It requires confirmation, and cannot be undone. Default values may prevent a Device Server from being discovered by AggreGate Server. Use this feature carefully.
1017
8.8 Tools
There are several tools facilitating Device Server management. Device Server Queries
271 : 1003
All Device Servers. This query allows viewing and editing the settings of all Device Server accounts table.
in a single
Buzz All External Device Servers. Helps detect what Device Servers are currently visible by AggreGate Server by buzzing them all simultaneously. Note that Device Servers discovery must be executed before running this query to allow AggreGate Server to detect Device Servers in the local network segment. See External Device Servers 1012 for more info. Device Server Traffic Statistics. Shows how much data was sent to and from every Device Server. Device Server Scheduled Job
266 :
Discover And Connect External Device Servers. This job runs a periodic External 1013 Device Servers discovery 1013 and optional auto-connection 1014 . It may be disabled if there no Device Servers 1003 are available in current AggreGate installation. Device Server Event Filter
206 :
Device Server Events. This filter shows events related to Device Servers, such login attempts of Device Servers which don't have a Device Server account, registrations of new Device Server accounts, connection problems, successful logins etc.
1018
AggreGate Documentation
8.11 Contexts
This section described contexts
863
1003 .
Unique Actions
893 )
Configure
904
editProperties
1019
904
This action is used to edit Device Server-level 130 properties of a Device Driver 129 associated with Device Server Account. Driver type is defined in the basic properties 1006 of the Device Server Account. See the driver description for information about available properties.
Action Type: Action Name: Action Icon:
Configure
904
configureDevicePlugin
897
(read-only mode)
BUZZ
This action buzzes Action Type: Action Name:
1016
REBOOT
This Call Function Action Type: Action Name: Non-Interactive Mode 893 :
903
action reboots
1016
903
Common Actions
1020
Delete
905
AggreGate Documentation
, Replicate
909 ,
906 ,
909
may affect the state and icon of this context. For example, the Transparent Data
Routing (Link Service) 1010 driver sets context icon to and status to Client connected when some third-party software is connected to the AggreGate Server using a dedicated port specified in the driver settings for this Device Server Account and exchanges data with current Device Server. In other words, you see this icon when the AggreGate Server is used as a transparent "pipe" between a Device Server and some other software.
Advanced Information
Context Information
Context Type Context Name
864
863
: provided by user
: users.USER_NAME.deviceservers.DEVICE_SERVER_ACCOUNT_NAME : users.*.deviceservers.*
865
865
Context Permissions
: Observer
[?
869 ]
Returns properties 1006 of a Device Server Account. Variable Name: Records: Permissions: Record Format
Name owner
855
deviceServerInfo
1021
timezone deviceplugin
String String
Returns status 1007 of a Device Server Account. Variable Name: Records: Permissions: Record Format
855
status
Field Name
Field Type
Notes
name online pluginStatu s dsToServer serverToDs creationtim e updatetime realip realport logintime internalip
Public Functions
SEND COMMANDS
This function sends several commands to a hardware Device Server and returns its replies.
1...unlimited
: Name command Type String Description Command text.
1022
errortext
String
Text of error message if some I/O error occurred while sending command. Text of reply received from a Device Server if command was successfully replied.
reply
String
1...unlimited
: Name command Type String Description Command text.
1...unlimited
Name successful Type Boolean Description True is command was successfully sent to Device Server.
Successful sending a non-replied command via UDP does not mean that is was received and processed by Device Server. errortext String Text of error message if some I/O error occurred while sending command.
BUZZ
Buzzes 1008 Device Server.
0
: None
0
none
REBOOT
Reboots 1008 Device Server.
1023
0
: None
0
none
DISCONNECT
Causes server to close TCP connection with a hardware Device Server. It will attempt to reconnect to the Device Server in several seconds.
0
: None
0
none
REMOVE
Permanently destroys Device Server Account.
0
: None
0
none
880 ]
Public Events
[?
885
890
CONNECTION
This event is fired upon device server connection and successful login. Event Name Permissions: Records:
DISCONNECTION
connection
932
This event is fired upon device server disconnection. Event Name Permissions: Records:
INBAND
disconnection
932
1024
AggreGate Documentation
This event is generated when an inband notification (i.e. command that is not a reply to any other command) is received from a Device Server. Such inbands are handled by AggreGate Server only if
Inband commands allowed for client
1006
inband
932
Field Type
String
1003
of a particular user.
Unique Actions
893
This action is used to create a new Device Server account. It prompts the user to enter some basic properties for the new account: Name Password Description Register Device Server in DNS Blocked See descriptions of these properties here Action Type: Action Name: Action Icon: Call Function add
903 1006 .
This action shows 896 the basic properties of all Device Server Accounts registered in this container in a single read-only table.
Action Type: Action Name:
Configure
list
904
(read-only mode)
This actions shows 897 the status 1007 of all Device Server Accounts registered in this container in a single read-only table.
Action Type: Action Name: Action Icon:
Configure
status
904
(read-only mode)
1025
Common Actions
[?
651 ] 906 ,
909 ,
894
icon.
Advanced Information
Context Information
Context Type Context Name
864
: deviceServers : deviceservers
864
863
: Device Servers
: users.USER_NAME.deviceservers : users.*.deviceservers
865
865
Context Permissions
: Observer
[?
869 ]
Returns status of all Device Servers under the current account. More information about Device Server status may be found here 1007 . Variable Name: Records: Permissions: Record Format
855
status 0...unlimited
932
Field Name
Field Type
Notes
name online pluginStatus dsToServer serverToDs creationtime updatetime realip realport logintime
String Boolean String Long Long Date Date String Integer Date Nullable Nullable Nullable
1026
AggreGate Documentation
internalip
String
[?
878 ]
Nullable
Public Functions
0
:
None
0...unlimited Name owner Type String Description
String String
This function returns information about all Device Server Accounts in the system that are accessible with current permission level. Account properties are described here 1006 .
0
:
None
0...unlimited Name owner Type String Description
name
String
1027
String String
Creates new Device Server Account. Account properties are described here
1006 .
1
: Name Type Description
0 None
880 ]
Public Events
[?
885
1012
Unique Actions
893 )
This action is used to connect this Device Server to AggreGate Server. Check details here 1013.
Action Type: Call Function
903
1028
AggreGate Documentation
Action Name:
connect
Action Name:
configure
BUZZ
This action buzzes Action Type: Action Name:
1016
REBOOT
This action reboots Action Type: Action Name:
1016
INITIALIZE
This action initializes 1016 the Device Server. Action Type: Action Name: Call Function initialize
903
This action starts 902 an Interactive Guide to help the user discover Device Servers and connect them to the AggreGate Server.
Action Name: Action Icon: Non-Interactive Mode 893 : Permissions: Not Supported Accessible at Observer permission level [?
651 ] 906 , 932
guide
Common Actions
Replicate
909
909
Advanced Information
Context Information
Context Type
864
: externalDeviceServer
1029
: generated automatically
864
: generated automatically
: external_device_servers.NAME_OF_THIS_CONTEXT : external_device_servers.*
865
865
Context Permissions
: Observer
[?
869 ]
This context provides one public variable per every setting of the hardware Device Server when it is connected to the server. When one of these variables is being read or written, AggreGate Server sends Get Setting or Set Setting commands to a hardware Device Server.
Public Functions
[?
878 ]
1
: Name Type Description
0 None
0
:
None 0 None
BUZZ
Buzzes 1016 External Device Server.
1030
AggreGate Documentation
buzz Accessible at Observer permission level
932
0
: None
0
none
INITIALIZE
Initializes
1016
0
: None
0
none
REBOOT
Reboots 1016 External Device Server.
0
: None
0
none
880 ]
Public Events
[?
885
Unique Actions
[?
651 ]
893
)
1013
This action i nstructs AggreGate Server to initiate Device Server discovery process Action Type: Action Name: Call Function discover
903
to the
1031
903
Starts 902 an Interactive Guide to help the user discover Device Servers and connect them to the AggreGate Server.
Action Name: Action Icon: Non-Interactive Mode 893 : Permissions: Not Supported Accessible at Observer permission level [?
651 ] 906 , 932
guide
Common Actions
909 ,
894
icon.
Advanced Information
Context Information
Context Type Context Name
864
: externalDeviceServers : external_device_servers
864
863
: external_device_servers : external_device_servers
865
865
Context Permissions
: Observer
[?
869 ]
Public Functions
[?
878 ]
Device Servers available in a local network segment and returns a list of discovered
0
:
None
0...unlimited Name Type Description
1032
AggreGate Documentation
Nullable
1
: Name Type Description
String Integer
1
Name Type Description
owner name
String String
Public Events
[?
880 ]
885
1033
9.1 Overview
AggreGate Network Manager is an enterprise-grade IP network management, monitoring and supervision system based on the AggreGate Platform. It may be combined with other AggreGate extensions (SCADA/HMI, Building Automation, Time and Attendance, Access Control, Fleet Management, etc.) to create an integrated building control center. AggreGate Network Manager provides common network monitoring facilities and tools along with comprehensive capabilities to customize, modify and extend them. The Network Manager is built as a platform-independent cross-database system. Tibbo provides bundles for Windows, Linux/Unix and Mac OS version.
charting
1151
and visualizing 1154 facilities. Integrated GUI Builder and Report Editor.
A variety of built-in availability/operability 1044 and performance 1045 analysis tools for all major network management and monitoring domains including SNMP management, server/router/switch monitoring, database monitoring, network traffic and bandwidth monitoring, virtualized environment monitoring, etc. Smart application, service and process monitoring. Support for standard protocols and technologies along with industrys leading data processing capabilities for nonstandard network equipment. Advanced consolidation of SNMP traps, Syslog messages and Windows Event Log notifications. WMI support: fetching classes, class instances and their metadata; performing WQL requests; receiving and processing WMI events; executing methods of WMI objects. Enterprise-level capabilities for customization, extending and scaling the network management system; integration with third-party systems via open protocols.
1034
Monitor
AggreGate Documentation
1035
If you are installing AggreGate Network Manager from a generic AggreGate Platform bundle, make sure that you have selected Network Management Extensions during installation of AggreGate Server.
that
To disable automatic launch of this widget: Find Auto Run ( ) node in the System Tree
784
Right-click on Network Manager Quick Start auto-run action Select Configure ( ) from context menu
9.2.2 Configuring
Network management technology implies presence of two sides: managing (AggreGate Network Manager in our case) and managed (i.e. network devices, and services/applications they run). Both sides should be properly configured.
Register devices for management and monitoring. You can do it either manually
or automatically
1052
(using
1035
discovery). It's a good idea to configure first several devices manually, as this will help you to better understand various aspects of this task. As the next step, when you need to manage and monitor more devices you'll master automatic discovering procedures. The task of manual registering devices is tightly coupled with the task of their configuration, i.e. adjusting parameters 1050 for them. You should master this task really well as it is literally crucial one for successful network management and monitoring. Setup monitoring tools (e.g. alerts, charts or reports) for registered devices. Refer to the monitoring familiarize yourself with available tools and types of monitoring they provide.
1035
section to
Configure Environment
The task of configuring managed side cannot be fully covered, since there is a vast amount of different hardware and software products that can be managed or monitored. If you are not familiar with configuration issues of your devices, services and applications, leave their default settings at this stage. With gaining more experience and skills you'll get back to this subject and customize your managed items for better interaction with AggreGate Network Manager. Refer to Configuring Environment
1053
9.2.3 Monitoring
The aim of network monitoring is to understand what is going on with your network and its components. First of all, this involves collecting, storing and processing data from managed network items. This task is partly fulfilled by configuring monitoring system 1034 . Collecting data is only the very first step of monitoring task. The collected data must be processed, i.e. analyzed in order to: Detect network problems Reveal their root causes Understand how they can be fixed Make corrective decisions and implement them. One of the most significant tasks of this analysis is data visualization. It doesn't mean only building various charts but, more generally, any kind of presenting data in the form convenient to Understand current situation and trends Reveal inner relations between parameters Find events of interest. AggreGate Network Manager provides a rich set of tools facilitating data visualization and analysis. The below table represent basic AggreGate Network Manager monitoring facilities categorized by type of monitored object and type of monitoring (metric). Monitoring Object Generic IP Network Host Specific Type of Device Database Server File System Operability
1044
Monitoring Facilities and Tools Ping is used to detect Online/Offline status of a generic IP host. You can monitor this using Device Offline alert 1145 .
References
JDBC-compliant relational databases are supported by SQL Database driver 180 . Filesystem on the computer that runs AggreGate AggreGate Server may be monitored by checking the existence of files and folders, their contents, sizes, attributes, checksums, and so on.
Database Monitoring
1103
Operability
1044
Printer
Operability
1044
Printer Information widget and alerts Printer State Printer Marker 1120 , Printer Cover Status 1120 and Critical Printer Event SNMP Trap 1108 .
1120
216 :
1120 ,
Printer Monitoring
1119
VMware
Individual virtual machines can be monitored using VMware Information Widget 1118 ; Virtual Machine State 1115 , Memory Utilization (Volume) 1115 , Memory Utilization (Percentage) 1115 , CPU Load 1115 , HDD Read 1115 , HDD Write 1116 alerts; CPU
1036
AggreGate Documentation
Utilization 1117 , Disk Performance Performance 1117 charts. Wireless Device Resources CPU Storage Operability
1044
1117 ,
Memory Usage
1117 ,
1121 .
Performanc CPU Load charts 1152 and CPU Load reports/queries e 1045
1150 .
Performanc Storage Space 1146 alerts, Storage Usage 1152 charts, Memory e 1045 Usage 1150 , Disk Volumes Utilization 1150 and Disk Volumes Free Space 1150 reports.
Availability/operability of particular network interfaces can be tracked using Network Interface Down 1098 and Network Interface Administrative Shutdown 1098 alerts.
Traffic
Performanc Interface Traffic 1097 , Interface Errors 1098 , Interface Discards 1098, e 1045 Network Interface Utilization 1098 charts, Interface Traffic Summary 1099 , Interface Traffic Top 10 and Interface Traffic Top 50 1099 , Interface Bandwidth Utilization Over 50% and Interface Bandwidth Utilization Over 90% 1099 , Interface Bandwidth Utilization Top 10 and Interface Bandwidth Utilization Top 50 1099 reports. Alternatively, NetFlow
1100
can be used to analyze network traffic. Application/Service Monitoring 1108 Network Mapping
1066
Operability
1044
There is a bunch of services and applications whose operability and other characteristics can be natively monitored. You can use maps 1066 to visualize geometry/topology and state of IT infrastructure you manage/monitor.
Availability
1044
9.2.4 Managing
AggreGate Network Manager provides a set of operations you can use to manage your devices: Various SNMP-compliant devices can be configured or made to perform certain actions using SNMP Computers running Windows operating system can be controlled via WMI If a host supports SSH, remote script execution
1144 1144 . 1144 .
There are many network management actions 1144 provided by AggreGate Network Manager. These actions can be invoked interactively or automatically (as alert's corrective action 227 or scheduled job 266 ).
1037
Monitoring
To monitor means to be aware of the state of a system. To be able to manage a system one should first of all understand everything that matters about the system: its current state, behavior, causes and trends. And network monitoring is with no doubt a central part of network management. AggreGate Network Manager helps to be aware of what is going on with network. For example, it allows to spot problems like outages, failing/slow components as soon as possible, ideally before users are affected. The network manager provides that by: collecting management information from devices, services and applications, and their associated resources (CPU, storage, network bandwidth etc.) storing, processing, and automatically analyzing the collected management information producing various quantitative characteristics like availability, operability, system and network performance metrics; revealing and handling variety of events generated by managed network items, or triggered by AggreGate itself as a result of management information processing and analysis; representing the collected data and detected events for users in a convenient visual/printable form. These basic functionality is supplemented with extremely rich facilities for customizing and extending the monitoring algorithms and tools used. Furthermore, to provide more full-fledged problem-management solution AggreGate Network Manager can be integrated with virtually any helpdesk or trouble ticketing system (see Helpdesk / Trouble Ticketing System Integration 1156 section).
Control
When an actual or potential network problem is detected and diagnosed, it should be fixed or prevented accordingly. Such corrective actions can be performed automatically or manually by applying suitable controlling operations to managed devices, services and/or applications. This can involve, for example, changing configuration parameters of an network item or invoking a command on a remote device making it perform specific operations. In whole, AggreGate Network Manager provides an extendable and customizable set of corrective control actions.
1038
AggreGate Documentation
customizing monitoring tools or creating new ones, tuning AggreGate Network Manager for better performance, etc.
Asset Management
IT asset management is another typical network management task. Asset Management plugin 950 provides facilities to organize asset management for hardware and software elements in network environment. Refer to Asset Management 1156 section for details.
Manager
Manager can be any kind of management system that performs its duties by tracking and controlling activities of network items. The variety of possible functionality that manager can provide and architecture it can be built with is endless. Manager role can be played by a simple network utility, a very specific application or a huge and sophisticated network management system. Therefore it's impossible to provide any reasonable description for structure or functionality of manager here.
Agent
Management agent represents a separate network element that is a network device, service or application. As a network element, agent has some essential functionality referred here as its core logic. Additionally agent provides some kind of management interface that makes it available for management and provides information about network element that can be consumed by managers. Thus, an agent can be represented as a three-part component: core logic, management interface, management information base (MIB).
CORE LOGIC
Here we use the term Core Logic to refer to essential functionality of network item. This may include operations the item provides, algorithms, parts it comprises and relations between them, etc.
1039
MANAGEMENT INTERFACE
Management Interface provides interaction between agent and manager, providing execution of manager requests and commands, sending back the data requested, and altering the element configuration if needed. Management interface can be implemented as a dedicated interface existing exclusively for and performing only management tasks. Examples are ICMP and SNMP services. But other types of interfaces can be also used to monitor and control certain aspects of a network element. For example, availability and operability of many services and applications can be monitored by accessing and using their core functionality. Say, we can check an e-mail system operability by connecting and communicating with the service via a certain protocol (POP3/IMAP/SMTP). Furthermore, we can ensure that the e-mail system operates properly in whole by sending a test message and checking its delivery to recipient.
POLLING-BASED MANAGEMENT
Polling refers here to the manager-agent conversation initiated by manager. The interaction itself is based on a requestresponse cycle: 1. Manager makes a request (to retrieve a piece of management information, or to change a configuration setting, or to cause it to perform an operation). 2. The agent then receives the request, process it, and sends back a response including a result for the request or a success/error indicator/description. Manager decides when to start the conversation: at certain moments of time with the predefined intervals, or on certain events (when a user requests update of management information for example).
1040
AggreGate Documentation
AggreGate Network Manager does not initiate polling every time when management information of network elements is requested by operators. Instead, it caches 115 the information and uses cached data upon requests, refreshing it when necessary. Consequently, the management information is requested (and the polling is initiated) under the following circumstances: when a management application initially takes management ownership of a device, storing the information in the AggreGate Network Manager's cache for the first time; when an information in the cache is considered outdated: e.g., if it is too old (with respect to the device management settings), or when a certain corresponding notification was received, or when a user directly requests a cache update. There's a delay between the moment an event occurs at the agent side (e.g. some value has changed) and the moment it was observed by the manager. The delay depends on the frequency of polling requests. On the other hand, excessively often requests abuse both network and management system. AggreGate Network Manager provides means to adjust the polling frequency for particular pieces of management information according to the certain user needs. Request granularity is another polling-based management concern. AggreGate Network Manager supports both bulk requests and incremental operations, and automatically uses an appropriate method in different situations. Besides, AggreGate Network Manager supports collecting historical information, making it available for processing and analyzing.
EVENT-BASED MANAGEMENT
Event-based communication in many ways can be considered an opposite technique to polling. Contrary to a response that is sent after a request, the agent determines on its own when it needs to send an event message, without waiting to be asked first. The agent initiates communication and sends the manager a message, notifying it about some type of occurrence or event that has occurred. This can be, for example, an alarm that indicates that paper has been jammed on a printer, or a warning about CPU overheating on a device, or someone tried to unsuccessfully log on to a device several times in a row as a possible indication of suspicious activity, and so on. Agent should be properly configured to send event notifications to a specific manager. This can be done either using the management application (called subscription to events), or using external (device-specific) tools.
1041
Manager decides independently, when and how it reacts to the events it receive. It can react immediately with some kind of control action, or do it with a delay, or send some kind of clarification request, or simply ignore the event. In AggreGate Network Manager event-based management is implemented, for example, as SNMP traps reception, Syslog messages processing, and NetFlow data collection.
1042
AggreGate Documentation
and drivers
129
extending AggreGate
Some features provided by the Network Manager are just inherited from the core of AggreGate Platform. At the same time AggreGate Network Manager comprises a number of plugins and drivers that extend the basic AggreGate functionality and provide components for managing and monitoring network devices, services and applications. These components are listed below. Covering nearly all the standard network management requirements, AggreGate Network Manager remains a highly customizable and extendable system, inheriting these merits from AggreGate Platform and its architecture.
is designed for monitoring database servers and executing arbitrary SQL queries.
1043
Discovery Plugin
Discovery plugin provides support for network discovery
1055 .
Syslog Plugin
Syslog plugin provides Syslog 1105 messages monitoring and consolidation
1105 .
NetFlow Plugin
NetFlow plugin supports network traffic monitoring, decomposition, and analysis 1100 using NetFlow protocol .
for
9.3.3 Metrics
Monitoring essentially means gathering information from managed network items and calculating operation characteristics (indicators) for them. It is convenient to classify logically connected individual indicators together in metrics. Thus, each metric characterizes a particular aspect of monitored item's operation. For example, Network Host Availability metric can be defined as one included device online status (a boolean value indicating reachability of the host), response time (time from transmission to reception) and packet loss rate indicators available using ping. Additionally, a detailed traceroute data can be added to the metric. There are many types of network metrics that could be used to monitor networks. AggreGate Network Manager provides several pre-defined commonly used metrics. Moreover, AggreGate platform offers rich facilities to calculate other metrics if you need them. There are two basic methods to calculating metrics for monitored item's behaviour: Current-value monitoring: item's characteristics are obtained for particular moments of time. Statistical monitoring: one or several separate instant characteristics are accumulated and used to calculate an aggregated indicator. AggreGate supports both methods. Monitoring can be configured to periodically poll monitored objects and calculate individual indicators to obtain current values and store them. The stored historical data then can be aggregated to obtain statistical representation of the indicator. By pinging a network host we can get its availability status at particular instants of time. Configuring a device for periodical ping with history enabled produces enough information to calculate statistical availability, i.e. a proportion of time the device was in a functioning condition. This can be an aggregated value for some fixed time intervals or availability for overall monitoring period. Metrics and indicators are used by AggreGate Network Manager tools. First of all, availability indicators are used to present device and service statuses. These and other indicators are also used in various alerts, reports, charts, widgets.
1044
AggreGate Documentation
Operability metric describes the ability of a monitored item to perform its essential functions.
In AggreGate Network Manager availability is checked using simple standard procedures, like pinging a network device, or connecting to a service at specified port. The task is to ensure that a managed item is "alive" at all. Operability monitoring is in contrast more complex and "in-depth" verification ensuring the managed item not "just works", but "works properly". Since the meaning of the term "works properly" differs for different monitored items, operability is usually much more complicated and very often a customizable procedure, like executing a remote script, sending and receiving email messages, etc. In this respect operability monitoring can be characterized as a smart monitoring. Operability checking procedures often provides more then just status of a monitored item, but acquire more detailed data from device. Though the difference between these two metrics can seem somewhat subtle, relative and even subjective, it is still important to distinct these two metrics. Operability can be viewed as an advanced availability metric. For example, availability is only defined for individual services, but not for a whole network device. Availability/operability check procedure depends on the type of monitored items: The basic IP network device availability is based on ping 153 and, optionally, on traceroute 161 services. In other words, availability in this case is defined as IP host reachability: the device is considered available if network packets can be delivered to and from this device. If an IP network device provides other services its availability is calculated as conjunction (logical "AND" operation) of all enabled service availability/operability statuses. Therefore the basic availability mentioned earlier is just an instance of more general procedure described here. Availability of standard IP host services is actually superseded by operability check. By default most services are configured for simpler availability check, but user can configure them service for in-depth operability testing if needed. See Network Host 150 device driver chapter and it subsections describing particular services for some more details. For example, SSH service 163 by default has an empty script and therefore performs only connection, authentication and disconnection operations. This can be considered a basic availability check procedure. User can customize service by specifying a script. Script execution provides rich capabilities for advanced analysis of monitored device and therefore can be classified as operability check. Note, that the operability check includes all the steps executed by basic availability procedure. Hence successful operability check automatically mean service is also available. Resource (CPU, storage, processes, network etc.) availability can be checked via SNMP
1068 ,
WMI
1088
or JMX
1124.
For example, operational state of a network interface can be obtained using ifOperStatus field in ifTAble. Alternatively, corresponding SNMP traps can be used to detect the state changes. Availability/operability of some SNMP-compliant devices can be accomplished using SNMP See Printer
1119 , 1068 .
Wireless Device
1121 ,
and/or VMWare
1114
Monitoring, including availability and operability monitoring, of other device types can require to implement a custom device driver. SQL database device driver 180 was introduced for relational databases. It provides both availability and operability monitoring for JDBC-compliant database management systems. AggreGate Network Manager provides both current availability and statistical availability calculations.
1045
Raw Data
In some cases, quantitative characteristics you want to monitor can be directly fetched from device and used "as is" in monitoring tasks without additional pre-processing. As an example hrProcessorLoad SNMP variable can be mentioned, which indicates "the average, over the last minute, of the percentage of time that this processor was not idle" [RFC1514 - Host Resources MIB]. This value characterizes current CPU utilization and can be use "as is", for example, in charts, or alerts.
Differentiation
But not all the values we want to track could be expressed as raw data 1045 . Often collected values must be processed in a certain way to be useful for monitoring. One of the most common processing operations is differentiation. Here it means calculating difference between current and previous samples.
Differences can be useful per se in some cases, but one of the most frequent and important utilization for this metric is time differentiation 1046 as described below.
1046
AggreGate Documentation
One important issue must be discussed here. Values we use for monitoring are refreshed periodically at a device side with a certain interval. AggreGate Network Manager reads those values during synchronization 126 routine at different moments in time (with respect to its own synchronization period 116 ). Therefore providing too small synchronization period (smaller than refreshing interval at device side) can give irrelevant result: successive samples would be equal (as device had no enough time to refresh the value), and result difference would be zero.
Synchronization period of SNMP variables used in differental metrics should not be smaller then refreshing interval at device side. Refer to specific device documentation to find out how often the device refreshes its indicators and how to customize this. Alternatively, you can just determine it by experiment using AggreGate tools. Knowing the refreshing interval at device side you can adjust synchronization period 116 (at AggreGate server side) accordingly.
Derivation
Derivation is a good and most common example of differentiation
1045
"in action".
Some of the values to be monitored are actually derivatives of the values AggreGate can immediately access. For example, generic SNMP devices provide only total number of bytes received on an interface. So, to get the interface input traffic, which is (averaged) number of bytes received at a unit of time, we have to estimate changes of total received bytes over time, i.e. apply time differentiation. This kind of metrics we'll call time derivatives. The simplest way to calculate a time derivative is to get current and previous values and calculate ratio between their difference and their distance in time. Therefore their implementation is based on differential metrics and is accompanied by the same issue 1046 : derivative values can be zero when synchronization period is too small.
1047
User Datagram Protocol (UDP) Network management protocols, standards and technologies Simple Network Management Protocol (SNMP ) Windows Management Instrumentation ( WMI) Internet Control Message Protocol (ICMP) Syslog NetFlow Java Management Extensions (JMX) E-mail protocols Post Office Protocol (POP) Internet Message Access Protocol (IMAP) Simple Mail Transfer Protocol (SMTP) Other application protocols File Transfer Protocol (FTP) Hypertext Transfer Protocol ( HTTP), Hypertext Transfer Protocol Secure ( HTTPS) Secure Shell (SSH), Secure Copy Protocol ( SCP) Lightweight Directory Access Protocol ( LDAP) Domain Name System (DNS) protocol Dynamic Host Configuration Protocol (DHCP) Remote Authentication Dial In User Service (RADIUS) Database technologies Java Database Connectivity (JDBC ), Open Database Connectivity ( ODBC)
section for more information about configuring your network environment for
1048
As for AggreGate Network Manager components, there are two subsections describing global system settings configuration of managed devices/services 1049 and tools 1052 .
and
1048
AggreGate Documentation
Just
Additional Information
See SNMP Global Settings
178
The Discovery plugin configuration is available in Network Device Discovery node under Drivers/Plugins item in System Tree. AggreGate Server should be restarted for the changes to take effect.
The Syslog configuration includes Syslog Server Configuration and Syslog Message Sources Automatic Discovery settings described below. Note that AggreGate Server should be restarted to apply changes.
parameters.
1049
Description Enables/disables syslog messages monitoring. Specifies the protocol (TCP or UDP) used for receiving Syslog messages. Specifies port to listen syslog messages at. Syslog severity level to AggreGate severity level
882
NetFlow configuration defines two aspects: how data is collected and how the collected data can be presented for users. NetFlow-collecting settings specify communication parameters used by AggreGate Network Manager to accept flow data from exporters. NetFlow Views table in the configuration describes widgets used to present accumulated NetFlow data for human analysis. Refer to NetFlow Charting Widgets section for detals.
1050
AggreGate Documentation
specify unique Device Name, Device Description and Device Driver click OK to register the device. See also Devices
113
The newly added device should be properly configured. This involves common parameters like Host Address, Generic Device Properties and Device Settings Synchronization Options along with specific options that depends on the device type (driver used), services and applications it runs and the role it plays.
Driver-Specific Parameters
Configuration of specific device types are described in the corresponding subsections: Network Host Local File 1051 Local Folder 1051 SQL Database 1052 JMX
1052 . 1051
Monitoring Parameters
Monitor parameters are rather scattered among diverse parameter groups: Synchronization parameters 1050 , namely Synchronization Period, Interrupt Synchronization And Reconnect On Error, Enable Extended Status, Device Dependency Expression in Generic Device Properties. Device Settings Synchronization Options 1050 .
1051
Ping
Ping service 153 is essential for monitoring availability of network host. The default configuration parameters will be simply okay for most cases in practice. But for some specific circumstances you'll have to adjust timeout and possibly other settings.
SNMP
SNMP monitoring is the most universal and widely used way to collect detailed information about particular devices, services and applications in your network. For a particular SNMP-compliant device you should specify polling parameters. They are described in the SNMP Polling Settings 176 section.
BASIC CONFIGURATION
Network devices are often customized by administrators to meet security and other real-life requirements. Therefore you have to ensure that transport protocol, port, SNMP version, read/write community strings, security parameters and PDU size at AggreGate side correspond to agent's configuration. Check also that communication parameters (command retries and timeout) conform the network conditions.
POLLING PARAMETERS
Polling parameters define: What kind of data AggreGate Network Manager will read from the device Polling period Value history storage rules Data to be read is defined by Data To Process 176 parameter. There are two options allowing to balance between data fullness/plenitude and performance penalty your system and network pay for that. If you use All values found by SNMP walk option, you'll get all the data this device provides via SNMP. It can be useful especially if you want to explore new type of device, reveal all the data it exports via SNMP, and add necessary MIBs to the system. But for many cases this will just pollute your system with excessive information, borrow additional memory and other resources resulting in performance degradation. Thus, All available values in MIB directory is the best choice for most cases. Another important aspect of polling configuration is synchronization options. They define how often AggreGate Network Manager poll the device and particular SNMP variables the device provides. Again you have to find a good tradeoff between performance and information accuracy. Use synchronization options for the whole device (a part of Generic Properties) 123 and for particular SNMP variables 115 to configure polling according to your requirements.
Other Services
Refer to particular service articles presented in Network Host configuration.
150
1052
AggreGate Documentation
High Packet Loss Rate 1145 , High Packet Loss Rate 1145 alerts;
1151 , 1118 ,
1152
charts;
Reports and queries 1149 . Some other tools should be parameterized with concrete values to become available for usage. Many of them can be instantiated and configured for a particular device using Setup Monitoring Profile 1052 action. Another example is NetFlow charting widgets that are build from NetFlow views. AggreGate Network Manager is an extendible system. It provides great facilities to modify existing tools and create new ones to specialize system for your own specific needs and requirements. Don't hesitate to use provided tools as basements or examples for creating your own toolset that better conforms with the tasks you solve.
1053
Processes (see Process Monitoring 1094 ) CPU (CPU Performance Monitoring 1092 ) Network Interfaces (see Network Traffic and Bandwidth Monitoring Storage Volumes (see Storage Monitoring
1093 ) 1096 )
VMware (see VMware Server Monitoring 1114 ) Apache (see Apache Web Server Monitoring Printer (see Printer Monitoring 1119 ) Performance (for tracking performance of various services) E-mail (to monitor E-mail 1112 servers) HTTP (to monitor Web 1109 servers) FTP (to monitor FTP
1112 1109 )
servers)
DNS (to monitor DNS 1113 servers) LDAP (to monitor Active Directory 1113 servers) SSH (to monitor SSH servers
1113 ) 161
service)
1113
and UDP
1113
services)
Monitoring groups available for a particular device depend on device type and data it provides. For example: Printer monitoring tools are supported only if the device has prtGeneralTable SNMP variable; Presence of VMware group depends on vmTable variable; Tools from Device Availabilty group can be used for any (IP-based) network device. To generate monitoring tools for a device: 1. Select Setup Monitoring Profile item in the device context menu. 2. Select groups of tools to create. 3. A separate configuration window will appear for each selected option. Add and configure one or more tools for this group.
Configuring WMI devices 1054 Configuring Windows to provide Windows Event Log monitoring Configuring Remote Access to WMI
189 1054
TCP/IP configuration issues 1054 in Windows operating systems Enable ICMP for availability monitoring using Ping and Traceroute.
1054
AggreGate Documentation
Network monitoring process can be significantly slowed down. If the above limit is reached, the following record can be found in Windows Event Log:
1055
ID: 4226 Source: TCPIP Symbolic Name: EVENT_TCPIP_TCP_CONNECT_LIMIT_REACHED Message: TCP/IP has reached the security limit imposed on the number of concurrent (incomplete) TCP connect attempts
Therefore it is not recommended to install AggreGate Network Manager on desktop versions of Microsoft Windows (Windows XP, Windows Vista, Windows 7) for production use in large environments. Server versions of Windows (Windows 2000, 2003 Server, or 2008 Server) do not have this limitations, and should be used instead.
section.
From a practical point of view, discovery supplements, extends and automates tedious task of manual (one-by-one) device addition and configuration 1050 . It helps to form a basis of monitoring infrastructure, and then maintain it in a relevant state. More specifically, device discovery can be used to accomplish several network management tasks: Interactive multiple-device discovery
1062
Single-device discovery 1062 that can be useful when there's a single device you want to add and configure for monitoring. Headless multiple- and single-device discovery 1062 for fully automated discovery operation (e.g., scheduling it to be invoking periodically, or in response to some events). Rediscovering services 1063 running on a particular device that was added earlier. Automatically discover and add 1063 devices that uncover themselves by sending notifications of some kind (e.g. Syslog message, or SNMP traps) to AggreGate server. In AggreGate Network Manager discovery is available via Network Device Discovery and Discover Single Device actions 892 in Devices (users.admin.devices) context, and can be invoked through certain userinterface tools and hooks (like context menus, jobs, favourite items, etc.) as described in Using Discovery 1061 section.
Configure how the search will be performed (accuracy, speed, time limits etc.).
4. Scanning 1060 . The actual network discovery is performed at this step. The system iterates through the list of specified IP addresses and checks the availability of the selected services. II. Result Processing 1060 : Add some or all or the discovered device and configure corresponding services. The stage includes the following steps: 5. Discovery results review 1060 . Select devices to add/update and services to be monitored. 6. Applying the results 1061 . Device accounts are created/updated at this step. Monitored services configuration is updated in the device account settings. 7. Mapping (optional step). If discovery is running in interactive mode, the user is prompted to create a network map 1066 for the discovered devices. 8. Discovery Status Report 1061 . Final discovery results are shown to the user. This includes the list of scanned/ created/updated devices, discovery errors, and single-host scanning tasks 1060 statuses.
1056
AggreGate Documentation
What to scan for? This question is answered at Service Selection are specified along with scan options for each. Where to scan? Host Addresses Specification How to scan? Discovery Tuning accuracy.
1059 1058
step tells how to go about the scanning process concurrency, time limits, and
The way how parameters are set depends on the discovery mode: In a full interactive 1062 mode a wizard drives a user through the procedure of specifying discovery parameters. In single-device interactive
1062
and automatic
1063
1063
are used.
Thus, we can say the Search stage is divided into two parts: parameters 1060 itself i.e. search itself with respect to the parameters provided.
specification
1056
Discover flag denotes service as taking part in discovery (checked) or excluded (unchecked). Timeout specifies a period of time alloted for a single attempt to detect the service during scanning Retries sets a number of attempts to detect the service as available. Service-Specific Options defines service detection parameters used by scan procedure
1060 . 1060 .
The following table provides a list of services AggreGate Network Manager is able to discover, along with associated service-specific options and a short description of discovery procedure. Service Name Ping Discovery Options Discovering Activity
Check whether the host properly answers to Ping (ICMP echo) requests. Check whether SNMP agent is running on the host. This is performed by sending SNMP GETNEXT request (considering the options provided). If the device responds with a correct SNMP value, the service is considered "alive".
SNMP
Protocol Port SNMP Protocol Version Read Community Maximum PDU Size Security Level Username Authentication Protocol Authentication Password Privacy (Encryption) Protocol
1057
Port Timeout
(see also TCP Service Properties 154 )
Check whether device listens the specified TCP ports by attempting to establish a TCP connection within a given Timeout. Only ports that AggreGate Network Manager has successfully connected to will be configured for future monitoring. The Discovery Timeout setting is ignored by this service. No data is send to the host during discovery.
UDP Services
Check whether the host replies when user-defined data is sent to its remote port as an UDP datagram. The port is considered "available" if AggreGate Network Manager has received any reply to its datagram. Only ports that AggreGate Network Manager has received replies from will be configured for future monitoring. The Discovery Timeout setting is ignored by this service.
HTTP
Check whether a web server is available on the given Port by sending GET or POST request with the specified URL to the remote host and reading the reply.
FTP
Port
(see also FTP Properties
160 )
Check if the device accepts FTP connection at the port specified. Check whether the device answers to a predefined DNS lookup request sent to the Port via the specified Protocol (UDP or TCP). If the device correctly answers the request, we deem DNS service "alive". Check whether the device accepts a connection at the specified Port and replies with some data. If the connection is successfully established and a non-empty reply is received, the service is deemed as "alive". Check whether the device accepts a connection at the specified Port. If the connection is successfully established and a nonempty reply is received, we consider the service to be "alive". Check whether the device correctly answers HELO command of Simple Mail Transfer Protocol (according to RFC 821). If the device responds with OK reply (reply code 250), SMTP service is considered available. Check whether the device accepts an SSH connection (via SSH2 protocol ) at the specified Port. If the connection can be established, the service is deemed as "alive". Check whether the device replies to DHCP requests. AggreGate Network Manager sends a DHCP discovery request and waits for a reply. If the reply is received within the discovery timeout period, the service is denoted as available. Check whether the device accepts LDAP connections with the specified parameters. We deem LDAP service "alive", if the connection was successfully established and LDAP auth didn't fail.
165 )
DNS
Port Protocol
(see also DNS Properties
156 )
IMAP
Port
(see also IMAP Properties
158 )
POP3
Port
(see also POP3 Properties
157 )
SMTP
Port
(see also SMTP Properties
159 )
SSH
Port
(see also SSH Properties
163 )
DHCP
MAC Address
(see also DHCP Properties
164 )
LDAP
Radius
Check whether the device accepts Radius authenticate requests . If the device returns an Access Accept (see RFC 2138) response, the service is considered available.
1058
AggreGate Documentation
Radius Secret
(see also Radius Properties WMI
166 )
Parameter Variants
All the services excluding TCP Services, UDP Services and Ping, support multiple parameter variants to be used during scanning. The variants are provided as multiple records in service discovery options table. AggreGate Network Manager tries to find a service using each variant specified. The server stops iterating serice parameter variants when the first "working" variant is found.
The discovery is often performed in large network segments including hundreds or even thousands of addresses. Manual creation of IP lists by adding individual addresses one by one is a very tedious task in these circumstances. Therefore AggreGate Network Manager allows to specify ranges of addresses making its users' life a bit easier. Nevertheless the problem is not solved yet, as network administrators often deal with a big numbers of sub-networks, segments and address ranges, which are still exhausting to type in. Fortunately in most cases there's no need to specify the ranges by hand, as the information is already stored in networking devices, such as routers and switches. AggreGate Network Manager acquire network specifications via SNMP, and uses them to facilitate address specification procedure. Thus the list of addresses to be scanned can be formed in three steps: 1) Specify Seed Router Addresses. Seed router is an SNMP-enabled router or switch that can be used to obtain information about IP subnets available in your network. Each of the specified seed routers is requested for network interfaces it supports, and then the interface addresses every network interface is associated with. As far as an interface address represents a network segment (or a subnet), AggreGate Network Manager gets all the subnets the router aware of. They are included in the IP ranges and subnets list at the next step. Seed routers to be used are specified by IP Address or Host Name values together with SNMP Connection Properties used to acquire the required data from the router/switch. 2) Specify IP Ranges. There are two ways to specify an IP range: a) By an IP address and network mask b) By a pair (start and finish) of IP addresses. All IP addresses belonging to the specified ranges will be added to the list of individual IP addresses to be edited at the following step. 3) Specify individual IP Addresses and Host Names. The user can edit a list of addresses by modifying, removing or adding a particular address. Considering that it's often unnecessary and even pointless to edit large list of addresses (e.g. automatically generated from IP ranges), system offers to skip this step if there are more than a thousand of addresses in the list.
1059
Slow discovery with minimal overhead, suitable for small networks. Optimal value for most networks, average overhead. Large overhead and heavy CPU load (up to 100%). Suitable for large networks.
Device Descriptions
It is often desirable to use descriptive host names instead of flat IP addresses where possible, i.e. automatically assign descriptions to discovered devices. AggreGate Network Manager supports three methods for this: 1. Assign directly a provided IP address (or host name) as a description for the discovered device. This is the fastest but the least descriptive method. In some cases network administrators prefer to describe device accounts with their IP addresses as they can form a well-composed system and provide uniform host-identification structure.
1060
AggreGate Documentation
2. Use reverse DNS name resolution to find a fully qualified domain name for the provided IP address. Reverse lookup queries can be time-consuming, so this method can increase the overall discovery time. 3. Take advantage of SNMP data by utilizing SNMP sysName variable as device account description. It keeps "an administratively-assigned name for this managed node" (see RFC1213), and often (by convention) this is the node's fully-qualified domain name. SNMP requests are typically faster than reverse DNS lookup, so this method can improve discovery performance compared to the previous method. AggreGate Network Manager will still use reverse DNS lookup for devices that doesn't support SNMP.
9.5.1.1.4 Scanning
Scanning is the key step of discovery process that performs the actual detection of services available on network hosts. Given a particular address, AggreGate Network Manager checks availability of the services selected for the discovery. This is called an single-host scanning task. It comprises the two steps: 1. Checking Ping service 1056 . ICMP Echo Requests are used to test device availability. If the device correctly responds to the ping requests, we deem the device as available ("alive"), and continue with the next step of scanning. Otherwise, depending on the value of Discover Ping-Failed Devices 1059 parameter we either (if the Discover PingFailed Devices parameter is set to true) go to the next step, or just consider the device unavailable skipping the next step (if the Discover Ping-Failed Devices is false). 2. Checking other services. The system tries to detect the availability of every service selected for discovery. Note, that the overall scanning process is limited by Maximum Total Discovery Time are limited by Maximum Single Host Discovery Time 1059 .
1059 ,
Interactive discovery wizard also prompts user to create a network map Report 1061 , summing up all results of the discovery.
Automatically detected device type. System operator may change it based on the type/ purpose of the real device. A selectable list of services to be monitored and their parameters: Field Use Service Service Name Service Parameters Description Check if the service should be monitored. Service name and/or description. Service-specific monitoring parameters.
1061
In headless mode accounts for all discovered devices will be added/updated. All discovered services will be enabled for monitoring using service-specific settings set up in job parameters 266 .
and result
basic information for the newly created device accounts, including their description and type; notes for the updated existing device accounts; enabled/disables services. Empty value in the field means (depending on the value of Finished field): if Finished value is No, an empty Result value shows, that the scan of the corresponding device were not started (due to discovery process interruption, e.g. because of Maximum Total Discovery Time limit exceeded); if Finished value is Yes, an empty Result value shows, that nothing changed for the device (caused by either no alive service was detected, or discovery result was ignored as not selected to be applied).
1062
AggreGate Documentation
Just as any AggreGate action 892 , discovery can be started in one of two modes 893 : either interactive, or headless. The latter allows to automatically repeat discovery with specified parameters (for example scheduling 266 it), while the former provides a better control over the process being supported supported by a wizard that allows to control discovery process 1055 by specifying parameters for every discovery step, or, alternatively, allowing to cancel the discovery. In general, discovery are implemented as Network Device Discovery and Discover Single Device actions 892 placed in Devices (users.admin.devices) context. The actions can be invoked using certain user-interface tools and hooks (like context menus, jobs, favourite items, etc.). The following table introduces types of discovery, classified into four groups:
Multiple-Device Discovery Action Interactive Mode Headless Mode Interactive Multiple-Device Discovery 1062
1062
Follow the links for the details on how to use all discovery types.
) action
892
from
or Related Actions
786
pane of Devices (
626
) context
863
784 .
from a
or Related Actions
786
pane of Devices (
) context
863
784 .
1063
o Make sure selected Action is Network Discovery. o Specify the proper Discovery Click OK to create the new job. Add one or more Triggers to define discovery schedule. Parameters.
950 .
Topology browsing
Prerequisites
To allow AggreGate Network Manager successfully discover the topology links in your network, make sure that the following conditions are met: You've completed network device discovery 1055 based on scanning subnets of your IP networks. Another option is to manually create accounts for all or some of your network devices.
1064
AggreGate Documentation
113
Accounts of all devices that support SNMP, especially switches and routers, have SNMP polling enabled and SNMP community names or SNMP v3 auth credentials properly configured. Synchronization with
126
of all devices is successfully completed (in most case, fully synchronized devices are represented
784 ).
The link always connects two devices, but only one of their accounts will contain information about this link.
The part of topology database related to a certain device can be edited by launching Edit Device Properties from a network device context and switching to a Topology ( ) tab:
677
action
1065
Source Interface . Number of network interface on the source device. Target Interface. Number of network interface on the target device. Description . Custom link description.
However, this widget is fully customizable as any other AggreGate's data management tools. It's possible to change: The subset of network devices shown on the topology map Topology graph layout type and parameters
1066
AggreGate Documentation
Map type (level 2, level 3, or combined) Map update period And many other settings
Maps can be fully customized to depict the network in the most appropriate way: You can set up background color, texture or image. Network devices can be presented by either predefined or custom images. Device status can be represented by text labels and/or encoded by color. Maps can be nested to vary levels of detail (meaning, you can drill down and zoom in). The AggreGate Network Manager distribution includes hundreds of dynamic vector images that can be used on network maps. Here is an example illustrating just a few of them:
1067
Disables polling of network hosts that are not available from the AggreGate Server due to failures of intermediate device(s) Suppresses alert initiation by devices that are currently unavailable due to intermediate device failures The event masking technology is based on device-to-parent relationships that are defined by Device Connectivity model 303 included into AggreGate Network Manager distribution. This model: Adds Parent Devices table and Connectivity Expression variable to every Network Host
150
device.
Sets Dependency Expression 124 property of every newly created network host device so that its connectivity check is performed in the beginning of every synchronization cycle 126 . Device synchronization (polling) is disabled if connectivity check fails. Configures connectivity check functions so that the device is deemed unavailable due to parent device failures if ping to device itself and its parents fails.
1068
AggreGate Documentation
section.
154 .
In AggreGate Network Manager SNMP support is provided by Network Host device driver SNMP read and write operations SNMP-compliant device monitoring by:
o polling (periodical reading of full of partial management information available via SNMP) o receiving and processing SNMP traps managing standard and custom SNMP devices caching management information on the server storing management information in database managing monitoring options: o synchronization periods o polling strategies: all OIDs, OIDs recognized by MIB directory, or the important ones only o running automatic actions in response to SNMP traps MIB management, including: o a set of standard MIBs o tools for adding and configuring usage of custom MIBs SNMP is used in network discovery: to find seed routers and get network topology information to discover SNMP-compliant devices to get some of their properties Various practical aspects and details of SNMP utilization in AggreGate Network Manager are covered in Using SNMP section.
1070
1070 .
1069
SNMPv3 (also known as STD0062) enhances security by adding confidentiality, integrity and authentication features. This SNMP version is defined by RFC 3411 -- RFC 3418. IETF designated SNMPv3 a full Internet Standard (the highest maturity level for an RFC) and recognizes it as the current standard version of SNMP. In practice, all the mentioned SNMP versions are currently widely used. RFC 3584 describes general aspects of coexistence between these SNMP versions.
OBJECT IDENTIFIERS
Object Identifier (OID) uniquely defines a managed object. Managed objects are organized into a treelike hierarchy. Object ID represents the place of a particular object in this hierarchy as a series of integers based on the nodes in the tree, separated by dots (.). This is known as a numeric form of OID. There's also a human-readable form, that represents each OID as a series of names. Example: A textual description of a managed entity is represented by an object with numeric ID 1.3.6.1.2.1.1.1, which corresponds to a "human-readable" name iso.org.dod.internet.mgmt. mib-2.system.sysDescr.
TYPE
A type of managed object within context of SNMP is defined by a subset of Abstract Syntax Notation One (ASN.1). ASN.1 specifies a machine-independent form of data representation and transmission between managers and agents. There are several basic types defined. They can be used to to define more complex objects, containing other objects and so on, thereby composing parts of treelike hierarchy we mentioned a bit earlier. The descriptions of managed object are typically grouped together according to a specific management task, device, or vendor. These descriptions are stored in MIB files. They are used by network management system to monitor and manage network devices, services, tasks, etc. For example, AggreGate Network Manager is provided with a set of the most important MIBs out of box. Vendor- or task-specific MIBs can be added to extend functionality of <%AGNMRefer% >. to the Managing SNMP Files 1080 sections for more detailes about MIB files management in AggreGate Network Manager. In SNMP a set of related variables can be grouped together to form larger structures represented as tables. Thus, objects can contain values of two kinds: scalars or tables. Scalars have a single value. For example, the iso.org. dod.internet.mgmt.mib-2.interfaces.ifNumber (1.3.6.1.2.1.2.1) has a scalar number that represents the total number of interfaces (ports) available on a network device. Tables provide several records with the identical structure. For example, iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable (1.3.6.1.2.1.2.2) variable contain a list of interface entries, each representing details about a particular network interface, like its display string, physical address, bandwidth etc.
ENCODING
Managed objects are encoded into string of octets to be transmitted over network. The encoding and decoding algorithms used in SNMP are described by Basic Encoding Rules (BER).
1070
AggreGate Documentation
READ OPERATIONS
Monitoring tasks can be performed by read operations. Here are included polling operations initiated by manager and unsolicited notifications (events) sent by agents. Polling operations are implemented as various get operations (e.g. GetRequest, GetNextRequest, GetBulkRequest), while events are presented by Trap and InformRequest operations.
WRITE OPERATIONS
Control operations are implemented as alterations, i.e. write operations, of SNMP variables exposed by managed agent. Specifically, SetRequest operations are used to initiate a remote modification of agent's variables.
1071
AggreGate requests complete information about all available SNMP objects (OIDs) via an SNMP Walk procedure (i.e. multiple GetNextRequest calls). The required values are periodically read (see also Synchronization 126 ) and all the acquired values are cached (see also Settings Cache 115 ). The default synchronization period for SNMP devices is 24 hours. Some objects are polled with much shorter periods, e.g. network interface and processor statistics data are read every 15 minutes and every 30 seconds, respectively. SNMP is intensively used by AggreGate Network Manager for managing network items. This involves several tasks: Configuring
1071
Monitoring 1084 network items by reading the values of their SNMP variables, and listening to management events sent as SNMP traps. Calculating characteristics of network items, representing them in a handy form, analyzing, detecting, problems, making decisions using the collected SNMP data 1086 . Controlling
1086
the configuration and state of managed items by changing values of SNMP variables they provide.
1087 .
Discovering devices and services, where SNMP is used to obtain data from routers and switches, and to find SNMP agents.
Agents Configuration
Typical SNMP agent is implemented as a software component running on a network device. The software component should be properly installed and configured. The installation/configuration procedure heavily depends on the type of network system and software environment the agent will be living in. Refer to the appropriate section listed below to setup SNMP on a particular type of network system. The following information is required for configuration: Community names in your network Trap destinations for each community IP addresses and computer names for SNMP management hosts See the following chapters for detailed SNMP agent configuration instructions: Windows systems 1072 Linux systems
1075
Solaris systems 1076 Cisco Devices 1077 Microsoft SQL Servers 1078 Lotus Domino Servers 1078 Oracle Servers 1078
1072
AggreGate Documentation
Devices can have variants of the access and trap parameters. For example, Cisco devices supports different community strings for different parts of the MIB to allow fine-grained access control for paticular groups of variables. Many vendors allow you to place restrictions on the hosts that are allowed to make SNMP requests, providing another level of security, additional to community strings. There is a host of configuration options you can meet while managing network systems from various vendors. Refer to your device/software manuals, or other types of documentation available, like Request for Comments (RFC).
Security Issues
Don't forget to change default community strings to the values that are hard to guess. Don't choose dictionary words, use mixed-case letters and numbers instead. Use different strings for read and write communities. A serious problem is that the read and write community strings are sent as a plain text via SNMPv1 and v2. Therefore, the community strings are potentially available to anyone with access to a packet sniffer, i.e. almost anyone on your network with a PC and widely available software. You can limit the devices that can make SNMP requests, if your agent supports this. That way, even if someone gets the community strings, he'll have to spoof the IP address of one of your management stations to do any damage. This will reduce the risk, but does not guarantee safety. A better solution is to prevent the SNMP packets from being visible outside of your management network segment by configuring your routers and firewall accordingly. Unfortunately, it is not always possible to establish a separate management network, or use it from different locations. Consider VPN solutions or some form of tunneling to make your management traffic private. Many devices can generate authentication-failure traps when someone attempts to access them using incorrect community strings. If your devices support this feature, use it to detect unsolicited access to your devices. Finally, SNMPv3 fixes most of the security problems. Particularly, it ensures that all the community strings are encrypted.
Refer to appropriate subsection to enable SNMP on: Windows Server 2008 1073 Windows Vista and Seven 1073 Windows XP, 2000, or 2003 1073
1073
1074
AggreGate Documentation
4. Click Have Disk in the Select Network Service dialog box 5. Type the path to the tools\reskit\netadmin\snmp directory on your computer's CD drive in the Install From Disk dialog box and then click OK 6. Select Microsoft SNMP agent from the Models list in the Select Network Service dialog box and then click OK This completes the installation process. This also implements the Host Resources MIB automatically. For configuring SNMP agents to respond to SNMP requests, refer to Configuring 1074 SNMP agents 1074 .
Refer to appropriate subsection to enable SNMP on: Windows XP, 2000, Server 2003, Server 2008, Vista, and Seven Windows
1074 NT 1074 1072 1074
For details about enabling SNMP agents in Windows systems, refer to Enabling
1072.
Configuring SNMP Agent on Windows XP, 2000, Server 2003, Server 2008, Vista, and Seven
STEPS TO CONFIGURE SNMP AGENT
1. Click Start , point to Settings, click Control Panel. 2. Under Administrative Tools, click Services.
3. In the Details pane, right-click SNMP Service and select Properties. 4. In the Security tab, select Send authentication trap if you want a trap message to be sent whenever authentication fails. 5. Under Accepted community names , click Add. 6. Under Community Rights , select a permission level for this host to process SNMP requests from the selected community. 7. In Community Name, type a (case-sensitive) community name, and then click Add. 8. Specify whether or not to accept SNMP packets from a host: To accept SNMP requests from any host on the network, regardless of identity, click Accept SNMP packets from any host. To limit acceptance of SNMP packets, click Accept SNMP packets from these hosts, click Add, type the appropriate host name, IP or IPX address, and then click Add again. 9. Click Apply to apply the changes.
3. In the Details pane, right-click SNMP Service and select Properties. 4. In the Traps tab, under Community name, type the (case-sensitive) community name to which this computer will send trap messages, and then click Add to list. 5. Under Trap destinations, click Add. 6. In the Host name, IP or IPX address field, type host name or its IP address of the AggreGate Server server to send the trap to, and click Add. 7. Repeat steps 4 through 6 until you have added all the communities and trap destinations you want. 8. Click OK to apply the changes..
1075
9. To specify whether to accept SNMP packets from any host or from only specified hosts, click one of two options: Accept SNMP Packets From Any Host , if no SNMP packets are to be rejected on the basis of source computer ID. Only Accept SNMP Packets From These Hosts, if SNMP packets are to be accepted only from the computers listed. To designate specific hosts, click Add, type the name or address of the host from which you will accept requests in the IP Host or IPX Address box, and then click Add (repeat this step for any additional hosts). 10. In the Agent tab, specify the appropriate information (such as comments about the user, location, and services). 11. Click OK to apply the changes.
Refer to appropriate subsection to enable SNMP Agent on Linux system using one of two ways: Using RPM package
1075
1076
AggreGate Documentation
4. If there are already installed version in your machine, remove them using the command:
rpm -e <version of net-snmp listed as the output for previous command> --nodeps
5. If there are no previously installed versions in your machine, then execute the following command to install the new version:
This completes the installation process. For configuring SNMP agents to respond to SNMP requests, refer to Configuring SNMP agents 1076 .
5. Execute the following four commands from the directory where you have extracted the ucd-snmp ( directory_name is the directory to install SNMP agent; preferably choose a directory under /root, as directories /usr and /local might contain files of an older version of SNMP):
For details about enabling SNMP agent in Linux systems, refer to Enabling SNMP Agent on Linux System To configure SNMP Agent you have to modify snmpd.conf file: After the line: insert the line
1075.
# group context sec.model sec.level prefix read write notif access notConfigGroup "" any noauth exact systemview none none access notConfigGroup "" any noauth exact allview none none
/etc/rc.d/init.d/snmpd restart
To install SNMP, follow these steps: 1. Download the latest version of SNMP from http://heanet.dl.sourceforge.net/sourceforge/net-snmp/ucd-snmp-4.2.6.tar.gz 2. Extract the file using following command: 3. Login as root user.
1077
5. Execute the following four commands from the directory where you have extracted the ucd-snmp ( directory_name is the directory to install SNMP agent; preferably choose a directory under /root, as directories /usr and /local might contain files of an older version of SNMP):
For details about enabling SNMP agents in Solaris systems, refer to Enabling SNMP Agent on Solaris System To configure SNMP Agent do the following: 1. Stop the agent if it is running already using
1076.
/etc/init.d/init.snmpdx stop
<Installation
Replace the line with
Directory>/sbin/snmpd
/etc/init.d/init.snmpdx start
#end
1078
AggreGate Documentation
In the console tree, click Services and Applications and then click Services Right-click SQLSERVERAGENT and click Start
Configure the Lotus Domino SNMP Agent as a service using this command: Start the SNMP and LNSNMP services using these commands:
3. Check that the HOSTS and LMHOSTS.SAM files in <WINDOWS>\SYSTEM32\DRIVERS\ETC (where <WINDOWS> designates path to windows installation) contain the mappings of IP addresses to host names for all computers in the SNMP setup. This will significantly improve system performance, even if you use DHCP and WINS.
1079
section.
There are several tabs presenting various aspects of SNMP usage in AggreGate Network Manager as described below.
Global Configuration
The Global Configuration tab includes SNMP traps properties for: enabling/disabling SNMP notification processing; transport protocol used to receive notifications; port number used to receive notifications; local Engine ID to be used with SNMP version 3 notifications. See also Network Host driver's SNMP Monitoring sections
154
for details.
MIB Directory
MIB Directory tab contains the list of loaded MIB files and MIB compilation errors. This topic is covered in the
Managing MIB Files 1080 section.
1080
AggreGate Documentation
MIB files describe pieces of management information that agents can provide. A set of MIB files loaded and compiled AggreGate Network Manager forms a MIB configuration, used to interpret the data received from SNMP agents. If the data obtained is not properly described, manager will be unable to process it. Such data will be displayed in "raw" form. Therefore, a full and correct MIB configuration is extremely important for successful network monitoring. There are thousands of MIB files available for various network resources. They are periodically updated to add new functionality, remove ambiguities and fix defects. Full-fledged MIB configuration functionality allowing to add and use vendor-specific MIBs it essential for enterprise network management solutions.
LOAD ORDER
Definitions in MIB files can reference definitions from other MIB files. Accordingly, a MIB file can be dependent on another MIB in the directory. Therefore the loading order of MIB files is important. Incorrect order can greatly slow down MIBs loading and lead to compilation errors caused by to unresolved references. AggreGate Network Manager loads MIB files in the same order as they appear in the MIB Files Directory table. If you want to change the order, move rows up or down.
1081
Enabling SNMP
Ensure SNMP is enabled on the device you are going to manage. SNMP is enabled by default for manually added devices. For discovered devices, SNMP is enabled or disabled automatically according to the service scan results. If SNMP is disabled for the discovered device, or the enabled SNMP service is "offline", try the following: 1. Ensure the IP Address or Host Name field in the Host Address tab is filled correctly. 2. Make sure that the device is actually SNMP-compliant. 3. Ensure antivirus software and/or firewalls do not hinder the SNMP communications. 4. Recheck SNMP settings you specified: transport protocol, port, community strings, etc. (see the details bellow) Being confident that all the parameters are correct, enable SNMP service if it is disabled, or invoke synchronization. Mind, that full synchronization with an SNMP device can take a significant amount of time. Alternatively, you can try to rediscover SNMP service on this device.
1082
AggreGate Documentation
The SNMP properties are used to establish communication with SNMP agent. Thus, both sides should be configured identically. The SNMP properties must conform the agent configuration in order to successfully communicate with it.
SNMP over TCP is primarily defined to support more efficient bulk transfer mechanisms. It is possible to exchange multiple SNMP request/response pairs over a single (persistent) TCP connection, even sending multiple SNMP messages to an agent before receiving responses. SNMP over TCP is intended to be used when the size of the transferred data is large. This is where TCP can be more effective then UDP. But in a whole, to be effective, using TCP as transport for SNMP polling needs a fine IP configuration considering the environment circumstances it is used in. Another concern is reliability. SNMP over TCP gives a reliable exchange of SNMP messages between SNMP engines. In particular, TCP guarantees (in the absence of security attacks) that the delivered data is not damaged, lost, duplicated, or delivered out of order. At the same time these features of TCP does not guarantee that the data sent was eventually received and processed in any way by manager. To ensure that, confirmed operations should be used. The choice between UDP or TCP does not impact security significantly, as both variants are basically vulnerable: for
1083
example, UDP is subjected to IP spoofing attacks, while TCP may introduce vulnerabilities to denial of service attacks. In either case other security options 1070 should be considered.
PORT
By default SNMP uses port 161 for sending and receiving requests. If a device has a non-standard SNMP configuration, you can specify another port number.
SNMP VERSION
AggreGate Network Manager supports SNMPv1, SNMPv2c and SNMPv3. Select the one appropriate for the particular device.
COMMUNITY STRING
Don't forget to setup the Read Community and Write Community properties correctly to get a read and write access to the device management information via SNMPv1/SNMPv2c.
DATA TO PROCESS
Many SNMP agents expose multitudes of SNMP variables. Not all of those variables are used in practice. Reading, processing and storing the variables that are not actually utilized is a waste of network, processor and memory resources. Obviously, it is a good idea not to read all the variables available, but access only those of them that are actually useful for monitoring a particular item. But what is useful may vary depending on the user tasks and aims. To meet different user requirements, AggreGate Network Manager provides two options: AggreGate Network Manager can read, process and store all the values the SNMP agent exposes. This option, for example, may be used for exploration of an unknown device. Another options is processing only the values described by loaded MIB files 178 , ignoring unrecognized ones. This can be a good choice if you want to have detailed information about the monitored device.
SECURITY OPTIONS
These options are available only for SNMPv3. A user can specify security level, username, passwords and protocols for authentication and encryption. Refer to SNMP security options description 176 for details.
Synchronization Options
AggreGate Network Manager polls monitored items periodically. The interval between adjacent requests is a very important monitoring parameter. It defines balance between monitoring data accuracy/precision and processor/ memory/network load. Furthermore, the polling interval should not be shorter than refresh period at the agent side (see Data Processing 1045 section). The polling in AggreGate Network Manager is implemented as synchronization 126 ; polling interval is represented by the Synchronization Period (refer to Generic Device Properties 123 ) and can be customized using Device Settings Synchronization Options 115 . You can specify custom synchronization period for individual SNMP variables.
1084
AggreGate Documentation
The default synchronization period for SNMP devices is 24 hours. Some variables are customized with specific synchronization periods, e.g. network interface and processor statistics data are read every 15 minutes and every 30 seconds, respectively. You can specify your own periods for these and other variables.
1085
sections.
Thereby AggreGate Network Manager allows one to organize event-based monitoring for virtually any custom SNMP device and combine 1084 them with SNMP polling if required.
Implementation
When AggreGate Network Manager receives an SNMP notification, it fires a trap event 880 in Administration The event data table is filled with the following properties (see RFC 1215 RFC 1157 for details): SNMP Notification Description Event Field Agent IP Address or Host Name SNMP Version Notification Type Enterprise or Trap OID Generic Trap Type ID Specific Trap Type ID Device Uptime Trap OID Variable Bindings Engine ID Address of the originator system of this SNMP notification. Version of the received notification. Type of the notification (Trap or Inform) Identifies the type of managed object that generates the trap. Indicates generic trap type, one of: coldStart (0), warmStart (1), linkDown (2), linkUp (3), authenticationFailure (4), egpNeighborLoss (5), enterpriseSpecific (6) Specific trap type. It is available if Generic Trap ID is ENTERPRISE_SPECIFIC (6). The amount of time (1/100 of second) that has elapsed between the last device reinitialization and generation of the notification. Trap identification for SNMP version 2(c) and 3 notifications. Variable bindings associated with the notification. Authoritative engine ID of the notification.
652
context.
1086
AggreGate Documentation
CHANGING CONFIGURATION
Changeable configuration settings for a managed SNMP device/service/application are exposed as writable variables
1087
One of the simplest examples of configuring via SNMP is setting a "standard" value, e.g. one of described in RFC 1213. Say, to alter device description you can set value of sysDescr (1.3.6.1.2.1.1.1) to the desired string value. Configuration changes can involve much more sophisticated procedures including related series of changes, table row creations, etc.
ACTION EXECUTION
There are some actions that can be performed depending on concrete types of managed items. All those actions are still performed as SNMP Set operations for certain OIDs. For example, to reload a Cisco switch you can write value 2 (representing reset operation) to a sysReset ( 1.3.6.1.4.1.9.2.9.9) variable.
Be careful changing parameters of real devices! Ensure you don't modify a parameter that is critical to the state of the system. You can automate the repetitious controlling operations using standard AggreGate Network Manager tools, e.g. widgets 312 , scripts 628 , alerts (their Automatic Correction Actions 227 ) etc.
Input Format
The action can be configured with parameters of the following format: Name Type Description Details
1088
AggreGate Documentation
Notification Type IP Address or Host Name Port Protocol Timeout Enterpised or Trap OID Variable Bindings
Notification type: Trap or Inform. Address of the trap's receiver. Port the trap will be sent to (162 by default). Transport Protocol to be used to deliver trap (UDP or TCP). Timeout before a confirmed request is resent or timed out (5 seconds by default). Trap's Enterprise for SNMP version 1, or Trap/Inform's OID for SNMP versions 2(c) and 3. Variables bindings to be associated with the trap. Bindings are defined in a table with the following format: Name variableBindingsOID variableBindingsTyp e Type String Integer Description Variable OID Variable Type Variable Value
variableBindingsValu String e snmpVersion community userName Integer String String SNMP Protocol Version Community Username SNMP version.
Community string (for notifications of SNMP versions 1 and 2) Username for version 3 notifications. Note, that system tries to find authentication and privacy passwords in SNMP Users Table 179 (using specified Username and Engine ID). Thus, a record for the user must exist in the table. Binary-encoded engine ID (for version 3 notifications). Security level for version 3 notifications.
engineId securityLevel
Data Integer
Output Format
The action returns nothing for Traps. For Informs, the response is returned in the following format: Name Type Description Detials Data returned as response to Inform. Bindings are defined in a table with the following format: Name variable value errorMessage String Error Type String String Description Variable Value
1089
Refer to Microsoft's MSDN site for WMI architecture, availability on different operating systems, and other details.
Remote Management
WMI can be used to monitor and manage Windows computers remotely. Remote WMI connections are made through Distirbuted COM (DCOM). Remote computer should be properly configured to allow DCOM connections and execution of WMI requests. Refer to Configuring Remote Access to WMI 189 and Configuring DCOM for Remote Access 1327 sections for details.
Events
Events are used by manageable resource and WMI infrastructure to notify monitoring/management systems about different kinds of changes. Event consumers should subscribe for events of interest specifying a filter. The filter describes conditions under which the consumer wants to receive notifications.
1090
AggreGate Documentation
1091
Notice that if you use WQL, you can fetch only printers that satisfy some condition by adding a filter clauses to the request.
Rename Printer
Having Win32_Printer class enabled in device assets, you can invoke its methods to control printers. For example, to rename a printer, you can invoke RenamePrinter action available (just as all other printer actions) from Win32_Printer sub-menu in device context menu.
153
Current Availability
The following current availability indicators are supported by AggreGate Network Manager: Host Online/Offline Status is monitored by Ping 153 service, and can be accessed as Ping service monitoring results 153 or using these tools: Device Offline 1145 alert, Offline Devices 274 and Device Status Summary 274 queries.
1092
AggreGate Documentation
Status of network interfaces on the host (tracked via SNMP). Related tools provided by AggreGate Network Manager: Interface Down 1098 and Administrative Interface Down 1098 alerts, Down Interfaces 1150 report/query. Device Response Time is monitored using Ping 153 service (accessed via Ping service monitoring results 153 ). Related tools: High Response Time 1145 alert, Ping Time 1151 and Response Time Top 10 1152 charts, and Response Time 1149 queries/reports. Packet Loss Rate is monitored with Ping 153 service (also accessed via Ping service monitoring results 153 ). See High Packet Loss Rate 1145 alert, Ping Packet Loss 1152 and Packet Loss Top 10 1152 charts, and Packet Loss Rate 1150 queries/ reports . Host Reachability can be monitoried using Traceroute network route to the host.
161
Virtual Machine availability can be monitored using VMware Server monitoring State 1115 alert.
1114
Printer availability can be monitored using Printer monitoring tools: Printer State Cover 1120 alerts and Printer Information 1120 widget.
1120 ,
Printer Marker
1120,
Printer
Service Availability can be monitored using Service Offline alert 1145 and Services Status table. The Services Status table is accessible via Favourites 697 item and represents availability/operability 1044 statuses of all services running on all registered devices. Status of a service is presented with colors: grey if the service is disabled (i.e. not configured for monitoring), green if it is online, and red if it is offline.
Statistical Availability
Availability as a statistical value is the proportion of time a system is in a functioning condition.
Device availability is measured for a specific time interval as percentage: 100 - packetLossRate, where packetLossRate is percentage of failed ping requests. In AggreGate Network Manager the measure of statistical device availability for time intervals is represented by Availability Not 100% 1150 report.
AVAILABILITY CHART
The Network Device Overview dashboard 1151 includes an Availability Chart indicating the average availability percentages grouped by different time periods (hours, days, etc.)
storage units (memory, hard disks, optical disks etc.) -- see Storage Monitoring software running on the host (processes) -- see Process Monitoring
1094 .
Network performance 1096 and application/service 1108 monitoring (often regarded as a part of performance monitoring) are described separately. Several device performance aspects, including gauges for CPU Load, Physical Memory Usage, Virtual Memory Usage can be displayed in real-time in a single window using IP Host Information widget 1154 . Another stratum of performance monitoring -- concerning virtualization technologies -- should be mentioned here. AggreGate Network Manager monitors various metrics of VMware ESX server virtual machines performance. Being described in a separate dedicated section (see VMware Server Monitoring 1114 ), virtualized infrastructure performance monitoring tools are also mentioned in the corresponding subsections below.
1093
According to RFC 1514 CPU load is the average, over the last minute, of the percentage of time that this processor was not idle. AggreGate Network Manager uses hrProcessorLoad SNMP variable to get the average CPU load. The variable is part of hrProcessorTable, providing separate data for all host's processors. The SNMP-based CPU Load monitoring tools include: CPU Load chart
1152 1152
CPU Load reports/queries 1150 CPU Load Top 10 Auto Run action
625
The CPU Load chart 1152 can be created and configured using Setup Monitoring Profile action -- see CPU group in Setup Monitoring Profile Action 1052 . System administrators can create other tools (e.g. alerts, widgets, etc.) for interpreting data provided by hrProcessorTable SNMP variable. CPU utilization on VMware ESX servers by particular virtual machines can be monitored using Virtual Machine CPU Load alert 1115 and Virtual Machine CPU Utilization chart 1117 .
alert
Storage Usage (SNMP) 1152 chart Memory Usage Top 10 (SNMP) Memory (WMI) 1146 alert Disk Free Space (WMI) 1146 alert Memory Usage 1150 reports/queries Disk Volumes Utiliaztion Top 10 (SNMP)
1152 1152
charts
charts
reports/queries
625
1094
AggreGate Documentation
The Storage Space alert 1146 and Storage Usage chart 1152 can be created and configured using Setup Monitoring Profile action -- see Storage Volumes group in Setup Monitoring Profile 1052 . Storage utilization of VMware virtual machines can be monitored using VMware Server monitoring Virtual Machine Disk Performance 1117 chart Virtual Machine Memory Usage 1117 chart Virtual Machine Absolute Memory Utilization
1115 1114
tools, namely:
alert
Virtual Machine Relative Memory Utilization 1115 alert Virtual Machine HDD Read Rate Virtual Machine HDD Write Rate
1115 1116
alert alert
Process Name
hrSWRunName
A textual description of this running piece of software, including the manufacturer, revision, and the name by which it is commonly known. A description of the location on long-term storage (e.g. a disk drive) from which this software was loaded. A description of the parameters supplied to this software when it was initially loaded. Type of this software (with numerical code): Unknown (1) Operating System (2) Device Driver (3) Application (4)
Process Status
hrSWRunStatus
The status of this running piece of software (with numerical code): Running (1) Runnable (2) -- waiting for resource (i.e., CPU, memory, IO) Not Runnable (3) -- loaded but waiting for event Invalid (4) -- not loaded
CPU Load, %
Derivative 1046 of
hrSWRunPerfCPU divided
by CPU count Memory Usage, Kilobytes
The average number of centi-seconds of the total system's CPU resources consumed by this process per second. The number of host's CPUs is provided by hrProcessorTable SNMP variable. The total amount of real system memory allocated to this process.
hrSWRunPerfMem
1095
Memory Usage, %
The percentage of total amount of main memory on the host ( hrMemorySize) allocated to this process ( hrSWRunPerfMem).
To access host's processes information, select View Device Status item of the device's context menu, and go to Process List tab.
1152
These alert and charts can be created for a particular device using Setup Monitoring Profile group there).
Process instance is identified by name, and (optionally) associated path and parameters.
While configuring chart for a host, you can select Process Name from a drop-down list of processes currently running there, or type it in. Process Path and Process Parameters fields can be optionally left unset (i.e. NULL). In this case, processes with specified name and any path/parameters are included.
1096
AggreGate Documentation
Note that "unset" ("NULL") and "empty string" are different values. If you don't want to filter processes by path and/or parameters, make sure the corresponding fields are indicated as <Not set> which indicates null value. Blank field means an empty string is entered and the property will be used to filter processes out. For example, if Process Path is indicated as <Not set> and Process Parameters field is blank, the chart will count processes having no process parameters (empty string) and will ignore their paths. To set NULL value for a field you can use "Remove Value" item in the field's context menu.
trigger expression
217
in order to:
180
Measure execution time of any query provided by a database device driver Measure execution time of an SSH script
1113
Measure load time of web page retrieved by HTTP device driver Measure latency of any other service, such as DNS or DHCP
See description of alert trigger expression that analyzes device variable I/O duration here
238 .
of ifInOctets. of ifOutOctets.
1097
Calculated as a ratio between Incoming Traffic and its interface speed (ifSpeed field). Calculated as a ratio between Outgoing Traffic and its interface speed (ifSpeed field).
280 :
You can review this information for a particular device executing this query, for example, in Query Executor
Interface Traffic Top 10 1152 and Bandwidth Usage Top 10 Interface Errors chart 1098 Interface Discards chart
1098 .
charts
You can also see this data in table form using reports, namely: Interface Traffic Summary
1099
report
1099
reports
1099
Interface Bandwidth Utilization Over 50% and Interface Bandwidth Utilization Over 90% Interface Bandwidth Utilization Top 10 and Interface Bandwidth Utilization Top 50
1099
reports
reports.
Functional characteristics of individual interfaces on routers and switches can be used as to detect network problems. AggreGate Network Manager provides several alerts for that: Network Interface Utilization alert Network Interface Down alert
1098 1098 . 1098
You can create custom tools for monitoring and analyzing activity of network interfaces.
1098
AggreGate Documentation
1151 .
The chart is available on the Network Device Overview dashboard for any device using Setup Monitoring Profile action 1052 .
1099
1100
AggreGate Documentation
It provides flow
1101
Cisco Devices
For information about configuring NetFlow on Cisco devices refer to documents you can find on official website (www. cisco.com); a good starting point is Configuring NetFlow and NetFlow Data Export.
Other Vendors
There are other vendors who produce network device supporting NetFlow including 3Com (HP Networking), Enterasys Networks, Extreme Networks, Juniper Networks and some others. Refer to a particular vendor's documentation for details of NetFlow configuration.
Software Exporters
Not all network devices support NetFlow. If none of your switches or routers support Netflow or one of its "kindred" protocols you can use a software exporters. For example, if you have a switch supporting port mirroring/SPAN, you can configure it to send a copy of network packets to a certain network location. It can be, for example, a computer running a software exporter on attached to the mirror port. Alternatively, if your switch does not allow to mirror your traffic, you can still monitor NetFlow data by using a hub (not a switch) to make your network packets reach a software exporter. For example, having a hub between your external router and your backbone equipment, all the traffic that flows through the link will be available for the software exporter attached to that hub. There is a number of proprietary and free software NetFlow exporters: fprobe: a free tool based on libpcap, a portable C/C++ library for network traffic capture; fprobe can be compiled for any POSIX-compatible OS (Linux/BSD/Unix-like). nProbe: a commercial product by nTop able to play roles of exporter and collector; there is a free version for no profit institutions and universities; available on Unix (including MacOS X and Solaris), Windows , and embedded environments. ng_netflow: implements NetFlow protocol on FreeBSD ; free. NDSAD: a free exporter for BSD and POSIX platforms (based on libpcap library), and Windows (winpcap-based).
1102
AggreGate Documentation
9.14.6 Viewing NetFlow Processing Statistics 9.14.7 Flow Data Aggregation 9.14.8 Visualizing Traffic Flows
NetFlow Traffic Overview Dashboard NetFlow Sensors NetFlow Interfaces NetFlow Conversations NetFlow Applications NetFlow Countries NetFlow Endpoints NetFlow Protocols NetFlow Types of Service NetFlow Autonomous Systems Endpoint Details Dashboard
1103
select rf.rdb$relation_name relation, rf.rdb$field_name table_field, f.rdb$field_name field_domain, f.rdb$field_type field_type, cs.rdb$character_set_name character_set, c.rdb$collation_name collation_name from rdb$fields f, rdb$character_sets cs, rdb$collations c, rdb$relation_fields rf where cs.rdb$character_set_id = f.rdb$character_set_id and c.rdb$collation_id = f.rdb$collation_id and c.rdb$character_set_id = cs.rdb$character_set_id and f.rdb$field_name = rf.rdb$field_source and f.rdb$character_set_id is not null and rf.rdb$relation_name not starting with 'RDB$' order by 1, 2
Assume, there is a registered SQL Driver device with org.firebirdsql.jdbc.FBDriver as Database Driver, jdbc:firebirdsql:<dbHost>/3050:<dbPath> as Database URL (where <dbHost> and <dbPath> are substituted with your database host and path), and correct Database Username and Database Password values. Then the request can be added at Queries tab providing, say, charsets as Name and Charsets and Collations as Description . Once the query is configured, database monitoring results (in the Device Configuration table) will have Charsets And Collations property containing query result. Now you can identify incorrect charsets and collations according to your custom rules and add alerts or process them some other way.
1104
AggreGate Documentation
9.15.2 Oracle Monitoring 9.15.3 Microsoft SQL Server Monitoring 9.15.4 PostgreSQL Monitoring
check the existence of the folder at the specified path on the server acquire folder attributes, namely: o last modification time o file count o size, i.e. total size of files in the folder (all files of filtered set of them) load and inspect folder contents (files and subfolders) Contents of a folder can be analyzed recursively (including subfolders) or non-recursively. Besides that, the items to be processed can be filtered using wildcard or regular expression. Local Folder monitoring can be a helpful and effective tool for a number of network managements tasks, such as:
1105
Monitoring availability of a service or an application by tracking last modification time and/or other attributes of a specific folder. Remotely analyzing application output or application activity by inspecting folder contents. Checking total size of application log files and warning about necessity to backup them.
Log files located on remote machines may be accessed by Local File monitoring driver 1104 by mounting remote folders to the local filesystem via operating system facilities (Map Network Drive function on Microsoft Windows; NFS or Samba on Linux). Remote logs can be checked for errors by a custom shell script that is periodically executed via SSH such script is grep error_text /var/log/some_log_file.log | tail -n1.
1113.
Example of
9.17.1 Syslog
Syslog is a standard for forwarding log messages in IP networks. This protocol is typically used for managing computer systems and performing security audits integrating log data from many different types of systems into a central repository. Syslog is a client/server protocol: the Syslog sender sends a small textual message (Syslog message) to the Syslog receiver. AggreGate Network Manager can play both roles providing abilities to monitor Syslog messages 1105 as well as to generate and send off Syslog messages 1107 . Additionally, automatic discovery of Syslog message sources 1107 is supported.
1106
AggreGate Documentation
Integer Original severity level specified in the Syslog message. Refer to RFC 5424 for a list of severity values. Integer Original facility specified in the Syslog message. String String Date Host specified in the Syslog message (usually the originator of the message). Syslog message text providing information about the event. Timestamp specified in the Syslog message.
The AggreGate event is generated with severity level that is converted from original Syslog severity using conversion table 1049 specified in the Syslog plugin configuration parameters.
Syslog alert triggers contain at most three conditions joined with logical AND (conjunction) operations. They check if the message: contains a certain string has facility equal to a certain value has severity equal to a certain value. The following table describes Syslog alerts and their trigger conditions. Name Description Trigger Condition Message contains syslogAlertFailedLogin syslogAlertKernelAlert syslogAlertKernelEmergency syslogAlertMailCritical syslogAlertMailEmergency syslogAlertSecurityOrAuthorizationAlert syslogAlertSecurityOrAuthorizationEmergen cy syslogAlertFtpLogOut syslogAlertFtpLogIn syslogAlertSuperuserLoginSuccess syslogAlertUserLoginSuccess Failed Login Kernel Alert Kernel Emergency Mail Critical Mail Emergency Security Or Authorization Alert Security or Authorization Emergency FTP Log-Out FTP Log-In Superuser Successful Login User Successful Login FTP session closed FTP LOGIN FROM opened session opened FAILED LOGIN Facility Security (4) Kernel (0) Kernel (0) Mail (2) Mail (2) Security (4) Security (4) FTP (11) FTP (11) Security (4) Security (4) Severity Notice (5) Alert (1) Emergency (0) Critical (2) Emergency (0) Alert (1) Emergency (0) Informational (6) Informational (6) Notice (5) Informational (6) Alert (1) Emergency (0) Alert (1) Emergency (0)
Custom alerts for Syslog messages can be easily created by users for their specific needs using the described alerts as examples.
1107
Input Format
Action can be configured with parameters of the following format: Name protocol host port message facility level sendName sendTimestam p Type String Integer String Integer Integer Integer Boolean Boolean Description Protocol Target IP Address or Host Name Port Message Facility Severity Send Local Name Send Local Timestamp Details Transport protocol to be used to deliver message (UDP or TCP ). Receiver address (127.0.0.1 by default). Port the message will be sent to (514 by default). Message text. Message facility. Refer to ... for a list of predefined values. Message level. Refer to ... for predefined values. Whether source host name should be included in the message. Whether a timestamp should be included in the message.
1.3.6.1.4.1.9 or cisco
1108
AggreGate Documentation
Cisco Shutdown Environmental monitor detects a testpoint reaching a critical state and is about to initiate a shutdown. Cisco Temperature Notification Cisco Voltage Notification Temperature measured at a given testpoint is outside the normal range.
1.3.6.1.4.1.9.9.13.3.0.3 or ciscoEnvMonTemperatureNotification
The voltage measured at 1.3.6.1.4.1.9.9.13.3.0.2 or a given testpoint is ciscoEnvMonVoltageNotification outside the normal range. The redundant power supply failed. 1.3.6.1.4.1.9.9.13.3.0.5 or ciscoEnvMonRedundantSupplyNotificatio n 1.3.6.1.2.1.43.18.2.0.1 or printerV2Alert linkDown linkUp coldStart 2 3 0
Cisco Redundant Supply Notification Printer Alert Link Down Link Up Cold Start
A critical printer event is detected. An interface is about to enter the down state. An interface left the down state. Cold Start, i.e. reinitializing with configuration possibly altered. Warm Start, i.e. reinitializing with configuration unaltered. An EGP neighbor for which the device is an EGP peer is down and the peer relationship no longer exists.
Warm Start
warmStart
Custom alerts for SNMP traps can be easily created by users for their specific needs using the described alerts as examples.
To start monitoring for a particular application/service, enable corresponding monitor in the configuration of Network
1109
Availability/operability status summary for all devices/services can be monitored using Services Status table available in Favourites 626 .
Monitoring CPU load, memory, bandwidth usage and other KPIs of Web Server machine Collection of Web Server errors via Syslog 1105 Web server log file analysis
1105
Apache Monitoring
Apache web server monitoring 1109 allows to reveal some inner details (configuration, status, performance, error statistics) of Apache HTTP Server, available via SNMP in the presence of Mod-Apache-Snmp module.
allow a user to
scripts
628 ,
Built In Alerts
There are several URL monitoring alerts built into AggreGate Network Manager: Incorrect HTTP Reply
1147
alert
1147
alert
Make sure that APACHE-MIB is checked in device assets Wait until the device synchronizes
126
1110
AggreGate Documentation
AggreGate Network Manager provides several tools for Apache web server monitoring out-of-the-box as described in the subsections below: Apache Dashboard Apache Alerts 1110
1110
1111
Short Description BAD REQUEST FORBIDDEN NOT FOUND METHOD NOT ALLOWED INTERNAL SERVER ERROR NOT IMPLEMENTED VERSION NOT SUPPORTED
SNMP Variable
1112
AggreGate Documentation
alert alert
1147
FTP File Is Too Old 1147 alert FTP File Size 1154 chart
IMAP
1112
and SMTP
1112
servers.
alert
alert
1113
alert
alert
alert
1114
AggreGate Documentation
Refer to the appropriate section for details. To create and configure VMware alerts, use the Setup Monitoring Profile VMware alert group . Thus, to setup VMware alerts: Select the VMware server device; Chose Setup Monitoring Profile
1052 1052
Check VMware item in Create Alert column; When Configure VMware Alerts window appears, add one or more alert and specify their settings: name, description, type , virtual machine instance an alert should apply to, and setup parameters (refer to the corresponding alert section for specific details). Note, that providing a name equal to a name of some existing alert, you do not actually create a new alert, but rather add a trigger 216 to that existing alert. If you want to create a new alert, be sure to provide a unique name.
1115
You can administer alerts and their triggers using generic AggreGate tools, as described in Alerts
216
section.
1116
AggreGate Documentation
The charts are available for creation and configuration via VMware group of Setup Monitoring Profile action CPU Utilization 1117 chart
1052:
Four Disk Performance 1117 charts: Disk Writes Number , Disk Reads Number, Disk Writes Rate and Disk Reads Rate Two (Absolute and Relative) Memory Usage
1117
charts
Four Network Performance 1117 charts: Network Packets Transmitted, Network Packets Received, Network Transfer Rate, and Network Receive Rate The VMware group is available for device contexts having vmTable SNMP variable. To setup one or several VMware charts using Setup Monitoring Profile Select the VMware server device context Choose Setup Monitoring Profile
1052 1052
action:
Check VMware item in Create Chart column In Configure VMware Charts window, add as many charts as you need, and configure them by specifying their types (one of the mentioned about), names, descriptions (as described in Setup Charts 1052 subsection of Setup Monitoring Profile 1052 ), and parameters. All the VMware chart types have similar parameters: just check the virtual machines those metrics should be depicted. A chart widget 312 with the specified name and description will be created. You can find it under Widgets node in System Tree 784 , or invoke from the device context menu (the menu item name will be the same as chart description provided).
1117
section, when
section, when
VMware Summary
1118
AggreGate Documentation
VMware Summary report shows the following information for all virtual machines available on registered devices: Host device description Virtual machine display name Current state of the virtual machine Name of guest operation system associated with the virtual machine Guest OS state. The report references a VMware Summary query .
To launch widget for a VMware Server, select an appropriate context in a System Tree and choose VMware Information menu item. The widget allows you to select one of virtual machines registered at the server and shows the following information: virtual machine ID current status of the selected virtual machine operating system running on the virtual machine ("guest OS") current state of the guest OS Resources used by the virtual machine: CPU Time usage
1119
(see Widgets
312 ).
The widget, and the corresponding menu item are available if vmTable SNMP variable for the VMware Service device has at least one record.
Configuration
Printer monitoring 1119 configuration includes environment specification (printer states, synchronization options) and a set of specific tools (Printer Information widget, and a few types of alerts) along with their settings.
PRINTER STATES
Printer state is an important concept for printer monitoring, used by Printer State alert 1120 and Printer Information widget 1120 . AggreGate Network Manager detects printer state depending on the values of three SNMP variables: Device Status, Printer Status, and Printer Detected Error State. Their values are combined into a single printer state using Printer States table available in printer's Device Properties 677 . The method of their combination can be modified for a particular printer device to reflect its specific features. The the following printer states are defined by default: Non-critical Printer States Normal Printing Off-line Standby Initial Power Up Warming Up Input Tray Low Output Tray Almost Full Marker Supply Almost Empty Input Tray Missing Input Tray Empty Output Tray Missing Output Tray Full Critical Printer States Jam Cover/Door Open Input Tray Missing Input Tray Empty Output Tray Missing Output Tray Full Marker Supply Missing Marker Supply Empty
1120
AggreGate Documentation
A critical state is one in which the printer is stopped and printing can not continue until the condition that caused it is eliminated. The default printer status table is automatically created for devices providing prtGeneralTable SNMP variable. It matches to the one described in Appendix E - Overall Printer Status Table of RFC 3805.
SYNCHRONIZATION OPTIONS
1121
ifDescr in ifTable
Repeaters
1. Service Set Identifiers. A list of SSIDs associated with the device is obtained from cd11IfAuxSsidTable variable and presented in a table with the following fields: Field Name SSID Broadcast Max. Stations Description SSID recognized by the device. True, if the is SSID is the Broadcast SSID. There is only one Broadcast SSID per IEEE 802.11 radio interface. The maximum number of wireless stations which may be associate with this radio interface through the SSID. If the value is '0', the maximum number is limited only by IEEE 802.11 standard or hardware/firmware limitations. The default value is '0'. Source
2. Clients. This table contains configuration information, status and statistics of all client devices, including wireless clients, repeaters, and bridges, associated with the wireless device. This information is obtained from cDot11ClientConfigInfoTable and cDot11ClientStatisticTable SNMP variables: Field Name Name State Description The wireless client name. State of the authentication and association process between the client and device: Value Description Source
1122
AggreGate Documentation
initial (1)
authenNotAssociate authenticated but d (2) not associated assocAndAuthentica associated and ted (3) authenticated assocNotAnuthentic associated but ated (4) not authenticated
Address Role
The static or DHCP-assigned IP address of the client. This defines the type of a wireless device. Available device types are: Value ) Description
clientStation (0 client station repeater (1) accessPoint (2) bridgeHost (3) bridge (4) bridgeRoot (5)
repeater access point access point bridge host (WGB) bridge root bridge
Device
This defines the classifications of wireless client device. The devices are classified by their Ethernet connection, serial connection, and the type of radio it uses. The device classifications are: Value Description unknown Ethernet access point
cDot11ClientDevType in cDot11ClientConfigInfoTable
generic80211Cli client of an unknown ent (104) radio type and nonCisco device
1123
client with a 4800 radio client with a 3100 radio multiple client Ethernet, universal client
series350Client client with 350 series (127) radio series370Client client with 370 series (128) dot11A radio c1100SeriesAP ( 129)
Cisco 1100 series AP
c1410SeriesBrid Cisco 1410 series ge (130) bridge c1200SeriesAP ( 132) mp2xClient (133) c350SeriesAP ( 134) cb21agClient ( 135)
Cisco 1200 series AP client with MP2x IEEE 802.11g radio Cisco IOS 350 series AP Cisco CB21AG/ PI21AG IEEE 802.lla/ b/g client AIR-RM21A-x-K9 and AIR-RM22A-x-K9 radio Cisco 1130 series AP
c1130SeriesAP (137)
c1310SeriesBrid Cisco 1310 series ge (138) bridge c7920phone (139) c1240SeriesAP ( 140)
Cisco 7920 series phone Cisco 1240 series A
The time in seconds that this client has been associated with this device. This is a device-dependent measure of the signal quality of the most recently received packet from the client. The number of bytes received from this client.
Received, bytes
1124
AggreGate Documentation
Sent, bytes
cDot11ClientBytesSent in cDot11ClientStatisticTable
reports
241 ,
trackers
257 ,
widgets
312 ,
140 .
1125
9.25.3 Scheduling Configuration Backups 9.25.4 Automatic Backups Upon Changes 9.25.5 Compliance Management
Compliance Policies Administering Compliance Policies Configuring Policies Applying Policies Policy Violation Reporting
1126
AggreGate Documentation
of IP SLA tests on the side of Cisco devices and on the side of AggreGate Network Manager
Retrieval, processing, storage and visualization 1142 of IP SLA test status and performance metrics IP SLA module allows to manage and monitor hundreds of IP SLA tests without ever manually logging to Cisco devices that are actually performing those tests. This module uses SNMP protocol to import existing tests from Cisco IOS devices, upload new tests into them, and update/delete tests. SNMP is also used to read IP SLA status and performance metrics.
1127
ICMP Path Jitter. Measures hop-by-hop jitter, packet loss, and delay measurement statistics in an IP network. VoIP Call . Measures your network's response time for setting up a Voice over IP (VoIP) call. RTP. Measures jitter, frame loss, Mean Opinion Score for Conversational Quality (MOS-CQ), and Mean Opinion Score for Listening Quality (MOS-LQ) using Voice Gateway's DSP. DNS. Measures the difference in time from when a DNS request is sent and when the reply is received. DHCP. Measures the response time taken to discover a DHCP server and then obtain a leased IP address from it. FTP. Measures the response time between a Cisco device and an FTP server to retrieve a file. HTTP. Measures different aspects of web page load process. Custom . Allows to specify all IP SLA test settings manually.
IP SLA Definitions
IP SLA monitoring module uses the following definitions:
SOURCE
A device that creates and inserts IP SLA packets into the network. The source is where all IP SLA operation tests are initiated.
TARGET
The final destination of the packets created and sent by the source.
TYPE
The type of test being performed on the network.
9.26.3.1 Latency
VoIP latency is a metric of the difference in time between when one caller speaks and when the other caller hears what the first has said. Excessive network latency can cause noticeable gaps and synchronization loss in transmitted conversations, particularly when VoIP is used with other types of data, as in a videoconference. If these gaps become large enough, callers may find that they will inadvertently interrupt each other while conversing. IP SLA tests measure latency by sequentially applying four different timestamps to a single test packet, as follows: 1. Timestamp T1 is applied to a test packet as it leaves the source router. 2. Timestamp T2 is applied as the test packet arrives at the target router. 3. Timestamp T3 is applied as the test packet leaves the target router to return to the source. 4. Timestamp T4 is applied when the test packet returns to the source. IP SLA tests then provide four separate measures of latency by computing differences among the four timestamps, as follows. Latency Measure Calculation
1128
AggreGate Documentation
Round Trip Time Source-to-Target Latency Target Processing Latency Target-to-Source Latency
T4 T1 T2 T1 T3 T2 T4 T3
9.26.3.2 Jitter
Jitter is a measure of the variation in network latency that results in a loss of synchronization over time. In VoIP phone calls, users experience jitter as distracting noise, clicks, and pops. To ensure acceptable quality of service, network jitter should be located, isolated, and addressed.
One-to-one. A single test will be created. It's necessary to select one source Cisco device and one destination (Cisco device or raw IP/hostname). One-to-many . Multiple tests originated from a single source will be created. It's necessary to select one source Cisco device and multiple destinations (Cisco devices or raw IPs/hostnames). Many-to-many. Multiple Cisco devices should be selected. Each of those devices will perform tests to all other devices.
1129
should be created for the Cisco device. This can be done either
CISCO-RTTMON-MIB should be enabled in the SNMP assets 113 of this device account. This MIB file declares OIDs related to IP SLA test management and monitoring. This MIB is normally enabled by default. Device account should remain in Online, Synchronized state indicated by state. icon. This is a normal device account
3. Select a Cisco device account to import tests from. 4. Wait while test definitions are loaded from the device. A table containing test sources, targets, numbers and types will be shown. 5. Check tests to import and click on OK. Note that if a test with certain number already exists on the server side, it will be initially unchecked. You can check it to update its server-side properties. 6. Wait while tests are imported and test accounts are created on the server. 7. Once import process is finished, a status report will be shown. This report contains a list of imported/updated tests and test import/update errors.
To update server-side configuration of tests, follow the sequence described in importing existing tests 1129 article. All tests that already have server-side "peer" accounts will be initially unchecked in the test selection dialog. Check them to update their server account properties.
1130
AggreGate Documentation
Confirm removal of the test account from the server Separately confirm or decline removal of the test from the Cisco device
Select synchronization direction (From Device or To Device). Wait until the synchronization process finishes. Once synchronization process is finished, a status report will pop up. This report contains a list of synchronized tests and synchronization errors.
Basic Properties
Property
Owner
Description
A string that identifies the entity that created this table row.
1131
Tag
Type Threshold
A string which is used by a managing application to identify the RTT target. This string is inserted into trap notifications, but has no other significance to the agent. The type of IP SLA operation to be performed. An administrative threshold limit. If the RTT operation time exceeds this limit and if the conditions specified in Threshold Type (Reactions table) or Filter (History table) are satisfied, a threshold violation event is generated. Specifies the duration between initiating each RTT operation. This object cannot be set to a value which would be a shorter duration than Timeout . When the test Type is object is Path Echo, the suggested value for this object is greater than Timeout times the maximum number of expected hops to the target. When the test Type is DHCP, the minimum allowed value for this object is 10 seconds.
Frequency
Timeout
Specifies the duration to wait for a RTT operation completion. The value of this object cannot be set to a value which would specify a duration exceeding Frequency. For connection oriented protocols, this may cause the connection to be closed by the probe. Once closed, it will be assumed that the connection reestablishment will be performed. To prevent unwanted closure of connections, be sure to set this value to a realistic connection timeout.
Protocol
Specifies the protocol to be used to perform the RTT operation. When this protocol does not support the type, a 'badValue' error will be returned. A string which specifies the address of the target. A string which specifies the IP address of the source. This object is applicable to all probes except dns, dlsw and sna.
Advanced Properties
Property
Verify Data
Description
When set to true, the resulting data in each RTT operation is compared with the expected data. This includes checking header information (if possible) and exact packet size. Any mismatch will be recorded in the rttMonStatsCollectVerifyErrors object. Some test types may not support this option. When a type does not support this option, the agent will transition this property to false. It is the management applications responsibility to check for this transition. This property is only applicable to SNA protocols. When set to true, this entry will be shown in 'show running' command and can be saved into Non-volatile memory. This object represents the number of octets to be placed into the ARR Data portion of the request message, when using SNA protocols. For non-ARR protocols' RTT request/responses, this value represents the native payload size. The ARR Header overhead is not included in this value. For echo probes the total packet size = (IP header(20) + ICMP header(8) + 8 (internal timestamps) + request size). For echo and pathEcho default request size is 28. For udp probe, default request size is 16 and for jitter probe it is 32. For dlsw probes default request size is 0. The minimum request size for echo and pathEcho is 28 bytes, for udp it is 4 and for jitter it is 16. For udp and jitter probes the maximum request size is 1500.
Request Size
Response Size
This object represents the number of octets to be placed into the ARR Data portion of the response message. This value is passed to the RTT Echo Server via a field in the ARR Header. For non-ARR RTT request/response (i.e. ipIcmpecho) this value will be set by the agent to match the size of Request Size, when native payloads are supported.
1132
AggreGate Documentation
The ARR Header overhead is not included in this value. This object is only supported by SNA protocols. VPN Name This field is used to specify the VPN name in which the RTT operation will be used. For regular RTT operation this field should not be configured. The agent will use this field to identify the VPN routing Table for this operation. This object specifies whether the value in specified for oneway NTP sync tolerance is absolute value or percent value.
Description
This object represents the source's port number. If this object is not specified, the application will get a port allocated by the system. This object is applicable to all probes except dns, dlsw and sna. This object represents the type of service octet in an IP header. This object is not applicable to dhcp and dns. If this object is enabled then it means that the application calculates response time for a specific path. This object is applicable to echo probe only. The type of the target FEC for the RTT 'echo' and 'pathEcho' operations based on 'mplsLspPingAppl' Protocol. A string which specifies a valid 127/8 address. This address is of the form 127.x.y.z. This address is not used to route the MPLS echo packet to the destination but is used for load balancing in cases where the IP payload's destination address is used for load balancing. This object specifies the reply mode for the LSP Echo requests. This object represents the TTL setting for MPLS echo request packets. For ping operation this represents the TTL value to be set in the echo request packet. For trace operation it represent the maximum ttl value that can be set in the echo request packets starting with TTL=1.
LSP Selector
For 'echo' based on mplsLspPingAppl the default TTL will be set to 255, and for 'pathEcho' based on mplsLspPingAppl the default will be set to 30.
Note: This object cannot be set to the value of 0. The default value of 0 signifies the default TTL values to be used for 'echo' and 'pathEcho' based on 'mplsLspPingAppl'. LSP EXP Value This object represents the EXP value that needs to be put as precedence bit in the MPLS echo request IP header. This object specifies the DSCP value to be set in the IP header of the LSP echo reply packet. The value of this object will be in range of DiffServ codepoint values between 0 to 63. Note: This object cannot be set to value of 255. This default value specifies that DSCP is not set for this row. LSP Null Label This object specifies if the explicit-null label is to be added to LSP echo requests which are sent while performing RTT operation.
1133
Target Port
This object represents the target's port number. This object is applicable to udpEcho, tcpConnect and jitter probes. This object represents the source's port number. If this object is not specified, the application will get a port allocated by the system. This object is applicable to all probes except dns, dlsw and sna. If this object is enabled, then the RTR application will send control messages to a responder, residing on the target router to respond to the data request packets being sent by the source router. This object is not applicable to echo, pathEcho, dns and http probes. This object represents the type of service octet in an IP header. This object is not applicable to dhcp and dns.
Source Port
Control Message
Description
This object represents the target's port number. This object is applicable to udpEcho, tcpConnect and jitter probes. This object represents the source's port number. If this object is not specified, the application will get a port allocated by the system. This object is applicable to all probes except dns, dlsw and sna. If this object is enabled, then the RTR application will send control messages to a responder, residing on the target router to respond to the data request packets being sent by the source router. This object is not applicable to echo, pathEcho, dns and http probes. This object represents the type of service octet in an IP header. This object is not applicable to dhcp and dns.
Source Port
Control Message
Description
This object represents the source's port number. If this object is not specified, the application will get a port allocated by the system. This object is applicable to all probes except dns, dlsw and sna. This object represents the type of service octet in an IP header. This object is not applicable to dhcp and dns. A code that represents the specific type of HTTP or FTP operation. This object is applicable to http and ftp probe only. A string which specifies the version number of the HTTP Server. The syntax for the version string is <major number>.<minor number> An example would be 1.0, 1.1 etc.,. This object is applicable to http probe only. A string which represents the URL to which a HTTP probe should communicate with. This object is applicable to http probe only. If this object is false then it means that HTTP request should not download cached pages. This means that the request should be forwarded to the origin server. This object is applicable to http probe only.
HTTP Version
URL
Cache
Proxy
This string represents the proxy server information. This object is applicable to http probe only. This string stores the content of HTTP raw request. If the request cannot fit into String1 then it should be split and put in Strings 1 through 5.
Request String 1
1134
AggreGate Documentation
This string stores the content of the DHCP raw option data. The raw DHCP option data must be in HEX. If an odd number of characters are specified, a 0 will be appended to the end of the string. Only DHCP option 82 (decimal) is allowed. Here is an example of a valid string: 5208010610005A6F1234 Only Request String 1 is used for dhcp, Strings 1 through 5 are not used. This object is applicable to http and dhcp probe types only. Request String 2 This string stores the content of HTTP raw request. Request Strings 1-5 are concatenated to form the HTTP raw request used in the RTT operation. This object is applicable to http probe only. This string stores the content of HTTP raw request. Request Strings 1-5 are concatenated to form the HTTP raw request used in the RTT operation. This object is applicable to http probe only. This string stores the content of HTTP raw request. Request Strings 1-5 are concatenated to form the HTTP raw request used in the RTT operation. This object is applicable to http probe only. This string stores the content of HTTP raw request. Request Strings 1-5 are concatenated to form the HTTP raw request used in the RTT operation. This object is applicable to http probe only.
Request String 3
Request String 4
Request String 5
Description
This object represents the source's port number. If this object is not specified, the application will get a port allocated by the system. This object is applicable to all probes except dns, dlsw and sna. If this object is enabled, then the RTR application will send control messages to a responder, residing on the target router to respond to the data request packets being sent by the source router. This object is not applicable to echo, pathEcho, dns and http probes. This object represents the type of service octet in an IP header. This object is not applicable to dhcp and dns. A code that represents the specific type of HTTP or FTP operation. This object is applicable to http and ftp probe only. A code that represents the specific type of RTT operation. This object is applicable to ftp probe only.
Control Message
Mode
Description
A string which specifies the address of the target. This string can be in IP address format or a hostname. This object is applicable to dns probe only. A string which specifies the ip address of the name-server. This object is applicable to dns probe only.
Name Server
1135
Target Port
This object represents the target's port number. This object is applicable to udpEcho, tcpConnect and jitter probes. This object represents the source's port number. If this object is not specified, the application will get a port allocated by the system. This object is applicable to all probes except dns, dlsw and sna. If this object is enabled, then the RTR application will send control messages to a responder, residing on the target router to respond to the data request packets being sent by the source router. This object is not applicable to echo, pathEcho, dns and http probes. This object represents the type of service octet in an IP header. This object is not applicable to dhcp and dns. This value represents the inter-packet delay between packets and is in milliseconds. This value is currently used for Jitter probe. This object is applicable to jitter probe only.
Source Port
Control Message
Number of Packets
This value represents the number of packets that need to be transmitted. This value is currently used for Jitter probe. This object is applicable to jitter probe only.
Codec Type
Specifies the codec type to be used with jitter probe. This is applicable only for the jitter probe. If codec-type is configured the following parameters cannot be configured. Request Size Interval Number of Packets
Codec Interval
This field represents the inter-packet delay between packets and is in milliseconds. This object is applicable only to jitter probe which uses codec type. This object represents the number of octets that needs to be placed into the Data portion of the message. This value is used only for jitter probe which uses codec type. This value represents the number of packets that need to be transmitted. This value is used only for jitter probe which uses codec type. The advantage factor is dependant on the type of access and how the service is to be used. Conventional Wire-line - 0 Mobility within Building - 5 Mobility within geographic area - 10 Access to hard-to-reach location - 20 This will be used while calculating the ICPIF values. This valid only for Jitter while calculating the ICPIF value.
Codel Payload
Precision
This object specifies the accuracy of statistics that needs to be calculated milliseconds - The accuracy of stats will be of milliseconds microseconds - The accuracy of stats will be in microseconds. This value can be set only for jitter operation
This object specifies the priority that will be assigned to probe packet. This value can be set only for jitter operation. This object specifies the total clock synchronization error on source and responder that is considered acceptable for one way measurement when NTP is used as clock synchronization mechanism. The total clock synchronization error is sum of NTP offsets on source and responder. The value specified is microseconds. This value can be set only for jitter operation with precision of microsecond. This object specifies the total clock synchronization error on source and responder that is
Total Clock
1136
AggreGate Documentation
Synchronization Error, %
considered acceptable for oneway measurement when NTP is used as clock synchronization mechanism. The total clock synchronization error is sum of NTP offsets on source and responder. The value is expressed as the percentage of actual oneway latency that is measured. This value can be set only for jitter operation with precision of microsecond.
Description
This object represents the target's port number. This object is applicable to udpEcho, tcpConnect and jitter probes. This object represents the source's port number. If this object is not specified, the application will get a port allocated by the system. This object is applicable to all probes except dns, dlsw and sna. If this object is enabled, then the RTR application will send control messages to a responder, residing on the target router to respond to the data request packets being sent by the source router. This object is not applicable to echo, pathEcho, dns and http probes. This object represents the type of service octet in an IP header. This object is not applicable to dhcp and dns. This value represents the inter-packet delay between packets and is in milliseconds. This value is currently used for Jitter probe. This object is applicable to jitter probe only.
Source Port
Control Message
Number of Packets
This value represents the number of packets that need to be transmitted. This value is currently used for Jitter probe. This object is applicable to jitter probe only.
Codec Type
Specifies the codec type to be used with jitter probe. This is applicable only for the jitter probe. If codec-type is configured the following parameters cannot be configured. Request Size Interval Number of Packets
Codec Interval
This field represents the inter-packet delay between packets and is in milliseconds. This object is applicable only to jitter probe which uses codec type. This object represents the number of octets that needs to be placed into the Data portion of the message. This value is used only for jitter probe which uses codec type. This value represents the number of packets that need to be transmitted. This value is used only for jitter probe which uses codec type. The advantage factor is dependant on the type of access and how the service is to be used. Conventional Wire-line - 0 Mobility within Building - 5 Mobility within geographic area - 10 Access to hard-to-reach location - 20 This will be used while calculating the ICPIF values. This valid only for Jitter while calculating the ICPIF value.
Codel Payload
Precision
This object specifies the accuracy of statistics that needs to be calculated milliseconds - The accuracy of stats will be of milliseconds microseconds - The accuracy of stats will be in
1137
microseconds. This value can be set only for jitter operation Probe Packet Priority This object specifies the priority that will be assigned to probe packet. This value can be set only for jitter operation. This object specifies the total clock synchronization error on source and responder that is considered acceptable for one way measurement when NTP is used as clock synchronization mechanism. The total clock synchronization error is sum of NTP offsets on source and responder. The value specified is microseconds. This value can be set only for jitter operation with precision of microsecond. This object specifies the total clock synchronization error on source and responder that is considered acceptable for oneway measurement when NTP is used as clock synchronization mechanism. The total clock synchronization error is sum of NTP offsets on source and responder. The value is expressed as the percentage of actual oneway latency that is measured. This value can be set only for jitter operation with precision of microsecond.
Description
If this object is enabled, then the RTR application will send control messages to a responder, residing on the target router to respond to the data request packets being sent by the source router. This object is not applicable to echo, pathEcho, dns and http probes. This object represents the type of service octet in an IP header. This object is not applicable to dhcp and dns.
Description
This object represents the source's port number. If this object is not specified, the application will get a port allocated by the system. This object is applicable to all probes except dns, dlsw and sna. If this object is enabled, then the RTR application will send control messages to a responder, residing on the target router to respond to the data request packets being sent by the source router. This object is not applicable to echo, pathEcho, dns and http probes. This string stores the content of HTTP raw request. If the request cannot fit into String1 then it should be split and put in Strings 1 through 5. This string stores the content of the DHCP raw option data. The raw DHCP option data must be in HEX. If an odd number of characters are specified, a 0 will be appended to the end of the string. Only DHCP option 82 (decimal) is allowed. Here is an example of a valid string: 5208010610005A6F1234 Only Request String 1 is used for dhcp, Strings 1 through 5 are not used. This object is applicable to http and dhcp probe types only.
Control Message
Request String 1
Description
This object represents the source's port number. If this object is not specified, the
1138
AggreGate Documentation
application will get a port allocated by the system. This object is applicable to all probes except dns, dlsw and sna. Control Message If this object is enabled, then the RTR application will send control messages to a responder, residing on the target router to respond to the data request packets being sent by the source router. This object is not applicable to echo, pathEcho, dns and http probes. This object represents the type of service octet in an IP header. This object is not applicable to dhcp and dns. This string stores the called number of post dial delay. This object is applicable to voip post dial delay probe only. The number will be like the one actualy the user could dial. It has the number required by the local country dial plan, plus E.164 number. The maximum length is 24 digits. Only digit (0-9) is allowed. A code that represents the detect point of post dial delay. This object is applicable to SAA post dial delay probe only. VoIP GK Registration Delay A boolean that represents VoIP GK registration delay. This object is applicable to SAA GK registration delay probe only.
Detect Point
Description
This object represents the source's port number. If this object is not specified, the application will get a port allocated by the system. This object is applicable to all probes except dns, dlsw and sna. If this object is enabled, then the RTR application will send control messages to a responder, residing on the target router to respond to the data request packets being sent by the source router. This object is not applicable to echo, pathEcho, dns and http probes. This object represents the type of service octet in an IP header. This object is not applicable to dhcp and dns. A string which specifies the voice-port on the source gateway. This object is applicable to RTP probe only.
Control Message
Call Duration
This table contains advanced IP SLA test properties. In most cases it should not be edited manually.
Properties
Property
Life Time, seconds (rttMonScheduleAdm inRttLife)
Description
Defines life time of a new test. The value 2147483647 has a special meaning. When this object is set to 2147483647, the Life Time object will not decrement. And thus the life time will never end.
1139
Defines activation time of a new test. When an agent has the capability to determine date and time, the agent should store this object as DateAndTime. This allows the agent to completely reset (restart) and still be able to start conceptual RTT rows at the intended time. If the agent cannot keep date and time and the agent resets, all entries should take on one of the special value defined below. Defines when a non-active test will be auto-deleted. When this conceptual RTT control row enters an 'active' state, this timer will be reset and suspended. When this conceptual RTT control row enters a state other than 'active', the timer will be restarted. When this value is set to zero, this entry will never be aged out. When set to true, this entry will be scheduled to run automatically for the specified duration equal to the life configured, at the same time daily. This value cannot be set to true: (a) if Life Time object has value greater or equal to 86400 seconds. (b) if sum of values of Life Time and Conceptual Row Age Out is less or equal to 86400 seconds.
This table contains advanced IP SLA test properties. In most cases it should not be edited manually.
Properties
Property
Connection Enable (rttMonReactAdminC onnectionEnable)
Description
If true, a reaction is generated when a RTT operation to a Target Address (echo type) causes the test to enter Connection Lost state. Thus connections to intermediate hops will not cause this value to change.
Timeout Enable
(rttMonReactAdminT imeoutEnable)
If true, a reaction is generated when a RTT operation causes the test to enter Timeout state. When the test Type is 'pathEcho' timeouts to intermediate hops will not cause Timeout state. This object specifies the conditions under which force the test to enter threshold violation (i. e. Warning, Critical or Failure) state: NOTE: When the test Type is 'pathEcho' this objects value and all associated object values are only valid when RTT 'echo' operations are to the rttMonEchoAdminTargetAddress object address. Thus 'pathEcho' operations to intermediate hops will not cause this object to change. never - threshold violation never occurs immediate - threshold violation occurs when an operation completion time exceeds Threshold value; conversely threshold violation is deactivated when an operation completion time falls below Threshold Falling consecutive - threshold violation occurs when an operation completion time exceeds Threshold on Threshold Count, X consecutive RTT operations; conversely, threshold violation is deactivated when an operation completion time falls under the Threshold Falling for the same number of consecutive operations xOfy - threshold violation occurs when x (as specified by Threshold Count, X ) out of the last y (as specified by Threshold Count, Y) operation completion time exceeds
1140
AggreGate Documentation
Threshold; conversely, it is set to false when x, out of the last y operation completion time fall below Threshold Falling NOTE: When x > y, the probe will never generate a reaction. average - threshold violation occurs when the running average of the previous Threshold Count operation completion times exceed Threshold; conversely, it is set to false when the running average falls below the Threshold Falling If this value is changed by a management station, threshold violation is reset, but no reaction is generated if threshold violation was active. Threshold Falling (rttMonReactAdminT hresholdFalling) Threshold Count, X (rttMonReactAdminT hresholdCount) Threshold Count, Y (rttMonReactAdminT hresholdCount2) Action Type (rttMonReactAdminA ctionType) Specifies what type(s), if any, of reaction(s) to generate if an operation violates one of the watched conditions: none - no reaction is generated trapOnly - a trap is generated nmvtOnly - an SNA NMVT is generated triggerOnly - all trigger actions defined for this entry are initiated trapAndNmvt - both a trap and an SNA NMVT are generated trapAndTrigger - both a trap and all trigger actions are initiated nmvtAndTrigger - both a NMVT and all trigger actions are initiated trapNmvtAndTrigger - a NMVT, trap, and all trigger actions are initiated Error Enable (rttMonReactAdminV erifyErrorEnable) If true, a reaction is generated when an RTT operation error occurs. This object defines the 'y' value of the xOfy condition specified in Threshold Type. This object defines the 'x' value of the xOfy condition specified in Threshold Type. This object defines a threshold limit. If the RTT operation time falls below this limit and if the conditions specified in Threshold Type are satisfied, an threshold is generated.
This table contains advanced IP SLA test properties. In most cases it should not be edited manually.
Properties
Property
Number of Groups (rttMonStatisticsA dminNumHourGroups)
Description
The maximum number of groups of paths to record. Specifically this is the number of hourly groups to keep before rolling over. The value of one is not advisable because the group will close and immediately be deleted before the network management station will have the opportunity to retrieve the statistics. The value used in the statistics table (rttMonStatsCaptureTable) to uniquely identify
1141
this group is the statistics table using index ( rttMonStatsCaptureStartTimeIndex). HTTP and Jitter probes store only two hours of data. When this object is set to the value of zero all statistics table data capturing will be shut off. Number of Paths (rttMonStatisticsA dminNumPaths) When the test Type is 'pathEcho' this is the maximum number of statistics paths to record per hourly group. This value directly represents the path to a target. For all other Types this value will be forced to one by the agent. NOTE: For 'pathEcho' a source to target path will be created to to hold all errors that occur when a specific path or connection has not be found/setup. Thus, it is advised to set this value greater than one. Since this index does not rollover, only the first Number of Paths will be kept. Number of Hops (rttMonStatisticsA dminNumHops) When the test Type is 'pathEcho' this is the maximum number of statistics hops to record per path group. This value directly represents the number of hops along a path to a target, thus we can only support 30 hops. For all other Types this value will be forced to one by the agent. Since this index does not rollover, only the first Number of Hops will be kept. This object is applicable to 'pathEcho' probes only. Number of Distribution Buckets (rttMonStatisticsA dminNumDistBuckets ) Distribution Buckets Interval (rttMonStatisticsA dminDistInterval) The maximum number of statistical distribution buckets to accumulate. Since this index does not rollover, only the first Number of Distribution Buckets will be kept. The last bucket will contain all entries from its distribution interval start point to infinity. This object is not applicable to http and jitter probes. The statistical distribution buckets interval. Distribution Bucket Example: Number of Distribution Buckets = 5 buckets Distribution Buckets Interval = 10 milliseconds | Bucket 1 | Bucket 2 | Bucket 3 | Bucket 4 | Bucket 5 | | 0-9 ms | 10-19 ms | 20-29 ms | 30-39 ms | 40-Inf ms | Odd Example: Number of Distribution Buckets = 1 buckets Distribution Buckets Interval = 10 milliseconds | Bucket 1 | | 0-Inf ms | Thus, this odd example shows that the value of Distribution Buckets Interval does not apply when Number of Distribution Buckets is one. This object is not applicable to http and jitter probes.
This table contains advanced IP SLA test properties. In most cases it should not be edited manually.
Properties
Property Description
1142
AggreGate Documentation
The maximum number of history lives to record. A life is defined by the countdown (or transition) to zero by the rttMonCtrlOperRttLife object. A new life is created when the same conceptual RTT control row is restarted via the transition of the rttMonCtrlOperRttLife object and its subsequent countdown. The value of zero will shut off all history data collection.
Number of Buckets
(rttMonHistoryAdmi nNumBuckets)
The maximum number of history buckets to record. When the test Type is 'pathEcho' this value directly represents a path to a target. For all other test Types this value should be set to the number of operations to keep per lifetime. After Number of Buckets are filled, the and the oldest entries are deleted and the most recent Number of Buckets buckets are retained. The maximum number of history samples to record per bucket. When the test Type is 'pathEcho' this value directly represents the number of hops along a path to a target, thus we can only support 30 hops. For all other test Types this value will be forced to one by the agent.
Defines a filter for adding RTT results to the history buffer: none - no history is recorded. all - the results of all completion times and failed completions are recorded. overThreshold - the results of completion times over Threshold are recorded. failures - the results of failed operations (only) are recorded.
1143
IP SLA Summary. This overview dashboard lists IP SLA test groups, tests that currently run with some problems, tests that have active threshold violation alerts, and test status summary chart. IP SLA Top 10. This overview dashboard lists top 10 tests with largest Round Trip Time, top 10 TCP connection tests, top 10 DHCP tests, top 10 echo tests, top 10 FTP tests, and top 10 HTTP tests. IP SLA Test Details. This dashboard provides detailed information about a test. This includes test information table, last RTT measurement, RTT chart, test availability graph. Most specific test types has its own additional metrics on this dashboard, for example: o HTTP tests provide detailed info about DNS resolution time, TCP connection time and page load time. o VoIP tests expose latency, jitter, packet loss and MOS charts. o Path Echo tests provide hop-by-hop RTT table.
IP SLA Violation. Raised when Round Trip Time measurement of a test exceeds one of the thresholds Disconnected. Occurs when one of the tests reports Disconnected status. Unreachable. Occurs when one of the tests reports Unreachable status. Critical . Occurs when one of the tests reports Critical status.
1144
AggreGate Documentation
This chapter covers common control operations supported by AggreGate Network Manager: SNMP management via SNMP set operations Remote shell script execution Network management actions on-LAN.
1144 1144 1144 .
using SSH. like sending SNMP traps or Syslog messages, or remotely starting PCs via Wake-
These actions can be invoked interactively or automatically as, for example, alert's corrective action or scheduled job.
726 .
Choose Network Management sub-menu Select an action to launch. A window will appear allowing you to specify input parameters for the selected action. Press OK button to proceed with selected parameters. Network management actions available in the Network Management menu are briefly described in subsections below.
1145
9.28.4.4 Wake-on-LAN
Wake-on-LAN (executeWakeOnLAN) action allows to awake a computer by a network message. Wake-on-LAN (WoL) action broadcasts a special UDP packet (called a magic packet) containing MAC address of the destination computer. In order for WoL to work, network interface of the destination computer need to stay on waiting for a magic packet addressed to it and then initiates system wake-up. To invoke action you can right-click server node in the System Tree, then select Network Management menu group and there choose Wake-on-LAN. Parameters window will appear. Alternatively you can create a scheduled job 266 for this action. The action has the following parameters: Name macAddress broadcastIP Type String String Description MAC Address Broadcast IP Details MAC address of the destination computer in the form of either XX: XX:XX:XX:XX:XX or XX-XX-XX-XX-XX-XX. Broadcast IP for your network. For example, if your network IP address is 192.168.0.x and mask is 255.255.255.0 then the broadcast IP is 192.168.0.255. UDP port to send the magic packet to. Default value is 9.
udpPort
Integer
9.29 Alerting
This section briefly describes all alerts 216 presented in AggreGate Network Manager for monitoring activity of network devices, along with trigger conditions structured by categories. Alert Name Category: Availability 1091 High Response Time High Packet Loss Rate Device Offline Average response time exceeds the specified threshold. Packet loss rate exceeds the specified threshold. Host is disconnected from the server for a certain time (10 minutes by default). A specified service is offline Availability Availability Availability
1044
Triggering Condition
Metric
Notes
Preconfigured for all network device contexts. Preconfigured for all network device contexts. Built into AggreGate Server basic distribution package (see Device Offline Built-In Alert 217 ). To create, use Availability group in Setup Monitoring Profile 1052 action.
1044
1044
Service Offline
Availability
1044
Category: Network Network Interface Down (SNMP) 1098 Operational state of a network interface is down, but it's administratively up. Availability
1044
Use Setup Monitoring Profile 1052 action, Network Interfaces group to create. Available for SNMP-compliant devices only.
Availability
1044
Use Setup Monitoring Profile 1052 action, Network Interfaces group to create. Available for SNMP-compliant devices only.
Availability
1044
Use Setup Monitoring Profile 1052 action, Network Interfaces group to create. Available for SNMP-compliant devices only.
1146
AggreGate Documentation
Performance
1045
Use Setup Monitoring Profile 1052 action, Network Interfaces group to create; available for SNMP-compliant devices only.
Category: CPU 1092 CPU Activity (WMI) CPU activity indicator satisfies a condition consisting of a threshold and comparison operation. The available indicators are percentage of time when CPU was: idle, nonidle, in user mode, handling hardware interrupts, using maximum frequency. Performance
1045
Use Setup Monitoring Profile 1052 action, CPU group to create; available for WMI-compliant devices only.
Category: Storage 1093 Storage Space (SNMP) Percentage of used space on the specified storage volume exceeds the specified threshold. Performance
1045
The alert can be created using Setup Monitoring Profile 1052 action (Storage Volumes group); available for SNMPcompliant devices only. Use Setup Monitoring Profile 1052 action, Storage Volumes group to create; available for WMI-compliant devices only. Use Setup Monitoring Profile 1052 action, Storage Volumes group to create; available for WMI-compliant devices only.
Percentage of free disk space satisfies a condition consisting of a threshold and comparison operation .
Performance
1045
Memory (WMI)
Memory usage indicator satisfies Performance a condition consisting of a threshold 1045 and comparison operation. The following indicators are available: Available Physical Memory (bytes), File System Cache Size (bytes), Number of Cache Faults per Second, Number of Page Faults per Second, Number of Pages Read from Disk to Resolve Hard Page Faults, Number of Pages Written to Disk to Free Physical Memory, Disk Read Operations to Free Physical Memory, Disk Write Operations to Resolve Hard Page Faults.
1094
Category: Process
Performance
1045
The alert can be created using Setup Monitoring Profile 1052 action (Processes group); available for SNMP-compliant devices only. The alert can be created using Setup Monitoring Profile 1052 action (Processes group); available for SNMP-compliant devices only. The alert can be created using Setup Monitoring Profile 1052 action (Processes group); available for SNMP-compliant devices only. Use Setup Monitoring Profile action, Processes group to create; available for WMIcompliant devices only. Use Setup Monitoring Profile action, Processes group to create; available for WMI1052
Performance
1045
Performance
1045
Number of a specified process instances satisfies a condition consisting of a threshold and comparison operation. Activity indicator of a specified process satisfies a condition consisting of a threshold and
Performance
1045
Performance
1045
1052
1147
comparison operation. Available indicators are: percentage of CPU time used by the process, amount of physical memory the process uses, or amount of virtual address space the process uses. Category: Applications/Services Too Many E-mail Messages (IMAP) High Messages Size (IMAP) Number of messages (obtained via IMAP) exceeds a specified threshold. Total size of messages (obtained via IMAP) exceeds a specified treshold. Number of messages (obtained via POP3) exceeds a specified threshold. Total size of messages (obtained via POP3) exceeds a specified treshold. HTTP reply code received from a web site differs from a specified one. Content obtained from a web site has changed. HTTP reply obtained from a web site contains a specified string. Size of a file on an FTP server satisfies the condition consisting of a threshold (in bytes) and a comparison operation. Total size of all files monitored via FTP satisfies the condition consisting of a threshold (in bytes) and a comparison operation. Contents of a specified file obtained from an FTP server has changed. Operability
1045
To create, use E-mail group in Setup Monitoring Profile 1052 action. To create, use E-mail group in Setup Monitoring Profile 1052 action. To create, use E-mail group in Setup Monitoring Profile 1052 action. To create, use E-mail group in Setup Monitoring Profile 1052 action. To create, use HTTP group in Setup Monitoring Profile 1052 action. To create, use HTTP group in Setup Monitoring Profile 1052 action. To create, use HTTP group in Setup Monitoring Profile 1052 action. To create, use FTP group in Setup Monitoring Profile 1052 action. To create, use FTP group in Setup Monitoring Profile 1052 action. To create, use FTP group in Setup Monitoring Profile 1052 action. To create, use FTP group in Setup Monitoring Profile 1052 action. To create, use LDAP group in Setup Monitoring Profile 1052 action. To create, use SSH group in Setup Monitoring Profile 1052 action. To create, use DNS group in Setup Monitoring Profile 1052 action. To create, use Generic TCP and UDP Services group in Setup Monitoring Profile 1052 action. To create, use Path Tracing group in Setup Monitoring Profile 1052 action. To create, use Path Tracing
Operability
1045
Operability
1045
Operability
1045
Operability
1045
Operability
1045
Operability
1045
Operability
1045
Operability
1045
Operability
1045
File on FTP server was not modified Operability in a specified time period. LDAP request result contains a specified string. SSH script output contains a specified string. Result of a specified DNS request equals to (or differs from) a string. Result of a specified TCP or UDP request contains a string. Operability
1045
1045
Operability
1045
Operability
1045
Operability
1045
A host (specified as IP address or host name) does not appear in the trace results. Response time from a host in the
Operability
1045
Operability
1045
1148
AggreGate Documentation
trace results exceeds a threshold (specified in milliseconds) Change in Number of Hops Number of hops in the trace has changed. Operability
1045
group in Setup Monitoring Profile 1052 action. To create, use Path Tracing group in Setup Monitoring Profile 1052 action. To create, use Path Tracing group in Setup Monitoring Profile 1052 action.
Operability
1045
Category: VMware
Virtual machine state satisfies the condition consisting of a VM state (Powered On, Powered Off, or Suspended) and comparison operation. Virtual machine's CPU utilization percentage satisfies a condition consisting of a threshold and comparison operation.
Availability
1044
1052
1052
Virtual machine's memory utilization volume satisfies a condition consisting of a threshold and comparison operation.
1052
Virtual machine's memory utilization percentage satisfies a condition consisting of a threshold and comparison operation.
1052
Virtual machine disk read rate satisfies a condition specified in the alert parameters and consisting of a threshold and comparison operation. Virtual machine disk write rate satisfies a condition specified in the alert parameters and consisting of a threshold and comparison operation.
1052
1052
Category: Printer
1119
1120
Printer status either equals to, or differs from the selected value.
Availability
1044
1052
Marker supply level of a particular marker type is reduced below specified threshold.
Availability
1044
1052
Available for SNMP-compliant devices only. Printer Cover (SNMP) 1120 Any printer cover has a certain state. Availability
1044
1052
1149
devices only. Category: Apache 1109 Apache Requests Overload (SNMP) 1110 Requests Per Second metric of Apache web server exceeds the specified threshold. Performance
1045
1052
Available for SNMP-compliant devices only. Apache Traffic Overload (SNMP) 1110 Number of kilobytes per second transferred metric of Apache web server exceeds the specified threshold. Performance
1045
1052
Total number of busy processes metric of Apache web server exceeds the specified threshold.
1052
A new HTTP error of the specified type is generated by Apache web server.
1052
Available for SNMP-compliant devices only. Category: Events 1105 Syslog 1106 A syslog message received that satisfies one of preconfigured alert conditions. An SNMP trap received that satisfies one of preconfigured alert conditions. Preconfigured by AggreGate Network Manager plugin. Preconfigured by AggreGate Network Manager plugin.
216
Custom alerts can be created to simplify your specific network management tasks. Refer to the Alerts pay particular attention to the examples 217 therein.
chapter, and
9.30 Reporting
One of the most important network management activities is analysis of particular devices and the whole network operation. Collecting, selecting, processing and presenting information needed for analysis is an essential task, usually addressed by a reporting system. AggreGate reporting system allows to create, design, and run custom reports 241 . To simplify the network management job the most useful reports are bundled with AggreGate Network Manager. These reports are described below. Since every report 241 depends on a corresponding query 271 which supplies the necessary data they are considered together here. Commonly, there are sets of reports and queries, handling the same types of data, just representing it in different aspects. Such reports and queries are grouped into single report class in the table below.
Report/Query Class
Name
Description
Use for: Availability Monitoring 1091 Response Time Response Time Summary Response Time Over 100 ms Response Time Over 500 ms Average round-trip time for all devices Average round-trip time for devices with round-trip time exceeding 100 ms Average round-trip time for devices with round-trip time exceeding 500 ms
1150
AggreGate Documentation
Response Time Top 10 Response Time Top 50 Packet Loss Rate Packet Loss Rate Summary Packet Loss Rate Over 10% Packet Loss Over 50% Packet Loss Top 10 Packet Loss Top 50 Availability Network Assets Down Interfaces Availability Not 100% Interfaces By Type Down Interfaces
1092
Average round-trip time for top 10 devices Average round-trip time for top 50 devices Packet loss rate for all devices Devices with packet loss rate exceeding 10% Devices with packet loss rate exceeding 50% 10 devices with the highest packet loss rate 50 devices with the highest packet loss rate Statistical Availability loss rate
1092
Count of interfaces by their type Network interfaces that are in Shutdown or Administrative Shutdown states
CPU Load Summary CPU Load Over 50% CPU Load Over 90% CPU Load Top 10 CPU Load Top 50
CPU(s) load
1092
Devices with CPU Load over 50% Devices with CPU Load over 90% 10 devices with the highest CPU Load 50 devices with the highest CPU Load Physical memory usage percentage for all devices Devices with memory usage percentage exceeding 75% Devices with memory usage percentage exceeding 90% 10 devices with the highest memory usage percentage 50 devices with the highest memory usage percentage Disk space usage percentage for all devices
Memory Usage
Memory Usage Summary Memory Usage Over 75% Memory Usage Over 90% Memory Usage Top 10 Memory Usage Top 50
Disk Volumes Utilization Over Devices with disk space usage percentage exceeding 75% 75% Disk Volumes Utilization Over Devices with disk space usage percentage exceeding 90% 90% Disk Volumes Utilization Top 10 Disk Volumes Utilization Top 50 Disk Volumes Free Space Disk Volumes Free Space Top 10 Disk Volumes Free Space Top 50 Use for: Traffic and Bandwidth Monitoring 1096 Interface Traffic Interface Traffic Summary Interface Traffic Top 10 Interface Traffic Top 50 Interface Bandwidth Utilization Interface Bandwidth Summary Per-interface traffic summary (including incoming and outgoing traffic) for all devices 10 interfaces with maximum total traffic (sum of incoming and outgoing traffic) 50 interfaces with maximum total traffic (sum of incoming and outgoing traffic) Per-interface bandwidth summary for all devices Disk space usage percentage for top 10 devices Disk space usage percentage for top 50 devices 10 devices with the highest disk space usage percentage 50 devices with the highest disk space usage percentage
1151
Interface Bandwidth Utilization Over 50% Interface Bandwidth Utilization Over 90% Interface Bandwidth Utilization Top 10 Interface Bandwidth Utilization Top 50 Use for: VMware Monitoring VMware
1114
Incoming and outgoing bandwidth usage percentages for devices with either of the values exceeding 50% Incoming and outgoing bandwidth usage percentages for interfaces with either of the values exceeding 90% Incoming and outgoing bandwidth usage percentages for 10 interfaces with maximal total bandwidth usage Incoming and outgoing bandwidth usage percentages for 50 interfaces with maximal total bandwidth usage
Summary information for all virtual machines Memory utilization stats for all virtual machines
9.31 Dashboards
AggreGate Network Manager includes several pre-configured dashboards
617
Network Overview
Network overview dashboard shows current status of your network and knows problems.
Top 10
This dashboard allows to view Top 10 lists of devices with highest CPU load, memory/disk usage, interface traffic and utilization, response time, packet loss rate and more. It also displays processes/services that consume a lot of resources.
9.32 Charts
Visualization of numerical characteristics for current network and device activity is a very important aspect of network monitoring and management. AggreGate Network Manager includes the following chart widgets 384 out of the box: Chart Name Description Notes
Use for: Availability Monitoring 1091 Diagrams minimum, average and/or maximum ping response (round-trip) time values. The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action
Ping Time
1152
AggreGate Documentation
1052 .
The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 . The chart is automatically created by a corresponding auto run 625 action in Top 10 group and is available at Top 10 dashboard 1151. The chart is automatically created by a corresponding auto run 625 action in Top 10 group and is available at Top 10 dashboard 1151. The chart can be created for a particular Network Host context using Setup Monitoring Profile action 1052 (Availability group).
Service State
1092
1092 .
The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 . The chart is automatically created by a corresponding auto run 625 action in Top 10 group and is available at Top 10 dashboard 1151. The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 . The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 . The chart can be created for a particular WMI-enabled context using Setup Monitoring Profile action 1052. The chart can be created for a particular WMI-enabled context using Setup Monitoring Profile action 1052. The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 . The chart is automatically created by a corresponding auto run 625 action in Top 10 group and is available at Top 10 dashboard 1151. The chart is automatically created by a corresponding auto run 625 action in Top 10 group and is available at Top 10 dashboard 1151.
CPU Load Top 10 (SNMP) Presents devices with the greatest CPU utilization.
Diagrams total number of processes running on a certain computer or device. Data is fetched via SNMP. Diagrams instance count of a particular process. Process instance is identified by process name, path and parameters. Data is fetched via SNMP. Diagrams total number of processes running on a certain computer or device. Data is fetched via WMI. Diagrams instance count of a particular process identified by process name. Data is fetched via WMI. Diagrams usage percentage of storage areas on the host, including physical memory, virtual memory, and disk space. Presents devices with the greatest memory usage.
Presents disk volumes and corresponding devices with the greatest utilization percentage.
Use for: Traffic and Bandwidth Monitoring 1096 Network Interface Traffic (SNMP) 1097 Shows incoming and outgoing traffic of specified network interfaces. The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 . The chart is automatically created by a corresponding auto run 625 action in
Presents network interfaces and corresponding devices with the greatest total (incoming and
1153
outgoing) traffic. Interface Bandwidth Utilization Top 10 Presents network interfaces and corresponding devices with the greatest total (incoming and outgoing) bandwidth utilization percentage. Shows traffic information collected using NetFlow.
Top 10 group and is available at Top 10 dashboard 1151. The chart is automatically created by a corresponding auto run 625 action in Top 10 group and is available at Top 10 dashboard 1151. Charts of this kind can be created using NetFlow views. Refer to NetFlow Charting Widgets section for details.
NetFlow Charts
Use for: Router and Switch Monitoring Network Interface Errors (SNMP) 1098 Shows number of error packets. Error packets are inbound packets that contain errors preventing them from being deliverable to a higher-layer protocol. Diagrams number of discarded packets: inbound packets which were chosen to be discarded even though no errors had been detected to prevent their being deliverable to a higher-layer protocol. For example, if too many packets are received, and the protocol stack does not have enough resources to properly handle the packet, it may be discarded. The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 . The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 .
Use for: VMware Server Monitoring 1114 Virtual Machine CPU Utilization 1117 Indicates how much of the processor's capacity is currently used by the virtual machine(s). The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 . The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 . The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 . The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 . The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 . The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 .
Diagrams disk utilization, measured as a number of disk write operations performed since last synchronization. Diagrams disk utilization, measured as a number of disk read operations performed since last synchronization. Diagrams disk write rate in kilobytes per second.
1117
VM Memory Percentage
1117
Indicates current memory utilization percentage, i. The chart can be created for a e. memory used relative to amount of memory the particular SNMP-enabled context virtual machine was configured with. using Setup Monitoring Profile action 1052 . Diagrams a number of packets transmitted. The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 . The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 .
1154
AggreGate Documentation
The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 . The chart can be created for a particular SNMP-enabled context using Setup Monitoring Profile action 1052 .
Use for: FTP Server Monitoring 1112 FTP File Size Diagrams size of a file monitored via FTP. The chart can be created for a particular FTP-enabled device using Setup Monitoring Profile action 1052.
384
Users can easily create custom charts for graphing specific metrics. See widget charts
for details.
9.33 Trackers
AggreGate Network Manager includes the following trackers
257
Service Response Time tracker that watches response time of a specified service.
9.34 Widgets
AggreGate Network Manager provides a set of pre-built widgets facilitating network monitoring tasks: Widget Name IP Host Information Description Shows several network device characteristics updating them in real time: performance gauges for CPU Load, Physical Memory Usage, Virtual Memory Usage, Packet Loss Rate percentages detailed host status basic SNMP information storage volumes sizes and usage percentages information about network interfaces on the host. In general, the widget enables "at a glance" overview of essential information about an IP host. VMware Information
1118
Displays details about virtual machines registered at a particular VMware Server. Displays information about an SNMP-compliant printer. Displays essential details about a selected wireless device. Widgets providing NetFlow statistical data visualization. Visualize geometry/topology and state of monitored IT infrastructure. Special kind of widgets devoted to charting numerical characteristics of managed network items.
Printer Information
1120
All Events
All Events filter shows all important system and network events. See details in the corresponding section Filters chapter.
215
of Event
1155
Service Outages
Service Outages filter shows outage events for outage events: Server Time when the event occurred. Context presenting the network host. Level of the event. Service that generated the event. Start Time of the outage. Outage Duration in seconds. Outage Reason provided by the service.
152
SNMP Traps
SNMP Traps filter shows events generated when an SNMP Trap 1085 is received. The following columns are presented: Server Time of the event. Agent IP Address or Host Name referencing the source of the trap. Enterprise field of trap. Trap's Generic Trap Type ID. Uptime of device that originated the trap (in 1/100 seconds). Variable Bindings associated with the trap.
Syslog
Syslog Events filter shows events corresponding to Syslog messages server. The following columns are visible here: Event Server Time. Level of the event. Syslog message Timestamp. Message text. IP Address or Host Name provided in the Syslog message. Facility specified in the Syslog message. Severity of the Syslog message.
1105
9.36 Models
AggreGate Network Manager incorporates several built-in models
303 :
when device
Device Inventory
This model includes several rule sets for detecting device operating system. The model will be extended in the future AggreGate Network Manager version to discover more information about resources offered by a network host.
1156
AggreGate Documentation
Device Connectivity
This model enables event masking and suppression of alerts initiated by devices that are unavailable due to failures of some intermediate network devices. See Event Masking and Device Dependencies 1067 for more information.
Interface Traffic
This model is attached to every network device. It declares per-interface in/out bytes counter table. This table is filled using 64-bit traffic counters if such counters are provided by the device, and 32-bit counters are used otherwise. All other interface traffic analysis tools (charts, reports, etc.) are based on this model.
Memory Utilization
This model is attached to every network device. It declares generic Physical Memory, Virtual Memory and Swap Space variables and a rule set that calculates their value out of available device-specific memory metrics. All other memory analysis tools (charts, reports, alerts, etc.) are based on this model.
Disk Utilization
This model is attached to every network device. It declares generic Disk Statistics variable and a rule set that calculates disk usage out of available device-specific disk metrics. All other disk utilization analysis tools (charts, reports, alerts, etc.) are based on this model.
Sending custom email to a helpdesk using Send E-mail Send a Syslog message Send an SNMP trap Execute a script
628
corrective action
that connects to a helpdesk server using its API and injects a new ticket
is designed to associate some asset tracking information with your network devices.
Plugin's global configuration provides the following boolean settings: Asset Information Asset Location Asset Events Enabling any of these settings instructs AggreGate Server to create a global common table 260 and attach it to all devices in the system. Format of each table may be later edited to conform the asset tracking requirements of your company. Asset tracking information associated with a certain device may be edited using Edit Custom Properties
262
action.
Asset Management plugin just provides a convenient way to enable storage of commonly used asset tracking information. You can create new asset tracking settings and tables using custom properties 261 feature.
1157
Administration
The Network Management plugin uses Administration
853
EVENTS
Details This event is generated when a Syslog message is received. See Syslog Events Monitoring and Consolidation 1105 for details. This event is generated when an SNMP notification (Trap or Inform) is received. See Receiving SNMP Traps and Informs 1085 for details.
VARIABLES
The following variables are added to contexts representing network host devices:
Name
Description
Details
1158
AggreGate Documentation
processList vmCPU
Process List Virtual Machine CPU Information Virtual Machine HDD Information Printer States
Stores statistics for processes running on the host (if this information is available via SNMP). Stores statistics for CPU usage by guest virtual machines running on the host (if VMware ESX server was found there; see VMware Server Monitoring 1114 ). Stores statistics for HDD usage by guest virtual machines running on the host (if VMware ESX server was found there; see VMware Server Monitoring 1114 ). For SNMP-enabled printers stores states configuration as described in Printer Monitoring 1119 chapter.
vmHBA
printerState s
ACTIONS
Name
Description
Details Provides a wizard to configure monitoring tools 1052 for the device. When a tool is created it adds an action that helps user to invoke itself for this device. Rediscovers
1063
Root
The Network Management plugin adds several actions facilitating different administration tasks to the Root Context
726 .
ACTIONS
Description Services Status Send SNMP Trap Send Syslog Message Wake-on-LAN
Details Shows statuses for all registered services. Provides an action to send an SNMP notification as described in Sending SNMP Traps and Informs 1087 . Provides an action to send Syslog messages as described in Syslog Messages Sending 1107 section. Provides an action to send Wake-on-LAN message. See Wake-on-LAN section.
1145
Widgets
ACTIONS
Name
Description
Details
createNetFlowView Create NetFlow Widget Provides a simple way to create a NetFlow View widgets based on NetFlow views. See NetFlow Charting Widgets and NetFlow Views for details.
1159
9.39.3 Discovery
Discovery (discovery) is a system context that provides network device discovery operations and data.
Unique Actions
[?
651 ]
Common Actions
Edit Context Permissions
906 ,
909 .
icon.
Advanced Information
Context Information
Context Type Context Name
864
: discovery : discovery
864
863
: Discovery
: discovery : discovery
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. No access allowed. No access allowed. No access allowed. No access allowed. All operations.
[?
869 ]
Public Functions
[?
878 ]
1160
AggreGate Documentation
[?
880 ]
Public Events
885
890
overall operation of Network Management extensions. It is not shown in the visible context tree.
Network Management plugin exploits SNMP communications.
173 ,
WMI
186 ,
150
Advanced Information
Context Information
Context Type Context Name
864
: networkManagement : netmanagement
864
863
: Network Management
: netmanagement : netmanagement
865
865
Context Permissions [?
Level None Observer Operator Manager Description
No access allowed. Network topology discovery. Same as Observer. SNMP trap sending. Syslog message sending. Wake-on-LAN requests sending. Services status browsing.
Engineer Administrat or
[?
869 ]
Public Functions
SEND SNMP TRAP
[?
878 ]
1161
1
: see Sending SNMP Traps and Informs 0 (for Traps) or 1 (for Informs) see Sending SNMP Traps and Informs
1087 1087
section.
1
: see Syslog Messages Sending 0 None
1107
WAKE-ON-LAN
Awakes a computer by sending a special message. See Wake-on-LAN
1145 .
1
: see Wake-on-LAN 0 None
1145
1
: Name contextName processName requestType Type String String Integer Description Name of device context. Process name.
String
0...unlimited
Name value Type String Description Name of device context.
1162
AggreGate Documentation
description
String
SERVICES STATUS
Utility function used by service-monitoring tools devices.
1108
0
: None
0...unlimited
Dynamic format with the following fields: a String field named "device" (containing context path) one Color field for every registered service denoting its status
0...1
: See Fetching NetFlow Data
0...unlimited
See Collecting NetFlow Data
880 ]
Public Events
NETFLOW
[?
The netflow event is generated when a new flow is obtained. See Collecting NetFlow Data.
netflow
932
10 SCADA/HMI
This section covers AggreGate SCADA/HMI, an industrial control and automation system based on AggreGate Platform. Go to Overview 1163 to proceed.
SCADA/HMI
1163
10.1 Overview
AggreGate SCADA/HMI is an industrial control and automation system based on AggreGate core. It is tightly integrated with other AggreGate solutions for intelligent device management.
10.2 Architecture
AggreGate SCADA/HMI is heavily based on AggreGate Platform. Most of its functions are derived from the underlying framework. Technically, the SCADA/HMI solution is a set of device drivers
129
and plugins
950
Below is the list of AggreGate Platform manual sections that are highly relevant to the SCADA/HMI solution: System Basics
30
Alerts
Reports
Scheduled Jobs
1164
AggreGate Documentation
Devices
113 129
Widgets Scripts
312
628 960
No Projects
AggreGate SCADA/HMI does not have projects. According to its primary concept, a single "primary" server is deployed at the production facility. During the initial phase of deployment, system engineers can connect to the server locally or remotely to build HMIs, create PLC accounts, set up data storage, etc. When the initial system configuration is finished, the same server is used in normal operation mode. No migration or switching to the production environment is required. If a certain system change is required during normal operation, it's very easy to: Make temporary copies of one or more system components (e.g. HMIs or Alerts) Modify, compare and test them, and then Activate one of the temporary copies to use is instead of original The whole AggreGate SCADA/HMI database may be backed up and restored
104
at any time.
for your PLCs, sensors, actuator, and other devices as described in Connecting to PLCs
1165
if necessary.
617
625
upon operator
login.
SCADA/HMI
1165
AggreGate SCADA/HMI documentation section is quite short, since major part of SCADA/HMI functionality is a part of AggreGate Platform. Most important SCADA modules (alerts 216 , reports 241 , widgets 312 , etc.) are described in AggreGate Server 40 section.
device should switch into normal operation state indicated by a green tick icon: . This state means that I/O channel data and operations provided by the device are cached by the server and may be accessed by other system facilities, such as HMIs or alerts. If I/O channel value storage should be enabled, this can be now performed by changing History Storage Time in Device Setting Synchronization Options 115 dialog.
Sliders
347
322
Select Create HMI item from context menu Enter Name and Description of the HMI. Note, that name may include only English letters, digits and underscores. Select background image for the HMI. The size of HMI widget will be auto-calculated on basis of background image size. At this point, the GUI Builder
827
application will start. You can customize your HMI, add new components to it, etc.
626
Using Symbols
1166
AggreGate Documentation
To insert a symbol into an HMI widget, use Vector Drawing 352 widget component. Once a new vector drawing is added to the widget, edit its SVG File property and load one of the symbols located in the /images subfolder of AggreGate installation. The SVG file chooser shows previews to simplify image selection:
SCADA symbols are not included in AggreGate Client distribution bundles. If you'd like to build HMIs using standalone Client distribution, copy /images folder from your AggreGate Server installation to AggreGate Client installation.
Symbol Categories
Here is a list of categories available in AggreGate SCADA/HMI symbol library: Air Conditioning Arrows ASHRAE Controls & Equipment ASHRAE Ducts ASHRAE Piping Basic Shapes Blowers Boilers Chemical Containers Controllers Controls Conveyors Ducts Electrical Finishing Flexible Tubing Flow Meters Food Laboratory Machining Material Handling Mining Mixers Motors Operator Interface Panels Pipes Plant Facilities Power Process Cooling Process Heating Pulp & Paper Pumps Segmented Pipes Sensors Tanks Valves Vehicles
SCADA/HMI
1167
Click OK to save the settings. For more information on the above settings, see Device Settings Synchronization Options
115 .
1168
AggreGate Documentation
312
In AggreGate SCADA/HMI, any chart is widget chart data model, properties, and use cases.
384
Creating a chart for displaying historical and real-time channel values is very simple: Right-click on a Device node ( Select Configure Device ( ) in the System Tree. ). The device settings (I/O channels) dialog will open.
Right-click on the I/O channel to create chart for, and select Create Chart. Follow the instructions described in Create Chart for Variable
771
section.
Alternatively, it's possible to build chart widget from scratch by creating an empty widget, adding chart component to it, and setting up its properties.
HMI Security
Some SCADA systems associate permission levels and checks with every component of HMI interfaces. AggreGate SCADA/HMI uses smarter method of controlling what a certain HMI can and cannot do: HMI components have no security-related information associated with them The working HMI inherits permissions of a user who launched it Every read or write request to the server data model uses the same effective permission level (i.e. permissions of user that started the HMI widget) Permissions are checked on the server side, therefore compromising security by "hacking" the client-side widget it not possible Fine-grained permission control is performed by giving system operators different levels of access to different system resources and devices
In the Discovery Services Selection and Setup dialog, specify a list of Windows login credentials that will be used to log in to the OPC server hosts. The list is available in Service Options and Credentials field. In the next steps of discovery wizard, specify IP Ranges or individual IP Addresses to be scanned. When discovery is over, the Results dialog will be shown. It's time to select OPC servers to create device accounts for them.
10.9 Maintenance
AggreGate SCADA/HMI includes a Maintenance module (plugin) hardware assets. Purposes of this module are:
950
Ensuring that regular maintenance is performed on the assets and process components to avoid unnecessary downtime Ensuring that the assets have an optimal lifetime through regular maintenance
SCADA/HMI
1169
a periodic maintenance
context (
table.
2)Once the Schedule Maintenance action is started, it prompts to enter parameters of a Maintenance Act to be performed, and particularly: a) Maintenance Act Name (that will match the name of maintenance job context
744 )
b)Maintenance Act Description (will match the description of maintenance job context) c) Maintenance Subject, i.e. what device or component should be serviced d)Maintenance Regulation terms 3)When a maintenance job creation is finished, it can be found in Scheduled Jobs => Scheduled Job Groups => Maintenance. It's necessary to run Configure ( ) action for this job and specify maintenance schedule. There are two types of schedules available: simple 270 (fixed-period) schedule and advanced 270 schedule. 4)Every time the maintenance job is executed, it triggers the Maintenance alert
that is stored in the database to indicate that the maintenance act should be completed. If there are some pending (unacknowledged) maintenance acts, this alert will switch to active state (indicated by icon).
216
Finally, if there are more than 5 unacknowledged maintenance acts, or at least one of them was not acknowledged for longed than one day, the maintenance alert will be escalated thresholds are configurable 232 .
237
(what is indicated by
icon). Escalation
228 this alert instance and optionally enter some comments about maintenance progress/result. There are two ways to acknowledge a maintenance alert:
action from an alert context ( ), right-click on an alert instance and select Acknowledge from context menu, and enter acknowledgement text.
656
(which is also a part of Maintenance module) in the historical section of Event Log . This filter shows all maintenance acts, but highlights unacknowledged acts in carrot-red color. To acknowledge any act, right-click on it and select Acknowledge from context menu, than enter acknowledgement text.
206 241
6)Finally, to see the history of past maintenance acts, use Maintenance Summary report
SVG Demo . Explains the functionality of dynamic vector drawing Scripts Demo. Outlines the usage of widget scripts
610 .
352
Filter Plant Demo . A full-scale demo HMI emulating a filter plant 1170 .
1170
AggreGate Documentation
1171 .
Bottling Line Demo. A full-scale demo HMI emulating a bottling line Bottles Conveyor Demo. A subwidget demo. Should not be used separately.
382
used to implement and animate a conveyor belt within the Bottling Line
SCADA/HMI
1171
11.1 Overview
AggreGate Time and Attendance is a multi-user employee attendance tracking system based on AggreGate core. It is tightly integrated with AggreGate Access Control and other AggreGate solutions for smart building management.
1172
PC clock
AggreGate Documentation
PDA clock Web clock Native AggreGate devices: Some devices, such as GigaTMS's TR610 time recorder, are "made for AggreGate". Such devices have AggreGate settings as part of their own configuration menu, making connection very easy. Network-enabled time recorders: If you have a network-connected time recorder (or a network of several such devices) which you wish to connect to AggreGate, you may only need to create an AggreGate device driver 129 for them. This would be a software component of AggreGate, which would let you work with these devices natively. Of course, you could also write (or purchase) several different drivers to connect disparate time recorders from different makers and thus unify them into one complete system. Connecting readers directly: If you wish to have users sign in or out using a simple data acquisition device, such a magnetic stripe or a barcode reader, you could connect it using an AggreGate Agent 848 . This is a small hardware device running a dedicated Tibbo BASIC application which can "talk" to AggreGate. It does all of the heavy lifting for the simple end node: Registers it on AggreGate Server, transfers the data acquired, etc.
First, note the Port number to listen for Agents - this is 6480 by default, but your may be different. Be sure to note what it is. Then, make sure Automatically register device accounts for new Agents is checked, so that new devices would be allowed to register with the system. In the future, once you've registered all of your devices, you could disable this setting so no new devices can be registered without you (the system admin) knowing about it.
1173
Another detail you'll need to include in your time recorder configuration is the user account under which the device should register. In other words, AggreGate needs the device to tell it which user "owns" it. If you have a small installation, you can leave this as admin, the default AggreGate administrator 109 . Now that you know these details, it's time to feed them into your time recorder (or Agent configuration). We're afraid we can't give you precise guidance here -- it depends on your own device. Now is the time to go to the manual for your device and figure out how to do this. Once that's done, your device should try to connect to AggreGate Server with the correct parameters (and succeed!).
The highlighted node is your terminal (yours will of course have a different name; perhaps a cooler one). The checkmark next to it indicates that it is connected and in sync. Technically, it indicates the device account for your device.
Flat Organization
This format is suitable for smaller organizations. If you're going to use AggreGate Time & Attendance with a 30-men company, you're probably not going to divide it up by divisions and departments. You might just want to list who you have, in the simplest way possible. This is what the Cardholders node of the System Tree is for. A "flat" organization would look something like this:
Hierarchical Organization
This option works for larger organizations. It lets you map your organization in three levels of hierarchy, so it scales up to huge enterprises.
1174
AggreGate Documentation
Organization ( ): This is the highest level. It would be your whole corporation. Note that you can actually have more than one organization, so you could use this for each physical location (each campus of a multi-national enterprise, for example). Division ( ): This is the next level down. It could be something like "R&D" or "Sales". ): This is the lowest level. "Phone sales" would be a department within "Sales".
Department (
You don't have to drill all the way down. For example, you could keep things in the division level for your organization. Alternatively, if you want to keep terminology consistent with your current organizational chart and you divide by "departments" without any "divisions", you can create a single organization containing a single division, and put all of your departments within this division. The main point is that the hierarchy is fixed - a department can only be created under a division.
GROUPS
You can create groups of divisions, departments, and cardholders for use in reports and in executing various actions en masse. Groups 248 are described in their own topic.
COMMON ACTIONS
Creating, configuring and deleting contexts (context 863 is the common name for AggreGate objects such as organizations, divisions, or departments) are called common actions. There are a number of other actions you can perform on almost any context in AggreGate. These include copying the context, editing its access permissions, monitoring related events, etc. and are covered under common actions 902 . They are not generally needed for simple use of the system, so you don't have to go read up about them right now. Just know that they're there.
1175
The details are all pretty self-explanatory (first name, last name, contact numbers, etc.). There are only a couple of notes to make here: The Name is the cardholder context name in the system. It's not necessarily the person's actual name (that's what First name and Last name are for). Thus, it needs to confirm to AggreGate's context naming conventions 863 . This sounds complicated, but it generally just means it can't have spaces in it and has to be unique within that level (you can't have two Joe contexts within the same department. One would have to be Joe1). There's one key detail you cannot feed into this dialog: The actual card number by which the cardholder signs into the system! So after adding each cardholder, you're going to have to edit its properties and add this number. You can also import 1176 cardholders from any other system which can output CSV files.
Editing Cardholders
When you double-click a cardholder (or right-click it and select Configure Cardholder) you get the following dialog:
Note the extra tabs here. When adding the cardholder, you could only access the first tab (cardholder properties). Now you get four more tabs - Cards/Badges, Photo, Voice Tag and Custom Shift. Cards/Badges: This is where you enter the cardholder's actual card information. As the name implies, each cardholder can have more than one badge associated with it. More on this under Managing Cards/Badges 1179. Photo: The cardholder's image, for use in various reports. Voice tag: This is a sound file which contains a sample of the person's voice for security purposes. Custom Shift: This lets you specify if the person works in some specific schedule (shift) different than that of the department he's in. More on this under Managing Shifts 1179 .
a cardholder (or any other context) or perform any of the Common Actions
902
on it.
1176
AggreGate Documentation
You can select multiple cardholders (using Shift+click for contiguous selection and Ctrl+click for selecting multiple cardholders in different locations in the tree). If you then right-click your selection, you will be able to edit them all together (or delete them all, etc).
EmployeeID,LastName,FirstName,Title,TitleOfCourtesy,BirthDate,HireDate,Address,City, Region,PostalCode,Country,HomePhone,Extension,Photo,Notes,ReportsTo 1,Davolio,Nancy,Sales Representative,Ms.,12/08/48,05/01/92,507 - 20th Ave. E.\r\nApt. 2A,Seattle,WA,98122,USA,(206) 555-9857,5467,Object Type17,Education includes a BA in psychology from Colorado State University in 1970. She also completed "The Art of the Cold Call." Nancy is a member of Toastmasters International.,2 2,Fuller,Andrew,"Vice President, Sales",Dr.,02/19/52,08/14/92,908 W. Capital Way, Tacoma,WA,98401,USA,(206) 555-9482,3457,Object Type17,"Andrew received his BTS commercial in 1974 and a Ph.D. in international marketing from the University of Dallas in 1981. He is fluent in French and Italian and reads German. He joined the company as a sales representative, was promoted to sales manager in January 1992 and to vice president of sales in March 1993. Andrew is a member of the Sales Management Roundtable, the Seattle Chamber of Commerce, and the Pacific Rim Importers Association.", 3,Leverling,Janet,Sales Representative,Ms.,08/30/63,04/01/92,722 Moss Bay Blvd., Kirkland,WA,98033,USA,(206) 555-3412,3355,Object Type17,Janet has a BS degree in chemistry from Boston College (1984). She has also completed a certificate program in food retailing management. Janet was hired as a sales associate in 1991 and promoted to sales representative in February 1992.,2 4,Peacock,Margaret,Sales Representative,Mrs.,09/19/37,05/03/93,4110 Old Redmond Rd., Redmond,WA,98052,USA,(206) 555-8122,5176,Object Type17,Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American Institute of Culinary Arts (1966). She was assigned to the London office temporarily from July through November 1992.,2 5,Buchanan,Steven,Sales Manager,Mr.,03/04/55,10/17/93,14 Garrett Hill,London,,SW1 8JR, UK,(71) 555-4848,3453,Object Type17,"Steven Buchanan graduated from St. Andrews University, Scotland, with a BSC degree in 1976. Upon joining the company as a sales representative in 1992, he spent 6 months in an orientation program at the Seattle office and then returned to his permanent post in London. He was promoted to sales manager in March 1993. Mr. Buchanan has completed the courses \"Successful Telemarketing\" and \"International Sales Management.\" He is fluent in French.",2 6,Suyama,Michael,Sales Representative,Mr.,07/02/63,10/17/93,Coventry House\r\nMiner Rd.,London,,EC2 7JR,UK,(71) 555-7773,428,Object Type17,"Michael is a graduate of Sussex University (MA, economics, 1983) and the University of California at Los Angeles (MBA, marketing, 1986). He has also taken the courses \"Multi-Cultural Selling\" and \"Time Management for the Sales Professional.\" He is fluent in Japanese and can read and write French, Portuguese, and Spanish.",5 7,King,Robert,Sales Representative,Mr.,05/29/60,01/02/94,Edgeham Hollow\r\nWinchester Way,London,,RG1 9SP,UK,(71) 555-5598,465,Object Type17,"Robert King served in the Peace Corps and traveled extensively before completing his degree in English at the University of Michigan in 1992, the year he joined the company. After completing a course entitled \"Selling in Europe,\" he was transferred to the London office in March 1993.",5
1177
8,Callahan,Laura,Inside Sales Coordinator,Ms.,01/09/58,03/05/94,4726 - 11th Ave. N.E., Seattle,WA,98105,USA,(206) 555-1189,2344,Object Type17,Laura received a BA in psychology from the University of Washington. She has also completed a course in business French. She reads and writes French.,2 9,Dodsworth,Anne,Sales Representative,Ms.,01/27/66,11/15/94,7 Houndstooth Rd.,London,, WG2 7LT,UK,(71) 555-4444,452,Object Type17,Anne has a BA degree in English from St. Lawrence College. She is fluent in French and German.,5
Right-click the root Cardholders node (or any Cardholders node in your hierarchy, if you're using divisons, departments, etc.). Click Import. In the Select Import Data File dialog, click Choose and browse to your file. We will be using employees.csv. Click OK. Next you will see the CSV Import Options dialog. This dialog has several options which merit description: 1. Field delimiter: This is the character separating each field from the next one. The default is a semicolon (;) but in our file it's a comma (,). So if you're following along, change it. 2. Use Text Qualifier: A text qualifier is used around longer strings within the record "like this". It is usually quote marks. This option is unchecked by default, but we need it for our file. So check it. 3. Text Qualifier: This is the actual character used as the qualifier. Here we can keep the default, our file also uses quote marks. 4. Comment Character: This is for comments within the file. Things AggreGate will ignore when importing. Our file doesn't have any, but we can keep it. 5. Escape Mode: What if you want to include your text qualifier (say, double quotes) within the CSV? There are two common approaches to handle this. Some software uses a backslash as an escape char, so it looks like this: \" . Other software just repeats the qualifier twice, like this: "" . This option lets you toggle between these two modes. For our file, we need to change the default. Select Use a backslash character... 6. Header Record: Sometimes the first record is used to specify field names or descriptions. Sometimes it is just another record, and sometimes it even contains garbage and has to be ignored altogether. This setting lets you toggle between these four modes. For our file, select Field Descriptions. See CSV Import/Export Options
1325
Now click OK. If you've done everything correctly, you should get a dialog like this:
Note how nicely it splits up the fields. It also specifies the field name in the header row. Our next step is to take these fields and map them onto AggreGate's field names. Click OK.
1178
AggreGate Documentation
The mappings dialog lists each field in an AggreGate Cardholder record. Open the Source/Expression listbox next to each field and select the corresponding field name in your CSV. For example, First Name stays First Name (meaning, our CSV contains a field by that exact name too), while Cardholder Name would correspond to Employee ID. If you can't find a corresponding field, leave it at None. Having mapped the fields to your satisfaction, click OK. AggreGate will now create a new context for each cardholder. Voila!
1179
Creating Cards
Right-click the cardholder you wish to add the card for, and select Configure click the cardholder. Click the Cards/Badges tab. Click the Add row ( ) button, and fill in the various fields: cardholder. You can also just double-
Card/Badge ID: Should correspond to whatever your device passes to AggreGate Server. Can be between 1-100 chars in length, cannot contain spaces. Status: Active , Suspended, Lost, Stolen, or Destroyed. Any status differing from Active deactivates the card. Activation Date: This is the date from which the card should be active. For a card which should be active, this should be sometime in the past. Deactivation Date: This is the date on which the card ceases to be active. For a card which should be active, this should be sometime in the future (or "not set").
Removing Cards
Technically, you can can delete a row containing card info by clicking the Remove selected row ( ) button. This is generally not a good idea, as it would make all entries logged under that card disappear from any future attendance reports. That is way it's much better to deactivate the card (uncheck the Active checkbox). When you merely deactivate a card (and not delete/remove it), the system still knows it used to belong to that cardholder in the past, and thus takes it into account in all related reports.
SHIFT PROPERTIES
Double-click the Shifts node to open the Shift Properties dialog for adding a new shift.
1180
AggreGate Documentation
Enter the following details: Name: Name of the shift. Regular context naming
863
Description: The description which would appear in the System Tree, etc. Enter "Normal Work Week". Type: This is where you select either a Week Shift or a Regular Shift. For this example, select Week Shift. Shift type cannot be changed after shift creation.
Overtime After End: Can employees stay longer and accrue overtime? Overtime Before Begin: Can employees punch in earlier and accrue overtime? Overtime Day Off: Can employees still show up during an official "day off" and accrue overtime for it? Overtime During Lunch: Can employees take a shorter lunch, or skip it altogether, and accrue overtime for it? Configure these as per your organizational policy, and click OK.
SCHEDULE
Now double-click the shift you created (Normal Work Week) to configure the schedule for it. Click the Schedule tab:
As you can see, each day gets a row with the following fields: Is Workday: Should the employee arrive at the office on this day? Report Time: When should they be punching in? Knock Off Time: When is the time to leave? Lunch: Type of lunch, one of the following: None - no dedicated lunch time is assumed, any work interruptions during the day will be processed as breaks. Fixed - in this case fixed Lunch Begin Hour and Lunch End Hour should be set. The system employs a special algorithm to find a single work interruption those time and duration closely matches to lunch time/duration. This work interruption is treated as lunch time, and all other work interruptions during the day are processes as breaks. Flexible - in this case Lunch Duration should be set. The first minutes of work interruptions are registered as lunch time, all work interruption time that exceeds Lunch Duration is considered as break time. See Calculating Breaks 1186 for lunch/break time processing details.
Lunch Begin Hour, Lunch Finish Hour: Margins of lunch time, used when Lunch field is set to Fixed. Lunch Duration: The maximum length of lunch time, used when Lunch field is set to Flexible. Maximum Overtime Extent (minutes): How much overtime can an employee accrue on a single one of these days? Minimum Overtime Extent (minutes): How long should an employee stay after the knock-off time for it to be considered overtime? For example, if this is 15 minutes and the employee leaves at 18:10, these ten minutes will not be counted at all! They are not overtime, but they are after the knock-off time too, so they will simply be discarded
1181
EXCEPTIONS
The Exceptions tab lets you configure holidays:
Start Date: When does the holiday begin? End Date: When does it end? All other fields are as above. If Is Workday is not checked for the holiday and Overtime Day Off is not checked under Shift Properties tab, employees arriving during the holiday would get no pay at all -- as if the office is closed and they are there on their own time. Make sure to check Overtime Day Off if employees on this shift are needed during the days set as exceptions.
SHIFT PROPERTIES
Double-click the Shifts node and follow the same instructions given for shift properties course: Under Type be sure to select Regular Shift.
1179
SCHEDULE
Now double-click the shift you created to configure the schedule for it. Click the Schedule tab:
This is where the difference between the Week and the Regular shift becomes very clear. Whereas the Week shift gave us a pre-filled table with seven days, here we get a blank table. All properties are exactly the same as above (see Managing Shifts 1180 above), but the shift is a cycle of days. You can have a three-day cycle, a two-week cycle, etc.
1182
AggreGate Documentation
EXCEPTIONS
Exceptions are configured just like for a Weekly shift above
1181 .
START DATE
When you create a Regular Shift, AggreGate configures another parameter for it which is different than a weekly shift: The Start Date. This is needed for AggreGate to later tell what day of the regular shift an employee worked on due to the cyclic nature of the regular shift. For example, if you have a regular shift which defines a three-day cycle, and an employee worked five days, day number five would correspond to day 2 of the regular shift. To figure this out, AggreGate needs to know the start date for the regular shift. You can see this setting and change it (not recommended) by re-accessing the regular shift properties once it has been created (not during the initial creation process itself).
Assigning Shifts
FOR ORGANIZATIONS
Double-click an organization within the tree, click the Shift tab and select the shift you wish to apply to that organization and all contexts it contains.
Default Shift
There is an auto-created week shift called Default Shift. It can be edited, but its removal is not allowed. It defines a "classic" Monday-to-Friday 8-hours working week.
1183
This is the time, as reported from the time recording device. It may be different than the server time (due to time zone differences, etc.) This should be linkd to a specific cardholder in the system. Can be In or Out.
AggreGate adds information to each event: Server Timestamp Cardholder What was the local time at the server when this event was received. What cardholder is associated with this card.
Click the Filter listbox (top left in the screenshot above) and select Time Recorder Events - (your username) The Filter Parameters dialog appears:
Filter by Card ID: If you're looking for the events related to one specific badge or card. Note that this is a card ID not a cardholder name. Card ID: The ID you wish to filter by (if any) Filter by Event Type: Toggle this to filter by IN or OUT events. Event Type: Select IN or OUT to specify what you wish to filter by. Click OK to filter according to the parameters you selected. Not choosing any parameters would match the widest set of events. Note that you will get only events from time recorders owned by you.
1184
AggreGate Documentation
Yes -- you may be able reboot the actual time and attendance terminal using the event context menu. It's not meant for that, but it's nice to know you have the option.
(i.
1185
4. AggreGate now checks the last event for the cardholder for that day, to verify that it is an OUT event. If the last event for that workday is IN (meaning, the OUT is missing), AggreGate adds an OUT event according to the following logic: - If the IN event is from before the shift ended: AggreGate adds an OUT event at the time the shift ends (i.e. Knock Off Time). - If the IN event is from after the shift ended: AggreGate adds an OUT event with a timestamp just after that IN event. 5. AggreGate now verifies the resulting event set, to ensure that there are no two IN or two OUT events one after the other. Note: The rules in points 3 and 4 are valid for any two IN or OUT events in sequence. Meaning: If AggreGate finds two contiguous IN events, it applies rule 4; if it finds two contiguous OUT events, it applies rule 3.
of 21 July 2009.
2. The event pair we're working with occurred on 17 October 2009. 3. Is that date defined as an exception? If so, take its rules. If not, move on. 4. AggreGate calculates the difference between the start date and the event date. It is 88 days. 5. AggreGate now divides the difference in days (88) by the number of days in the shift (3) and calculates the remainder. In this case, it is 1. 6. AggreGate now takes the remainder and adds it to 1 because the row number for first day of the shift is 1 and not 0 (so if the remainder is 0, for example, the correct day is day 1 of the shift). In our case, the result would be 2. Therefore, the rules for the second day of the three-day cycle apply.
4. AggreGate now calculates how long the entire duration of overtime is, and checks if it is greater than the Minimum Overtime Extent setting. If it is lesser than Minimum Overtime Extent, it will be set to 0.
1186
AggreGate Documentation
5. The system now calculates the sum of all of the scheduled time with the overtime, and compares the result with the allotted duration of the shift. Any time above the allotted time for the shift is now counted as overtime -- again, only time which brings the total working time over the total length of the shift. So arriving 30 minutes late and staying 30 minutes late to make up for it does not qualify one for overtime.
A CONCRETE EXAMPLE
Let's say Joe Employee is supposed to work from 9:00 till 17:00. Joe comes in late one Monday, say, at 9:05. He keeps on working until 17:25 to make up for the lost time. In this case, Joe doesn't get any overtime (because the total length of his workday is still 8 hours). But you can have a problematic scenario, too: Let's say you set Minimum Overtime Extent to something like 30 minutes (not a good idea). In this case, if Joe comes in at 9:25 and stays till 17:25, the system will not count those 25 minutes because they are less than the Minimum Overtime Extent! It would seem as though Joe simply lost 25 minutes of work and could not care less (and he would not be paid for the 25 minutes he stayed -- not even normal rates). So make sure not to set Minimum Overtime Extent to more than 5 minutes or so (or Maximum Overtime Extent to a very short period).
Calculating Breaks
To calculate break time, AggreGate compiles all OUT-IN event sequences within the bounds of a given shift. It adds those periods up into a total of all breaks taken. Some reports display the time taken for the Lunch Break specifically (because the time when the employee should take the break is configurable in Shift 1179 properties). To figure out what pair of OUT-IN events within the shift denote the lunch break, AggreGate considers value of Lunch setting of employee's shift 1179 :
NONE
All pairs of OUT-IN events are considered as breaks.
FIXED
1. If there is an OUT event between the Lunch Begin Hour and the Lunch End Hour , AggreGate would take this as the beginning of the lunch break (and the IN event following it, as the end of the lunch break). 2. If there is no such event, AggreGate would take the last OUT event which precedes the lunch hour. If an employee decides to skip their lunch hour and take a lunch break later (starting after the lunch hour is already over), AggreGate would count this as a break, but it would not show up as a "lunch break" in the reports.
FLEXIBLE
Assuming the value of Lunch Duration is N minutes, the first N minutes of work interruptions during the day will be considered as lunch time, and all the rest is deemed break time.
topic.
1187
Attendance Report
This report shows, on a daily basis, when each employee can into work, when they left, and how long they actually worked (excluding breaks).
1188
AggreGate Documentation
Timecard Report
This report is grouped by cardholder (as opposed to by date, like Daily Activity report). It contains the same information, but lets you more easily look at each single employee rather than a single day.
1189
11.10.1 Attendance
This context is a system context that provides access to different data related to the overall operation of Time and Attendance extensions. It is not shown in the visible context tree.
Advanced Information
1190
AggreGate Documentation
Context Information
Context Type Context Name
864
: attendance : attendance
864
863
: Attendance
: attendance : attendance
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. All operations. Same as Observer. Same as Observer. Same as Observer. Same as Observer.
[?
869 ]
[?
878 ]
885
ATTENDANCE
The attendance event is generated upon any In or Out event produced by a Time Recorder device connected to AggreGate Server. Is provides a generic attendance data format, while different types of time recorders provide attendance events in different format. This event is hardware-independent. Any time recorder or time clock driver should convert attendance data received from hardware into attendance events. These events are processed by AggreGate Time and Attendance to build different reports. At the same time, these raw events may be accessed by third-party reporting, payroll and other software via AggreGate Server API 961 or Web Services 976 . It's also possible to collect all attendance events in a separate database table using database custom event writer Third-party systems may access this table directly to get attendance data for processing.
72
attendance
932
: Notes
Field Type
Date
Timestamp of event registration by the time recorder (differs from server timestamp, e.g.
1191
time when event was received by the server) Card ID. Owner of card (path of cardholder context).
String String
Context path of time recorder context this event came from. Event type: 'in ' or 'out'
11.10.2 Cardholders
This context 863 is a container, holding cardholder contexts 1193 at some level of organization hierarchy or all cardholder contexts outside of the organization hierarchy.
Unique Actions
[?
651 ] 243
1188
893
This action is used for creating a new cardholder. It allows user to specify basic properties of the new cardholder and configure it immediately after creation.
Action Type: Permissions: Create
905 932
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
icon.
Advanced Information
Context Information
Context Type
Context Name
864
: cardholders
863
: cardholders
864 :
Context Description
Cardholders
1192
AggreGate Documentation
Context Mask 865 : cardholders, organizations.*.cardholders for cardholders in all organizations, organizations.*. divisions.*.cardholders for cardholders in all divisions in all organizations, organizations.*.divisions.*. departments.*.cardholders for cardholders in all departments in all divisions in all organizations
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
865
No access allowed. Basic event monitoring. Same as Observer. Cardholder creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
This variable is defined only for the "root" cardholders node that contains cardholders not belonging to any organization.
shift
shift
Shift
1182
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates a new cardholder.
1
: Same as format of childInfo
1194
variable in Cardholder
1193
context.
0
none
880 ]
Public Events
[?
885
1193
11.10.3 Cardholder
This context
863
Unique Actions
1188
893 )
Action Type:
Configure
[?
651 ]
904
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
909 ,
906 ,
909 ,
View Status
910
icon.
Advanced Information
Context Information
Context Type Context Name
864
863
Context Description
provided by user
Context Path 863 : cardholders.CARDHOLDER_NAME for cardholders that belong cardholders context 1191 in root context, organizations.ORGANIZATION_NAME.cardholders.CARDHOLDER_NAME for cardholders that belong cardholders context in certain organization context, organizations.ORGANIZATION_NAME.divisions. DIVISION_NAME.cardholders.CARDHOLDER_NAME for cardholders that belong cardholders context in certain division context, organizations.ORGANIZATION_NAME.divisions.DIVISION_NAME.departments. DEPARTMENT_NAME.cardholders.CARDHOLDER_NAME for cardholders that belong cardholders context in certain department context Context Mask 865 : cardholders.* for all cardholders that belong cardholders context 1191 in root context, organizations.*.cardholders.* for all cardholders that belong cardholders context in all organization contexts, organizations.*.divisions.*.cardholders.* for all cardholders that belong cardholders context in all division contexts, organizations.*.divisions.*.departments.*.cardholders.* for all cardholders that belong cardholders context in all department contexts
Context Permissions [?
Level Description
865
1194
AggreGate Documentation
None Observer
Same as Observer. Cardholder configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
875 ,
875
CARDHOLDER PROPERTIES
See description of the variable and its fields here 1174 . Variable Name: Records: Permissions: Record Format
Field Name name
855
childInfo
firstname lastname gender position country region zip city address1 address2 email workPhone homePhone mobilePhone
String String Integer String Integer Boolean String String String String String String String String
1195
CARDS/BADGES
See description of the variable and its fields here 1179 . Variable Name: Records: Permissions: Record Format
Field Name
855
cards
PHOTO
photo
photo
VOICE TAG
voice
voice
1196
AggreGate Documentation
CUSTOM SHIFT
See description of the variable and its fields here 1182 . Variable Name: Records: Permissions: Record Format
Field Name
855
customShift
customShift
1182 .
ATTENDANCE EXCEPTIONS
See description of the variable and its fields here 1178 . Variable Name: Records: Permissions: Record Format
Field Name
855
attendance
Notes
startDate endDate isWorkday reportingTime knockOffTime hasLunch lunchBeginHour lunchEndHour maximumOT minimumOT category comment
Public Functions
Public Events
[?
880 ]
1197
885
11.10.4 Departments
This context
863
Unique Actions
893
This action is used for creating a new department 1173 . It allows user to specify basic properties of the new department and configure it immediately after creation.
Action Type: Permissions: Create
905 932
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
icon.
Advanced Information
Context Information
Context Type
Context Name
864
: departments
863
: departments
864 :
Departments
: organizations.ORGANIZATION_NAME.divisions.DIVISION_NAME.departments : organizations.*.divisions.*.departments
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Department creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
1198
AggreGate Documentation
CREATE
Creates new department.
1
: Same as format of childInfo
1199
variable in Department
1198
context.
0
none
880 ]
Public Events
[?
885
11.10.5 Department
This context
863
Unique Actions
department: Attendance 1187
1193
1188
893 )
Action Type:
Configure
[?
651 ]
904
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
909 ,
906 ,
909 ,
View Status
910
icon.
Advanced Information
Context Information
1199
863
provided by user
: organizations.ORGANIZATION_NAME.divisions.DIVISION_NAME.departments.DEPARTMENT_NAME : organizations.*.divisions.*.departments.*
865
865
Context Permissions [?
Level None Observer Description
Same as Observer. Department configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
875 ,
875
DEPARTMENT PROPERTIES
childInfo
description
String
CUSTOM SHIFT
customShift
customShift
1182
Public Functions
[?
878 ]
1200
AggreGate Documentation
Public Events
[?
880 ]
885
11.10.6 Divisions
This context
863
Unique Actions
893
This action is used for creating new division 1173 . It allows user to specify basic properties of the new division and configure it immediately after creation.
Action Type: Permissions: Create
905 932
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
icon.
Advanced Information
Context Information
Context Type
Context Name
864
: divisions
863
: divisions
864 :
Divisions
: organizations.ORGANIZATION_NAME.divisions : organizations.*.divisions
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Division creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
1201
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates new division.
1
: Same as format of childInfo
1202
variable in Division
1201
context.
0
none
880 ]
Public Events
[?
885
11.10.7 Division
This context
863
Unique Actions
division: Attendance 1187
1193
1188
893 )
Action Type:
Configure
[?
651 ]
904
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
909 ,
906 ,
909 ,
View Status
910
icon.
1202
AggreGate Documentation
Advanced Information
Context Information
Context Type Context Name
864
863
provided by user
: organizations.ORGANIZATION_NAME.divisions.DIVISION_NAME : organizations.*.divisions.*
865
865
Context Permissions [?
Level None Observer Description
Same as Observer. Division configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
875 ,
875
DIVISION PROPERTIES
childInfo
description
String
CUSTOM SHIFT
customShift
1203
Field Name
Notes
customShift
1182
Public Functions
[?
878 ]
Public Events
[?
880 ]
885
11.10.8 Organizations
This context
863
Unique Actions
243 actions that show report containing only records with cardholders 1193 that belong to any its child organization. Such as:
1188
893
This action is used for creating new organization. It allows user to specify basic properties of the new organization and configure it immediately after creation.
Action Type: Permissions: Create
905 932
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
icon.
Advanced Information
Context Information
Context Type
Context Name
864
: organizations
863
: organizations
864 :
Organizations
: organizations
1204
AggreGate Documentation
865
Context Mask
: organizations
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Organization creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates new organization.
1
: Same as format of childInfo
1205
variable in Organization
1204
context.
0
none
880 ]
Public Events
[?
885
11.10.9 Organization
This context
863
1173
Unique Actions
organization: Attendance 1187
1193
1188
1205
893 )
Action Type:
Configure
[?
651 ]
904
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
909 ,
906 ,
909 ,
View Status
910
icon.
Advanced Information
Context Information
Context Type Context Name
864
863
provided by user
: organizations.ORGANIZATION_NAME : organizations.*
865
865
Context Permissions [?
Level None Observer Description
Same as Observer. Organization configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
875 ,
875
ORGANIZATION PROPERTIES
childInfo
1206
AggreGate Documentation
Notes Organization Name. Name of this organization context, required to refer to this organization from other parts of the system . It should satisfy the context naming conventions 863 . Length: 1-50 characters. Organization Description. Length: 1-100 characters.
description
String
SHIFT
shift
shift
Organization's shift
1182
Public Functions
[?
878 ]
Public Events
[?
880 ]
885
11.10.10 Shifts
This context
863
Unique Actions
893
This action is used for creating new shift. It allows user to specify basic properties of the new shift and configure it immediately after creation.
Action Type: Permissions: Create
905 932
Common Actions
Create From Template 905 , Replicate To Children 910 , Import 908 , Export 907 , Edit Context Permissions Related Events 909 , Search/Filter 909 , various Grouped Actions 894 according to child contexts.
906 ,
Monitor
icon.
Advanced Information
Context Information
1207
: shifts
863
: shifts
864 :
Shifts
: shifts : shifts
865
865
Context Permissions [?
Level None Observer Operator Manager Engineer Administrat or Description
No access allowed. Basic event monitoring. Same as Observer. Shift creation, export and import. Same as Manager. Same as Manager.
[?
869 ]
Public Functions
[?
878 ]
879 ,
delete (Delete)
880
CREATE
Creates new shift.
1
: Same as format of childInfo
1208
variable in Shift
1207
context.
0
none
880 ]
Public Events
[?
885
11.10.11 Shift
This context
863
Unique Actions
893 )
1208
AggreGate Documentation
Changing Name field during this operation will cause renaming of current context. This may lead to malfunctioning of other system components that use context name/path as a primary identifier.
Action Type:
Configure
[?
651 ]
904
Common Actions
Delete
905
, Make Copy
908 ,
Replicate
909 ,
906 ,
909 ,
View Status
910
icon.
Advanced Information
Context Information
Context Type Context Name
864
863
provided by user
: shifts.SHIFT_NAME : shifts.*
865
865
Context Permissions [?
Level None Observer Description
Same as Observer. Shift configuration and removal. Same as Manager. Same as Manager.
[?
869 ]
875 ,
875
SHIFT PROPERTIES
See description of the variable and its fields is here 1179 . Variable Name: Records: Permissions: Record Format
Field Name
855
childInfo
Field Type
1209
name
String
Shift Name. Name of this shift context, required to refer to this shift from other parts of the system. It should satisfy the context naming conventions 863 . Length: 1-50 characters. Shift Description. Length: 1-100 characters. Type . 0(Week) or 1(Regular) Start Date. Only for regular shift type Auto Out. Overtime After End. Overtime Before Begin.
Boolean Boolean
SCHEDULE
See description of the variable and its fields is here 1180 . This variable has several differences for week and regular shift types. Variable Name: Records: Permissions: Record Format
Field Name
855
schedule
7 for week shift, 0...unlimited for regular shift Readable at Observer permission level :
Field Type String Boolean Date Date Boolean Date Date Integer Integer Time-only editor is used. Time-only editor is used. Time-only editor is used. Time-only editor is used. Notes
932
EXCEPTIONS
See description of the variable and its fields is here 1181 . Variable Name:
exceptions
1210
:
Field Type Date Date Boolean Date Date Boolean Date Date Integer Integer Time-only editor is used. Time-only editor is used. Time-only editor is used. Time-only editor is used. Notes
startDate endDate isWorkday reportingTime knockOffTime hasLunch lunchBeginHour lunchEndHour maximumOT minimumOT
Public Functions
[?
878 ]
Public Events
[?
880 ]
885
12 Tutorials
Sometimes, you don't want to learn all about the theory and internal mechanics of the system, or figure out all the algorithms AggreGate Server uses to execute a certain operation; sometimes, you just want to do something. And you want us to tell you how to do it. Hence, this Tutorials section. You won't find any in-depth explanations here, or delving into theory. Just straight-andsimple 1-2-3 style operations, to be executed in AggreGate Client 776 or other AggreGate Server User Interface. From time to time we'll add articles to this section. This will probably happen when we get too many support requests asking how to do something with the system, or how to use a particular feature.
Disclaimer
Due to the nature of this section, you need to keep several things in mind: The tutorial you're looking for might not exist yet. If so, read the complete manual topic dealing with whatever it is you're trying to do. It'll probably have the answer you need, and possibly even an example. The tutorials are written specifically for AggreGate Client. Same procedures may be executed in the similar way using other AggreGate Server User Interfaces. The articles don't involve too much theory. Don't expect to understand everything. If you need comprehensive understanding, please read the complete manual topic, and not just the tutorial. We've attempted to include many links. And most importantly: It might not work. Seriously. AggreGate Server is a complex system, and we aimed for "sane defaults" when writing the tutorials. Possibly some settings are different on your system, or your network
Tutorials
1211
topology is somewhat different, and this may cause unexpected results. When this happens (you guessed it...) please read the comprehensive manual topic for the subject you're trying to resolve. If all else fails, you can always write Support. Details are in the Tibbo website.
The
1212
AggreGate Documentation
Change Description to a new meaningful name, e.g. Self-Test My Devices. Next, modify the Context Mask so it encompasses a number of Device contexts 863 to call the Self-Test action from. Change Context Mask to users.*.deviceservers.*.devices.* to make this Favourite initiate self-test for all Device in the system. In fact, only Devices that are accessible with your user permissions
931
To self-test only your own devices, e.g. devices that belong to your user account YOUR_USER_NAME.deviceservers.*.devices.*.
108 ,
3. Initiate Self-Test
To perform the self-test, just click the Self-Test My Devices favourite in the Favourites table. This will cause AggreGate Server to perform the requested procedure immediately. Depending on the Device type, test result and any failures may be reported on Device LCD, in Event Log 791 or using the Show Message 899 /Show Error 899 UI procedure.
Tutorials
1213
using
When you have created some useful objects (e.g. alerts 216 , reports 241 , widgets 312 etc.) under your own account and want to share them with other users without allowing them to modify your original objects; When one user wants to use an object created by another user but you don't want to give him permissions to access that object. If you want to give one user permissions to fully access, modify and use some object that belongs to another user without making a copy of that object, see How to give one user access to the objects of another user 1215.
Within the user's node, find the container node that holds objects of the same type as the copied object. For example, if you are going to make a copy of a script
628 ,
).
Here is a screenshot showing how the Queries node for a user called test:
1214
AggreGate Documentation
815
window, find an object you to copy. Click it, then click OK. For example, if you are making ):
), expand Users node, then the node of a user who owns the query you want to copy. Finally,
A copy of the selected query will be created under the account of the user selected at step 1:
908
Tutorials
1215
Using Drag and Drop for cloning objects Another method to copy an object is to drag an object and drop it on the corresponding container node under another user account. This is faster but may be not convenient in some cases because nodes may be located far one from another in the System Tree and you'll need to scroll the tree while holding the mouse button pressed.
You can also enter this path manually when needed, later on. To see the context path of any object, hold the mouse over it for some time and check the tooltip. In our example, the Widget context 774 path is users.admin.widgets. tmon:
1216
AggreGate Documentation
In the Permissions tab, select the first line in the table by clicking its number. Then click Add row ( ) to insert a new row at the beginning of the table. Right-click the Context Mask field for the new record and select Paste from the context menu. You can also press Ctrl-V or manually enter the context path noted at step 1. Finally, select Manager in the Permissions field:
We have put new permission record in the beginning of the table make sure that it won't be overridden by other records.
It is possible to user context masks 865 to share a number of resources. For example, to allow access to all widgets use context mask users.admin.widgets.* instead of users.admin.widgets.tmon.
To give all newly created users permissions for certain resources, add a permission record similar to the one described above to Additional Permissions For New Users 73 global configuration table.
Tutorials
1217
This operation will show the Properties: Widget window. Set Widget Name to thmonitor and Widget Description to Temperature/Humidity Monitor. Clicking OK will open the GUI Builder 827 with an empty widget template 314 . Dragging the Device to the Widgets node means that the newly created widget will be available for every Device 677 context.
1218
AggreGate Documentation
836
Let's add some components to the widget. See Editing Widget Layout Drag the Label component ( form 830 mode: ) from the component palette
834
Add another label by dropping it under the current one to column 0, row 1 of the root panel:
Tutorials
1219
) to column 1, row 1:
to "Temperature: ".
1220
AggreGate Documentation
Change text of label2 to "Humidity: ". Then change text of label3 to 0. Then right-click label3 in resources window
833
Rename slider1 to humidity in a similar way. Now open Font property of label1 in properties window. Check Use Custom Font, set Name to Arial, Size to 20 and check Bold. Set the same font to label2 and temperature (former label3). Set the slider's Enabled property to false to prevent is from being moved. Select all four components one by one and set their anchor Then edit constraints
318 319
to West by clicking
You can also edit margins using the mouse, see Editing Widget Layout
for details.
Now your widget should look like that in the work form:
Tutorials
1221
4. Creating Bindings
At this step we'll bind 604 components of our widget to real data. This data is presented in the form of context variables 869 . Our sensor has two handy variables: Temperature*10 that contains a temperature value in Celsius degreed multiplied by 10 at Integer number (i.e. value 234 corresponds to 23.4 degrees by Celsius); Humidity*10 that contains relative humidity in percents multiplied by 10 as Integer number (i.e. value 456 corresponds to relative humidity 45.6%). Let's first bind the field of Temperature*10 variable to our temperature label. Find this variable in the entity selector 834 window under the default Device context (it should be bold). Expand it to see its single field, called Temperature*10. Drag this field and drop it over the temperature label:
1222
AggreGate Documentation
In the same manner, bind the Humidity*10 field of the Humidity*10 variable to the humidity slider using drag and drop operation.
Bindings 1 and 3 should be removed as they will try to write new temperature and humidity values to the Device. This operation is, indeed, not permitted and will be blocked by the server. Therefore, remove these bindings by clicking on their numbers and then clicking Remove Row ( ) in the toolbar of the Data Table Editor
801 .
Now we have to correct measurements of temperature and humidity that are multiplied by 10. Edit expression field of the remaining bindings by adding / 10 to them:
This will make widget appearance in the work form similar to what it
Select the root panel by clicking Root in the top-left corner of the work form. Set Application Window Width to 370 and Application Window Height to 120. You can also resize the widget and its components using a mouse. See Editing Widget Layout
836
for details.
Tutorials
1223
7. Launching Widget
It's time to see our new widget in action. Right-click on any System Tree node for a Device ( new launch widget action 316 in a context menu: ). You should see a
Select this action to launch the widget for a certain temperature/humidity sensor. A new dockable window our widget will appear in AggreGate Client:
781
containing
1224
AggreGate Documentation
Voila! The new widget is up and running. You can now monitor the current temperature and humidity. See How to a create a dashboard to monitor your devices in real-time 1233 to find out how to start your widget automatically when AggreGate Client is launched.
1. Creating a Widget
To create an empty widget double-click on the System Tree
784
Widgets (
Tutorials
action in popup menu. In the opened window set Widget Name property to svgManipulation, and Widget Description to SVG Manipulation, click OK. This will bring you to the GUI Builder 827 with an empty widget template 314 .
1225
Now load a file with the fan image from the Symbol Library and open the proper file in the dialog appeared.
1165 :
Set the component's position and size properties: X Coordinate and Y Coordinate to 0, Width and Height to 500. This will make the fan to occupy full widget space.
1226
AggreGate Documentation
Drag and drop another Vector Drawing component ( ) from the component palette 834 to the work form 830 . Then load a button image file from the Symbol Library 1165 as described above. Resize it and move to the left bottom panel corner: set X Coordinate and Y Coordinate properties to 410, Width and Height properties to 90. Now we've got the fan with the button:
3. Renaming Components
Let's rename our components to easily identify them. Right-click on the component (or on the component's name in the Resources Tree 833 ) and choose a Rename item in the popup menu.
Tutorials
1227
First, make the button to turn the fan rotation on. The fan SVG image has the State property that turns rotation animation on and off. Let's bind 604 this property to trigger fan animation state upon clicking the button. To perform that, right-click on the fan's State property in the Properties Editor 835 and choose a Bind Property popup menu item, the Bind Property dialog should appear.
The Target 605 property is already set to form/fan:state. Click [...] button inside the Expression 606 field to edit the expression text interactively in the Expression Builder 817 . First, find the fan State property in the Components tree of the Expression Builder, double-click it to insert a reference. Second, append == 'on' ? 'off' : 'on' to the expression, click OK to accept the Expression Builder dialog. The resulting expression will return inversion of the fan State property value when evaluated.
Next, switch to the Activator 607 field and click [...] to open an Activator dialog. Select a Widget Event tab, then set a Context field to button and an Event to mousePressed. Click OK to confirm. This activator will run the binding every time a click on the button is performed.
1228
AggreGate Documentation
Check that On Event property is marked in the Bind Property dialog. Make sure that all properties have values as shown on the screenshot and click OK:
Tutorials
1229
The expression includes a color function that returns a color with the specified red, green and blue values. To insert functions in expression you can use the Function Chooser dialog opened by a Functions button of the Expression Builder dialog:
) to finish editing and save the widget. SVG Manipulation widget context . To see the widget in action choose Launch Widget (
774
1230
AggreGate Documentation
Here you are! You can press the button and see the fan in action.
In this tutorial we showed you how to create interactive components. Now you can combine controls and use them for building complex user interfaces.
1. Creating a Widget
To create an empty widget double-click on the System Tree 784 Widgets ( ) node or choose its Create Widget ( ) action in popup menu. In the opened window set Widget Name property to componentEvents, and Widget Description to Handling Component Events, click OK. This will bring you to the GUI Builder 827 with an empty widget template 314 .
2. Adding an image
First, set Layout property of the Root panel 376 to Absolute layout other container can be used instead of the Root Panel. Let's use the Vector Drawing 352 component ( to the root panel of the widget work form 830 :
322
834
and drop it
Tutorials
1231
Now you can load any SVG image to the component: press Choose button in SVG File property, then locate and open the proper file in the dialog appeared. Resize the component as you wish.
3. Adding bindings
Select the component and press the right mouse button, in the opened popup menu choose the Edit Bindings item:
A Bindings 604 dialog should appear. Then press the Add button ( Target's dots button [...]:
This will open the Target 605 wizard. Here you must choose what property will be changed by the binding execution. At the dialog's bottom the reference to chosen property is displayed. Choose the xCoordinate property of our Vector Drawing component here (so the target will point to form/vectorDrawing1:xCoordinate$xCoordinate) and click OK.
1232
AggreGate Documentation
Next, do the same with the Activator 607 field and choose Mouse Clicked event of the Root Panel component at the Component Event tab. This means that binding will be triggered on a root panel mouse click.
Now let's define the Expression 606 that evaluates each time binding is triggered and it's result is written to the target. To refer to an event parameters the special schema 926 'value' is used. So to get a mouse click event x-coordinate we must use this reference: {value/x}. A complete list of component event parameters is described in the Component Events
595
section.
To get our image centered on a clicked position we must shift a new component's x-coordinate to a half component width. So the resulting expression must be: {value/x} - {form/vectorDrawing1:width$width} / 2. You
Tutorials
can use the Expression Editor
817
1233
OK, we have a binding for x-coordinate and now we need the same but for y-coordinate. To create a binding for it we can use the duplicate function of our Data Table Editor 801 : select the x-coordinate binding in the Bindings editor, hold down the Shift key and press the Add button ( ). This will create a copy of the original row in the bindings table. So we should only fix a created binding. Set the Target to form/vectorDrawing1:yCoordinate$yCoordinate, and the Expression to {value/y} - {form/vectorDrawing1:height$height} / 2. Finally, we must uncheck On Startup boxes to get our bindings work only on a defined event. The resulted Bindings table should be the following:
widget context 774 ( ) should appear in the System Tree menu and open our interactive widget.
1234
AggreGate Documentation
) will be created:
Create Auto-Run Actions for all other Device / Widget pairs that you want to appear in the dashboard in the same way.
Tutorials
1235
Now you can edit the name of the dashboard to place your widget on and its location inside the dashboard:
955 .
1236
AggreGate Documentation
The widget will launch, and a new widget window will appear. Move it to the desired position. It may be floating or docked to the other windows. See Customizing Dockable Panes 781 for more information on how to manage window layout. Repeat the same steps for every Auto-Run Action you've created. Here what the dashboard may look like with all widget windows docked:
Tutorials
1237
1238
AggreGate Documentation
Tutorials
1239
You can exit AggreGate Client now. Your dashboard will appear automatically next time you log on. You can add, remove and relocate its components at any time. All changes will be automatically saved and re-applied upon next launch of AggreGate Client.
The easiest way to create a chart for any AggreGate variable is to launch Configure Device
771
677
) action, right-click
on a desired variable and select Create Chart ( ) item. This action will create a new widget with a chart component and with several other components for controlling chart parameters on-the-fly. Created widget will look like this:
1240
AggreGate Documentation
The other way to get a variable changes chart is manually creating a widget, adding a chart component to it, and setting up the chart.
In the popup menu choose Create Widget ( ) action. Widget Properties tchart, Widget Description to Temperature Chart and click OK.
315
This will launch the GUI Builder 827 with an empty widget template our chart will be available for every Data Terminal 677 context.
314 .
Tutorials
1241
314 .
387
to set up a new data series. The Source Variables window will open. Click Add Row (
) to create a new data series, then edit it: Set Name to Temperature; Switch to the Context field and click [...] to edit the context path interactively in the Entity Selector Device from the tree (it should be bold, as it is a default context) and click OK:
815 .
Select your
1242
AggreGate Documentation
The actual value for Context field will be a dot (".") instead of the full path to the Device context 677 . This is a relative path that will allow our chart widget to work with other similar devices, not just the one that it was created for. Select temperaturei from the list of Variables . Switch to the Expression field and click [...] to edit the data expression interactively in the Expression Builder 817 . First, in the Expression Builder window just double-click the temperaturei field in the Relative References section to add one relative reference. Second, append / 10 to Expression to divide the value and thus convert it to normal Celsius degrees. This is required, as the variable field initially contains temperature multiplied by 10 to allow storing it as an Integer number:
Leave other columns unchanged. Here is what your variable data series should look like:
Tutorials
1243
6. Displaying Chart
Right-click the Device System Tree node (
316
) of your temperature sensor. You should see a new launch widget action
Select this action to launch the widget for a certain temperature sensor. A new dockable window with our chart will appear in AggreGate Client:
781
containing a widget
1244
AggreGate Documentation
The chart will update dynamically if Include Real-Time Data is enabled in chart settings. If you wish to monitor temperature constantly when AggreGate Client is running, include the chart widget in a dashboard. See How to a create dashboard to monitor your devices in real-time 1233 for more information.
Tutorials
1245
In the popup menu choose Create Widget ( ) action. Widget Properties tchart, Widget Description to Temperature Chart and click OK.
315
This will launch the GUI Builder 827 with an empty widget template our chart will be available for every Data Terminal 677 context.
314 .
2. Adding Charts
Drag the Mixed XY Chart component from component palette 834 and drop it on the widget's Root Panel. This will add a new chart component to the widget template 314 . Turn on Horizontal and Vertical filling for chart by pressing buttons in the toolbar 829 .
A mixed XY 469 chart is a composite chart 488 that can hold other non-mixed XY charts Particularly, it lets one charts to draw trends for another.
429
1246
AggreGate Documentation
Then drag and drop XY Bar Chart (to display temperature and humidity) and XY Line Chart (to display trends) to the Mixed XY Chart.
3. Renaming Charts
Now rename xyLineChart1 to trends, xyBarChart1 to thsensor. To rename a component right-click it in the Resource Tree 833 , choose the Rename item in the popup menu and enter a new name in the edit box appeared.
830
popup menu.
Tutorials
1247
387
to set up a new data series. The Source Variables window will open. Click Add Row (
) to create a new data series, then edit it: Set Name to Temperature; Switch to the Context field and click [...] to edit the context path interactively in the Entity Selector thsensor Device from the tree (it should be bold, as it is a default context) and click OK:
815 .
Select
The actual value for the Context field will be a dot (".") instead of the full path to the Device context 677 . This is a relative path that will allow our chart widget to work with other similar devices, not just the one that it was created for. Select temperaturei from the list of Variables . Switch to the Expression field and click [...] to edit the data expression interactively in the Expression Builder 817 . First, in the Expression Builder window just double-click the temperaturei field in the Relative References section to add one relative reference. Second, append / 10 to Expression to divide the value and thus convert it to normal Celsius degrees. This is required, as the variable field initially contains temperature multiplied by 10 to allow storing it as an Integer number:
1248
AggreGate Documentation
Accept the expression by clicking OK button. Leave other columns of the Source Variables you get the record for the temperature.
387
Now, add and set up a second data series for the humidityi variable as you do for the temperaturei variable. Finally, here is what your variable data series should look like:
While adding a second source variables record by clicking Add Row ( ) you can hold a Shift key. This will duplicate the record for the temperature, thus for the humidity you have to fix Name , Variable and Expression fields in the duplicated record.
The trending chart will create a separate trend series for every series of the source chart. Let's now set custom trending series names: click Series Names property and add two rows with names Temperature Trend and Humidity Trend.
Tutorials
1249
6. Cleaning Up
When a chart is configured for trending it uses the source's chart dataset to calculate trends and source's chart axes to display trend lines. So, we can remove trends chart axes were automatically added by putting the XY Line Chart (at the step 2) to the mixed chart. Select mixedXYChart1 in the Resource Tree
833 .
Go to the Axes tab and click in the Range Axes property. Select the second row in the appeared Range Axes dialog and press the Remove Row ( unused domain axis. Click OK. ) button to remove the
Do the same for the Domain Axes. Also switch type for the remaining Domain Axis to Date Axis: click on the axis and set its Type in the Axis dialog appeared.
8. Displaying Chart
Right-click the Device System Tree node (
316
) of your temperature sensor. You should see a new launch widget action
1250
AggreGate Documentation
Select this action to launch the widget. A new dockable window AggreGate Client:
781
In this article you have learned how to combine simple charts within mixed chart for building trend lines. There are other capabilities of combining charts you can use in projects. See composite charts 488 for further information.
Tutorials
1251
784 .
You can also just double-click the Reports node to launch Create New Report action since it is a default action 893 in Reports context 719 . In the Report Properties window:
for details), but we'll specify just the first two and leave the
In our case, the first parameter is our time recorder's Device context 677 path. We can detect this path by finding Time Recorder in the System Tree and checking its tooltip. Its path is users.admin.deviceservers.agent.devices.3_0:
You can right-click the Device and select Copy from its context menu to copy its context path to the clipboard.
You can create a report that includes events from multiple Time Recorders. Just change the context path to a mask 865 pointing to multiple devices. For example, to include events from all time recorders of the admin user 108 , change Context Mask to users.admin.deviceservers.*.devices.*. The second parameter is the name of the event generated by the time recorder. You can find it by browsing the Event Log 791 . There is a special Event column that shows event names. In our case, the event is called event . Our Data Source Expression will consist of a single reference
925
1252
AggreGate Documentation
Click OK to proceed. The Report Template Properties window will now open.
Set Report Title to Time Recorder Events. Change Orientation to Portrait as we'll have only three columns in our report and data will fit better that way. Open the Visible Fields table and uncheck all fields except for the ones that you want to appear in the report. In our
case, we'll leave Id, Direction and Date:
Now click OK twice, to proceed. Report template will be generated by the server and you'll be prompted to edit it. Click Yes:
826
Tutorials
First, change report scale from 100 to 200%. This will make further editing more comfortable:
1253
Now double-click the header of first column and change it to User ID. Change the header of the third column to Event Date/Time in the same manner. Now select File > Quit to exit Report Editor. Confirm saving changes of report template. New Report node ( ) will be visible in System Tree:
1254
AggreGate Documentation
You can also just double-click the report's node to launch the Show Report action since it is the default action 893 for the Report context 721 .
721 .
Tutorials
1255
Select Send Report by E-mail from the list of actions that may be scheduled:
Click OK. Now define the properties for the new scheduler job. Enter the job name and description (for example, disk_summary_mailer and Disk Summary Emailing ):
Click in Parameters line, and then click in Send Report by E-mail line to open report emailing parameters. Enter email recipients and select report format:
1256
AggreGate Documentation
Click OK to create new scheduled job. It's properties will open in a new dockable window.
that will start it at certain time. In the job properties window, open Advanced Schedule ) to add new trigger:
Let's configure the job to run every Monday at 10:00 AM. To do that, we need to switch the trigger from working on certain days of month to certain days of week. First, click in Day of Month field. Day-by-day monthly schedule will open in a new window. Select Never for the first day, right-click in the same cell and select Fill Column With Cell Value from context menu:
Tutorials
1257
Click OK to close the dialog. Now click in Day Of Week field. In the newly opened dialog, change Option for Monday to Always:
Click OK to apply changes. The last action is changing Time parameter of job trigger to 10:00:00:
). Your scheduled job is ready now and you may expect the report to be sent
1258
AggreGate Documentation
next Monday.
Table Name: location Table Description: Device Location Minimal number of records: 1 (because we are adding a non-tabular property) Maximal number of records: 1
Click OK to add create new common table. It will appear in the System Tree
784 :
Tutorials
Extendable Selection Values: Yes Click on Selection Values and enter several buildings. Here is an example:
1259
Leave other values at their defaults and add two other fields: Name: floor Type: String Description: Floor and Name: room Type: String Description: Room Here is what Fields table should look like:
what contexts
863
1260
AggreGate Documentation
817 .
with. Click on [...] button inside Validity Expression field to open Expression Builder
device.DEVICE_TYPE
It means that any context type starting with "device" matches the device context. Select startsWith function from a Functions drop-down list to insert it into the expression:
According to the description 914 of this function, it has two String parameters and returns TRUE if first string starts with a second ("prefix") string. Click inside function parameters and double-click Context Type in the Relative References area to add context type as a first parameter. Then manually add "device" string literal as a second parameter:
Tutorials
1261
Click OK twice to apply changes to Validity Expression and Common Table configuration. Now every Device in the system has its own Location property.
1262
AggreGate Documentation
Tutorials
1263
of configuration
objects
Sometimes you may want several Devices or resources to be used as sources for cloning. These resources are disabled and do not perform any activities within the system (e.g. a disabled alert will never be raised). Such resources are called templates. This article describes how to create Device templates for quickly setting up devices with similar configuration. The same method may be used for making templates for any other resource type.
):
Enter group Name and Description . Check Hide Members From Primary Location to separate templates from normal devices:
1264
AggreGate Documentation
2. Creating a template
We need to clone a Device to use its copy as a template. Right-click on the Device ( ) that you want to be used as a template and select Make Copy ( ):
Tutorials
1265
Click OK to proceed. Now we have a new created normal (active) Device. Let's convert it to a template by suspending it. Right-click the Device ( ) and select Edit Device Properties ( ):
1266
AggreGate Documentation
Click OK to suspend the Device. Its icon will become gray to indicate that it's not active anymore:
The methods for deactivating a system resource when converting it to to a template may differ. Alerts 216 , trackers 257 , and most of other "active" resources have an Enabled property. It must be switched off when resource is used as a template. Non-active resources, i.e. resources that do not perform any activities themselves (such as reports 241 ), do not need deactivation. Our template is just a normal suspended device for AggreGate. Another reason to suspend a Device (other than make a template out of it) is to temporarily pause all operations with a certain piece of hardware.
Now drag our template and drop it to (over) the Device Templates group (
):
Enter name and description for the Device to be created Click OK to create the Device Finally, it's necessary to activate the new Device: Right-click the Device and select Edit Device Properties ( Switch to General Device Properties ( Click OK to save properties Your new Device, based on the template, will now operate normally: )
Tutorials
1267
Another method to use a template is drag-and-dropping a template to any "container" context and executing Create From Template 905 action.
1268
AggreGate Documentation
Switch to Event Expiration Times tab and click Add Row icon (
Paste previously copied context path in Context Mask field, or enter it manually Type change in Event Name field Select desired change history storage period in Expiration Period field Use context mask instead of path to enable history storage for multiple objects. For example, users.*. widgets.* will enable storage for all widgets owned by all system users 108 . Click OK to finish global configuration editing. You don't need to restart the server after this change.
):
Tutorials
1269
Although dependency expressions are most often used to check the status of another device and disable synchronization if said device is down, they may be also used to check the current time.
1270
AggreGate Documentation
dayOfWeek(now()) != 1
Note, that dayOfWeek() function returns zero for Sunday. "Not equals" operator is used, as the dependency expression must return TRUE (to enable sync) when the current day is not Monday. To schedule downtime every Wednesday from 22:00 to 23:00:
to enable/disable Suspend
This may
Creating and filling a common table Processing events using a script Manually browsing of event data
628
The common denominator of all above tasks is that we should extract selected historical events from the AggreGate Server database 80 and convert them to a data table 854 . This data table would then be used to fill in a report or common table, feed the script with input data, or just presented to the operator. There are three different ways to select the events and convert them to a data table: Using AggreGate expression language
911
Tutorials
Using an AggreGate query
271 72
1271
180
to fetch them
Here is a brief comparison of these methods: Expression Language Fetching and filtering performance Aggregation (totals, averages, min/max, etc.) Memory consumption Event storage overhead Method selection hints: If you need to process a large number of events (100000+), use native SQL If the number of events is not so large, but some aggregation is required, use AggreGate query language In all other cases use expression language High Not available Medium None Query Language Low Available High None Native SQL High Available Low Doubles disk usage
Copy settings of the Database device (Database Driver, URL, username, password, etc.) from the AggreGate Server
1272
AggreGate Documentation
55
.
182
After that, you may execute any SQL query on the custom events table using the Execute Query operation by Database device driver. Example: to select events using native SQL use the following report Source Data Expression:
provided
First of all, we need to create a statistical channel. It will perform all calculations of the energy consumption rates. To create a statistical channel click Edit Device Properties device popup menu item, switch to Statistical Channels tab and add a new row to the channels table:
Next click in Parameters. You should see a parameters dialog. Enter a reference 925 to desired field as the Expression . Probably your kW variable will have a single field with the same name (kW). Thus, the expression text will be {kW}. You can perform any conversion here, for example convert kilowatts to watts by writing {kW} * 1000. This expression is evaluated on every change of variable (i.e. each time the device is polled). It must always result to a
Tutorials
number.
1273
As far as kW is a consumed energy counter, set statistics channel type to Counter. This channel type calculates the change speed of counter, so channel value will be measured in kilowatts per seconds. You can get more information about statistics channel types here 942 . Finally, your channel options will look similar to this:
Selected Aggregation parameters means that Average, Minimum and Maximum values for each Storage Period (defined below) will be calculated. Storage Periods define history length for each aggregation rate: one hour of minutely statistics (average rates for each of last 60 minutes), one day of hourly statistics, etc.
1274
AggreGate Documentation
This query calls statistics 767 function from Utilities following parameters to this function:
763
"users.admin.devices.counterDevice" - the path to your device, ? kW - the name of our statistical channel, ? null - the row key, not used in our case, ? hour - the aggregation rate (the query will give non-empty results if more than one hour has elapsed since weve created our statistical channel, but to debug it and see results earlier you can temporarily use minutes value here). The query selects three fields from functions result: ? stats.statistics$context - the device context, ? stats.statistics$end - the end timestamp of every aggregation period, ? stats.statistics$average * 3600 - the average per-second consumption value multiplied by 3600 seconds in hour. Once query creation is finished, you can execute it by double-clicking on it. You should be able to see the aggregated consumption table.
double-click on Reports
719
Then click on the ... button to edit the Source Data Expression.
Tutorials
1275
The Expression Builder 817 window will pop up. Now find your kW query in Server Data tree under Users/admin/ Queries. Expand it to see Execute Query node and double-click on it. Youll get {users.admin.queries.kW: execute()} string inserted into the expression.
This expression will execute the query each time the report is created. Click OK twice to close this and parent dialogs.
1276
AggreGate Documentation
The Report Properties dialog will appear. Here you should correct report header names. First, click on Fields and then enter desired report column header texts in the Header column.
Click OK in both dialogs. You will be prompted to edit a report template afterwards, decline this request to skip launching Report Editor 826 . Thats it! Now you can run your report by double-clicking on it in the System Tree:
Tutorials
week.
1277
To create a statistical channel select Edit Device Properties from popup menu of a network device, switch to Statistical Channels tab and add a new row to the channels table:
Set the Variable to point to the variable containing the CPU load values. Open channel Parameters and set up the Expression that will return numeric values those SLA will be monitored by the alert. It's also a good idea to disable Storage Periods for all archive types except for Daily, since we'll use only daily data for analysis. To do this, right click inside any storage period and select Remove Value from context menu. Configure the length of Daily archive to ensure that the prediction will be based on statistical data of sufficient length.
1278
AggreGate Documentation
(such as
Context Mask: users.admin.scripts.slaBreakdown (SLA Breakdown Date Calculator script) Variable: childInfo (Properties) Expression: dateDiff(now(),
cell({users.admin.scripts.slaBreakdown:execute("users. admin.devices.criticalServer", "cpuLoad", 4, 0, 80)}), "day") < 7 && dateDiff(now(), cell({users.admin.scripts.slaBreakdown:execute("users.admin.devices.criticalServer", "cpuLoad", 4, 0, 80)}), "day") > 0
Delay: 0 ms The Check Period should not be very short, since the statistics-based SLA breakdown date calculation is a resourceconsuming task. 10 minutes or longer Check Period should be sufficient.
Tutorials
1279
The most tricky part of this alert is its Expression . This expression refers the SLA Breakdown Date Calculation script 628 that is a part of AggreGate distribution. The reference {users.admin.scripts.slaBreakdown: execute("users.admin.devices.criticalServer", "cpuLoad", 4, 0, 80)} calls execute function from this script's context and passes the following parameters to it:
750
users.admin.devices.criticalServer - path of device context cpuLoad - name of statistical channel to get data from 4 - grouping time unit constant 1324 for daily grouping 0 - aggregation type constant 1324 for averaging 80 - the numeric SLA value
677
The script will return a date when daily averages trend will cross a 80% CPU load baseline. However, the date is returned wrapped into a Data Table 854 (since our reference calls a context function, and context functions always return Data Tables), so we need to use cell() expression language function 917 to extract the actual cell value (i.e. the SLA breach date). Finally, the expression uses dateDiff() expression language function during the next seven days.
916
To create a statistical channel select Edit Device Properties from popup menu of a network device, switch to Statistical Channels tab and add a new row to the channels table:
Set the Variable to point to the variable containing the CPU load values. Open channel Parameters and set up the
1280
AggreGate Documentation
Expression that will return numeric values those averages will be monitored by the alert. It's also a good idea to disable all Aggregation types except for Average. This will save some space in the statistics database.
that will be raised upon serious baseline violation. Set up alert's notifications
217
225
(such as mail or
Context Mask: users.admin.devices.criticalServer (context of the server those CPU load is tracked) Variable: hrProcessorTable (CPU Load Table) Expression: select(select({.:statistics}, "statistics", "name", "cpuLoad"), "average",
Tutorials
1281
The Expression of this alert is somewhat complicated. It compares last day and last month CPU load averages by retrieving them from statistics 683 variable. Let's analyze the first part, select(select({.:statistics}, "statistics", "name", "cpuLoad"), "average", "period", 3). First, select({.:statistics}, "statistics", "name", "cpuLoad") retrieves statistical values for cpuLoad channel from the value of statistics variable. Second, select( statistics, "average", "period", 3) function returns a last day average (in percents) from the previous table. Numeric constant 3 matches Hour time unit
1324 .
The second part of expression obtains the last month average in the same way. Finally, if the last hour average is greater than the last month average by 20% or more, the whole expression will result to true and the alert will be raised.
providing overview of device infrastructure normally contain some tables. Those tables may
Devices that currently experience troubles of some kind Devices extremely high or low KPIs Other resources, such as device groups, network segments, etc. Such tables are useful by themselves, but operators would like that clicking a certain device name in any table row launch a certain action associated with this device, e.g. open its "personal" dashboard. This tutorial explains how to add links to any table.
Theory
The background of cell links is a bit complicated, so this part can be skipped if your objective is just adding links without understanding how they work. Technically, links are rendered in the table cells that use Reference renderer 857 . Value contained in the cell will be displayed as link anchor (i.e. link text). The link target, i.e. action that is triggered upon a click on the link, is contained in the editor options 856 . However, if we specify static editor options for the table field each cell in a row will lead to the same target. We need each cell to have its own target, so we use the following technique to set editor options dynamically: Add a new column to the table. Value of this column in each row contains a link target for the link contained in another cell of the same row. Make the above column hidden so that it won't be displayed in the table. Use a binding 860 to take value of the the above hidden field and set editor options of the link field. This binding works row by row, making editor options of all links individual.
Implementation
Let's assume we've a table showing temperature readings from multiple devices. It has two columns: Device (field name: device) and Temperature (field name: temperature). We want make the Device column clickable so that click on any device will open a dashboard associated with it (e.g. temperature chart).
1282
AggreGate Documentation
Values in the Device column are descriptions of devices, not their system identifiers. Thus we need to add a new hidden context column that will contain paths of device contexts 863 . There are many ways to do this. For example, if we're binding a query, we may add a link to CONTEXT_ID field: SELECT data$CONTEXT_ID AS context, data.info$icon AS icon, data.contextStatus$status AS status, data.info$description AS device, data.temperature$temperature AS temperature FROM users.*.devices.*:info:contextStatus:temperature Note that the query will result to the table with five columns: First column path of device context, it will be hidden. Second and third columns contains basic ID of device icon and device status. They will be used to display a device status icon next to the link. These columns will also be hidden. Fourth and fifth column will actually display device link and device's temperature reading. The query result will look like this:
AS
data
that should be added to the format of Data Table that represents results of the above query looks like
device#options='action/'+{context}+':configure'
AggreGate queries have Output Format property 278 that was designed to add necessary decorations to the query results. To make our additional columns hidden and add the link binding we may use the following output format: <<context><S><F=H><A=>> <<icon><S><F=H><A=>> <<status><S><F=H><A=>> <<device><S><A=><D=Device><E=reference>> <<temperature><F><A=><D=Temperature>>
Tutorials
1283
<B=<device#options='action/'+{context}+':configure$' + {icon} + ({status} != null ? '_' + {status} : '')> This output format makes the following necessary corrections to the default query output format: Sets hidden flag to context, icon and status columns Sets reference editor to the device column Adds the link binding That's it! Now we can refer this query from a dashboard to view temperature statistics on a first-line operator interface. The final table with links:
Creating a Report
For the start, let's create a report to be used in the example. To do that: Double-click the Reports context Provide a name (to be specific, let it be testReport) and description (say, Test Report) Simply press OK in the next window and then refuse to edit the report template (as we don't want to waste time now, this is just an example). Now we can check the report: double clicking its context and it should be opened in the sub-window on the right.
1284
AggreGate Documentation
Tutorials
1285
We want to open the report named testReport when a user clicks this button. To provide that, we have to bind the click event with the invocation of the report's Show action. To add the binding, right-click the button and select Edit bindings menu item. In the open window press green button with "plus" sign on it to add a new binding. For the added record clear the On start check box, leave the On event flag set and ensure Periodically is not set. To specify an expression for the click event in the Activator field. Good news is you don't have to remember cryptic expressions like the one we are going to set up. Just click the ... button in the field. That brings the Activator window. Open the Component Event tab in the panel on the left and select the Click item under the button1 node on the left.
1286
AggreGate Documentation
Now click OK and make sure the following expression is there in the Activator field:
form/button1:click@
Done with the activator, we have to attach an action to perform on the event. In our case, the action can be specified in the Target field as follows: click the ... button in that field, selection the Action tab in the Action window, and in the tree on the right select sequentially Users -> admin (Administrator) -> Reports -> Test Report and, finally, the action Show Report there.
Tutorials
1287
action/users.admin.reports.r:show
Now we are ready to check our widget. So, save it and start. Click the button in the opened widget and see the Test Report is opened in a separate tab within the Main Dashboard. Note, that system automatically switched to the main client window to show the report.
1288
AggreGate Documentation
table("<<state><I>>", 1)
Then, with the help of the same table function, we put this table as a value for the location field:
Tutorials
1289
Source Data
To illustrate concepts of subwidget nesting, we'll develop a number of widgets that visualize status and contents of a vending machine. Modern vending machines are remotely monitored and audited via GPRS, providing near-real-time data about remaining goods, as well as diagnostic information. To make the tutorial short and simple, we've modeled 303 a very simple snack vending machine that provides a table describing dispensers installed into machine's slots, types and capacity of those dispensers, types of goods loaded in those dispensers, and quantity of remaining snacks. The machine provides a Contents (contents) table with the following fields: Slot - description of a dispenser Type - type of the dispenser (small, medium, or large) Product - name of product currently loaded into the dispenser Quantity - number of snacks that's currently contained in the dispenser Capacity - current capacity of the dispenser
1290
AggreGate Documentation
Thus, our machine has six slots with dispensers of different types installed into them. We assume that each slot is capable of containing a dispenser of any type (Small, Medium or Large). In our case, slots Slot1 and Slot2 contain Small dispensers, Slot3 and Slot4 contain Medium ones, while Slot5 and Slot6 are occupied by Large dispensers. This a dynamic layout configured by engineers during machine installation. Below is a screenshot presenting format of machine Contents table:
Tutorials
a machine. The widget must use grid layout 318 to make the whole machine contents rendering system scalable for different machines and screen resolutions.
1291
Note that dispenser template subwidget's size can be set to anything convenient for debugging, but running subwidget will be "pushed" in a certain section of top level widget's template, leaving it undefined (and possibly small, if top-level widget is scaled down to a low screen resolution) amount of space. Thus, subwidget's template should be designed to fit into a small screen space. Our simplified dispenser template will contain four label Product name label Quantity label Capacity label Separator label for showing capacity usage as "quantity / capacity" It's of course possible to show both quantity and capacity on a single label by concatenating several strings in a widget binding expression 606 . The grid layout structure of a dispenser template is shown on a screenshot below. Note, that cell decorations enabled for taking an easily understandable screenshot: were
323
components:
831
In the real life, templates of different dispenser types can look completely different. In our tutorial, we'll make Medium and Large dispenser templates differing from a Small one just by increasing font size. This is enough to illustrate the idea.
1292
AggreGate Documentation
render device contents. In our tutorial, we'll have just a single machine layout that will be attached to the context of our vending device model. Our machine layout widget will be named machine_layout. Our simple machine layout widget consist of two vertically aligned parts: A header label showing machine description A panel containing six dispenser subwidgets Here is how it looks like in GUI Builder's work form (decorations enabled):
On Startup
This binding changes template reference of subwidget representing contents of Slot1. It's evaluated upon main widget startup. Its expression constructs context path 863 of subwidget that should be used to render current slot contents. This is done by concatenating context path prefix (users.admin.widgets.dispenser_) and value of dispenser type installed in the slot (returned by selecting value of type field from contents table row those slot field equals to
Tutorials Slot1).
1293
To define a dispenser subwidget parameter: Open the template in GUI Builder Select Root panel
376
833
Right-click in any cell of Properties grid Select Add Custom Property Properties to add:
Property named device with a single String field also named device (leave all other settings at their defaults) Property named slot with a single String field also named slot (leave all other settings at their defaults)
On Startup
The binding is activated just once on subwidget startup. If loads contents variable from a machine context pointed by the device parameter (referred to as {form/:device$device}). Once the whole contents table is loaded, the binding expression selects value of product column from the record where slot column equals to value of slot subwidget parameters (accessed via {form/:slot$slot} reference). Expressions of two other bindings showing current product quantity and dispenser capacity differ from the above one only by other fields selected instead of product field. Here is how resulting dispenser subwidget's binding table looks like:
1294
AggreGate Documentation
833
Set device parameter to users.admin.models.vending_machine (that's the server-side context path of our machine model context; the path should generally point to a test vending machine) Set slot parameter to Slot1 to test dispenser subwidget on contents of Slot1 Start subwidget by clicking on a toolbar icon ( )
Tutorials
1295
form/slot1:device dc()
On Startup
This binding assigns custom property device of subwidget component slot1 to path of Machine Layout widget's default context 315 (returned by dc() function). Here is how finalized All Bindings table of Machine Layout widget looks like:
1296
AggreGate Documentation
Properly assigning slot property is a little bit tricky. Each dispenser subwidget in a slot should receive its own static parameter value (Slot1, Slot2, etc.). However, if we select subwidget components in a Work Form, we won't see Custom Properties tab in Properties window because there's no static template assigned to them. To be able to specify slot parameter, we need to manually set each subwidget's Reference parameter to path of any of our dispenser subwidgets. Once done, we shoult set slot parameter of our subwidgets to Slot1, Slot2, etc. In All Bindings table of our Machine Layout, bindings changing dispenser subwidget templates (Reference properties) must precede binding that set those subwidgets' internal parameters (device and slot). In this case parameter values will be received by "correct" dispenser subwidgets.
Tutorials
1297
What's Next
The described vending machine rendering system can be further extended by: Developing widgets for different machine layouts and dispenser types Introducing more complex machine structure (e.g. machines with multiple compartments containing changeable multidispenser holders) Color-coding dispensers depending to quantity of remaining goods Designing professionally looking layout widgets
13 Troubleshooting
This section is designed to provide solutions and explanations for common problems related to different components of AggreGate.
1298
AggreGate Documentation
The JVM could not be started. The main method could have thrown an exception.
This message means a critical error occurred during JVM startup. To see the exact error message that should give troubleshooting hints use ag_server_console launcher 44 to start AggreGate Server. Under Windows, the console window may disappear before you read the message. In this case, use command line interpreter to start ag_server_console. For that, go to Start Menu > Run, type cmd and click OK. The command line interpreter window will open. Now type %path_to_AggreGate Server%/ag_server_console to start the launcher.
Error occurred during initialization of VM Could not reserve enough space for object heap The JVM could not be started. The main method may have thrown an exception.
It means that the Java Virtual Machine cannot allocate the amount of memory specified by -Xmx (maximum memory) launcher file parameter 46 in a single contiguous block. There are several possible solutions: Decrease the value of -Xmx parameter if your AggreGate Server is not under a hard load Try to free up some memory by unloading the applications of rebooting the machine Add more RAM to the machine AggreGate Server is running on Under Windows, some applications may register their dynamic libraries (DLLs) to be located in memory at a certain absolute address. This separates the memory into several blocks and does not allow the AggreGate Server JVM to allocate a large single block of memory. To fix that, use a registry editor to remove all entries from
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Windows\AppInit_DLLs.
Be sure to make a backup first!
Try starting the server and wait until error message pops up Browse the end of server log
74
file (server.log by default) to find out the root cause of database problems
If you're using the bundled MySQL database, it is likely that MySQL service failed to start. Check % aggregate_folder%\mysql\data\*.err files for errors. Since bundled MySQL server is configured for high performance, it may not be able to allocate enough buffer memory on some PCs. In this case, decrease values of innodb_buffer_pool_size and innodb_buffer_pool_size parameters in MySQL configuration file (% aggregate_folder%\mysql\my.ini).
or
Troubleshooting
several solutions for this problem: If your server uses models them.
303
1299
or widgets
312
Decrease maximum memory available to JVM threads. Decrease thread stack size
46
"java.net.SocketException: Too many open files" errors are being logged by AggreGate Server running under Linux
This situation occurs when AggreGate Server opens a large number of sockets while communicating with networked devices (e.g. via SNMP protocol). To solve this issue, add the following line to the beginning of AggreGate Server startup scripts (ag_server, ag_server_console and ag_server_service):
ulimit -n 100000
This command increases the limit of open files allowed for the AggreGate Server to 100000. Server startup scripts will be re-created during server upgrade, so this instruction must be re-added once the server was upgraded.
1300
AggreGate Documentation
speaking, if contents of memory allocated by a Java application are transferred to a swap space by the operating system, the application's performance is dramatically decreased, making is almost unresponsive. The maximum memory size AggreGate Server will use is defined by -Xmx parameter located in server_*. vmoptions files. If this value is set too high, server will allocate a lot of memory, and the underlying OS will likely move certain parts of those allocations to a low-performance swap space. Use swap usage diagnostic tools (such as smem for Linux) to make sure that AggreGate Server doesn't use swap space. If it does so, decrease value of -Xmx parameter (however make sure server has enough memory for its operation) or increase server machine RAM.
to find out the reason of server failure. If the log file does not help to resolve the situation:
47
for details)
Restart the server in console mode (use ag_server_console executable) Check console output for any errors that crop up
connections)
Port 6450, TCP (Device Server 1003 connections) Port 6440, TCP (Net Admin
49
connections)
632
976 ) 976 )
Port 8080 (Non-secure connections to Web Desktop Port 161, UDP/TCP (SNMP Traps
178 )
Troubleshooting
1301
Check that firewall running on the AggreGate Server machine is not preventing incoming connection attempts. Firewall should allow incoming connections to TCP port 6460 (AggreGate Clients 776 ), TCP port 8443 (Web Desktop secure connections), and TCP port 8080 (Web Desktop 632 non-secure connections). Try completely disabling the firewall.
632
Make sure you've specified the correct address and port of AggreGate Server in server connection settings (if using AggreGate Client) or your browser address bar (for Web Desktop). If Server IP Address 54 is specified in the AggreGate Server global configuration settings, make sure that you are trying to access the server using this address. It is possible that AggreGate Server accepts incoming connections on non-standard ports. Check server global configuration settings to find out the current client port number 55 and Web desktop port numbers (secure 60 and non-secure 60 ).
is
All data stored in AggreGate Server embedded database is loaded in memory during server startup. If your AggreGate Server consumes a lot of memory with relatively small number of devices, check size of /db subdirectory in the AggreGate Server installation directory. If it is occupies more than 100-200 megabytes, consider switching to an external database server. The database server documentation usually has its own Performance Optimization section. Check database server administrator's manual for more information on maximizing database performance in your environment.
1302
AggreGate Documentation
The recommended hardware parameters can be found in System Requirements 40 section. However, some device drivers require a lot of memory and/or processing power for device communications. Generally, AggreGate Server should be moved to a higher performance server if the long-term average CPU load exceeds 50%. Such a high load rate may cause problems or even loss of device data during peak loads. Memory concerns should be raised in the following cases: If extensive use of virtual memory (swapping) or page fault rate is detected If AggreGate Server response time and request processing speed decreases within a certain time after it was started If java.lang.OutOfMemoryError: Java heap space messages appear in the server log file The recommended sequence for troubleshooting memory issues: 1. Increase the memory limit
1302
2. Add physical RAM to the machine running AggreGate Server 3. Switch to a dedicated database server
1302
If Memory Usage tracker reports a high memory usage percentage, it's necessary to increase a mamimum amount of memory (-Xmx) parameter in the AggreGate Server Launcher Properties file 45 . Values up to the half of available physical RAM are recommended. Setting the maximum amount of memory too high may cause AggreGate Server startup problem, as JVM needs this memory to be available in a single contiguous block (see details here 1298 ). If you experience such a problem, the installation of additional physical RAM is recommended.
Troubleshooting
1303
A connection pool is a cache of database connections maintained by the database so that the connections can be reused when the database receives future requests for data. Connection pools are used to enhance the performance of executing commands on a database. There are several general rules for tuning up the pool size: Maximum connection pool size should be larger than the number of simultaneously connected devices with a high data transfer rate (i.e. frequent synchronizations or large number of device-generated events). For example, if you monitor 2000 devices that are polled once per hour you may leave maximum pool size as low as 200, but if you have 500 devices synchronized with the server every 5 minutes it's better to increase the maximum pool size to 500. Maximum pool size must be set lower than the total number of connections allowed by the backend database to avoid database-generated errors, such as "too many connections". For large installations where peak activity is significantly higher than average activity, it is recommended to increase the minimum pool size up to 20-50% of the maximum pool size.
14 Appendix
This is additional in-depth information that doesn't neatly fit anywhere else in the manual. It is "stuff you should know" to really gain an in-depth understanding of some elements used throughout the system.
Command Encapsulation
Commands are encapsulated using <STX> (0x02) and <CR> (0x0D) characters: <STX>command<CR> Commands are extracted from the data stream, and all other data is discarded. If there are two or more <STX> characters without <CR>, all data belonging to the current is discarded on each received <STX>: <STX>aaa<STX>bbb<CR> is treated as command bbb.
Command Structure
Each command consists of several parts separated by 0x17 (Command Separator) characters. The command separator character is represented by / in this manual. For example: <STX>aaa/bbb/ccc<CR> contains three parts: aaa, bbb and ccc. Thus, three characters are reserved and may not appear inside command parts: Character Code 0x02 Character Name STX
1304
AggreGate Documentation
CR ETB
<STX>command_code/command_parameters<CR> command_code is a single character, one of: M R Message command Reply command
command_parameters is one or more parameters specific to the command code and separated by /.
Commands Reference
MESSAGE COMMAND
The structure of this command is as follows (from this point, leading <STX> and terminating <CR> characters are not shown): M/message_ID/message_code/message_parameters message_ID is unique within the current session. message_code is a character, indicating the message type. Available message codes: S O E Start message Operation message Event message
being replied.
reply_code parameter is a character that indicates type of reply. Available reply codes: A Success (May be followed by an optional data_table parameter, see Data Table Encoding 1306 ) Denied Error (May be followed by one or two parameters: error message and/or transferencoded error details string)
D E
Messages Reference
START MESSAGE
M/message_ID/S/protocol_version The format of this message is guaranteed to remain unchanged in the future. It should be sent by the
Appendix
1305
client as the very first command during the data exchange with the server. The server returns an error if any other message is issued before the Start message was sent. protocol_version is an integer number indicating the version of the communications protocol supported by client. The current version is 2. Server responds to the Start command with a Reply command. If protocol version specified by client is supported by server, the reply code is Success, otherwise it is Denied. See description of the Reply 1304 command for more info.
OPERATION MESSAGE
M/message_ID/O/operation/context_name/entity[/data_table] The Operation command orders the server to execute an operation on a given context. Operation is a character specifying the operation to be executed. context_name is the name of the context for which the requested operation is executed. entity is an operation-specific parameter. It can be a variable name if operation is Set Variable, or a function name if operation is Call Function. List of available operation codes: G S C L R Get variable operation Set variable operation Call function operation Add event listener operation Remove event listener operation
data_table is an optional parameter containing operation specific data. See Data Table Encoding 1306 appendix for details.
EVENT MESSAGE
M//E/context_name/event_name/event_level/event_ID/event_listener_ID/data_table/ server_timestamp This message is sent to the client when an event named event_name fires in context_name and this client was previously added as a listener for this event. It does not require any reply from the client. If the event is persistent, the event_ID field contains its unique ID. event_listener_ID is an integer number that indicates the listener object on the client side. data_table contains event-specific data. The server_timestamp field contains server-side event creation time in milliseconds since January 1,
1970 00:00:00 UTC.
Operations Reference
GET VARIABLE OPERATION
M/message_id/O/G/context_name/variable_name This operation returns variable_name from context_name. If the variable is found and no error occurred, the reply to this command includes the data table containing the value of the requested variable: R/reply_id/A/data_table
SET VARIABLE OPERATION
M/message_id/O/S/context_name/variable_name/data_table
1306
AggreGate Documentation
This operation sets variable_name of context_name to the value contained in data_table. If the variable value was changed successfully, the server replies: R/reply_id/A
CALL FUNCTION OPERATION
M/message_id/O/C/context_name/function_name/data_table This operation calls function_name from context_name with data_table as input. If no error occurred, the reply includes a data table containing the function's output: R/reply_id/A/data_table
ADD EVENT LISTENER OPERATION
M/message_id/O/L/context_name/event_name/event_listener_ID[/filter_text] This operation registers a listener with the specified integer event_listener_ID for the event_name in context_name. When this event fires, client receives an Event (E) message with the same event_listener_ID code. The optional filter_text parameter allows to pre-filter events based on the provided filter expression 911 . This expression will be calculated for every matching event, and if it results to false, event will not be sent to the client.
Filter Expression Resolution Environment Default Context
927 927 922
variables only.
M/message_id/O/R/context_name/event_name/event_listener_ID[/filter_text] This operation removes listener with the specified event_listener_ID of event_name in context_name . If filter_text is specified, only listener with this filter is removed. On successfully removing listener, server replies: R/reply_id/A
Appendix
Using invisible separators Three special characters are used as separators for encoding:
1307
In this article all examples use visible separators. The only limitation when encoding a table using visible separators is that its different elements, when they are encoded to strings, must not contain these separators.
Elements
Generally, Data Table and its different parts are encoded into string as a number of elements of the following format:
<[element_name=]element_value>
Both the name and value may include any character except for those used by AggreGate Communication Protocol used to encode the element itself 1307 . An element's value may be an encoded list of nested elements.
1303
or
Table Encoding
Here is the format for an encoded data table:
Record of the data table. Records are encoded one by one. Format of encoded records is described below. Example: <F=<<IP><S><F=C>><M=1><X=1>><R=<192.168.1.88>> This example shows an encoded data table those format defined one string field called "IP", and that contains one record with value "192.168.1.88". See details of record and format encoding below.
1308
AggreGate Documentation
e F
Combination of zero or more of the following flags: R (Reodrerable) - indicates rows of this table may be reordered by AggreGate users editing it. U (Unresizable) - indicates that users cannot add/remove rows when editing the table.
V R B M X N
Table validators
1310
Record validators 1310 that are used to validate every record. Table bindings
860 .
Minimal allowed number of records in the table. Maximal allowed number of records in the table. Table naming expression. Example: <<date><D>><M=1><X=1> This example format described a one-cell table (one field, minimum and maximum record count is also one). The only field's name is "date", and it's type is Date. See details of field format encoding below. Example: <<id><S><D=Card
ID><V=<L=10 10>>><<name><S><D=Cardholder
Name>><M=0><X=255>
This format describes a two-fields table that may contain from 0 to 255 records. First string field is called "id" and it's description is "Card ID". It has a limits validator that restricts value length to exactly 10 characters. Second field is also of string type, it's called "name".
A D H S V E
Default value of field encoded into a string as covered in value encoding Field description. Field help (detailed description). List of selection values for the field. See encoding rules here List of field validators. See encoding rules here
1310 . 1310 .
1309
section.
Code of editor/renderer. This element enables custom visual representation of field value. Supported
Appendix
1309
857 .
O I G
Editor-specific options. String ID of field icon. Field group. Example: <value><I> This is the simplest possible field format descriptor that defines the integer field called "value". Example: <period><L><A=30000><D=Check
Period><V=<L=100
1000000>><E=period><O=0
4>
This format descriptor defines a long (64-bit integer) field with default value 30000. Field description is "Check Period". If has a limits validator that restricts values to the range 100..1000000. Editor/renderer type instructs the system to use Time Period editor for editing field value.
S I L B F
String field Integer field Long field Boolean field Float field
Yes
Converted to string, e.g. 123 or -123. TRUE is encoded as string 1 and FALSE as string 0
Converted to a string according to the below rules. All characters mentioned below are ASCII characters. If the argument is NaN, the result is the string NaN. Otherwise, the result is a string that represents the sign and magnitude (absolute value) of the argument. If the sign is negative, the first character of the result is ; if the sign is positive, no sign character appears in the result. As for the magnitude m : If m is infinity, it is represented by the characters Infinity; thus, positive infinity produces the result "Infinity" and negative infinity produces the result Infinity. If m is zero, it is represented by the characters 0.0; thus, negative zero produces the result -0.0 and positive zero produces the result 0.0. If m is greater than or equal to 10-3 but less than 107, then it is represented as the integer part of m , in decimal form with no leading zeroes, followed by ., followed by one or more decimal digits representing the fractional part of m. If m is less than 10-3 or greater than or equal to 107, then it is represented in socalled "computerized scientific notation." Let n be the unique integer such that 10n <= m < 10n+1; then let a be the mathematically exact quotient of m and 10n so that 1 <= a < 10. The magnitude is then represented as the integer part of a , as a single decimal digit, followed by ., followed by decimal digits representing the fractional part of a , followed by the letter E, followed by a representation of n as a decimal integer. How many digits must be printed for the fractional part of m or a ? There must be at least one digit to represent the fractional part, and beyond that as many, but only as many, more digits as are needed to uniquely distinguish the argument value from adjacent values of type Float (or Double, if a double number processed). That is, suppose that x is the exact mathematical value represented by the decimal representation produced by this method for a finite nonzero argument d. Then d must be the double value nearest to x ; or if two double values are equally close to x
1310
AggreGate Documentation
, then d must be one of them and the least significant bit of the significand of d must be 0.
E D
Uses the same string conversion rules as Float field (see above). Converted to string in the form "yyyy-MM-dd HH:mm:ss.SSS", where yyyy is year MM is month dd is day of month HH is hour (0-23) mm is minutes ss is seconds SSS is milliseconds The conversion must use UTC timezone.
T C
Yes
Nested data table is encoded to string according to the Data Table Encoding
1306
rules
Converted to string in the form "#RRGGBB", where RR is red value (0-255) is hex form GG is green value (0-255) is hex form BB is blue value (0-255) is hex form
Yes
<Zero=0><One=1><Two=2>
Encoding Validators
Field validators are encoded as a list of elements, one per every validator. The element's name is a type code of the validator while its value contains validator-specific options.
FIELD VALIDATORS
Here is a list of supported field validators: Type Code L Description Limits Validator. Checks if a value is within the range defined by validator parameters. Suitable Field Types String, Integer, Long, Float, Data Validator-Specific Options
Validator options are encoded into a string as two integer numbers separated by a space. The first number indicates the minimum value of a range, and the second number specifies the maximum value. These numbers have different meaning for different field types: For String fields, these parameters limit minimal and maximal length of the string. For Integer, Long and Float fields they indicate minimal and maximal value. For Data fields they limit number of bytes that can be contained in the data block.
Appendix
1311
Limits are inclusive for all field types (i.e, a limit of "3" would permit a string such as abc -- containing 3 characters). R Regular Expression String Validator. Checks if a string value matches a regular expression specified by the validator parameter. Example 1: <L=0 255> If this limits validator is added to the format of string field, it will allow only Strings those length is from 0 to 255 characters. It it is defined for an Integer fields, it will restrict field values to the numbers that are greater or equal to 0 and less or equal to 255. Example 2: <R=^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-] Validator option string contains a regular expression 1318 to which the field value will be matched. It may be followed by an optional error message separated from the regular expression by a ^^ string. If validation fails (i.e. string value does not match the regular expression), this error message will be shown to the user.
+)*(\\.[_A-Za-z0-9-]+)^^Invalid
E-Mail>
^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[_A-Zaz0-9-]+) is a regex (The first ^ mark belong to it). After this regex, ^^ is used as a separator and is then
followed by the text for the error message, "Invalid E-Mail". This regular expression validator checks if a field contains a valid e-mail address and fails with an Invalid EMail error if it doesn't. See Regular Expressions Syntax 1318 appendix for more information on regular expressions.
RECORD VALIDATORS
Here is a list of supported record validators: Type Code K Description Key Fields. Checks whether a combination of key field values does not already exists in the table. Applied during record addition. Validator-Specific Options
None - key fields are marked with Key Field flag of field format.
TABLE VALIDATORS
Here is a list of supported table validators: Type Code K E Description Key Fields. Checks whether combination of key field values if unique for every record. Expression Validator . Evaluates an expression 911 having this table as a default table 927 . If expression returns NULL table is considered valid, otherwise expression output is converted to string and used as error text. Validator-Specific Options
None - key fields are marked with Key Field flag of field format. The text of expression.
A NULL ("<Not set>") value is encoded with a single 0x1A (SUB) character. This rule applies to encoding NULL values
of table cells, default values of table fields, selection values and any other place where field values may appear. If visible separators are used to encode the Data Table, NULL values are encoded as "^ " characters.
TRANSFER ENCODING
Field values are transfer-encoded to remove characters used by the Data Table encoding format and AggreGate Communications Protocol 1303 . These characters are substituted with special patterns according to the following table:
1312
AggreGate Documentation
Character
0x25 (%) 0x02 (STX) 0x0D (CR) 0x17 (ETB) 0x1C (FS) 0x1D (GS) 0x1E (RS)
Replaced by
%% %^ %$ %/ %< %> %=
Note that the patterns in the Replaced by column are literal strings -- they're just what you see above.
[<I=record_ID>]<field_value><field_value>
Elements without names are field values. Field values are encoded one by one, in the same order as they appear in the table format descriptor 1307 .
Element Name I
Element Value
Record ID (Long number)
<xs:element name="table"> <xs:complexType> <xs:sequence> <xs:element ref="format" minOccurs="0" maxOccurs="1"/> <xs:element ref="records" minOccurs="0" maxOccurs="1"/> </xs:sequence> </xs:complexType> </xs:element>
Appendix <xs:element name="format"> <xs:complexType> <xs:sequence> <xs:element ref="fields" minOccurs="0"/> </xs:sequence> <xs:attribute name="maxRecords" type="xs:integer"/> <xs:attribute name="minRecords" type="xs:integer"/> </xs:complexType> </xs:element> <xs:element name="fields"> <xs:complexType> <xs:sequence> <xs:element ref="field" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="field"> <xs:complexType> <xs:sequence> <xs:element ref="selectionValues" minOccurs="0"/> <xs:element ref="defaultValue" minOccurs="0"/> </xs:sequence> <xs:attribute name="description"/>
1313
<xs:attribute name="name" type="xs:NCName" use="required"/> <xs:attribute name="notReplicated" type="xs:boolean"/> <xs:attribute name="nullable" type="xs:boolean"/> <xs:attribute name="readonly" type="xs:boolean"/> <xs:attribute name="type" type="fieldType" use="required"/> </xs:complexType> </xs:element> <xs:element name="selectionValues">
<xs:complexType> <xs:sequence> <xs:element ref="option" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="option"> <xs:complexType mixed="true"> <xs:complexContent> <xs:extension base="fieldVal">
1314
AggreGate Documentation <xs:attribute name="description" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="defaultValue" type="fieldVal"/> <xs:element name="records"> <xs:complexType> <xs:sequence> <xs:element ref="record" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="record"> <xs:complexType> <xs:sequence> <xs:element name="value" maxOccurs="unbounded" minOccurs="0"> <xs:complexType mixed="true"> <xs:complexContent> <xs:extension base="fieldVal"> <xs:attribute name="name"
use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="fieldType"> <xs:restriction base="xs:string">
<xs:enumeration value="A"/> <xs:enumeration value="I"/> <xs:enumeration value="D"/> <xs:enumeration value="T"/> <xs:enumeration value="S"/> <xs:enumeration value="B"/> <xs:enumeration value="L"/> <xs:enumeration value="F"/> <xs:enumeration value="O"/> <xs:enumeration value="C"/>
Appendix </xs:restriction> </xs:simpleType> <xs:complexType name="fieldVal" mixed="true"> <xs:choice minOccurs="0"> <xs:element ref="data"/> <xs:element ref="table"/> </xs:choice> </xs:complexType> <xs:element name="data"> <xs:complexType> <xs:attribute name="name" type="xs:string"/> <xs:attribute name="contentType" type="xs:string"/> </xs:complexType> </xs:element> </xs:schema>
1315
This XML Schema defines the structure of a Data Table XML document. The root element is table, corresponding to a whole Data Table 854 . The table element may contain one format element which describes the Data Table's format optional records element that encapsulates a list of table records with the data itself.
855 .
The format element must include a fields sub-element containing a list of table fields. It can have minRecords and maxRecords attributes that define a minimum and maximum number of records in the table. If minRecords is not defined, the minimal number of records is zero. If maxRecords is not defined, the maximal number of records is unlimited (limited by 2^64 in practice). The fields element consists of one or more field elements. A field element defines the format of a single field 856 . It requires name and type attributes. The fieldType element can be represented by one of the type code characters defined here 1309 . description, notReplicated, nullable and readonly attributes are optional. field element can also include selectionValues and defaultValue sub-elements. More these attributes and elements may be found in the Data Tables 856 article. The selectionValues element can contain one or more option elements. A value element is of fieldVal type. value element has required description attribute that specifies description of a certain selection value.
The records element contains a sequence of record elements. Each record represents a single Data Table record. It contains a number of value elements. Their data type is fieldVal, described above. Each element also has a required name attribute indicating the name of the field whose value is represented by the value.
<?xml version="1.0" encoding="UTF-8"?> <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!-- Data Table --> <format maxRecords="1" minRecords="1"> <!-- Table Format Descriptor --> <fields> <!-- Field Set -->
1316
AggreGate Documentation
<field description="Username" name="username" notReplicated="true" readonly="true" type="S"/> <field description="First Name" name="firstname" notReplicated="true" nullable="true" type="S"/> <field description="Last Name" name="lastname" notReplicated="true" nullable="true" type="S"/> <field description="Password" name="password" notReplicated="true" type="S"/> <field description="Country" name="country" type="I"> <selectionValues> <option <option -description="Albania">1</option> description="Algeria">2</option> --
skipped
</selectionValues> </field> <field description="Region/State/Province/Area" name="region" nullable="true" type="S"/> <field description="ZIP Code" name="zip" nullable="true" type="S"/> <field description="City" name="city" nullable="true" type="S"/> <field description="Address 1" name="address1" nullable="true" type="S"/> <field description="Address 2" name="address2" nullable="true" type="S"/> <field description="Comments" name="comments" nullable="true" type="S"/> <field description="Company" name="company" nullable="true" type="S"/ > <field description="Department" name="department" nullable="true" type="S"/> <field description="E-mail Address" name="email" notReplicated="true" nullable="true" type="S"/> <field description="Phone No." name="phone" notReplicated="true" nullable="true" type="S"/> <field description="Fax No." name="fax" notReplicated="true" nullable="true" type="S"/> <field description="Time Zone" name="timezone" type="S"> <selectionValues> <option description="GMT-12:00, Etc/GMT+12">Etc/GMT+12</ option>
Appendix
1317
</selectionValues> <defaultValue>Europe/Moscow</defaultValue> </field> <field description="Locale" name="locale" type="S"> <selectionValues> <option description="Default"/> <option <option -description="aa">aa</option> description="ab">ab</option> --
skipped
</selectionValues> <defaultValue>en</defaultValue> </field> <field description="Date Pattern" name="datepattern" type="S"/> <field description="Time Pattern" name="timepattern" type="S"/> <field description="Enable Automatic Registration of Device Servers" name="dsautoregistration" type="B"/> </fields> </format> <records> <!-- Data Table Records --> <record> <!-- First Record --> <value <value <value <value <value <value <value <value </record> name="username">ronnie</value> name="firstname">Ronnie</value> name="lastname">O'Sullivan</value> name="password">11111</value> name="country">218</value> name="datepattern">dd.MM.yyyy</value> name="timepattern">HH:mm:ss</value> name="dsautoregistration">1</value>
1318
AggreGate Documentation
<record> <!-- Second Record --> <value <value <value <value name="username">john</value> name="firstname">John</value> name="lastname">Doe</value> name="password">12345</value>
<value name="country">83</value> <value <value <value </record> </records> </table> name="datepattern">dd.MM.yyyy</value> name="timepattern">HH:mm:ss</value> name="dsautoregistration">1</value>
Appendix
1319
Any character except a, b, or c (negation) a through z or A through Z, inclusive (range) a through d, or m through p: [a-dm-p] (union) d, e, or f (intersection) a through z, except for b and c: [ad-z] (subtraction) a through z, and not m through p: [a-lq-z](subtraction)
Predefined character classes . \d \D \s \S \w \W Any character (may or may not match line terminators) A digit: [0-9] A non-digit: [^0-9] A whitespace character: [ \t\n\x0B\f\r] A non-whitespace character: [^\s] A word character: [a-zA-Z_0-9] A non-word character: [^\w]
POSIX character classes (US-ASCII only) \p{Lower} \p{Upper} \p{ASCII} \p{Alpha} \p{Digit} \p{Alnum} \p{Punct} \p{Graph} \p{Print} \p{Blank} \p{Cntrl} \p{XDigit} \p{Space} A lower-case alphabetic character: [a-z] An upper-case alphabetic character:[A-Z] All ASCII:[\x00-\x7F] An alphabetic character:[\p{Lower}\p{Upper}] A decimal digit: [0-9] An alphanumeric character:[\p{Alpha}\p{Digit}] Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ A visible character: [\p{Alnum}\p{Punct}] A printable character: [\p{Graph}\x20] A space or a tab: [ \t] A control character: [\x00-\x1F\x7F] A hexadecimal digit: [0-9a-fA-F] A whitespace character: [ \t\n\x0B\f\r]
Boundary matchers ^ $ \b \B \A \G \Z \z The beginning of a line The end of a line A word boundary A non-word boundary The beginning of the input The end of the previous match The end of the input but for the final terminator, if any The end of the input
Greedy quantifiers X? X* X+ X{n} X, once or not at all X, zero or more times X, one or more times X, exactly n times
1320
AggreGate Documentation
X{n,} X{n,m}
Reluctant quantifiers X?? X*? X+? X{n}? X{n,}? X{n,m}? Possessive X?+ X*+ X++ X{n}+ X{n,}+ X{n,m}+ X, once or not at all X, zero or more times X, one or more times X, exactly n times X, at least n times X, at least n but not more than m times quantifiers X, once or not at all X, zero or more times X, one or more times X, exactly n times X, at least n times X, at least n but not more than m times
Back references \n Quotation \ \Q \E Nothing, but quotes the following character Nothing, but quotes all characters until \E Nothing, but ends quoting started by \Q Whatever the nth capturing group matched
CHARACTER CLASSES
Character classes may appear within other character classes, and may be composed by the union operator (implicit) and the intersection operator (&&). The union operator denotes a class that contains every character that is in at least one of its operand classes. The intersection operator denotes a class that contains every character that is in both of its operand classes. The precedence of character-class operators is as follows, from highest to lowest: 1 2 3 4 5 Literal escape Grouping Range Union Intersection \x [...] a-z [a-e][i-u] [a-z&&[aeiou]]
Appendix
1321
Note that a different set of metacharacters are in effect inside a character class than outside a character class. For instance, the regular expression . loses its special meaning inside a character class, while the expression - becomes a range forming metacharacter.
LINE TERMINATORS
A line terminator is a one- or two-character sequence that marks the end of a line of the input character sequence. The following are recognized as line terminators: A newline (line feed) character ('\n'), A carriage-return character followed immediately by a newline character ("\r\n"), A standalone carriage-return character ('\r'), A next-line character ('\u0085'), A line-separator character ('\u2028'), or A paragraph-separator character ('\u2029).
1322
AggreGate Documentation
Pattern letters are usually repeated, as their number determines the exact presentation: Text: For formatting, if the number of pattern letters is 4 or more, the full form is used; otherwise a short or abbreviated form is used if available. For parsing, both forms are accepted, independent of the number of pattern letters. Number: For formatting, the number of pattern letters is the minimum number of digits, and shorter numbers are zero-padded to this amount. For parsing, the number of pattern letters is ignored unless it's needed to separate two adjacent fields. Year: For formatting, if the number of pattern letters is 2, the year is truncated to 2 digits; otherwise it is interpreted as a number. Month: If the number of pattern letters is 3 or more, the month is interpreted as text; otherwise, it is interpreted as a number. Hours must be between 0 and 23, and Minutes must be between 00 and 59. The format is locale independent and digits must be taken from the Basic Latin block of the Unicode standard.
Examples
The following examples show how date and time patterns are interpreted in the U.S. locale. The given date and time are 2001-07-04 12:08:56 local time in the U.S. Pacific Time time zone. Date and Time Pattern "yyyy.MM.dd G 'at' HH:mm:ss" "EEE, MMM d, ''yy" "h:mm a" "hh 'o''clock' a" "K:mm a" "yyyyy.MMMMM.dd GGG hh:mm aaa" "EEE, d MMM yyyy HH:mm:ss" "yyMMddHHmmss" Result 2001.07.04 AD at 12:08:56 Wed, Jul 4, '01 12:08 PM 12 o'clock PM 0:08 PM 02001.July.04 AD 12:08 PM Wed, 4 Jul 2001 12:08:56 010704120856
Patterns
A pattern contains a positive and negative subpattern, for example, "#,##0.00;(#,##0.00)". Each subpattern has a prefix, numeric part, and suffix. The negative subpattern is optional; if absent, then the positive subpattern prefixed with the localized minus sign ('-' in most locales) is used as the negative subpattern. That is, "0.00" alone is equivalent to "0.00;-0.00". If there is an explicit negative subpattern, it serves only to specify the negative prefix and suffix; the number of digits, minimal digits, and other characteristics are all the same as the positive pattern. That means that "#, ##0.0#;(#)" produces precisely the same behavior as "#,##0.0#;(#,##0.0#)". The grouping grouping size 1,0000,0000. the integer is separator is commonly used for thousands, but in some countries it separates ten-thousands. The is a constant number of digits between the grouping characters, such as 3 for 100,000,000 or 4 for If you supply a pattern with multiple grouping characters, the interval between the last one and the end of the one that is used. So "#,##,###,####" == "######,####" == "##,####,####".
Appendix
1323
Number Number Number Number Number Subpattern boundary Prefix or suffix Prefix or suffix Prefix or suffix
Digit, zero shows as absent Decimal separator or monetary decimal separator Minus sign Grouping separator Separates mantissa and exponent in scientific notation. Need not be quoted in prefix or suffix. Separates positive and negative subpatterns Multiply by 100 and show as percentage Multiply by 1000 and show as per mille value Currency sign, replaced by currency symbol. If doubled, replaced by international currency symbol. If present in a pattern, the monetary decimal separator is used instead of the decimal separator. Used to quote special characters in a prefix or suffix, for example, "'#'#" formats 123 to "#123". To create a single quote itself, use two in a row: "# o''clock".
Prefix or suffix
Scientific Notation
Numbers in scientific notation are expressed as the product of a mantissa and a power of ten, for example, 1234 can be expressed as 1.234 x 10^3. The mantissa is often in the range 1.0 <= x < 10.0, but it need not be. DecimalFormat can be instructed to format and parse scientific notation only via a pattern; there is currently no factory method that creates a scientific notation format. In a pattern, the exponent character immediately followed by one or more digit characters indicates scientific notation. Example: "0.###E0" formats the number 1234 as "1.234E3". The number of digit characters after the exponent character gives the minimum exponent digit count. There is no maximum. Negative exponents are formatted using the localized minus sign, not the prefix and suffix from the pattern. This allows patterns such as "0.###E0 m/s". The minimum and maximum number of integer digits are interpreted together: If the maximum number of integer digits is greater than their minimum number and greater than 1, it forces the exponent to be a multiple of the maximum number of integer digits, and the minimum number of integer digits to be interpreted as 1. The most common use of this is to generate engineering notation, in which the exponent is a multiple of three, e.g., "##0.#####E0". Using this pattern, the number 12345 formats to "12.345E3", and 123456 formats to "123.456E3". Otherwise, the minimum number of integer digits is achieved by adjusting the exponent. Example: 0.00123 formatted with "00.###E0" yields "12.3E-4". The number of significant digits in the mantissa is the sum of the minimum integer and maximum fraction digits, and is unaffected by the maximum integer digits. For example, 12345 formatted with "##0.##E0" is "12.3E3". To show all digits, set the significant digits count to zero. The number of significant digits does not affect parsing. Exponential patterns may not contain grouping separators.
Pattern: PositivePattern PositivePattern ; NegativePattern PositivePattern: Prefixopt Number Suffixopt NegativePattern: Prefixopt Number Suffixopt Prefix: any Unicode characters except \uFFFE, \uFFFF, and special characters Suffix:
1324
AggreGate Documentation any Unicode characters except \uFFFE, \uFFFF, and special characters
Number: Integer Exponentopt Integer . Fraction Exponentopt Integer: MinimumInteger # # Integer # , Integer MinimumInteger: 0 0 MinimumInteger 0 , MinimumInteger Fraction: MinimumFractionopt OptionalFractionopt MinimumFraction: 0 MinimumFractionopt OptionalFraction: # OptionalFractionopt Exponent: E MinimumExponent MinimumExponent: 0 MinimumExponentopt
Time Units
0 - Millisecond 1 - Second 2 - Minute 3 - Hour 4 - Day 5 - Week 6 - Month 7 - Quarter 8 - Year
Aggregation Types
0 - Average 1 - Minimum 2 - Maximum
Appendix
3 - Summation 4 - First 5 - Last
1325
1326
AggreGate Documentation
Fields
Configuration of report fields: Visible. Flag indicating that Data Table field will be shown in the report. Relative Width. A floating point value giving a hint for column width calculation. If relative width of one column is two times larger than relative width of the other column, first column will be twice as wide in the report template. Column Header . Report column header.
Grouping
Example
Source Data for Report:
Report Parameters:
Appendix
1327
1328
AggreGate Documentation
4. Disabling UAC
When User Access Control (UAC) is active, an administrator account actually has two security tokens, a normal user token, and an administrator token (which is only activated when you pass the UAC prompt). Unfortunately, remote requests that come in over the network get the normal user token for the administrator, and since there is no way to handle a UAC prompt remotely, the token can't be elevated to the true-administrator security token. Thus, UAC should be disabled to allow remote DCOM access.
Appendix
- Domain\Username (A specific user) - Domain\Administrators (All administrators on a specific domain) - Everyone (All users)
1329
5. Under Default Launch Permissions click Edit Default. Make sure the Default Launch Permissions have the same values as the Default Access Permissions. 6. Click Default Protocols. Make sure Connection-oriented TCP/IP is listed first. 7. You must now configure the COM application you wish to access. Click Applications and right-click on the application you wish to configure. Select Properties. If your COM application is a DLL, you must first create a surrogate EXE for it using the SetDllHost tool. Once a surrogate EXE is created, the surrogate name will appear in the list of applications. Select Properties for the surrogate and continue on. 8. Click General. Set the Authentication Level to Default. 9. Click Location. Select Run application on this computer. 10. Click Security. Select Use default access permissions and Use default launch permissions. 11. Click Identity. Select The launching user. This setting specifies the account that will be used to run the COM application once it is launched by a client program. The launching user is the user account of the client process that launched the server, and is the recommended setting. Depending on the COM application you want to connect to, you may need to change this to: - The interactive user - The user that is currently logged on to the machine hosting the COM application. - This user - Specify a user account that will always be used to run the COM application regardless of which user is accessing it. 12. Click Endpoints. Select Default System Protocols. 13. If you still get an "Access Denied" or "Permission Denied" error after configuring your DCOM settings, try rebooting your machine to allow the new settings to take effect.
1330
AggreGate Documentation
application once it is launched by a client program. The launching user is the user account of the client process that launched the server, and is the recommended setting. Depending on the COM application you want to connect to, you may need to change this to: - The interactive user - The user that is currently logged on to the machine hosting the COM application. - This user - Specify a user account that will always be used to run the COM application regardless of which user is accessing it. 14. Click Endpoints. Select default system protocols. 15. If you still get an "access denied" or "permission denied" error after configuring your DCOM settings, try rebooting your machine to allow the new settings to take effect.
Introduction
Appendix
This article explains how to set up an AggreGate Failover Cluster in order to achieve uninterrupted service. Failover configuration features: - Two physical servers running Linux operating system - Reliable high-speed network connection between cluster nodes and with the outside world - AggreGate AggreGate Server installed on both nodes - MySQL Server installed on both nodes - Shared disk space containing AggreGate Server configuration and database data
1331
- Linux Heartbeat software used to manage cluster nodes (Linux Heartbeat is a part of High Availability Linux project) Benefits of the described cluster configuration: - Replication of disk data between nodes ensures resistance to HDD failures - Automatic transfer of IP addresses causes transparent switching of Clients, Agents and third-party applications to the secondary node in the case of primary node failure - Maximum service downtime does not exceed several minutes (less than one minute in most cases) - Different custom rules and timeouts may be applied for AggreGate Server and database server failure detection Techniques described in this article may help to set up an AggreGate failover cluster using other operating systems and database servers. See Windows 2008 Server High Availability (http://www.microsoft.com/windowsserver2008/en/us/highavailability.aspx) for details on clustering Microsoft Windows.
1332
AggreGate Documentation
DISK SHARING
Both nodes have access to the common disk space that is shared using Distributed Replicated Block Device (DRBD) technology. The primary node has full access to this disk, while secondary node accesses it in read-only mode. This disk contains the following data: AggreGate AggreGate Server installation folder, including server configuration file MySQL installation folder and database data During primary role transfer from one node to another, DRBD is switched to read-write mode for the new primary node, and to read-only mode for new secondary node (if it has not completely failed).
DATABASE FAILOVER
The described configuration uses MySQL as the database server for AggreGate, but other SQL databases may be configured in the same way. MySQL Server is installed in the shared disk space. It is running on the primary node, and stopped on the secondary node. During the role transfer, MySQL is launched on the new prinary node, and stopped on the new secondary node (if it has not completely failed). MySQL server stores all data in the shared disk space.
Appendix
1333
AggreGate AggreGate Server failover mechanism is very similar to the database failover: AggreGate Server is installed in the shared disk space, running on the primary node and stopped on the secondary one. During role change, AggreGate Server is stopped on the old primary node (if it has not completely failed) and launched on the new primary node.
HEARTBEAT
Heartbeat daemon is running on both the primary and secondary nodes and manages cluster nodes in real time. Two heartbeat daemons maintain a constant link with one another. On the primary node, heartbeat daemons runs a Monitor daemon that constantly polls the state of MySQL and AggreGate server by monitoring the availability of certain TCP ports.
IP ADDRESS MANAGEMENT
Every node in the cluster has a dedicated fixed IP address. The primary node also has an alias IP. This IP is used by Clients, Agents and third-party applications to access the AggreGate Server. During role transfer, this alias IP address is removed from the old primary node's network interface, and added to the new primary node's network interface by the heartbeat daemon. This causes transparent switching of all Clients and Agents to the new primary node.
Role Transfer
Role transfer is the process of passing the primary cluster node role to the other node. It occurs in the following cases: If the primary node loses network connectivity or has a hardware failure. In this case, the heartbeat daemon on the primary node stops responding, and the heartbeat daemon on the secondary node switches it to the primary state as soon as a certain timeout period elapses. If MySQL of AggreGate Server on the primary node fails. In this case, the Monitor daemon on the primary node will detect port unavailability and report error status to the heartbeat daemon. The latter will switch the local node to the secondary state and instruct the heartbeat daemon on the other node to switch it to primary.
1. INSTALLING DRBD
Install and configure DRBD on both machines. 1a. Install DRBD using URPMI:
urpmi drbd-utils
1b. Create new partition for the DRBD shared disk in the free HDD space.
cfdisk /dev/sda
1334
AggreGate Documentation
Partition type: Linux (0x83). Partition size must match on both machines. In our example, the name of the newly created partition is /dev/sda7. 1c. If you have a firewall, allow incoming connections to TCP/UDP port 7791. 1d. Reboot the machine. 1e. Create a DRBD configuration in /etc/drbd.conf. Here we assume that the IP of the first machine is 192.168.1.2, while the IP of second machine is 192.168.1.3. Configuration file is the same on both machines: DRBD Configuration File (/etc/drbd.conf)
global { # You might disable one of drbdadm's sanity check. # disable-ip-verification; usage-count no; } common { syncer { rate 10M; } } resource r0 { protocol C; startup { wfc-timeout 0; degr-wfc-timeout 120; } disk { on-io-error detach; } meta-disk internal; syncer { } on l0 { device /dev/drbd0; disk /dev/sda7; address 192.168.1.2:7791; } on l1 { device /dev/drbd0; disk /dev/sda7; address 192.168.1.3:7791; } } 1f. Start DRBD driver and create virtual disk:
cat /proc/drbd
It should be Secondary/Secondary and Inconsisted/Inconsisted on both machines for far. 1h. Now let's say that first server is primary: Node 1: drbdadm -- --overwrite-data-of-peer primary r0 Node 2: drbdadm secondary r0 Now DRBD status on node 1 should be Primary/Secondary, UpToDate/Inconsisted 1i: Start synchronization process: Node 1: drbdadm adjust all 1j: Give DRBD some time to synchronize data and check status again: Node 1: cat /proc/drbd Status should be Primary/Secondary, UpToDate/UpToDate. It means that DRBD disk is operable.
Appendix
1335
urpmi mysql-max
3b. Move MySQL tables to a DRBD disk and create a symlink:
useradd linkserv
3e. Perform AggreGate Server installation by running an installer and following its instructions. In our case, installation directory is /mnt/drbd/linkserver. 3f. Create new MySQL user account for AggreGate Server and configure AggreGate Server to use MySQL database 3g. Copy linkserv script from AggreGate Server installation directory to /etc/rc.d/init.d. 3h. Test the installation by executing service linkserv start, waiting until the server starts and stopping it using service linkserv stop. Check server log file for errors. 3i. Create a symlink for AggreGate Server:
82
ln -s /mnt/drbd/linkserver /home/linkserv/linkserver
4. INSTALL HEARTBEAT AND HEARTBEAT-DRBD ON BOTH NODES
4a. Install heartbeat: Both nodes: urpmi heartbeat Both nodes: urpmi heartbeat-drbd 4b. Switch off boot-time autostart for MySQL and AggreGate Server: Both nodes: chkconfig mysqld-max off Both nodes: chkconfig linkserv off 4c. Switch on autostart for heartbeat: Both nodes: chkconfig heartbeat on 4d. Create heartbeat configuration in /etc/ha.d/ha.cf (file contents match on both nodes): Heartbeat configuration (/etc/ha.d/ha.cf)
# keepalive: how many seconds between heartbeats keepalive 1 # # deadtime: seconds-to-declare-host-dead deadtime 3 #
1336
AggreGate Documentation
# hopfudge maximum hop count minus number of nodes in config hopfudge 1 # # What interfaces to heartbeat over? bcast eth1 auto_failback on # # File to wirte debug messages to debugfile /var/log/ha-debug # # File to write other messages to # logfile /var/log/ha-log # # Facility to use for syslog()/logger (alternative to log/debugfile) # logfacility local0 # # Tell what machines are in the cluster # node nodename ... -- must match uname -n node l0 node l1
down.alert
And make it executable: Both nodes: chmod 0755 /etc/mon/ha-down.alert 5d. Configure monitored services in /etc/mon/mon.cf on both nodes. We need to watch for ports: TCP port 3306 for MySQL TCP ports 6450 (Device Servers), 6460 (Clients), 6480 (Agents), 8443 (Embedded Web Server) for AggreGate Server Monitored services configuration (/etc/mon/mon.cf)
Appendix
1337
# # Global options # cfbasedir = /etc/mon pidfile = /var/run/mon.pid statedir = /var/lib/mon/state.d logdir = /var/lib/mon/log.d dtlogfile = /var/lib/mon/log.d/downtime.log #alertdir = /usr/lib/mon/alert.d alertdir = /etc/mon/ mondir = /usr/lib/mon/mon.d maxprocs = 20 histlength = 100 randstart = 60s authtype = pam userfile = /etc/mon/userfile # # Group definitions (hostnames or IP addresses) # hostgroup servers localhost watch servers service agg0 interval 30s monitor tcp.monitor -p 6450 period wd {Sun-Sat} alert ha-down.alert alertafter 2 service agg1 interval 30s monitor tcp.monitor -p 6460 period wd {Sun-Sat} alert ha-down.alert alertafter 2 service agg2 interval 30s monitor tcp.monitor -p 6480 period wd {Sun-Sat} alert ha-down.alert alertafter 2 service agg3 interval 30s monitor tcp.monitor -p 8443 period wd {Sun-Sat} alert ha-down.alert alertafter 2 service mysql interval 10s monitor msql-mysql.monitor period wd {Sun-Sat} alert ha-down.alert alertafter 2
localhost
localhost
localhost
localhost
It is possible to configure Monitor daemon to send E-mail or SMS notifications upon node failure. See its documentation for details. 5e. Start Heartbeat: Both nodes: service heartbeat start If your setup is correct, AggreGate cluster should be operative in several minutes.
Resolving a Split-Brain
Split-brain is a situation whereby cluster nodes are disconnected from each other for a significant time, e.g. due to some
1338
AggreGate Documentation
network problem. In this case, DRBD devices may lose sync. Here is an example for commands that can help synchronize DRBD manually following a split-brain situation. We assume that we should use data from node 1 and discard data from node 2: Node 2: drbdadm secondary all Node 2: drbdadm disconnect all Node 2: drbdadm -- --discard-my-data connect all Node 1: drbdadm connect all