Once a Heartbeat has been configured HeartbeatRequests may be fired manually or via schedule automation. They request contains instructions that are sent over WCF to the Windows service on the target machine.
· A scheduled event on support makes a WCF request to the Target site
· A thread is spawned which creates an instance of the HeartbeatReporter class
· It checks to see if the target machine’s heartbeat configuration in memory. If not it makes a web request to support to obtain the list of heartbeat operations is should conduct and caches that information.
· It iterates through the heartbeats it is supposed to invoke.
· If the heartbeat requires a QBO V3 AppDomain it will create the domain and instantiate the QBOV3 heartbeatplugin from within the app domain.
· It will call the assemblies Invoke() method which will return a heartbeat result object which will be added to a heartbeatResultCollection in memory
· The heartbeat results will be sent back to and update the Heartbeat request record and create a new heartbeat result record for each child heartbeat
· The next time the support event is scheduled to run it checks against prior Heartbeat records to determine if an asynchronous HeartbeatResult was received from the previous request.
· If it was not the heartbeat status requested is determined to be status offline, priority 1, indicating that the target machine has failed to report in.
· Otherwise a new request is generated
A heartbeat result will be returned from the client machine for each HeartbeatItem associated with the heartbeat request.