Class Reference
Cache for UNIX 2018.1.3
InterSystems: The power behind what matters   
Documentation  Search
Private  Storage  

abstract serial class %Library.SerialObject extends %SwizzleObject

The %SerialObject class builds upon the functionality provided by the %RegisteredObject class and gives an object the ability to serialize itself and be embedded within another object.


Parameters Properties Methods Queries Indices ForeignKeys Triggers
3 12


%AddToSaveSet %AddToSyncSet %ClassIsLatestVersion %ClassName
%ConstructClone %Delete %DeleteId %DispatchClassMethod
%DispatchGetModified %DispatchGetProperty %DispatchMethod %DispatchSetModified
%DispatchSetMultidimProperty %DispatchSetProperty %Extends %GetParameter
%GetSwizzleObject %IsA %IsModified %IsNull
%New %NormalizeObject %ObjectIsNull %ObjectModified
%OnBeforeAddToSync %OnDetermineClass %Open %OpenId
%OriginalNamespace %PackageName %RemoveFromSaveSet %ResolveConcurrencyConflict
%SerializeObject %SetModified %SyncObjectIn %SyncTransport
%ValidateObject LogicalToOdbc OdbcToLogical

%BI.AttachedPicture %BI.BPMKPI %BI.BitMapType
%BI.BoardObject %BI.CustomFunction %BI.DatFilter
%BI.DataCapFilter %BI.DetailListFields %BI.FORMOBJECT
%BI.FolderAccess %BI.FormField %BI.KPIList
%BI.MapKPI %BI.PerfMetMsg %BI.PopUpCon
%BI.RangeDisplay %BI.SMSession %BI.SchedulerTask
%BI.TemplateObject %BI.TransBitMap %BI.VennQry
%BI.WPivRow %BI.WorkFlowObj %CSP.Mgr.Helper.AlternativeServer
%CSP.Mgr.Helper.ApplicationPath %CSP.Mgr.Helper.CacheServer %CSP.Mgr.Helper.CachedForms
%CSP.Mgr.Helper.Connection %CSP.Mgr.Helper.Form %CSP.Util.Action
%CSP.Util.Condition %CSP.Util.FormButton %CSP.Util.Link
%CSP.Util.Menu %CSP.Util.MenuItem %Compiler.LG.ClientMakeDef
%Compiler.LG.ClientMakeDefElem %Compiler.LG.GenFlags %Compiler.LG.JavaClassDef
%Compiler.LG.JavaClassDefPointer %Compiler.LG.JavaColumnDef %Compiler.LG.JavaConstraintDef
%Compiler.LG.JavaElemDef %Compiler.LG.JavaForeignKeyDef %Compiler.LG.JavaIndexDef
%Compiler.LG.JavaTableDef %Compiler.LG.MetaClassDef %Compiler.LG.MetaElemDef
%Compiler.LG.MetaMethodDef %Compiler.LG.MetaMtdArgDef %Compiler.LG.MetaPropDef
%Compiler.LG.MetaQueryDef %DeepSee.Dashboard.CalculatedMember %DeepSee.Dashboard.ChartDataSeries
%DeepSee.Dashboard.Control %DeepSee.Dashboard.DataProperty %DeepSee.Dashboard.PivotCondition
%DeepSee.Dashboard.PivotLevel %DeepSee.Dashboard.Widget %DeepSee.PMML.Builder.AbstractBuilder
%DeepSee.PMML.Data %DeepSee.PMML.Dataset.Field %DeepSee.UserLibrary.WorksheetAxis
%DeepSee.UserLibrary.WorksheetCell %DeepSee.extensions.iKnow.conf.Classifier %DeepSee.extensions.iKnow.conf.Config
%DeepSee.extensions.iKnow.conf.Data %DeepSee.extensions.iKnow.conf.Model %DeepSee.extensions.modelling.conf.Attributes
%DeepSee.extensions.modelling.conf.Call %DeepSee.extensions.modelling.conf.LDA %DeepSee.extensions.modelling.conf.LoadMetric
%DeepSee.extensions.modelling.conf.NaiveBayes %DeepSee.extensions.modelling.conf.NaiveBayes2 %DeepSee.extensions.modelling.conf.Operation
%DeepSee.extensions.modelling.conf.PCA %DeepSee.extensions.modelling.conf.PMML %DeepSee.extensions.modelling.conf.Report
%DeepSee.extensions.modelling.conf.Sequence %DeepSee.extensions.modelling.conf.Sort %DeepSee.extensions.modelling.conf.Table
%Document.Object %Library.ArrayOfDataTypes %Library.ArrayOfObjects
%Library.IStruct %Library.ListOfDataTypes %Library.ListOfObjects
%Library.RelationshipObject %Net.MIMESerialPart %Net.MailMessagePart
%OAuth2.Error %OAuth2.Server.Claim %ResultSet.MD.Column
%ResultSet.MD.ObjectId %ResultSet.MD.Parameter %SOAP.Security.Created
%SOAP.Security.Password %SQL.StatementColumn %SQL.StatementObject
%SQL.StatementParameter %Studio.Extension.MenuItem %UMLS.config.CollectionOfDef
%UMLS.config.STYDef %WebStress.Control.AppServers %WebStress.Control.GeneratorStatus
%WebStress.Control.Processes %WebStress.Control.Progress %WebStress.Control.ValidData.Request.Parameters
%WebStress.Control.ValidData.Response %WebStress.Control.ValidData.Response.Generators %WebStress.Control.ValidData.Response.Generators.Data
%WebStress.Playback.Session %XML.Security.Algorithm %iKnow.Classification.Definition.Term
%iKnow.TextTransformation.OutputKeyValue %iKnow.TextTransformation.OutputLocation %iKnow.TextTransformation.OutputSection
%iKnow.TextTransformation.conf.Operation Ens.Alerting.Action Ens.Config.BusinessPartnerContact
Ens.Config.Setting Ens.Config.SubProduction Ens.ServiceRegistry.Schema
EnsLib.DICOM.Util.Data EnsLib.DICOM.Util.PresentationContext EnsLib.ITK.DTS.Framework.Status
EnsLib.ITK.Framework.DistributionEnvelope EnsLib.ITK.Framework.ErrorCode EnsLib.IWay.DSN.Response
EnsLib.JMS.Property EnsLib.UDDI.dsig.SignatureValueType EnsLib.UDDI.uddi.accessPoint
EnsLib.UDDI.uddi.addressLine EnsLib.UDDI.uddi.description EnsLib.UDDI.uddi.discoveryURL EnsLib.UDDI.uddi.errInfo
EnsLib.UDDI.uddi.overviewURL EnsLib.UDDI.uddi.personName
EnsLib.UDDI.wsdl.Binding EnsLib.UDDI.wsdl.Port EnsLib.UDDI.wsdl.PortType
EnsLib.UDDI.wsdl.SOAPService EnsLib.Workflow.TaskStatus EnsLib.ebXML.SOAPHeader
EnsLib.ebXML.schema.msg.AckRequested EnsLib.ebXML.schema.msg.Acknowledgment EnsLib.ebXML.schema.msg.Description
EnsLib.ebXML.schema.msg.Error EnsLib.ebXML.schema.msg.ErrorList EnsLib.ebXML.schema.msg.From
EnsLib.ebXML.schema.msg.Manifest EnsLib.ebXML.schema.msg.MessageData EnsLib.ebXML.schema.msg.MessageHeader
EnsLib.ebXML.schema.msg.MessageOrder EnsLib.ebXML.schema.msg.PartyId EnsLib.ebXML.schema.msg.Reference
EnsLib.ebXML.schema.msg.Schema EnsLib.ebXML.schema.msg.Service EnsLib.ebXML.schema.msg.StatusRequest
EnsLib.ebXML.schema.msg.StatusResponse EnsLib.ebXML.schema.msg.SyncReply EnsLib.ebXML.schema.msg.To
EnsLib.ebXML.schema.msg.base EnsLib.ebXML.schema.msg.sequenceNumber.type EnsPortal.MsgFilter.Condition
EnsPortal.MsgFilter.Filter EnsPortal.MsgFilter.Term EnsPortal.Util.ManagedAlertCriteria


