1. Example

This example shows how to persist a PIModule to a persistence string and restore it from the same string.

When the first button is clicked it will persist a module in the PIModuleDatabase of the default server and write the persistence string to a text box. When the second button is pressed, the string in the text box will be used to restore the module using the PIGlobalRestorer.

Build the PIGlobalRestorer example as follows:

1. Create a new project and add a reference to the PISDK library.

2. Add two command buttons and a text box.

3. Cut and paste the code below into the project.



' This program persists a PIModule to a persistence string that is displayed

' in a text box. The module is then restored from the persistence string.

' The module name to be persisted and the server it comes from are displayed in message boxes.

' The restored module name and the server it comes from are displayed in message boxes.


' 2001-Dec-20 KEC> Written


Option Explicit

Private Sub Command1_Click()


' This subroutine gets the first module in the module database and persists it


Dim module As PIModule ' module to persist

Dim IPIP As IPIPersist ' IPIPersist interface

Screen.MousePointer = vbHourglass ' the next statement will log in automatically

Set module = PISDK.Servers.DefaultServer.PIModuleDB.PIModules(1) ' get first module

Screen.MousePointer = vbDefault ' restore cursor

MsgBox module.Name, vbOKOnly, "Module to be Persisted" ' show the name

MsgBox module.Server.Name, vbOKOnly, "Server of Module to be Persisted" ' show name of server

Set IPIP = module ' get the IPIPersist interface from the module

Text1.Text = IPIP.Persist ' save persistence string to text box

End Sub

Private Sub Command2_Click()


' This subroutine restores the module from the persistence string in the text box. If you want to cause

' an error, edit the persistence string


Dim module As PIModule ' module to restore

Dim IPGR As IPIGlobalRestorer ' interface to get global restorer object

Dim restorer As PIGlobalRestorer ' global restorer object

Dim errors As PIErrors ' error collection to hold any errors

Dim curError As PIError ' current error

Dim nvsServers As NamedValues ' named value collection to hold the servers

Dim nvServer As NamedValue ' current named value

Dim curServer As Server ' current server


' Get global restorer from PISDK object



Set restorer = IPGR.restorer


' Restore module


Set module = restorer.RestoreObject(Text1.Text)

MsgBox module.Name, vbOKOnly, "Module Restored"

Set nvsServers = restorer.RestoreServers(Text1.Text, errors)


' Display any errors


For Each curError In errors

MsgBox curError.Cause & " " & curError.Description, vbCritical, "ERROR"



' Display servers


For Each nvServer In nvsServers

Set curServer = nvServer.Value ' get the server

MsgBox curServer.Name, vbOKOnly, "Servers"


End Sub

Enabling Operational Intelligence