dmaClass_DMA

The DMA base class.

with additions for the CSDocs Foundation 0.02

Class ID: dmaClass_DMA
Superclass: None

Interfaces

IUnknown
IdmaObject
IdmaProperties

Properties

Name Impl.
Required
System
Gen'ed
Read-
Only
Value
Required
Type Cardinality Required
Class
Reflective
Property
OIID - Yes Yes - String Scalar    
Class Description Yes Yes Yes Yes Object Scalar Class Description n/a
This - Yes Yes Yes Object Scalar DMA This
Create Pending - Yes Yes Yes Boolean Scalar    
Update Pending - Yes Yes Yes Boolean Scalar    
Delete Pending - Yes Yes Yes Boolean Scalar    
Instance Id - Yes Yes - DmaId Scalar    

Detailed Description

The ultimate superclass of all DMA classes.

The Object ID, Create Flag, Update Flag and Delete Flag properties introduced here should only be implemented in subclasses which represent independently persistable objects.

Property Descriptions

• OIID {dmaProp_OIID}

This property is the unique instance Id of this particular object.

• Class Description {dmaProp_ClassDescription}

The Class Description object describing this object's class.

This property provides access from this object to the descriptive information about the class of this object.

• This {dmaProp_This}

A synthetic, object-valued property that has as its implicit value the DMA object itself. It's primary purpose is to enable the expression of relationships among objects in DMA queries and to select candidate objects in query results.

This object-valued property is an exception to the general rules for the by-reference behavior of object-valued properties. When the property is supported by an object, the behavior of

rc = pMyObjectProperties -> GetPropValObjectById(&dmaProp_This, riid, ppIObjectValue)

is equivalent to that of the preferable, always-supported operation

rc = pMyObjectProperties -> QueryInterface(riid, ppIObjectValue)

Using a DMA object’s IdmaProperties interface, the property behaves as if it is always bound and has nothing to do with any persistent object associated with the DMA object. Refreshing and other operations between a scratchpad object and a persistent object have no impact whatsoever on the This property of a DMA object.

[ In every class description for a DMA Object inherited from the dmaClass_DMA class, the Required Class of Object restriction is always to the very class being described. In addition, proper subclasses of that class will never occur. This is part of the system-generated quality of dmaProp_This properties. ]

• Create Pending {dmaProp_CreatePending}

If set, this flag indicates to ExecuteChange and ExecuteChanges that the current scratchpad object is to be created as a new persistent object.

• Update Pending {dmaProp_UpdatePending}

If set, this flag indicates to ExecuteChange and ExecuteChanges that the current object is already persistent, and its properties are to be modified.

• Delete Pending {dmaProp_DeletePending}

If set, this flag indicates to ExecuteChange and ExecuteChanges that the current object is already persistent, and is to be deleted.

Instance Id {dmaProp_InstanceId}

This optional property is meaningful only on objects that have corresponding representations as persistent objects.  The object may be dependently persistent or independently persistent.

If a class description specifies that this property is supported, but an instance of the class is not derived from an already-persistent object, the Instance Id property of the instance will have no value.

When an instance of a class supporting Instance Id is an image of an already-persistent object, the value of Instance Id will be a globally-unique DmaId that applies specifically to that already-persistent object.  An Instance Id value is set when an object is first created as persistent using an Execute Change operation or equivalent.  An Instance Id for a persistent object is is never changed, even if the persistent object is updated.  If a persistent object is replaced, the replacement will have a different Instance Id value.

When an independently-persistent object has an Instance Id property, there is a relationship between the value of Instance Id and the OIID property.   When there is an InstanceId, either

  • the <object id> portion of the OIID string contains the Instance Id value in <Textualized Object DmaId> format, or else
  • the optional <object guid> portion of the OIID string is present and contains the Instance id value in <Textualized Object DmaId> format.

$$Author: Orcmid $
$$Date: 99-08-31 20:47 $
$$Revision: 5 $