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
%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.
Returns a %Status value indicating success or failure.
method %IsNull() as %Boolean [ Language = objectscript ]
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).
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.