• parameter ODBCDELIMITER = ",";
A serial object is converted to a delimited string containing the object's property values when it is projected via ODBC. ODBCDELIMITER is the delimiter character used to construct the delimited string.
This parameter specifies the delimiter character used when created a serialized version of the object. If the parameter is set to null string ("") then a length delimited ($List) string is used which can be manipulated using the $List functions.
• parameter VALIDIFNULL = 0;
If true, %ValidateObject will return $$$OK for instances that are null as determined by %IsNull(). If FALSE (the default), %ValidateObject will perform a full validation on the instance, even if it is null. This means that if VALIDIFNULL is TRUE then the property constraint, REQUIRED, can be defined without causing failures on null objects. It is important to note that a property with an INITIALEXPRESSION that returns a non-null initial value will cause %IsNull() to return FALSE for a new, otherwise unmodified instance.


• final classmethod %Delete(oid As %ObjectIdentity = "", concurrency As %Integer = -1) as %Status
Deletes streams referenced by this object and calls %Delete on any embedded objects Refer to About Concurrency for more details on the optional concurrency argument.

Returns a %Status value indicating success or failure.

• final classmethod %DeleteId(id As %String, concurrency As %Integer = -1) as %Status
Deletes the stored version of the object with ID id from the database.

%DeleteId is identical in operation to the %Delete method except that it uses and Id value instead of an OID value to find an object. Refer to About Concurrency for more details on the optional concurrency argument.

