コード例 #1
0
        static void Main(string[] args)
        {
            PISystems myPISystems = new PISystems();
            PISystem  myPISystem = myPISystems[EventFrameTest.Properties.Settings.Default.AFSystemName];
            object    sysCookie, dbCookie;

            AFDatabases myDBs = myPISystem.Databases;
            AFDatabase  myDB  = myDBs[EventFrameTest.Properties.Settings.Default.AFDBName];

            myPISystem.FindChangedItems(false, int.MaxValue, null, out sysCookie);
            myDB.FindChangedItems(false, int.MaxValue, null, out dbCookie);

            // Find changes made while application not running.
            List <AFChangeInfo> list = new List <AFChangeInfo>();

            list.AddRange(myPISystem.FindChangedItems(false, int.MaxValue, sysCookie, out sysCookie));
            list.AddRange(myDB.FindChangedItems(false, int.MaxValue, dbCookie, out dbCookie));

            // Refresh objects that have been changed.
            AFChangeInfo.Refresh(myPISystem, list);
            foreach (AFChangeInfo info in list)
            {
                AFChangeInfoAction ac    = info.Action;
                AFObject           myObj = info.FindObject(myPISystem, true);
                AFIdentity         myID  = myObj.Identity;
                if (myID == AFIdentity.EventFrame && ac == AFChangeInfoAction.Added)
                {
                    Console.WriteLine("Found changed object: {0}", myObj);
                }
            }
            Console.ReadLine();
        }
コード例 #2
0
        internal static void OnChanged(object sender, AFChangedEventArgs e)
        {
            //Console.WriteLine(sender);
            //Console.WriteLine(e);

            // Find changes made while application not running.
            List <AFChangeInfo> list = new List <AFChangeInfo>();

            list.AddRange(myPISystem.FindChangedItems(true, int.MaxValue, sysCookie, out sysCookie));
            list.AddRange(monitoredDB.FindChangedItems(true, int.MaxValue, dbCookie, out dbCookie));

            // Refresh objects that have been changed.
            AFChangeInfo.Refresh(myPISystem, list);
            foreach (AFChangeInfo info in list)
            {
                AFChangeInfoAction ac    = info.Action;
                AFObject           myObj = info.FindObject(myPISystem, true);
                AFIdentity         myID  = myObj.Identity;
                if (myID == AFIdentity.EventFrame && ac == AFChangeInfoAction.Added)
                {
                    AFEventFrame myEFinfo = (AFEventFrame)info.FindObject(myPISystem, true);
                    AFNamedCollectionList <AFEventFrame> myEFList = AFEventFrame.FindEventFrames(monitoredDB, null, new AFTime("*"), 0, 5, AFEventFrameSearchMode.BackwardFromEndTime, "", "", null, myEFinfo.Template, true);
                    foreach (AFEventFrame EF in myEFList)
                    {
                        Console.WriteLine(EF.Name);
                    }
                }
            }
        }
コード例 #3
0
        public void RefreshLoadedObjects()
        {
            var changes = _database.FindChangedItems(AFIdentity.Element, false, int.MaxValue, _cookie, out _cookie);

            _logger.InfoFormat("Found {0} changes in the database", changes.Count);
            foreach (var afChangeInfo in changes)
            {
                _logger.DebugFormat("Update found element ID {1},Update is value update: {0}", afChangeInfo.IsValueUpdate, afChangeInfo.ID);
            }

            // Refresh objects that have been changed.
            AFChangeInfo.Refresh(_database.PISystem, changes);
        }
コード例 #4
0
        internal void OnChanged(object sender, AFChangedEventArgs e)
        {
            List <AFChangeInfo> changes = new List <AFChangeInfo>();

            changes.AddRange(afdatabase.FindChangedItems(true, int.MaxValue, cookie, out cookie));
            AFChangeInfo.Refresh(afdatabase.PISystem, changes);

            foreach (AFChangeInfo info in changes.FindAll(change => change.Identity == AFIdentity.EventFrame))
            {
                if (info.Action != AFChangeInfoAction.Removed)
                {
                    AFEventFrame lastestEventFrame = (AFEventFrame)info.FindObject(afdatabase.PISystem, true);
                    logger.Debug($"A new event to verify: {lastestEventFrame.Name}");
                    calculation.performAction(lastestEventFrame, info.Action);
                }
            }
        }
コード例 #5
0
        static void Main(string[] args)
        {
            var piSystem = new PISystems()[piSystemName];

            if (!piSystem.ConnectionInfo.IsConnected)
            {
                if (string.IsNullOrEmpty(piSystemUser))
                {
                    piSystem.Connect();
                }
                else
                {
                    var creds = new NetworkCredential(piSystemUser, piSystemPass, piSystemDomain);
                    piSystem.Connect(creds);
                }
            }

            if (piSystem.ConnectionInfo.IsConnected)
            {
                Console.WriteLine($"Connected to PI System '{piSystem.Name}' (GUID='{piSystem.ID}')");

                if (piSystem.Databases.Contains(piSystemDatabase))
                {
                    var afDatabase = piSystem.Databases[piSystemDatabase];

                    Console.WriteLine($"Connected to AF Database '{afDatabase.Name}' (GUID='{afDatabase.ID}')");

                    // Do stuff here...
                    object sysCookie = piSystem.GetFindChangedItemsCookie(searchSandbox: false);

                    for (int i = 0; i < 100; i++)
                    {
                        Console.WriteLine("Checking for changes...");

                        List <AFChangeInfo> list = new List <AFChangeInfo>();
                        int resultsPerPage       = 1000;
                        while (true)
                        {
                            var results = piSystem.FindChangedItems(false, true, resultsPerPage, sysCookie, out sysCookie);
                            if ((results?.Count ?? 0) == 0)
                            {
                                break;
                            }
                            list.AddRange(results);
                        }

                        // Refresh objects that have been changed.
                        AFChangeInfo.Refresh(piSystem, list);

                        // Find the objects that have been changed.
                        foreach (AFChangeInfo info in list)
                        {
                            try
                            {
                                AFObject myObj = info.FindObject(piSystem, true);
                                Console.WriteLine("Found changed object: {0}", myObj.ToString());
                                Console.WriteLine("Identity: " + myObj.Identity.ToString());
                                Console.WriteLine("Action = " + info.Action);
                                Console.WriteLine("Change Time = " + info.ChangeTime);
                                Console.WriteLine("Value Updated = " + info.IsValueUpdate);
                                Console.WriteLine("Parent ID = " + info.ParentID);
                                Console.WriteLine("Parent = " + ((info.ParentID == Guid.Empty) ? "NONE" : AFElement.FindElement(piSystem, info.ParentID).GetPath()));
                                Console.WriteLine(" ");
                            }
                            catch { }
                        }

                        System.Threading.Thread.Sleep(5000);
                    }
                }
                else
                {
                    Console.WriteLine($"PI System Database '{piSystemDatabase}' does not exist.");
                }
            }
            else
            {
                Console.WriteLine($"Cannot connect to PI System '{piSystemName}'.");
            }
        }