Archive Management API
Overview
To utilize the data within the Archive Management screen, access to the AutoSol.ACM.ArchiveManagement.ClientLibrary and AutoSol.ACM.ArchiveManagement.UI classes is required
ArchiveManagement.ClientLibrary
Classes
Class | Description |
---|---|
_ArchiveDetailCollection | A collection of _ArchiveDetailRecord objects. |
_ArchiveDetailRecord | Represents a data row of an archive record. |
ArchiveManagementClient | Represents a connection to the archive management application. |
_ArchiveRecordCollection | A collection of _ArchiveStatusRecord objects. |
_ArchiveStatusRecord | Represents a data row in a recordset of missing archive records. |
_ArchiveSummaryProcess | Represents a data row of the current status of the archive process. |
_FieldDataCollection | A collection of _FieldDataDetail, the raw archive data, which is part of the _ArchiveDetailRecord set. |
_FieldDataDetail | Represents a data row of the parsed XML field and data portion of an Archive or Meter record. |
_GapDetails | Deprecated. |
_MeterRecordCollection | A collection of _MeterRecordDetail objects. |
_MeterRecordDetail | Represents a data row of a meter record. |
RangeDetails | Deprecated. |
Methods
Name | Summary | Parameter |
---|---|---|
GetArchiveDetailRecords (int MeterId, string sStartDt, string sEndDt, string sArchiveType) | Return hourly or daily records in the format of an _ArchvieDetailRecords  for the requested meter in the specified date range.  | MeterId = ACM ObjectId for Meter sStartDt = yyyy-MM-dd HH:mm:ss formatted Start Date sEndDt = yyyy-MM-dd HH:mm:ss formatted End Date sArchiveType = "Hourly" , "Daily" |
GetArchiveDetailForMeter( int MeterId) | Deprecated. Use GetMeterConfigRecords | |
GetArchiveEventRecords (int MeterId, string sStartDt, string sEndDt, string sMeterName) | Return event records in the format of an _ArchvieDetailRecords for the requested meter in the specified date range.  | MeterId = ACM ObjectId for Meter sStartDt = yyyy-MM-dd HH:mm:ss formatted Start Date sEndDt = yyyy-MM-dd HH:mm:ss formatted End Date sMeterName = Meter Name |
GetArchiveStatusRecords(int iUseContractHour, bool bOnlyMissing, bool bOnlyEnabled, string sArchiveType) | Return _ArchvieDetailRecords or _MeterRecordCollection for the requested meter in the specified date range.  | iUseContractHour = deprecated bOnlyMissing = retrieve only missing records bOnlyEnabled = show only devices that are enabled sArchiveType = "Hourly" , "Daily" |
GetMeterConfigRecords(int MeterId) | Return the current meter record in the format of a _MeterRecordCollection for the requested meter. | MeterId = ACM ObjectId for Meter |
GetSummaryStatus | Return the current status of the Archive process in the format of a _ArchvieSummaryProcess. | |
HelloWorld | Returns HelloWorld. Use for testing successful connection. | |
InvokeArchiveSnapshot | Starts the archive missing report process. | |
KeepAlive | Standard KeepAlive to prevent Garbage Collection |
ArchiveManagement.UI
Classes
Class | Description |
---|---|
ArchiveDetails | User Control of the Archive Management Screen. |
ArchiveManagementControl | User Control that controls the preset data for the ArchiveDetail screen. |
FormDetails | User Control for the Archive Management Detail Screen. |
ServerConns | A collection of _ArchiveStatusRecord objects. |
Methods
Name | Summary | Parameter |
---|---|---|
ConnectToConfigServer | Connects the Archive Management User forms to the running Configuration Server. | |
ConnectToServer | Connects to the Archive Management on the local host. | |
ConnectToServer (string strHost) | Connects to the Archive Management on the specified host. | strHost = Server Name to connect to |
DisconnectFromConfigServer() | Disconnect from the connected Configuration Server. | |
DisconnectFromServer() | Disconnect from the connected Reporting Services for Archive Management client. |
Example Using C#
using AutoSol.ACM.ArchiveManagement.ClientLibrary.ArchiveManagementSvc; using System; using System.Windows.Forms; /* make sure you do these three things... add reference for AutoSol.ACM.ArchiveManagement.ClientLibrary  add reference for AutoSol.ACM.ArchiveManagement.UI set project properites to use .net4.7.2 */ namespace WindowsFormsApp1 { public partial class Form1 : Form { //The archive management service connection AutoSol.ACM.ArchiveManagement.UI.ServerConns _archiveConn = new AutoSol.ACM.ArchiveManagement.UI.ServerConns(); public Form1() { InitializeComponent(); // Set the host address we want to connect to _archiveConn.ConnectToServer("localhost"); } private void btnRetrieveData_Click(object sender, EventArgs e) { GetHourlySummary(); GetDailySummary(); } private void GetHourlySummary() { //Gets the summary hourly archive data for only missing and enabled objects AutoSol.ACM.ArchiveManagement.ClientLibrary.ArchiveManagementSvc._ArchiveRecordCollection hourlyRecs; hourlyRecs = _myConns._archiveClient.GetArchiveStatusRecords(0, true, true, "Hourly"); //The data can be easily used as a datasource if (hourlyRecs != null) { DataGridView dgv = new DataGridView(); dgv.DataSource = hourlyRecs.archiveRecords; } } private void GetDailySummary() { AutoSol.ACM.ArchiveManagement.ClientLibrary.ArchiveManagementSvc._ArchiveRecordCollection dailyRecs; //Gets the summary daily archive data for all enabled objects dailyRecs= _myConns._archiveClient.GetArchiveStatusRecords(0, false, true, "Daily"); //You can drill into the individual records verses as well as using them as a single object if (dailyRecs != null) { //Gets the meter details of the first meter record to find more information about that meter int meterId = dailyRecs.archiveRecords[0].MeterId; string meterName = GetMeterInfo(meterId); GetEventsForMeter(meterId, meterName); } } private string GetMeterInfo( int meterId ) { //Gets the meter details of the first meter record _MeterRecordCollection meterRec = _archiveConn._archiveClient.GetMeterConfigRecords(meterId); //The meter record will only ever return 1 meter record if (meterRec != null) { string meterName = meterRec.meterConfigColl[0].MeterName; return meterName; } return String.Empty; } private string GetEventsForMeter( int meterId, string meterName ) { //Gets the meter last 30 days of event records string startDate = DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd HH:mm:ss"); string endDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); _ArchiveDetailCollection eventRecs = _archiveConn._archiveClient.GetArchiveEventRecords(meterId, startDate, endDate, meterName); //The meter record will only ever return 1 meter record if (eventRecs != null) { MessageBox.Show("Found " + eventRecs.archiveDetailRecords.Length.ToString()+" events"); } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (_myConns != null) { //Disconnect _myConns.DisconnectFromServer(); } } } }
Example Using VB .Net
Module Module1 Sub Main() 'The archive management service connection Dim _archiveConn As New AutoSol.ACM.ArchiveManagement.UI.ServerConns() 'Set the host address we want to connect to _archiveConn.ConnectToServer("localhost") 'Invoke the service process _archiveConn._archiveClient.InvokeArchiveSnapshot() Dim isProcessRunning As Boolean isProcessRunning = ProcessRunning(_archiveConn) While (isProcessRunning = True) isProcessRunning = ProcessRunning(_archiveConn) Threading.Thread.CurrentThread.Sleep(1000) End While _archiveConn.DisconnectFromServer() End Sub Private Function ProcessRunning(_archiveConn As AutoSol.ACM.ArchiveManagement.UI.ServerConns) As Boolean 'Check the summary status Dim _archiveSummary As New AutoSol.ACM.ArchiveManagement.ClientLibrary.ArchiveManagementSvc._ArchiveSummaryProcess _archiveSummary = _archiveConn._archiveClient.GetSummaryStatus() If (_archiveSummary IsNot Nothing) Then Dim finishTime As String Dim errorMsg As String finishTime = _archiveSummary.FinishTime errorMsg = _archiveSummary.ErrorMessage If (finishTime.Equals("Pending", StringComparison.InvariantCultureIgnoreCase)) Then Console.WriteLine("Process is still running") Return True ElseIf (errorMsg.Equals("No error", StringComparison.InvariantCultureIgnoreCase)) Then Console.WriteLine("Process finished at: " + finishTime) Return False ElseIf (errorMsg IsNot Nothing) Then Console.WriteLine("Error invoking process: " + errorMsg) Return False End If Else Console.WriteLine("Process did not return anything") Return False End If End Function End Module
For assistance, please submit a ticket via our Support Portal, email autosol.support@autosoln.com or call 281.286.6017 to speak to a support team member.