• method %GetSwizzleObject(force As %Integer = 0, ByRef oid As %ObjectIdentity) as %Status
%GetSwizzleObject() is used to obtain the serial value of the object that can later be used by %SetSerial() to restore the object. It calls %SerializeObject() which returns the serialized state of the object or the OID (for persistent objects). Before calling %GetSerial(), %GetSwizzleObject() calls %AddToSaveSet([force]) which will result in calling the %GetSwizzleObject() method of other referenced objects, passing along the value of force.

%GetSwizzleObject automatically detects and handles circular references between objects. For example, %GetSwizzleObject will detect if object A refers to object B and object B likewise refers to object A. In this case it will avoid falling into an infinite, recursive loop.

Note that either reference attribute, A to B or B to A, can be specified as being a required attribute but not both of them. If both reference attributes are required then %GetSwizzleObject will fail.

By default %GetSwizzleObject automatically manages transactions. You can enable and disable automatic transaction support using the $$SetTransactionMode^%apiOBJ() routine.

When %GetSwizzleObject serializes an object, it initiates one transaction (by calling TSTART) for the entire set of serializations, including the original object and any related objects. If the serialization operation is successful, %GetSwizzleObject will issue a TCOMMIT command to commit the transaction and write the data to the database. If %GetSwizzleObject encounters an error during the transaction it rolls back the entire transaction and performs the following actions:

  • It issues a TROLLBACK command to rollback any changes to the database that may have occurred. (In the case of persistent objects with system assigned ids changes to the on-disk counter value, used to determine the next available object id number, are not rolled back.)
  • It attempts to restore the in-memory state of all the objects involved in the transaction to their pre-transaction state. This includes restoring any modified flags, and restoring to null ("") any OID values that have been assigned during the course of the transaction. Additional property values changed during the course of the transaction are not restored, however.
  • It calls the %RollBack method on each object involved with the transaction. The order in which the %RollBack methods are called is undefined. %RollBack will call a user-written %OnRollback method if it is present.

Returns a %Status value indicating success or failure.

• method %IsNull() as %Boolean
Returns true if this is a "NULL" serial object. Subclasses of %SerialObject are expected to override this method. The default implementation returns 0 (false) indicating that the serial object is not null. The default serialization class will generate an IsNull method that checks each property for null and if all are null then IsNull() is 1 (true).
• final classmethod %Open(initvalue As %ObjectIdentity, concurrency As %Integer = -1, ByRef sc As %Status = $$$OK) as %ObjectHandle
Creates an instance (in-memory version) of a serial object from the serialized value initvalue. Note that concurrency is not used, the argument is kept to keep the interface consistent with %Library.Persistent. If an error occurrs it is returned by refence in sc.
• final classmethod %OpenId(initvalue As %String, concurrency As %Integer = -1, ByRef sc As %Status = $$$OK) as %ObjectHandle
Swizzles a serial object from the value passed and returns an OREF referring to the object. initvalue is the Id (serial value, not a full OID) value of the object to swizzle.

%OpenId is identical in operation to the %Open method except that it uses and Id value instead of an OID value to find an object instance.

%OpenId returns an OREF value that refers to the in-memory object instance.

• classmethod LogicalToOdbc(val As %String = "") as %String
Converts the serial state of this serial object to a delimited string using the value of the ODBCDELIMITER parameter as a delimiter.
• classmethod OdbcToLogical(val As %String = "") as %String
Converts the value of an incoming delimited string to a serialized state using the value of the ODBCDELIMITER parameter as a delimiter.

Copyright © 1997-2020, InterSystems Corporation