AFCase Class
- Last UpdatedNov 18, 2025
- 23 minute read
- PI System
- AF SDK 2024 R2
- Developer
The AFCase is used by an AFAnalysis to store
the data results of an analysis.

Inheritance Hierarchy
SystemObject
OSIsoft.AFAFObject
OSIsoft.AF.AssetAFBaseElement
OSIsoft.AF.EventFrameAFEventFrame
OSIsoft.AF.AnalysisAFCase
OSIsoft.AFAFObject
OSIsoft.AF.AssetAFBaseElement
OSIsoft.AF.EventFrameAFEventFrame
OSIsoft.AF.AnalysisAFCase
Namespace: OSIsoft.AF.Analysis
Assembly: OSIsoft.AFSDK (in OSIsoft.AFSDK.dll) Version: 3.1.1.1182
Syntax
[SerializableAttribute] public sealed class AFCase : AFEventFrame, IComparable<AFCase>, IAFTrace
<SerializableAttribute> Public NotInheritable Class AFCase Inherits AFEventFrame Implements IComparable(Of AFCase), IAFTrace Dim instance As AFCase
[SerializableAttribute] public ref class AFCase sealed : public AFEventFrame, IComparable<AFCase^>, IAFTrace
[<SealedAttribute>] [<SerializableAttribute>] type AFCase = class inherit AFEventFrame interface IComparable<AFCase> interface IAFTrace end
The AFCase type exposes the following members.
Constructors
| Name | Description | |
|---|---|---|
| AFCase(AFAnalysis) |
Initializes a new instance of an AFCase with default values.
| |
| AFCase(AFAnalysis, AFElementTemplate) |
Initializes a new instance of an AFCase with the specified AFElementTemplate.
| |
| AFCase(AFAnalysis, AFTime) |
Initializes a new instance of an AFCase with the specified start time.
| |
| AFCase(AFAnalysis, AFTimeRuleEvent) |
Initializes a new instance of an AFCase with its start and end times defined by
an AFTimeRuleEvent.
| |
| AFCase(AFAnalysis, AFTime, AFElementTemplate) |
Initializes a new instance of an AFCase with specified start time and
AFElementTemplate.
| |
| AFCase(AFAnalysis, AFTime, AFTime) |
Initializes a new instance of an AFCase with the specified start and end times.
| |
| AFCase(AFAnalysis, AFTimeRuleEvent, Boolean) |
Initializes a new temporary instance of an AFCase with its start and end times defined by
an AFTimeRuleEvent.
| |
| AFCase(AFAnalysis, AFTime, AFTime, AFElementTemplate) |
Initializes a new instance of an AFCase with specified start and end times and
AFElementTemplate.
| |
| AFCase(AFAnalysis, AFTime, AFTime, AFElementTemplate, Boolean) |
Initializes a new temporary instance of an AFCase with specified start and end times and
AFElementTemplate.
|
Properties
| Name | Description | |
|---|---|---|
| AcknowledgedBy |
This property indicates by whom the AFEventFrame was acknowledged.
(Inherited from AFEventFrame.) | |
| AcknowledgedDate |
This property indicates when the AFEventFrame was acknowledged.
(Inherited from AFEventFrame.) | |
| AdditionalInfo |
Additional information created by the time rule.
| |
| Analysis |
The AFAnalysis which created this object.
(Inherited from AFEventFrame.) | |
| AnalysisRule |
The AFAnalysisRule from the AFAnalysis which created this object.
| |
| AreValuesCaptured |
This property indicates whether the AFEventFrame has captured its
AFAttribute values.
(Inherited from AFEventFrame.) | |
| Attributes |
This is a collection of attributes that are owned by this element.
(Inherited from AFBaseElement.) | |
| CanBeAcknowledged |
This property indicates whether the AFEventFrame can be acknowledged.
(Inherited from AFEventFrame.) | |
| Categories |
This is a user-defined collection of categories for the object that can be used for
querying and/or reporting purposes.
(Inherited from AFBaseElement.) | |
| CategoriesString |
This read-only property returns the list of categories in a string separated by semicolons.
(Inherited from AFBaseElement.) | |
| CheckOutInfo |
This read-only property returns the checked out status information for the object.
| |
| CollectElementsTime |
This read-only property returns the time that elements were last collected
for the case analysis.
| |
| CollectInputsTime |
This read-only property returns the time that input values were last read
for the case analysis.
| |
| CollectTransfersTime |
This read-only property returns the time that transfers were last collected
for the case analysis.
| |
| Connections |
This is a collection of connections between elements that are active for this case.
| |
| Database |
This read-only property returns the AFDatabase where this object is defined.
(Inherited from AFBaseElement.) | |
| DefaultAttribute |
The default AFAttribute for the AFBaseElement.
(Inherited from AFBaseElement.) | |
| DefaultInputPort |
The default input AFPort for the AFBaseElement.
(Inherited from AFBaseElement.) | |
| DefaultOutputPort |
The default output AFPort for the AFBaseElement.
(Inherited from AFBaseElement.) | |
| DefaultUndirectedPort |
The default undirected AFPort for the AFBaseElement.
(Inherited from AFBaseElement.) | |
| Description |
Read/write property that provides a more detailed description of the object.
(Inherited from AFBaseElement.) | |
| Duration |
This is a read-only property which returns the period's StartTime and
EndTime values as a time range.
(Inherited from AFEventFrame.) | |
| Elements |
Gets the collection of elements (including transfers)
that are active for this case.
| |
| EndTime |
This read-only property represents the end time of the period.
(Inherited from AFEventFrame.) | |
| EventFrames |
This is a collection of child event frames that have been added to this event frame.
(Inherited from AFEventFrame.) | |
| ExtendedProperties |
A dictionary of extended properties that can be used to store application specific information.
(Inherited from AFBaseElement.) | |
| HasChildElements |
This read-only property returns if the event frame has child elements.
(Inherited from AFEventFrame.) | |
| HasChildEventFrames |
This read-only property returns if the event frame has child event frames.
(Inherited from AFEventFrame.) | |
| ID |
Read-only property that provides a unique identifier for the object to be used for
quick access that is not dependent upon the index.
(Inherited from AFObject.) | |
| Identity |
This read-only property contains identity of the object.
(Inherited from AFObject.) | |
| IsAcknowledged |
This property indicates whether the AFEventFrame has been acknowledged.
(Inherited from AFEventFrame.) | |
| IsAnnotated |
This property indicates whether this element has any annotations.
(Inherited from AFBaseElement.) | |
| IsDeleted |
This read-only property indicates whether the object has been deleted.
(Inherited from AFObject.) | |
| IsDirty |
This read-only property indicates whether the object has been modified since the
last save to the PI AF Server.
| |
| IsLocked |
This property indicates whether the AFEventFrame has been locked.
(Inherited from AFEventFrame.) | |
| IsNew |
This read-only property indicates whether the object is new and has never been saved
to the PI AF Server.
| |
| IsPublished |
This property indicates whether the results for the case, which was run,
have been published to the locations specified by the attribute's data
reference.
| |
| IsRoot |
This property indicates if the AFEventFrame is a root object owned by
the AFDatabase.
(Inherited from AFEventFrame.) | |
| IsTemporary |
This property indicates whether the AFEventFrame is temporary.
A temporary AFEventFrame cannot be saved to the server.
(Inherited from AFEventFrame.) | |
| Layers |
This is a collection of AFLayers that keep track of the active
layers within the model when a case analysis is run.
| |
| Model |
This read-only property returns the AFModel that is the target
of the AFAnalysis.
| |
| Name |
Read/write property that identifies the name of the object.
(Inherited from AFBaseElement.) | |
| Parent |
This read-only property is returns the parent AFEventFrame that owns the event frame if it
is referenced by another event frame.
(Inherited from AFEventFrame.) | |
| Parents |
This is a collection of all AFEventFrame objects that reference this event frame.
(Inherited from AFEventFrame.) | |
| PISystem |
This read-only property allows access to the PISystem associated with this
object.
(Inherited from AFObject.) | |
| Ports |
This is a collection of AFPort objects representing the possible connection ports
for this element.
Ports are used in a AFModel to define an AFConnection
between AFBaseElement object.
(Inherited from AFBaseElement.) | |
| PreviousCase |
This property returns the previous case to the current case used during the analysis.
| |
| PrimaryReferencedElement |
The primary referenced AFElement associated with the event frame.
(Inherited from AFEventFrame.) | |
| PublishTime |
This read-only property returns the time that the case analysis was last published.
| |
| ReferencedElements |
This is a collection of elements that are referenced by this event frame.
(Inherited from AFEventFrame.) | |
| Results |
This is a collection of AFResults that keep the result values
for a case run.
| |
| RunTime |
This read-only property returns the time that the case analysis was last executed.
| |
| Security |
This read-only property returns the AFSecurity information for the object.
| |
| Severity |
This is the severity level associated with the event.
(Inherited from AFEventFrame.) | |
| StartTime |
This read-only property represents the start time of the period.
(Inherited from AFEventFrame.) | |
| Target |
Gets and sets the target of this case that is used by the configured analysis rule.
| |
| Template |
The AFElementTemplate that was used to define this object.
(Inherited from AFBaseElement.) | |
| TimeRange |
This is a read-only property which returns the period's StartTime and
EndTime values as a time range.
(Inherited from AFEventFrame.) | |
| Type |
This read-only property specifies the base type of the element.
(Inherited from AFBaseElement.) | |
| UniqueID |
Read-only property that provides the object's ID as a String.
(Inherited from AFObject.) |
Methods
| Name | Description | |
|---|---|---|
| Acknowledge(String, NullableAFTime) |
Acknowledges a single AFEventFrame.
(Inherited from AFEventFrame.) | |
| AddInput(AFAttribute) |
Adds an attribute and its value at the time of the case to the result set.
| |
| AddInput(AFAttribute, AFValue) |
Adds an attribute and a specified AFValue to the result set.
| |
| AddInput(AFAttribute, AFValue, UOM) | Obsolete.
Adds an attribute and a specified value to the result set.
| |
| AddInput(AFAttribute, Object, UOM) |
Adds an attribute and a specified value to the result set.
| |
| ApplyChanges |
This method applies the changes to the object and makes
those changes available to other objects for the current user.
| |
| CaptureValues |
Capture and cache the AFAttribute values with a AFDataReference
using the default non-cached data provider.
(Inherited from AFEventFrame.) | |
| CaptureValues(IAFDataProvider) |
Capture and cache the AFAttribute values with a AFDataReference
using the specified IAFDataProvider.
(Inherited from AFEventFrame.) | |
| ChangeReferenceType |
Change the existing AFReferenceType between a child event frame.
(Inherited from AFEventFrame.) | |
| CheckIn |
This method checks in (commits) all the changes to the object by saving
the information to persistent storage.
| |
| CheckOut |
This method locks the object so that its configuration can be modified.
| |
| CheckOutCases |
Check out the objects with the specified unique identifiers at the specified query date.
| |
| CollectElements |
This method collects the elements that are active for this case.
| |
| CollectInputs |
This method uses the AFAnalysisRule to obtain the input
values necessary to start an analysis.
| |
| CollectInputs(AFCaseLog) | Obsolete.
This method uses the AFAnalysisRule to obtain the input
values necessary to start an analysis.
| |
| CollectTransfers |
This method collects the transfers that are active for this case.
| |
| CompareTo(Object) |
Compares this instance with a specified Object.
(Inherited from AFEventFrame.) | |
| CompareTo(AFEventFrame) |
Compares this instance with a specified AFEventFrame.
(Inherited from AFEventFrame.) | |
| CompareTo(AFObject) |
Compares this instance with a specified AFObject.
(Inherited from AFObject.) | |
| CreateElementTemplate |
Create an AFElementTemplate based upon the element.
(Inherited from AFBaseElement.) | |
| CreateTemporary |
This method creates a temporary case from the current case.
| |
| Delete |
Deletes this event frame from the AFDatabase.
(Inherited from AFEventFrame.) | |
| DeleteCases |
Delete the objects with the specified unique identifiers.
| |
| Equals(Object) |
Determines whether the specified Object is equal to the current object.
(Inherited from AFEventFrame.) | |
| Equals(AFEventFrame) |
Indicates whether the current object is equal to another object of the same type.
(Inherited from AFEventFrame.) | |
| Equals(AFObject) |
Indicates whether the current object is equal to another object of the same type.
(Inherited from AFObject.) | |
| FindCase(PISystem, Guid) |
Retrieves the AFCase object with the specified unique identifier
at the AFTime.MaxValue query date.
| |
| FindCase(PISystem, Guid, Object) |
Retrieves the AFCase object with the specified unique identifier at
the specified query date.
| |
| FindCases(PISystem, Guid, Object) |
Performs a search within the PISystem to retrieve a collection
of AFCase objects with the specified list of unique identifiers.
| |
| FindCases(AFAnalysis, String, AFSearchField, AFSortField, AFSortOrder, Int32) |
Performs a text search within the AFDatabase to retrieve a collection
of AFCase objects that match the specified query string.
| |
| FindCases(AFAnalysis, Object, Int32, AFEventFrameSearchMode, String, AFCategory, AFElementTemplate) |
Retrieves a list of AFCase objects limited to the specified
count beginning at the requested time in the specified direction.
| |
| FindCases(AFAnalysis, Object, Int32, Boolean, String, AFCategory, AFElementTemplate) | Obsolete.
Retrieves a list of AFCase objects limited to the specified
count beginning at the requested start time in the specified direction.
| |
| FindCases(AFAnalysis, AFSearchMode, Object, Object, String, AFCategory, AFElementTemplate, AFSortField, AFSortOrder, Int32) | Obsolete.
Retrieves a list of AFCase objects that match the
specified filtering conditions.
| |
| GetAdjustments | ||
| GetAnnotations |
Retrieves a collection of existing AFAnnotation objects belonging to this
AFBaseElement.
(Inherited from AFBaseElement.) | |
| GetAttributeByTrait |
Retrieves the child AFAttribute with the specified AFAttributeTrait.
(Inherited from AFBaseElement.) | |
| GetAttributesByTrait |
Retrieves a list of child AFAttribute objects identified by the specified list of attribute traits.
(Inherited from AFBaseElement.) | |
| GetConnectedElements(AFBaseElement) |
This method returns a collection of AFBaseElement objects which are
connected to the specified element (or child element) within the case.
| |
| GetConnectedElements(AFBaseElement, AFPortType) |
This method returns a collection of AFBaseElement objects which are
connected to the specified element (or child element) through a port of the specified
type within the case.
| |
| GetConnectedElements(AFBaseElement, String) |
This method returns a collection of AFBaseElement objects which are
connected to the specified element and port within the case.
| |
| GetConnections(AFBaseElement) |
This method returns a collection of AFConnection objects representing
a connection between the specified element (or child element) and another element
within the case.
| |
| GetConnections(AFBaseElement, AFPortType) |
This method returns a collection of AFConnection objects with the
specified port type representing a connection between the specified element (or
child element) and another element within the case.
| |
| GetConnections(AFBaseElement, String) |
This method returns a collection of AFConnection objects with the
specified port name representing a connection between the specified element and
another element within the case.
| |
| GetHashCode |
Gets the hash code for this instance of the object which is suitable for use in hashing
algorithms and data structures like a hash table.
(Inherited from AFEventFrame.) | |
| GetLayers |
This method returns a collection of AFLayer objects for the
specified element representing all the active layers of the case which contain
the element.
| |
| GetParents(AFCategory) |
Retrieves a collection of AFEventFrame objects that reference this event frame
using the specified AFCategory.
(Inherited from AFEventFrame.) | |
| GetParents(AFReferenceType) |
Retrieves a collection of AFEventFrame objects that reference this event frame
using the specified AFReferenceType.
(Inherited from AFEventFrame.) | |
| GetPath |
Returns the full path to the object, using just the names.
(Inherited from AFObject.) | |
| GetPath(AFObject) |
Returns the path to the object relative from another object.
(Inherited from AFObject.) | |
| GetPath(AFEncodeType, AFObject) |
Returns the path to the object relative from another object,
using the name and/or id as specified
by encodeType.
(Inherited from AFObject.) | |
| GetPaths |
Get all the relative paths to this AFEventFrame.
(Inherited from AFEventFrame.) | |
| GetReferenceTypes |
Retrieves a collection of all AFReferenceType objects that represent types
of references from this event frame to its child event frames.
(Inherited from AFEventFrame.) | |
| GetReferenceTypes(AFEventFrame) |
Retrieves a collection of AFReferenceType objects that represent types
of references between this event frame and the specified related event frame.
(Inherited from AFEventFrame.) | |
| GetResult |
This method gets the result for the specified attribute.
| |
| GetSecurity |
Gets the AFSecurity information of the specified security item
associated with the object.
| |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| IsActiveElement |
Determines if the specified AFElement is active
within the case.
| |
| IsActiveTransfer |
Determines if the specified AFTransfer is active
within the case.
| |
| IsTraced |
Indicates if a specified level is being traced.
| |
| IsTypeOf |
Checks if the current AFBaseElement is derived from the
specified AFElementTemplate.
(Inherited from AFBaseElement.) | |
| LoadCases(IListAFCase) |
Loads the specified list AFCase objects.
| |
| LoadCases(PISystem, Guid, Object) |
Loads the AFCase objects with the specified unique identifiers.
at the specified query date.
| |
| Lock |
Locks this event frame so that no further changes can be made.
(Inherited from AFEventFrame.) | |
| Persist |
This method returns the persistence string for the object.
(Inherited from AFObject.) | |
| Publish |
The output AFAttribute values of the analysis case run are published
to the locations specified by the attribute's data reference configuration.
| |
| PublishValue(AFAttribute, AFValue) |
Write the specified value of the AFAttribute directly to the data reference source
using the specified AFValue object.
| |
| PublishValue(AFAttribute, Object, UOM) |
Write the specified value of the AFAttribute directly to the data reference source
with the specified unit-of-measure at the case's EndTime.
| |
| Refresh |
Refreshes the client with any changes that have been made to the object since loaded.
| |
| Reset(AFAttribute) |
This method resets an attribute in an analysis case.
| |
| Reset(AFResult) |
This method resets an attribute for the specified AFResult in an analysis case.
| |
| Reset(Boolean, Boolean) |
This method resets the input and/or output results generated in an analysis case.
| |
| Reset(Boolean, Boolean, AFAttribute) | Obsolete.
This method resets the results generated in an analysis case.
| |
| Run |
This method uses the AFAnalysisRule to execute the analysis
and generate analysis results.
| |
| Run(AFCaseLog) | Obsolete.
This method uses the AFAnalysisRule to execute the analysis
and generate analysis results.
| |
| SetEndTime |
Set the time that represents the time that the period ended.
(Inherited from AFEventFrame.) | |
| SetStartTime |
Set the time that represents the time that the period started.
(Overrides AFEventFrameSetStartTime(Object).) | |
| ToString |
Returns a String that represents the current object.
(Overrides AFObjectToString.) | |
| TraceData |
Output a data trace event.
| |
| TraceDetail |
Output a detail trace event.
| |
| TraceError |
Output an error trace event.
| |
| TraceEvent(AFTraceSwitchLevel, String) |
Output a trace event with a message.
| |
| TraceEvent(AFTraceSwitchLevel, String, Int32) |
Output a trace event with a message and a duration.
| |
| TraceEvent(AFTraceSwitchLevel, String, Object) |
Output a trace event as a formatted message with a variable number of arguments.
| |
| TraceInformation |
Output an information trace event.
| |
| TraceSummary |
Output a summary trace event.
| |
| TraceWarning |
Output a warning trace event.
| |
| UndoCheckOut |
This method discards all the changes to the object and all sub-objects since the
last call to CheckOut. Any changes since the check out will be lost.
| |
| Unlock |
Unlocks a locked event frame so that further changes can be made.
(Inherited from AFEventFrame.) |
Events
| Name | Description | |
|---|---|---|
| After |
Occurs after an AFCase method specified in the AFCaseAction
enumeration has been called.
| |
| Before |
Occurs before an AFCase method specified in the AFCaseAction
enumeration has been called.
| |
| Changed |
Event is raised when the object or one of its sub-objects is changed.
| |
| Executing |
Occurs during the execution of an AFCase method specified in the
AFCaseAction enumeration.
|
Remarks
The default time rule used to generate the case and the analysis rule used to execute the analysis is obtained from the AFAnalysis that owns the case. Besides the ID for the case, the StartTime, EndTime, and RunTime values uniquely define an instance of an AFCase object. The AFCaseSearch class can be used for finding cases.
See Model Analysis Execution for more detailed information about how analyses are executed.
Examples
// This example demonstrates how to create and run a case. // Note: This example assumes that there is a database called "Chocolate Milk Tutorial" // containing a Model named "ChocolateMilkModel", with a Model Analysis // named "Volume Balance" // Get the Database PISystems myPISystems = new PISystems(); AFDatabase myDB = myPISystems.DefaultPISystem.Databases["Chocolate Milk Tutorial"]; // Get the Model Analysis AFAnalysis myAnalysis = AFAnalysis.FindAnalyses(myDB, "ChocolateMilkModel::Volume Balance", AFSearchField.Name, AFSortField.Name, AFSortOrder.Ascending, 1)[0]; // Create the Case AFCase myCase = myAnalysis.AddCase(); myCase.SetStartTime(System.DateTime.UtcNow.AddHours(-1)); myCase.SetEndTime(System.DateTime.UtcNow); // Run the Case and Capture Messages Using Custom TraceListener // See AFTrace example for MyTraceListener int msgCount = 0; using (MyTraceListener listener = new MyTraceListener()) { myAnalysis.Run(myCase); foreach (string message in listener.GetMessages()) { Console.WriteLine(message); msgCount++; } Console.WriteLine("Finished Running Case\n"); } // Display Case Information Console.WriteLine("Analysis Name = {0}", myCase.Analysis.Name); Console.WriteLine("Case Start Time = {0}", myCase.StartTime.LocalTime); Console.WriteLine("Case End Time = {0}", myCase.EndTime.LocalTime);
' This example demonstrates how to create and run a case. ' Note: This example assumes that there is a database called "Chocolate Milk Tutorial" ' containing a Model named "ChocolateMilkModel", with a Model Analysis ' named "Volume Balance" ' Get the Database Dim myPISystems As New PISystems Dim myDB As AFDatabase = myPISystems.DefaultPISystem.Databases("Chocolate Milk Tutorial") ' Get the Model Analysis Dim myAnalysis As AFAnalysis = AFAnalysis.FindAnalyses(myDB, "ChocolateMilkModel::Volume Balance", AFSearchField.Name, AFSortField.Name, AFSortOrder.Descending, 1)(0) ' Create the Case. Dim myCase As AFCase = myAnalysis.AddCase() myCase.SetStartTime(System.DateTime.UtcNow.AddHours(-1)) myCase.SetEndTime(System.DateTime.UtcNow) ' Run the Case Dim msgCount As Integer = 0 Dim listener As MyTraceListener = New MyTraceListener Try myAnalysis.Run(myCase) For Each message As String In listener.GetMessages Console.WriteLine(message) msgCount += 1 Next Console.WriteLine("Finished Running Case" & vbLf) Finally listener.Dispose() End Try ' Display Case Information Console.WriteLine("Analysis Name = {0}", myCase.Analysis.Name) Console.WriteLine("Case Start Time = {0}", myCase.StartTime.LocalTime) Console.WriteLine("Case End Time = {0}", myCase.EndTime.LocalTime)
No code example is currently available or this language may not be supported.
No code example is currently available or this language may not be supported.